diff --git a/.env.example b/.env.example index e4191793d..d0e6909b6 100644 --- a/.env.example +++ b/.env.example @@ -4,21 +4,24 @@ URL_ETH_MAINNET=https://ethereum.publicnode.com/ URL_SEPOLIA=https://ethereum-sepolia.publicnode.com URL_ANVIL=http://localhost:8545 -ETHERSCAN_API_KEY=XXXXXXXXXXXXXXXXX +ETHERSCAN_API_KEY= -DEPLOYER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -FEE_COLLECTOR=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 +DEPLOYER_ADDRESS= +FEE_COLLECTOR= SDEX_ADDRESS= WSTETH_ADDRESS= +MIDDLEWARE_ADDRESS= +LIQUIDATION_REWARDS_MANAGER_ADDRESS= +REBALANCER_ADDRESS= INIT_DEPOSIT_AMOUNT=1000000000000000000 INIT_LONG_AMOUNT=1000000000000000000 -INIT_LONG_LIQPRICE=1000000000000000000 -PYTH_ADDRESS=0xDd24F84d36BF92C65F92307595335bdFab5Bbd21 -PYTH_ETH_FEED_ID=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace -REDSTONE_ETH_FEED_ID=0x4554480000000000000000000000000000000000000000000000000000000000 -CHAINLINK_ETH_PRICE_ADDRESS=0x694AA1769357215DE4FAC081bf1f309aDC325306 -CHAINLINK_ETH_PRICE_VALIDITY=3720 -CHAINLINK_GAS_PRICE_VALIDITY=7500 +PYTH_ADDRESS= +PYTH_ETH_FEED_ID= +REDSTONE_ETH_FEED_ID= +CHAINLINK_ETH_PRICE_ADDRESS= +CHAINLINK_ETH_PRICE_VALIDITY= +CHAINLINK_GAS_PRICE_ADDRESS= +CHAINLINK_GAS_PRICE_VALIDITY= GET_WSTETH=false HERMES_RA2_NODE_URL=https://hermes.pyth.network/ diff --git a/broadcast/00_DeploySepoliaMocks.s.sol/11155111/run-latest.json b/broadcast/00_DeploySepoliaMocks.s.sol/11155111/run-latest.json deleted file mode 100644 index 66810a84b..000000000 --- a/broadcast/00_DeploySepoliaMocks.s.sol/11155111/run-latest.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfc03df9ad2b324c21a978dbb9b5db16817395a417685e2a97355490f08cdbc05", - "transactionType": "CREATE", - "contractName": "Sdex", - "contractAddress": "0x2cd340c58a31d96a1c6b0672c76a0c8a53b59f32", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x191e21", - "value": "0x0", - "input": "0x610160604052348015610010575f80fd5b5033604051806040016040528060078152602001660a6dac2e4c8caf60cb1b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001660a6dac2e4c8caf60cb1b815250604051806040016040528060048152602001630a6888ab60e31b815250816003908161009991906102f0565b5060046100a682826102f0565b506100b691508390506005610198565b610120526100c5816006610198565b61014052815160208084019190912060e052815190820120610100524660a05261015160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811661018957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610192816101ca565b50610402565b5f6020835110156101b3576101ac8361021b565b90506101c4565b816101be84826102f0565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80829050601f81511115610245578260405163305a27a960e01b815260040161018091906103aa565b8051610250826103df565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061028057607f821691505b60208210810361029e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102eb57805f5260205f20601f840160051c810160208510156102c95750805b601f840160051c820191505b818110156102e8575f81556001016102d5565b50505b505050565b81516001600160401b0381111561030957610309610258565b61031d81610317845461026c565b846102a4565b6020601f82116001811461034f575f83156103385750848201515b5f19600385901b1c1916600184901b1784556102e8565b5f84815260208120601f198516915b8281101561037e578785015182556020948501946001909201910161035e565b508482101561039b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561029e575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516114836104535f395f610a9101525f610a6401525f6108ea01525f6108c201525f61081d01525f61084701525f61087101526114835ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c8063715018a6116100ad57806395d89b411161007d578063d505accf11610063578063d505accf14610259578063dd62ed3e1461026c578063f2fde38b146102b1575f80fd5b806395d89b411461023e578063a9059cbb14610246575f80fd5b8063715018a6146101e05780637ecebe00146101e857806384b0196e146101fb5780638da5cb5b14610216575f80fd5b8063313ce567116100e8578063313ce5671461017f5780633644e5151461018e57806340c10f191461019657806370a08231146101ab575f80fd5b806306fdde0314610119578063095ea7b31461013757806318160ddd1461015a57806323b872dd1461016c575b5f80fd5b6101216102c4565b60405161012e919061117e565b60405180910390f35b61014a6101453660046111bf565b610354565b604051901515815260200161012e565b6002545b60405190815260200161012e565b61014a61017a3660046111e7565b61036d565b6040516012815260200161012e565b61015e610390565b6101a96101a43660046111bf565b61039e565b005b61015e6101b9366004611221565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6101a96103b4565b61015e6101f6366004611221565b6103c7565b6102036103f1565b60405161012e979695949392919061123a565b60085460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b61012161044f565b61014a6102543660046111bf565b61045e565b6101a96102673660046112f9565b61046b565b61015e61027a366004611366565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b6101a96102bf366004611221565b610619565b6060600380546102d390611397565b80601f01602080910402602001604051908101604052809291908181526020018280546102ff90611397565b801561034a5780601f106103215761010080835404028352916020019161034a565b820191905f5260205f20905b81548152906001019060200180831161032d57829003601f168201915b5050505050905090565b5f3361036181858561067c565b60019150505b92915050565b5f3361037a85828561068e565b61038585858561075b565b506001949350505050565b5f610399610804565b905090565b6103a661093a565b6103b0828261098d565b5050565b6103bc61093a565b6103c55f6109e7565b565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812054610367565b5f6060805f805f6060610402610a5d565b61040a610a8a565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600480546102d390611397565b5f3361036181858561075b565b834211156104ad576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105058c73ffffffffffffffffffffffffffffffffffffffff165f90815260076020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61056c82610ab7565b90505f61057b82878787610afe565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610602576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b1660248201526044016104a4565b61060d8a8a8a61067c565b50505050505050505050565b61062161093a565b73ffffffffffffffffffffffffffffffffffffffff8116610670576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024016104a4565b610679816109e7565b50565b6106898383836001610b2a565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107555781811015610747576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016104a4565b61075584848484035f610b2a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166107aa576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016104a4565b73ffffffffffffffffffffffffffffffffffffffff82166107f9576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016104a4565b610689838383610c6f565b5f3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561086957507f000000000000000000000000000000000000000000000000000000000000000046145b1561089357507f000000000000000000000000000000000000000000000000000000000000000090565b610399604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60085473ffffffffffffffffffffffffffffffffffffffff1633146103c5576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016104a4565b73ffffffffffffffffffffffffffffffffffffffff82166109dc576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016104a4565b6103b05f8383610c6f565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606103997f00000000000000000000000000000000000000000000000000000000000000006005610e16565b60606103997f00000000000000000000000000000000000000000000000000000000000000006006610e16565b5f610367610ac3610804565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f80610b0e88888888610ebf565b925092509250610b1e8282610fb2565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416610b79576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016104a4565b73ffffffffffffffffffffffffffffffffffffffff8316610bc8576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016104a4565b73ffffffffffffffffffffffffffffffffffffffff8085165f9081526001602090815260408083209387168352929052208290558015610755578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c6191815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ca6578060025f828254610c9b91906113e8565b90915550610d569050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015610d2b576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016104a4565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d7f57600280548290039055610daa565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e0991815260200190565b60405180910390a3505050565b606060ff8314610e3057610e29836110b5565b9050610367565b818054610e3c90611397565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6890611397565b8015610eb35780601f10610e8a57610100808354040283529160200191610eb3565b820191905f5260205f20905b815481529060010190602001808311610e9657829003601f168201915b50505050509050610367565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ef857505f91506003905082610fa8565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f49573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f9f57505f925060019150829050610fa8565b92505f91508190505b9450945094915050565b5f826003811115610fc557610fc5611420565b03610fce575050565b6001826003811115610fe257610fe2611420565b03611019576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561102d5761102d611420565b03611067576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016104a4565b600382600381111561107b5761107b611420565b036103b0576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016104a4565b60605f6110c1836110f2565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610367576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6111906020830184611132565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111ba575f80fd5b919050565b5f80604083850312156111d0575f80fd5b6111d983611197565b946020939093013593505050565b5f805f606084860312156111f9575f80fd5b61120284611197565b925061121060208501611197565b929592945050506040919091013590565b5f60208284031215611231575f80fd5b61119082611197565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61127460e0830189611132565b82810360408401526112868189611132565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156112e85783518352602093840193909201916001016112ca565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a03121561130f575f80fd5b61131888611197565b965061132660208901611197565b95506040880135945060608801359350608088013560ff81168114611349575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215611377575f80fd5b61138083611197565b915061138e60208401611197565b90509250929050565b600181811c908216806113ab57607f821691505b6020821081036113e2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b80820180821115610367577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220b98a2bfa09c655bd5c7a1ec605f777a153b18f8749b50b068b7eab3dc180518a64736f6c634300081a0033", - "nonce": "0x2a", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8c58546d9bac207b7b61f4696229d68e5cdc379fc1e5ad74b9a8ce2fa4524715", - "transactionType": "CREATE", - "contractName": "WstETH", - "contractAddress": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x1ba0f0", - "value": "0x0", - "input": "0x610160604052670de0b6b3a764000060095534801561001c575f80fd5b50336040518060400160405280601f81526020017f57726170706564206c6971756964207374616b656420457468657220322e300081525080604051806040016040528060018152602001603160f81b8152506040518060400160405280601f81526020017f57726170706564206c6971756964207374616b656420457468657220322e3000815250604051806040016040528060068152602001650eee6e88aa8960d31b81525081600390816100d3919061032a565b5060046100e0828261032a565b506100f0915083905060056101d2565b610120526100ff8160066101d2565b61014052815160208084019190912060e052815190820120610100524660a05261018b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166101c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101cc81610204565b5061043c565b5f6020835110156101ed576101e683610255565b90506101fe565b816101f8848261032a565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80829050601f8151111561027f578260405163305a27a960e01b81526004016101ba91906103e4565b805161028a82610419565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806102ba57607f821691505b6020821081036102d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561032557805f5260205f20601f840160051c810160208510156103035750805b601f840160051c820191505b81811015610322575f815560010161030f565b50505b505050565b81516001600160401b0381111561034357610343610292565b6103578161035184546102a6565b846102de565b6020601f821160018114610389575f83156103725750848201515b5f19600385901b1c1916600184901b178455610322565b5f84815260208120601f198516915b828110156103b85787850151825560209485019460019092019101610398565b50848210156103d557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102d8575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161166761048d5f395f610c0701525f610bda01525f610a6001525f610a3801525f61099301525f6109bd01525f6109e701526116675ff3fe608060405234801561000f575f80fd5b5060043610610179575f3560e01c806384b0196e116100d2578063b0e3890011610088578063d505accf11610063578063d505accf14610302578063dd62ed3e14610315578063f2fde38b1461035a575f80fd5b8063b0e38900146102c9578063b423a761146102dc578063bb2952fc146102ef575f80fd5b80639576a0c8116100b85780639576a0c8146102a657806395d89b41146102ae578063a9059cbb146102b6575f80fd5b806384b0196e146102635780638da5cb5b1461027e575f80fd5b8063313ce5671161013257806370a082311161010d57806370a0823114610213578063715018a6146102485780637ecebe0014610250575f80fd5b8063313ce567146101e75780633644e515146101f657806340c10f19146101fe575f80fd5b8063095ea7b311610162578063095ea7b3146101a957806318160ddd146101cc57806323b872dd146101d4575f80fd5b8063035faf821461017d57806306fdde0314610194575b5f80fd5b6009545b6040519081526020015b60405180910390f35b61019c61036d565b60405161018b91906112f4565b6101bc6101b7366004611335565b6103fd565b604051901515815260200161018b565b600254610181565b6101bc6101e236600461135d565b610416565b6040516012815260200161018b565b610181610439565b61021161020c366004611335565b610447565b005b610181610221366004611397565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b61021161045d565b61018161025e366004611397565b610470565b61026b61049a565b60405161018b97969594939291906113b0565b60085460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018b565b6101816104f8565b61019c610516565b6101bc6102c4366004611335565b610525565b6101816102d736600461146f565b610532565b6102116102ea36600461146f565b610554565b6101816102fd36600461146f565b6105cf565b610211610310366004611486565b6105e6565b6101816103233660046114f3565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b610211610368366004611397565b61078f565b60606003805461037c90611524565b80601f01602080910402602001604051908101604052809291908181526020018280546103a890611524565b80156103f35780601f106103ca576101008083540402835291602001916103f3565b820191905f5260205f20905b8154815290600101906020018083116103d657829003601f168201915b5050505050905090565b5f3361040a8185856107f2565b60019150505b92915050565b5f33610423858285610804565b61042e8585856108d1565b506001949350505050565b5f61044261097a565b905090565b61044f610ab0565b6104598282610b03565b5050565b610465610ab0565b61046e5f610b5d565b565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812054610410565b5f6060805f805f60606104ab610bd3565b6104b3610c00565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b5f6009546ec097ce7bc90715b34b9f100000000061044291906115a2565b60606004805461037c90611524565b5f3361040a8185856108d1565b5f670de0b6b3a76400006009548361054a91906115da565b61041091906115a2565b61055c610ab0565b5f81116105ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43616e6e6f74206265203000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600955565b6009545f9061054a83670de0b6b3a76400006115da565b83421115610623576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024016105c1565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861067b8c73ffffffffffffffffffffffffffffffffffffffff165f90815260076020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6106e282610c2d565b90505f6106f182878787610c74565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610778576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b1660248201526044016105c1565b6107838a8a8a6107f2565b50505050505050505050565b610797610ab0565b73ffffffffffffffffffffffffffffffffffffffff81166107e6576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024016105c1565b6107ef81610b5d565b50565b6107ff8383836001610ca0565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108cb57818110156108bd576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016105c1565b6108cb84848484035f610ca0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610920576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016105c1565b73ffffffffffffffffffffffffffffffffffffffff821661096f576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016105c1565b6107ff838383610de5565b5f3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156109df57507f000000000000000000000000000000000000000000000000000000000000000046145b15610a0957507f000000000000000000000000000000000000000000000000000000000000000090565b610442604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60085473ffffffffffffffffffffffffffffffffffffffff16331461046e576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016105c1565b73ffffffffffffffffffffffffffffffffffffffff8216610b52576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016105c1565b6104595f8383610de5565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606104427f00000000000000000000000000000000000000000000000000000000000000006005610f8c565b60606104427f00000000000000000000000000000000000000000000000000000000000000006006610f8c565b5f610410610c3961097a565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f80610c8488888888611035565b925092509250610c948282611128565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416610cef576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016105c1565b73ffffffffffffffffffffffffffffffffffffffff8316610d3e576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016105c1565b73ffffffffffffffffffffffffffffffffffffffff8085165f90815260016020908152604080832093871683529290522082905580156108cb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610dd791815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e1c578060025f828254610e1191906115f1565b90915550610ecc9050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015610ea1576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016105c1565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610ef557600280548290039055610f20565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f7f91815260200190565b60405180910390a3505050565b606060ff8314610fa657610f9f8361122b565b9050610410565b818054610fb290611524565b80601f0160208091040260200160405190810160405280929190818152602001828054610fde90611524565b80156110295780601f1061100057610100808354040283529160200191611029565b820191905f5260205f20905b81548152906001019060200180831161100c57829003601f168201915b50505050509050610410565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561106e57505f9150600390508261111e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156110bf573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661111557505f92506001915082905061111e565b92505f91508190505b9450945094915050565b5f82600381111561113b5761113b611604565b03611144575050565b600182600381111561115857611158611604565b0361118f576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156111a3576111a3611604565b036111dd576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016105c1565b60038260038111156111f1576111f1611604565b03610459576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016105c1565b60605f61123783611268565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610410576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61130660208301846112a8565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611330575f80fd5b919050565b5f8060408385031215611346575f80fd5b61134f8361130d565b946020939093013593505050565b5f805f6060848603121561136f575f80fd5b6113788461130d565b92506113866020850161130d565b929592945050506040919091013590565b5f602082840312156113a7575f80fd5b6113068261130d565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e08301896112a8565b82810360408401526113fc81896112a8565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b5f6020828403121561147f575f80fd5b5035919050565b5f805f805f805f60e0888a03121561149c575f80fd5b6114a58861130d565b96506114b36020890161130d565b95506040880135945060608801359350608088013560ff811681146114d6575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215611504575f80fd5b61150d8361130d565b915061151b6020840161130d565b90509250929050565b600181811c9082168061153857607f821691505b60208210810361156f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f826115d5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808202811582820484141761041057610410611575565b8082018082111561041057610410611575565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea26469706673582212205575fa96cebed98cb9b6f8b99741073517829f9aebdab915d94526e50207343a64736f6c634300081a0033", - "nonce": "0x2b", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x38ae2f11e523e97fd44b5f91243d5fcbab64edfb2374b70bb2d249cdae33e9fb", - "transactionType": "CREATE", - "contractName": "MockFastGasGwei", - "contractAddress": "0xf58c541746458e60bbf3393981b4b0abd33b9536", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0xbddc3", - "value": "0x0", - "input": "0x608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610120565b506040805160808101825264028fa6ae0081524260208083018281529383019182525f60608401818152908052600190915291517fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495591517fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4a5590517fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4b55517fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4c80546001600160501b0319166001600160501b0390921691909117905561016f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61081e8061017c5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063e094129e11610063578063e094129e1461023f578063f2fde38b14610252578063f457490914610265578063feaf968c14610278575f80fd5b80638da5cb5b146101bb5780639a6fc8f5146101e2578063abfc9b7c1461022c575f80fd5b8063715018a6116100c3578063715018a6146101205780637284e41614610128578063779a9eb114610167578063897782601461017a575f80fd5b8063123e8136146100e9578063313ce567146100fe57806354fd4d5014610111575b5f80fd5b6100fc6100f736600461064b565b6102ed565b005b6040515f81526020015b60405180910390f35b60405160048152602001610108565b6100fc610349565b604080518082018252600f81527f4661737420476173202f2047776569000000000000000000000000000000000060208201529051610108919061066b565b6100fc6101753660046106be565b61035c565b5f5474010000000000000000000000000000000000000000900469ffffffffffffffffffff1660405169ffffffffffffffffffff9091168152602001610108565b5f5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b6101f56101f036600461064b565b61038e565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610108565b6100fc61023a3660046106be565b610403565b6100fc61024d36600461064b565b610429565b6100fc6102603660046106e6565b610488565b6100fc610273366004610719565b6104f0565b5f805469ffffffffffffffffffff74010000000000000000000000000000000000000000909104811680835260016020818152604094859020855160808101875281548082529382015492810183905260028201549681018790526003909101549094166060909401849052919390926101f5565b6102f5610567565b5f805469ffffffffffffffffffff90921674010000000000000000000000000000000000000000027fffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610351610567565b61035a5f6105b9565b565b610364610567565b69ffffffffffffffffffff9091165f90815260016020819052604090912090810182905560020155565b5f805f805f6103f18669ffffffffffffffffffff8082165f90815260016020818152604092839020835160808101855281548082529382015492810183905260028201549481018590526003909101549094166060909401849052939490939290565b939a9299509097509550909350915050565b61040b610567565b69ffffffffffffffffffff9091165f90815260016020526040902055565b610431610567565b69ffffffffffffffffffff165f9081526001602081905260408220828155908101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b610490610567565b73ffffffffffffffffffffffffffffffffffffffff81166104e4576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6104ed816105b9565b50565b6104f8610567565b69ffffffffffffffffffff9182165f90815260016020818152604092839020845181559084015191810191909155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001691909216179055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461035a576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016104db565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803569ffffffffffffffffffff81168114610646575f80fd5b919050565b5f6020828403121561065b575f80fd5b6106648261062d565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f80604083850312156106cf575f80fd5b6106d88361062d565b946020939093013593505050565b5f602082840312156106f6575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610664575f80fd5b5f8082840360a081121561072b575f80fd5b6107348461062d565b925060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610765575f80fd5b506040516080810181811067ffffffffffffffff821117156107ae577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040908152602085810135835285820135908301526060850135908201526107d86080850161062d565b606082015280915050925092905056fea264697066735822122025df59b7992985d393659d28b66943ac442a76d419e58268f47699021ccacc6c64736f6c634300081a0033", - "nonce": "0x2c", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x44b4d84b8bfd0218080c5b668e3089093527e195902d8cf3095b36c4174e7aab", - "transactionType": "CALL", - "contractName": "WstETH", - "contractAddress": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "function": "mint(address,uint256)", - "arguments": [ - "0xD8DEfcE74acCDd880091921D75a00D5B0f8B23c5", - "400000000000000000000" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "gas": "0x17cc7", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000000000000000000000000015af1d78b58c400000", - "nonce": "0x2d", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x15fd1b3", - "logs": [ - { - "address": "0x2cd340c58a31d96a1c6b0672c76a0c8a53b59f32", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0c6fd1695d2d300b3c7199d0c4b4b08f88f42e95213f1333f91619af8f3fe9c9", - "blockNumber": "0x62958d", - "transactionHash": "0xfc03df9ad2b324c21a978dbb9b5db16817395a417685e2a97355490f08cdbc05", - "transactionIndex": "0x78", - "logIndex": "0xc2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000010000000000000000000000000000000000080000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000200000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000022000000000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfc03df9ad2b324c21a978dbb9b5db16817395a417685e2a97355490f08cdbc05", - "transactionIndex": "0x78", - "blockHash": "0x0c6fd1695d2d300b3c7199d0c4b4b08f88f42e95213f1333f91619af8f3fe9c9", - "blockNumber": "0x62958d", - "gasUsed": "0x135241", - "effectiveGasPrice": "0x931fe4423", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x2cd340c58a31d96a1c6b0672c76a0c8a53b59f32" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa6d8b0", - "logs": [ - { - "address": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x91b593c6fabbccebdc805d4d457c740f95d0663b35cae353e8d867d7091e1d3c", - "blockNumber": "0x62958e", - "transactionHash": "0x8c58546d9bac207b7b61f4696229d68e5cdc379fc1e5ad74b9a8ce2fa4524715", - "transactionIndex": "0x33", - "logIndex": "0x6f", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000010000000000000000000000020000000000000000000800000000000000000000000000000100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000022000000000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8c58546d9bac207b7b61f4696229d68e5cdc379fc1e5ad74b9a8ce2fa4524715", - "transactionIndex": "0x33", - "blockHash": "0x91b593c6fabbccebdc805d4d457c740f95d0663b35cae353e8d867d7091e1d3c", - "blockNumber": "0x62958e", - "gasUsed": "0x1540b9", - "effectiveGasPrice": "0xa50b8f01d", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x85623e", - "logs": [ - { - "address": "0xf58c541746458e60bbf3393981b4b0abd33b9536", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x945e3e05973d487a15a61a569e3edfe2b563d4e714acfd616207c821058e3b00", - "blockNumber": "0x62958f", - "transactionHash": "0x38ae2f11e523e97fd44b5f91243d5fcbab64edfb2374b70bb2d249cdae33e9fb", - "transactionIndex": "0x30", - "logIndex": "0x63", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000010000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000001000002000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000022000000000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x38ae2f11e523e97fd44b5f91243d5fcbab64edfb2374b70bb2d249cdae33e9fb", - "transactionIndex": "0x30", - "blockHash": "0x945e3e05973d487a15a61a569e3edfe2b563d4e714acfd616207c821058e3b00", - "blockNumber": "0x62958f", - "gasUsed": "0x920be", - "effectiveGasPrice": "0xa0685429f", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0xf58c541746458e60bbf3393981b4b0abd33b9536" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x54d96b", - "logs": [ - { - "address": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x000000000000000000000000000000000000000000000015af1d78b58c400000", - "blockHash": "0x0dd944833bd4ca4fd90c3885e9412ea4396bd12a0b1a86a3ca5428c71e9c19f1", - "blockNumber": "0x629590", - "transactionHash": "0x44b4d84b8bfd0218080c5b668e3089093527e195902d8cf3095b36c4174e7aab", - "transactionIndex": "0x23", - "logIndex": "0x49", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000010000000000000000000000020000000000000000000800000000000000000000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000800000000000022000000000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x44b4d84b8bfd0218080c5b668e3089093527e195902d8cf3095b36c4174e7aab", - "transactionIndex": "0x23", - "blockHash": "0x0dd944833bd4ca4fd90c3885e9412ea4396bd12a0b1a86a3ca5428c71e9c19f1", - "blockNumber": "0x629590", - "gasUsed": "0x113ae", - "effectiveGasPrice": "0xa0faae35e", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "contractAddress": null - } - ], - "libraries": [], - "pending": [], - "returns": { - "MockFastGasGwei_": { - "internal_type": "contract MockFastGasGwei", - "value": "0xf58C541746458e60BBf3393981B4B0aBD33b9536" - }, - "Sdex_": { - "internal_type": "contract Sdex", - "value": "0x2Cd340C58A31D96A1c6B0672c76a0c8A53B59f32" - }, - "WstETH_": { - "internal_type": "contract WstETH", - "value": "0x40b8b38dd0deDCa43fC7831D4494e8Cbe843CC1B" - } - }, - "timestamp": 1723123155, - "chain": 11155111, - "commit": "dbf22e4" -} \ No newline at end of file diff --git a/broadcast/01_DeployUsdn.s.sol/11155111/run-latest.json b/broadcast/01_DeployUsdn.s.sol/11155111/run-latest.json deleted file mode 100644 index 2666c561f..000000000 --- a/broadcast/01_DeployUsdn.s.sol/11155111/run-latest.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x76eac685c730e86f1c174f3d77eae61c5ea4efdc6233795349d28829848d81f7", - "transactionType": "CREATE", - "contractName": "Usdn", - "contractAddress": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x2e11b4", - "value": "0x0", - "input": "0x610160604052670de0b6b3a7640000600b5534801561001c575f80fd5b50604051612b95380380612b9583398101604081905261003b91610350565b6040518060400160405280602081526020015f80516020612b7583398151915281525080604051806040016040528060018152602001603160f81b8152506040518060400160405280602081526020015f80516020612b75833981519152815250604051806040016040528060048152602001632aa9a22760e11b81525081600390816100c89190610419565b5060046100d58282610419565b506100e591508390506005610212565b610120526100f4816006610212565b61014052815160208084019190912060e052815190820120610100524660a05261018060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506101945f33610244565b506001600160a01b038216156101d0576101ce7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610244565b505b6001600160a01b0381161561020b576102097f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b7582610244565b505b505061052b565b5f60208351101561022d57610226836102ef565b905061023e565b816102388482610419565b5060ff90505b92915050565b5f8281526008602090815260408083206001600160a01b038516845290915281205460ff166102e8575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556102a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161023e565b505f61023e565b5f80829050601f81511115610322578260405163305a27a960e01b815260040161031991906104d3565b60405180910390fd5b805161032d82610508565b179392505050565b80516001600160a01b038116811461034b575f80fd5b919050565b5f8060408385031215610361575f80fd5b61036a83610335565b915061037860208401610335565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806103a957607f821691505b6020821081036103c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561041457805f5260205f20601f840160051c810160208510156103f25750805b601f840160051c820191505b81811015610411575f81556001016103fe565b50505b505050565b81516001600160401b0381111561043257610432610381565b610446816104408454610395565b846103cd565b6020601f821160018114610478575f83156104615750848201515b5f19600385901b1c1916600184901b178455610411565b5f84815260208120601f198516915b828110156104a75787850151825560209485019460019092019101610487565b50848210156104c457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156103c7575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516125f961057c5f395f61187001525f61184301525f61143a01525f61141201525f61136d01525f61139701525f6113c101526125f95ff3fe608060405234801561000f575f80fd5b50600436106102cd575f3560e01c80637ecebe001161017c578063a79ebd60116100dd578063d505accf11610093578063dd62ed3e1161006e578063dd62ed3e1461061f578063e831574214610664578063f5eb42dc1461066c575f80fd5b8063d505accf146105d2578063d5391393146105e5578063d547741f1461060c575f80fd5b8063bb3d0adc116100c3578063bb3d0adc14610575578063bc4f2d6d1461059d578063c6e6f592146105bf575f80fd5b8063a79ebd6014610557578063a9059cbb14610562575f80fd5b80638fcb4e5b1161013257806391d148541161011857806391d148541461050357806395d89b4114610548578063a217fddf14610550575f80fd5b80638fcb4e5b146104dd57806391b3c441146104f0575f80fd5b806384b0196e1161016257806384b0196e1461049c578063853c637d146104b757806385906256146104ca575f80fd5b80637ecebe001461046257806383eb70e514610475575f80fd5b806333fce74b1161023157806342966c68116101e75780636d780459116101c25780636d7804591461042957806370a082311461043c57806379cc67901461044f575f80fd5b806342966c68146103f0578063528c198a1461040357806358ffcf0b14610416575f80fd5b806336568abe1161021757806336568abe146103c25780633a98ef39146103d557806340c10f19146103dd575f80fd5b806333fce74b146103a75780633644e515146103ba575f80fd5b80631f2dc5ef11610286578063248a9ca31161026c578063248a9ca3146103615780632f2ff15d14610383578063313ce56714610398575f80fd5b80631f2dc5ef1461034657806323b872dd1461034e575f80fd5b8063095ea7b3116102b6578063095ea7b31461030e5780630ec4f2591461032157806318160ddd1461033e575f80fd5b806301ffc9a7146102d157806306fdde03146102f9575b5f80fd5b6102e46102df366004612061565b6106a1565b60405190151581526020015b60405180910390f35b610301610739565b6040516102f091906120ec565b6102e461031c36600461211f565b6107c9565b610330670de0b6b3a764000081565b6040519081526020016102f0565b6103306107e0565b600b54610330565b6102e461035c366004612149565b6107f6565b61033061036f366004612187565b5f9081526008602052604090206001015490565b61039661039136600461219e565b61081b565b005b604051601281526020016102f0565b6103966103b536600461211f565b610845565b610330610879565b6103966103d036600461219e565b610882565b600a54610330565b6103966103eb36600461211f565b6108db565b6103966103fe366004612187565b61090f565b61033061041136600461211f565b61091b565b6103966104243660046121cc565b6109bd565b6102e4610437366004612149565b610a41565b61033061044a3660046121cc565b610a7c565b61039661045d36600461211f565b610aaf565b6103306104703660046121cc565b610abd565b6103307f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b7581565b6104a4610ac7565b6040516102f097969594939291906121e7565b6103966104c5366004612187565b610b25565b6103306104d8366004612187565b610b38565b6102e46104eb36600461211f565b610b47565b6103306104fe366004612187565b610b60565b6102e461051136600461219e565b5f91825260086020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610301610b6f565b6103305f81565b610330633b9aca0081565b6102e461057036600461211f565b610b7e565b600c5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102f0565b6105b06105ab366004612187565b610b8b565b6040516102f0939291906122a6565b6103306105cd366004612187565b610d14565b6103966105e03660046122cf565b610d66565b6103307f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61039661061a36600461219e565b610f0f565b61033061062d366004612340565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b610330610f33565b61033061067a3660046121cc565b73ffffffffffffffffffffffffffffffffffffffff165f9081526009602052604090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061073357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546107489061236c565b80601f01602080910402602001604051908101604052809291908181526020018280546107749061236c565b80156107bf5780601f10610796576101008083540402835291602001916107bf565b820191905f5260205f20905b8154815290600101906020018083116107a257829003601f168201915b5050505050905090565b5f336107d6818585610f62565b5060019392505050565b5f6107f1600a546001600b54610f6f565b905090565b5f33610803858285611082565b61080e858585611149565b60019150505b9392505050565b5f82815260086020526040902060010154610835816111f2565b61083f83836111fc565b50505050565b600b5461085e833361085985600286610f6f565b611082565b610874838361086f85600186610f6f565b6112f9565b505050565b5f6107f1611354565b73ffffffffffffffffffffffffffffffffffffffff811633146108d1576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610874828261148a565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610905816111f2565b6108748383611547565b610918816115a1565b50565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610946816111f2565b73ffffffffffffffffffffffffffffffffffffffff841661099a576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6109a8836001600b54610f6f565b91506109b65f8585856115ab565b5092915050565b5f6109c7816111f2565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f50138a6f95bdc577e2db688388b5f76f3c25f22203b0b788b41950f75e20bb799060200160405180910390a15050565b600b545f903390610a59868361085987600286610f6f565b610a70868686610a6b88600187610f6f565b611753565b50600195945050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260096020526040812054610733906001600b54610f6f565b610ab982826117fd565b5050565b5f61073382611812565b5f6060805f805f6060610ad861183c565b610ae0611869565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610918338261086f846001600b54610f6f565b5f610733826001600b54610f6f565b5f803390506107d6818585610a6b876001600b54610f6f565b5f610733826002600b54610f6f565b6060600480546107489061236c565b5f336107d6818585611149565b5f8060607f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b75610bb9816111f2565b600b54925082851115610bce57829450610be2565b633b9aca00851015610be257633b9aca0094505b828503610bf1575f9350610d0c565b600b859055600c546001945073ffffffffffffffffffffffffffffffffffffffff168015610cd1576040517fd381d5b4000000000000000000000000000000000000000000000000000000008152600481018590526024810187905273ffffffffffffffffffffffffffffffffffffffff82169063d381d5b4906044015f604051808303815f875af1158015610c89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cce91908101906123ea565b92505b60408051858152602081018890527f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511910160405180910390a1505b509193909250565b5f610d1d610f33565b821115610d59576040517f50c830fa00000000000000000000000000000000000000000000000000000000815260048101839052602401610991565b600b546107339083612507565b83421115610da3576040517f6279130200000000000000000000000000000000000000000000000000000000815260048101859052602401610991565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610dfb8c73ffffffffffffffffffffffffffffffffffffffff165f90815260076020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610e6282611896565b90505f610e71828787876118dd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b166024820152604401610991565b610f038a8a8a610f62565b50505050505050505050565b5f82815260086020526040902060010154610f29816111f2565b61083f838361148a565b5f600b547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f1919061254b565b6108748383836001611909565b5f60018211610faa576040517f2b8daf2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828581610fba57610fba61251e565b0490505f838681610fcd57610fcd61251e565b0690505f856002811115610fe357610fe3612583565b1480610fed575080155b15610ffa57509050610814565b837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816110295761102961251e565b04820361103857509050610814565b60018201600286600281111561105057611050612583565b0361105f579250610814915050565b600185901c80831061107357819450611077565b8394505b505050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461083f578181101561113b576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610991565b61083f84848484035f611909565b73ffffffffffffffffffffffffffffffffffffffff8316611198576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b73ffffffffffffffffffffffffffffffffffffffff82166111e7576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b610874838383611a40565b6109188133611c64565b5f82815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166112f2575f83815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112903390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610733565b505f610733565b73ffffffffffffffffffffffffffffffffffffffff8316611348576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b610874835f84846115ab565b5f3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156113b957507f000000000000000000000000000000000000000000000000000000000000000046145b156113e357507f000000000000000000000000000000000000000000000000000000000000000090565b6107f1604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f82815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156112f2575f83815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610733565b73ffffffffffffffffffffffffffffffffffffffff8216611596576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b610ab95f8383611a40565b6109183382611ceb565b73ffffffffffffffffffffffffffffffffffffffff84166115e25781600a5f8282546115d791906125b0565b909155506116929050565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526009602052604090205482811015611667576040517fc468994000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526024810182905260448101849052606401610991565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526009602052604090209083900390555b73ffffffffffffffffffffffffffffffffffffffff83166116bb57600a805483900390556116e6565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526009602052604090208054830190555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161174591815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff84166117a2576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b73ffffffffffffffffffffffffffffffffffffffff83166117f1576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b61083f848484846115ab565b611808823383611082565b610ab98282611ceb565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812054610733565b60606107f17f00000000000000000000000000000000000000000000000000000000000000006005611d45565b60606107f17f00000000000000000000000000000000000000000000000000000000000000006006611d45565b5f6107336118a2611354565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f806118ed88888888611dee565b9250925092506118fd8282611ee1565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416611958576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b73ffffffffffffffffffffffffffffffffffffffff83166119a7576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b73ffffffffffffffffffffffffffffffffffffffff8085165f908152600160209081526040808320938716835292905220829055801561083f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161174591815260200190565b5f611a4a82610d14565b90505f611a5685610a7c565b905073ffffffffffffffffffffffffffffffffffffffff8516611abb57600a5480830190811015611ab3576040517f5b26e69000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a55611ba2565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526009602052604090205483821015611b40576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810183905260448101859052606401610991565b808311611b775773ffffffffffffffffffffffffffffffffffffffff86165f90815260096020526040902080548490039055611ba0565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600960205260408120559150815b505b73ffffffffffffffffffffffffffffffffffffffff8416611bcb57600a80548390039055611bf6565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526009602052604090208054830190555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c5591815260200190565b60405180910390a35050505050565b5f82815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ab9576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610991565b73ffffffffffffffffffffffffffffffffffffffff8216611d3a576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610991565b610ab9825f83611a40565b606060ff8314611d5f57611d5883611fe4565b9050610733565b818054611d6b9061236c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d979061236c565b8015611de25780601f10611db957610100808354040283529160200191611de2565b820191905f5260205f20905b815481529060010190602001808311611dc557829003601f168201915b50505050509050610733565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611e2757505f91506003905082611ed7565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611e78573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ece57505f925060019150829050611ed7565b92505f91508190505b9450945094915050565b5f826003811115611ef457611ef4612583565b03611efd575050565b6001826003811115611f1157611f11612583565b03611f48576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611f5c57611f5c612583565b03611f96576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610991565b6003826003811115611faa57611faa612583565b03610ab9576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610991565b60605f611ff083612021565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610733576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60208284031215612071575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610814575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61081460208301846120a0565b73ffffffffffffffffffffffffffffffffffffffff81168114610918575f80fd5b5f8060408385031215612130575f80fd5b823561213b816120fe565b946020939093013593505050565b5f805f6060848603121561215b575f80fd5b8335612166816120fe565b92506020840135612176816120fe565b929592945050506040919091013590565b5f60208284031215612197575f80fd5b5035919050565b5f80604083850312156121af575f80fd5b8235915060208301356121c1816120fe565b809150509250929050565b5f602082840312156121dc575f80fd5b8135610814816120fe565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61222160e08301896120a0565b828103604084015261223381896120a0565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015612295578351835260209384019390920191600101612277565b50909b9a5050505050505050505050565b8315158152826020820152606060408201525f6122c660608301846120a0565b95945050505050565b5f805f805f805f60e0888a0312156122e5575f80fd5b87356122f0816120fe565b96506020880135612300816120fe565b95506040880135945060608801359350608088013560ff81168114612323575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215612351575f80fd5b823561235c816120fe565b915060208301356121c1816120fe565b600181811c9082168061238057607f821691505b6020821081036123b7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f602082840312156123fa575f80fd5b815167ffffffffffffffff811115612410575f80fd5b8201601f81018413612420575f80fd5b805167ffffffffffffffff81111561243a5761243a6123bd565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124a6576124a66123bd565b6040528181528282016020018610156124bd575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610733576107336124da565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f8261257e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b80820180821115610733576107336124da56fea2646970667358221220aff2b48d0b091d915304d16cddf1cbdffcd4d02ccca1158cc90e9091aeecd29364736f6c634300081a0033556c74696d6174652053796e7468657469632044656c7461204e65757472616c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x2f", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0xc549fa", - "logs": [ - { - "address": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x80b549242f73d318cc59012b14a8b029acf96c2f79086f62beaf64529c740371", - "blockNumber": "0x629592", - "transactionHash": "0x76eac685c730e86f1c174f3d77eae61c5ea4efdc6233795349d28829848d81f7", - "transactionIndex": "0x56", - "logIndex": "0x8f", - "removed": false - } - ], - "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000900000000000022000000000000000000000000000000010000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x76eac685c730e86f1c174f3d77eae61c5ea4efdc6233795349d28829848d81f7", - "transactionIndex": "0x56", - "blockHash": "0x80b549242f73d318cc59012b14a8b029acf96c2f79086f62beaf64529c740371", - "blockNumber": "0x629592", - "gasUsed": "0x237015", - "effectiveGasPrice": "0xa47bb70bd", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9" - } - ], - "libraries": [], - "pending": [], - "returns": { - "Usdn_": { - "internal_type": "contract Usdn", - "value": "0xcc689fA332C6fAaA3b23365F6b55007B36e082A9" - } - }, - "timestamp": 1723123202, - "chain": 11155111, - "commit": "dbf22e4" -} \ No newline at end of file diff --git a/broadcast/02_Deploy.s.sol/11155111/run-latest.json b/broadcast/02_Deploy.s.sol/11155111/run-latest.json deleted file mode 100644 index 85f452d51..000000000 --- a/broadcast/02_Deploy.s.sol/11155111/run-latest.json +++ /dev/null @@ -1,1286 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xc2ea4539de2d7464ced5cdafde6046a6560d1289dbbaeb0024af70cdc92fa8bc", - "transactionType": "CREATE", - "contractName": "DoubleEndedQueue", - "contractAddress": "0x27c897780f217d992af116a898acee8457d4493a", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x1efa32", - "input": "0x611b8c610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100c4575f3560e01c806376c23e391161007d578063b5d02b4211610063578063b5d02b42146101c4578063e2dfa3b014610214578063fc0fa0b214610227575f80fd5b806376c23e39146101715780639f4f48ea146101b1575f80fd5b80631c0abc2c116100ad5780631c0abc2c146101055780631c376cc2146101315780631fcccd4214610150575f80fd5b806304f7c7c8146100c85780631b6be324146100f2575b5f80fd5b6100db6100d6366004611736565b610246565b6040516100e99291906118d4565b60405180910390f35b6100db610100366004611736565b6104ac565b818015610110575f80fd5b5061012461011f366004611736565b6105bf565b6040516100e99190611903565b81801561013c575f80fd5b5061012461014b366004611736565b61089d565b81801561015b575f80fd5b5061016f61016a36600461193c565b610b7a565b005b81801561017c575f80fd5b5061019061018b366004611a22565b610caa565b6040516fffffffffffffffffffffffffffffffff90911681526020016100e9565b6101246101bf36600461193c565b610f39565b6102066101d2366004611736565b546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009092048116919091031690565b6040519081526020016100e9565b6100db610222366004611b36565b61123b565b818015610232575f80fd5b50610190610241366004611a22565b611474565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f6102da835470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff90811691161490565b15610311576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5081547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff7001000000000000000000000000000000009092048216019081165f90815260018401602052604090819020815161018081019092528054829060ff16600a8111156103945761039461174d565b600a8111156103a5576103a561174d565b8152815461010080820464ffffffffff166020840152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff90811660408401526001840154908116606084015274010000000000000000000000000000000000000000810467ffffffffffffffff1660808401527c01000000000000000000000000000000000000000000000000000000009004600290810b60a08401528301546fffffffffffffffffffffffffffffffff80821660c08501527001000000000000000000000000000000009091041660e08301526003830154908201526004820154610120820152600582015461014082015260069091015461016090910152939092509050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f610540835470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff90811691161490565b15610577576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5081546fffffffffffffffffffffffffffffffff165f81815260018401602052604090819020815161018081019092528054829060ff16600a8111156103945761039461174d565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915281546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691168103610682576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016fffffffffffffffffffffffffffffffff81165f90815260018401602052604090819020815161018081019092528054829060ff16600a8111156106ea576106ea61174d565b600a8111156106fb576106fb61174d565b8152815461010080820464ffffffffff16602080850191909152660100000000000090920473ffffffffffffffffffffffffffffffffffffffff908116604080860191909152600180870154928316606087015274010000000000000000000000000000000000000000830467ffffffffffffffff1660808701527c0100000000000000000000000000000000000000000000000000000000909204600290810b60a0870152808701546fffffffffffffffffffffffffffffffff80821660c089015270010000000000000000000000000000000091829004811660e08901526003808a0154968901969096526004808a01546101208a01526005808b01546101408b015260069a8b0154610160909a01999099529a81165f8181528e870190985293872080547fffffffffffff000000000000000000000000000000000000000000000000000016815594850180547fff000000000000000000000000000000000000000000000000000000000000001690559184018690559383018590559782018490559381018390559093015585549093169202919091179092555090565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915281546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004168103610961576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff81165f90815260018401602052604090819020815161018081019092528054829060ff16600a8111156109a7576109a761174d565b600a8111156109b8576109b861174d565b8152815461010080820464ffffffffff16602080850191909152660100000000000090920473ffffffffffffffffffffffffffffffffffffffff908116604080860191909152600180870154928316606087015274010000000000000000000000000000000000000000830467ffffffffffffffff1660808701527c0100000000000000000000000000000000000000000000000000000000909204600290810b60a0870152808701546fffffffffffffffffffffffffffffffff80821660c0890152700100000000000000000000000000000000909104811660e0880152600380890154958801959095526004808901546101208901526005808a01546101408a01526006998a0154610160909901989098528a82165f9081528d860190975292862080547fffffffffffff000000000000000000000000000000000000000000000000000016815580850180547fff00000000000000000000000000000000000000000000000000000000000000169055918201869055938101859055908101849055938401839055929093015585547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016930116919091179092555090565b815470010000000000000000000000000000000081046fffffffffffffffffffffffffffffffff9081167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0191811690831603610be057610bda8361089d565b50505050565b806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1603610c1457610bda836105bf565b506fffffffffffffffffffffffffffffffff165f90815260019182016020526040812080547fffffffffffff000000000000000000000000000000000000000000000000000016815591820180547fff0000000000000000000000000000000000000000000000000000000000000016905560028201819055600382018190556004820181905560058201819055600690910155565b81546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169181166001830190911603610d14576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff81165f9081526001808501602052604090912083518154859383917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169083600a811115610d7557610d7561174d565b02179055506020820151815460408401517fffffffffffff00000000000000000000000000000000000000000000000000ff90911661010064ffffffffff90931683027fffffffffffff0000000000000000000000000000000000000000ffffffffffff1617660100000000000073ffffffffffffffffffffffffffffffffffffffff92831602178355606084015160018085018054608088015160a0890151949095167fffffffff00000000000000000000000000000000000000000000000000000000909116177401000000000000000000000000000000000000000067ffffffffffffffff90951694909402939093177fff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000062ffffff909316929092029190911790915560c084015160e08501516fffffffffffffffffffffffffffffffff9182167001000000000000000000000000000000009183168202176002860155928501516003850155610120850151600485015561014085015160058501556101609094015160069093019290925585548316918401909216909102179092555090565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915282546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911611156110575782546fffffffffffffffffffffffffffffffff90811690831610801561101b575082546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104811690831610155b15611052576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110de565b82546fffffffffffffffffffffffffffffffff90811690831610806110a7575082546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104811690831610155b156110de576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff82165f90815260018401602052604090819020815161018081019092528054829060ff16600a8111156111245761112461174d565b600a8111156111355761113561174d565b8152815461010080820464ffffffffff166020840152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff90811660408401526001840154908116606084015274010000000000000000000000000000000000000000810467ffffffffffffffff1660808401527c01000000000000000000000000000000000000000000000000000000009004600290810b60a08401528301546fffffffffffffffffffffffffffffffff80821660c08501527001000000000000000000000000000000009091041660e083015260038301549082015260048201546101208201526005820154610140820152600690910154610160909101529392505050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091525f6112d484546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009092048116919091031690565b831061130c576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5082546fffffffffffffffffffffffffffffffff90811683019081165f90815260018501602052604090819020815161018081019092528054829060ff16600a81111561135b5761135b61174d565b600a81111561136c5761136c61174d565b8152815461010080820464ffffffffff166020840152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff90811660408401526001840154908116606084015274010000000000000000000000000000000000000000810467ffffffffffffffff1660808401527c01000000000000000000000000000000000000000000000000000000009004600290810b60a08401528301546fffffffffffffffffffffffffffffffff80821660c08501527001000000000000000000000000000000009091041660e0830152600383015490820152600482015461012082015260058201546101408201526006909101546101609091015294909350915050565b81546fffffffffffffffffffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019170010000000000000000000000000000000090048116908216036114fd576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff81165f9081526001808501602052604090912083518154859383917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169083600a81111561155e5761155e61174d565b02179055506020820151815460408401517fffffffffffff00000000000000000000000000000000000000000000000000ff90911661010064ffffffffff90931683027fffffffffffff0000000000000000000000000000000000000000ffffffffffff1617660100000000000073ffffffffffffffffffffffffffffffffffffffff928316021783556060840151600184018054608087015160a0880151939094167fffffffff00000000000000000000000000000000000000000000000000000000909116177401000000000000000000000000000000000000000067ffffffffffffffff90941693909302929092177fff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000062ffffff9092169190910217905560c083015160e08401516fffffffffffffffffffffffffffffffff91821670010000000000000000000000000000000091831691909102176002840155908301516003830155610120830151600483015561014083015160058301556101609092015160069091015583547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016908216179092555090565b5f60208284031215611746575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600b81106117af577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6117be82825161177a565b60208101516117d6602084018264ffffffffff169052565b5060408101516117fe604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060810151611826606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080810151611842608084018267ffffffffffffffff169052565b5060a081015161185760a084018260020b9052565b5060c081015161187b60c08401826fffffffffffffffffffffffffffffffff169052565b5060e081015161189f60e08401826fffffffffffffffffffffffffffffffff169052565b506101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b6101a081016118e382856117b3565b6fffffffffffffffffffffffffffffffff83166101808301529392505050565b610180810161191282846117b3565b92915050565b80356fffffffffffffffffffffffffffffffff81168114611937575f80fd5b919050565b5f806040838503121561194d575f80fd5b8235915061195d60208401611918565b90509250929050565b604051610180810167ffffffffffffffff811182821017156119af577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b8035600b8110611937575f80fd5b803564ffffffffff81168114611937575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611937575f80fd5b803567ffffffffffffffff81168114611937575f80fd5b8035600281900b8114611937575f80fd5b5f808284036101a0811215611a35575f80fd5b833592506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611a69575f80fd5b50611a72611966565b611a7e602085016119b5565b8152611a8c604085016119c3565b6020820152611a9d606085016119d7565b6040820152611aae608085016119d7565b6060820152611abf60a085016119fa565b6080820152611ad060c08501611a11565b60a0820152611ae160e08501611918565b60c0820152611af36101008501611918565b60e0820152610120848101356101008301526101408086013591830191909152610160808601359183019190915261018090940135938101939093525092909150565b5f8060408385031215611b47575f80fd5b5050803592602090910135915056fea26469706673582212205b21888e97de2b84ef6e21f93aff4f4dc19c1304fbac963f09f2a2bbde289c0964736f6c634300081a0033", - "nonce": "0x30", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5587d45fb48a7e4906fd2173f76854dce35de48a5d0d320480ebd93084786cbf", - "transactionType": "CREATE", - "contractName": "HugeUint", - "contractAddress": "0x4c5ab10d25e152e039983380faa4011da0bce173", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0xbf053", - "input": "0x6109fb610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061007a575f3560e01c806394eee6d21161005857806394eee6d2146100e5578063b0cccdb5146100f8578063c8a4ac9c1461010b575f80fd5b8063343a0d451461007e578063509f380f146100b15780636a6a5e09146100c4575b5f80fd5b61009161008c3660046108e4565b61011e565b604080518251815260209283015192810192909252015b60405180910390f35b6100916100bf366004610917565b6101b2565b6100d76100d2366004610917565b61028c565b6040519081526020016100a8565b6100d76100f33660046108e4565b610322565b6100916101063660046108e4565b61033d565b610091610119366004610940565b6103d2565b604080518082019091525f8082526020820152602080840151845191840151845190820192918310910101808352602083019190915282511180610175575081518151148015610175575081602001518160200151105b156101ac576040517f242ccc1e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b604080518082019091525f808252602082015282511580156101d657506020830151155b806101df575081155b6101ac576101f18360200151836103eb565b8252602082015282518083029083828161020d5761020d610960565b0414610245576040517f104ed22700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81518101808352811115610285576040517f104ed22700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b81515f9082116102c8576040517f2084e3d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82511580156102da5750818360200151105b156102e657505f6101ac565b82515f03610309578183602001518161030157610301610960565b0490506101ac565b61031b8360200151845f015184610424565b9392505050565b5f61031b8360200151845f01518460200151855f01516104b6565b604080518082019091525f8082526020820152815183511080610373575081518351148015610373575081602001518360200151105b156103aa576040517fd92a239800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208084015184519184015184518183039391909210919003035b8252602082015292915050565b604080518082019091525f80825260208201526103c583835b8181025f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff838509828110830181039150509250929050565b5f80827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85099050828482089050828582088581119094035f848103851690819003819004600101919091029490950385900493909317600260039590930494850283188086028403028086028403028086028403028086028403028086028403029485029092039093020292915050565b5f815f0361056157825f036104f7576040517f2084e3d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835f036105155782858161050d5761050d610960565b0490506105e6565b8383111561052f57610528858585610424565b90506105e6565b6040517f2084e3d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818410806105785750818414801561057857508285105b1561058457505f6105e6565b5f61058e836105ee565b9050805f036105a15760019150506105e6565b83811b61010082900385811c85841b179088841b9089811c89861b179089901c5f6105cc868661068c565b90506105dc848484898986610724565b9750505050505050505b949350505050565b5f815f036105ff5750610100919050565b5080157ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c601f161a9091180190565b5f610696826107e2565b90508181028301838110156106df576001820391508281106106db577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290035b8290035b5f806106eb84876103eb565b9150915080830192508083101561071b57600184039350858210158584111785841015161561071b576001840393505b50505092915050565b5f805f61073184886103eb565b898201935088019083100190505f8061074a88846103eb565b60018501949193509150828c03898110848e10928a028d038490039290920389900391909103908990038582106107ad577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949094019390880189820191821001905b888211806107c5575088821480156107c55750898110155b156107d1576001850194505b50929b9a5050505050505050505050565b5f817f8000000000000000000000000000000000000000000000000000000000000000165f0361083e576040517f2084e3d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61086c848261098d565b84610424565b5f60408284031215610882575f80fd5b6040516040810181811067ffffffffffffffff821117156108ca577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052823581526020928301359281019290925250919050565b5f80608083850312156108f5575f80fd5b6108ff8484610872565b915061090e8460408501610872565b90509250929050565b5f8060608385031215610928575f80fd5b6109328484610872565b946040939093013593505050565b5f8060408385031215610951575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b818103818111156101ac577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea26469706673582212201081042de76cf14db8a528f2c067f8fcbec1a3c3bae14f9f882dac5d2944c06164736f6c634300081a0033", - "nonce": "0x31", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6052a61694fc973baead8d9585494d61d499f1b4f92362c106ad1e071678f608", - "transactionType": "CREATE", - "contractName": "TickMath", - "contractAddress": "0x9cb4861470341446619af06886e688c5785e5c83", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0xf6cce", - "input": "0x610d2d610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100c4575f3560e01c80639ecaed481161007d578063ad9f20a611610063578063ad9f20a614610186578063b36f3f341461018f578063ef675edd146101a2575f80fd5b80639ecaed481461014c578063a1634b141461015f575f80fd5b80638b5f292c116100ad5780638b5f292c1461011957806393bab5df146101265780639ca2f8c614610139575f80fd5b806301c11d96146100c85780636882a888146100fc575b5f80fd5b6100e9790240babfc75ad07869aa10a3c15ddac7477e6c77d87593ababe581565b6040519081526020015b60405180910390f35b610106620ef42081565b60405160029190910b81526020016100f3565b6100e9655af1e67963fc81565b610106610134366004610a6e565b6101b5565b6100e9610147366004610a85565b610353565b61010661015a366004610a85565b610415565b6101067ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b681565b6100e961271081565b61010661019d366004610a6e565b61048e565b6101066101b0366004610a85565b6105bd565b5f6127108210156101f2576040517ff914d32c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b790240babfc75ad07869aa10a3c15ddac7477e6c77d87593ababe5821115610246576040517ff914d32c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61025083610611565b90505f80825f0361026557505f949350505050565b5f8312156102c55761027d655af1e67963fc84610b06565b915061028a600183610b92565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b6600282900b12156102c057509392505050565b6102fb565b6102d5655af1e67963fc84610b06565b91506102e2826001610bd3565b9050620ef420600282900b13156102fb57509392505050565b5f61031e61030884610353565b6103129088610c14565b60ff81901d9081011890565b90505f61033761032d84610353565b6103129089610c14565b90508082106103465782610348565b835b979650505050505050565b5f620ef420600283900b1315610395576040517f14010ac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b6600283900b12156103f3576040517f14010ac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040f61040a655af1e67963fc600285900b610c3a565b61086a565b92915050565b5f8160020b5f03610452576040517ff7eb6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600281900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b68161048657610486610aac565b050292915050565b5f6127108210156104cb576040517ff914d32c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b790240babfc75ad07869aa10a3c15ddac7477e6c77d87593ababe582111561051f576040517ff914d32c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61052983610611565b9050805f0361053a57505f92915050565b5f8112156105a45761055a61054e82610c85565b655af1e67963fc610a4f565b61056390610cbb565b91507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b6600283900b121561059f5761059c826001610bd3565b91505b6105b7565b6105b4655af1e67963fc82610b06565b91505b50919050565b5f8160020b5f036105fa576040517ff7eb6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600281900b620ef4208161048657610486610aac565b6fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f821361066e57631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d7821361089757919050565b680755bf798b4a1bf1e582126108b45763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b5f81610a62576365244e4e5f526004601cfd5b50808206151591040190565b5f60208284031215610a7e575f80fd5b5035919050565b5f60208284031215610a95575f80fd5b81358060020b8114610aa5575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f82610b39577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610b8d57610b8d610ad9565b500590565b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171561040f5761040f610ad9565b600281810b9083900b01627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171561040f5761040f610ad9565b8181035f831280158383131683831282161715610c3357610c33610ad9565b5092915050565b8082025f82127f800000000000000000000000000000000000000000000000000000000000000084141615610c7157610c71610ad9565b818105831482151761040f5761040f610ad9565b5f7f80000000000000000000000000000000000000000000000000000000000000008203610cb557610cb5610ad9565b505f0390565b5f8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103610cef57610cef610ad9565b5f039291505056fea26469706673582212209327e04c7b815c941289a72f9c982b2c4bd5741f9bf01b0acc6c26d29e500d9d64736f6c634300081a0033", - "nonce": "0x32", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf6177d4930fb0004302c657bc7f564da3801281a0ee44b0a03e0380fb56259fa", - "transactionType": "CREATE", - "contractName": "UsdnProtocolActionsLongLibrary", - "contractAddress": "0xea9d32e35d0c7f728d6ea54f471d07471763a790", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x5409fc", - "input": "0x614bef610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100c4575f3560e01c80637e4c15121161007d578063a77539af11610063578063a77539af1461022c578063a87b4ff81461024b578063ac84ee2f1461026a575f80fd5b80637e4c1512146101d1578063a69e866f146101f0575f80fd5b8063301f0fe2116100ad578063301f0fe21461013057806336b200df1461018357806340afeead146101b2575f80fd5b806316349246146100c857806320b71adf14610103575b5f80fd5b8180156100d3575f80fd5b506100e76100e23660046133f2565b610289565b6040805192151583529015156020830152015b60405180910390f35b81801561010e575f80fd5b5061012261011d3660046135f9565b610b62565b6040516100fa929190613680565b81801561013b575f80fd5b5061014f61014a3660046136b4565b610d98565b60408051845160020b815260208086015190820152938101519084015260608301919091521515608082015260a0016100fa565b81801561018e575f80fd5b506101a261019d366004613738565b611336565b60405190151581526020016100fa565b8180156101bd575f80fd5b506101a26101cc366004613819565b611567565b8180156101dc575f80fd5b506101a26101eb366004613819565b6117ef565b8180156101fb575f80fd5b5061020f61020a366004613885565b6117ff565b6040805193845291151560208401521515908201526060016100fa565b818015610237575f80fd5b5061020f610246366004613885565b611a54565b818015610256575f80fd5b5061020f6102653660046138c5565b611bcc565b818015610275575f80fd5b506100e76102843660046133f2565b611ead565b604080516080810182525f808252602082018190529181018290526060810182905281906040517ff36bd1dc0000000000000000000000000000000000000000000000000000000081525f9073d07025f97504ea8dda1e8c40b04bbc11c3a960229063f36bd1dc906102ff908a90600401613b06565b61018060405180830381865af415801561031b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033f9190613c2e565b602081015160608201516040517f521b687000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015264ffffffffff821660248201529192505f91739e87120d47bd6beeee46cb90e187d09b5b5a20b591635cb18083918c9160099173619c25f15edd45e4bcc9ad4be555000ac879ef559063521b687090604401602060405180830381865af41580156103f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041d9190613c49565b8c8c6040518763ffffffff1660e01b815260040161044096959493929190613ca7565b606060405180830381865af415801561045b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047f9190613cec565b905073ea6c2644d67546b2dad7645372e2355b18ac8d016325d030b68a836020015184604001518d600b015f9054906101000a900461ffff165f60098e8e6040518963ffffffff1660e01b81526004016104e0989796959493929190613d27565b6040805180830381865af41580156104fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190613d88565b15158452506013890154815161055b91612710916105409161ffff1690613ddf565b61054a9190613df6565b82516105569190613e2e565b612d44565b6fffffffffffffffffffffffffffffffff16602084015260a08201516101408301516040517fb6f244b500000000000000000000000000000000000000000000000000000000815260029290920b6004830152602482015273ea6c2644d67546b2dad7645372e2355b18ac8d019063b6f244b590604401602060405180830381865af41580156105ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106119190613e41565b6fffffffffffffffffffffffffffffffff16604084018190526020820151116107155781610160015189601e015f82825461064c9190613e5c565b909155505060608281015160408051808401825260a08087015160020b80835261010088015160208085019182526101208a0151948601948552888101518b8701518751948552925191840191909152935182860152958101929092526fffffffffffffffffffffffffffffffff9094166080820152905173ffffffffffffffffffffffffffffffffffffffff909216927fb4b55eceb90203eb5978d8f345d094d67646d2fd249783d3df0c5e0eaf5c7f3c92918290030190a250505115915060019050610b59565b82511561072a575f8094509450505050610b59565b60a08201516040517fe289dab9000000000000000000000000000000000000000000000000000000008152600481018b9052600282900b60248201525f9173ea6c2644d67546b2dad7645372e2355b18ac8d019163cb1efff6918d91849063e289dab990604401602060405180830381865af41580156107ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d09190613e7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935260029190910b602483015260ff166044820152606401602060405180830381865af4158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108599190613e95565b60208501516101408501516040517fb6f244b5000000000000000000000000000000000000000000000000000000008152600284900b6004820152602481019190915291925073ea6c2644d67546b2dad7645372e2355b18ac8d019163b60ac8549190839063b6f244b590604401602060405180830381865af41580156108e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109069190613e41565b60e0878101516040519185901b7fffffffff000000000000000000000000000000000000000000000000000000001682526fffffffffffffffffffffffffffffffff9384166004830152918316602482015291166044820152606401602060405180830381865af415801561097d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a19190613c49565b606085018190525f90811215610a30575060608401516101608401518110156109ee575f81856101600151039050808c601e015f8282546109e29190613e5c565b90915550610a30915050565b836101600151811115610a3057610160840151601e8c01549082039080821115610a24575f601e8e015580820390920391610a2d565b818103601e8e01555b50505b8015610a665760408401518b54610a6691630100000090910473ffffffffffffffffffffffffffffffffffffffff169083612da2565b60019650836040015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff167fc33ba238fb9af2a35f2505ec61c7be464bf1919db4eb4a328351c17ce1800e1e60405180606001604052808860a0015160020b8152602001886101000151815260200188610120015181525084610b0b8960c001516fffffffffffffffffffffffffffffffff1690565b610b1487612deb565b610b1e9190613eb0565b60408051845160020b81526020808601519082015293810151908401526060830191909152608082015260a00160405180910390a350505050505b94509492505050565b604080516060810182525f80825260208201819052918101829052601487015467ffffffffffffffff1634811115610bc6576040517f44846eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff811660a0880152475f610be48a8a8a8a610d98565b965090945090508415610c84576040517f44779129000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b590634477912990610c43908d908a90600401613f8a565b602060405180830381865af4158015610c5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c829190613c49565b015b6040517f11fb819900000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024810182905260448101839052739e87120d47bd6beeee46cb90e187d09b5b5a20b5906311fb8199906064015f6040518083038186803b158015610cfd575f80fd5b505af4158015610d0f573d5f803e3d5ffd5b50506040517fd0d248fb000000000000000000000000000000000000000000000000000000008152600481018d9052739e87120d47bd6beeee46cb90e187d09b5b5a20b5925063d0d248fb91506024015f6040518083038186803b158015610d75575f80fd5b505af4158015610d87573d5f803e3d5ffd5b505050505050509550959350505050565b610dbc60405180606001604052805f60020b81526020015f81526020015f81525090565b60208401515f90819073ffffffffffffffffffffffffffffffffffffffff16610e11576040517f5927466c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604086015173ffffffffffffffffffffffffffffffffffffffff16610e62576040517f53e78b9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85606001516fffffffffffffffffffffffffffffffff165f03610eb1576040517fe4cdd09200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866017015486606001516fffffffffffffffffffffffffffffffff161015610f05576040517f5d57a9aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808701516060880151608089015192517fcec418cf0000000000000000000000000000000000000000000000000000000081525f9373ea6c2644d67546b2dad7645372e2355b18ac8d019363cec418cf93610f6b938e93908d908d906004016140c5565b61010060405180830381865af4158015610f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fab919061412a565b90508060a0015115610ff25750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082525060a084015167ffffffffffffffff165f61132c565b6040805160a0810182525f815264ffffffffff42166020808301919091528981015173ffffffffffffffffffffffffffffffffffffffff16828401526060848101516fffffffffffffffffffffffffffffffff90811682850152908b0151166080830152830151518383015192517f44dc9d9b000000000000000000000000000000000000000000000000000000008152919273619c25f15edd45e4bcc9ad4be555000ac879ef55926344dc9d9b926110b2928e92879190600401614205565b608060405180830381865af41580156110cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f19190614316565b5060208085015160408101929092520152608082015160228a0180545f9061111a908490613e5c565b90915550506080808301519082015161114591906fffffffffffffffffffffffffffffffff16613e2e565b89601e015f8282546111579190613e5c565b9091555050602080830151908901516040808b015160a08c015191517fdfa5303a00000000000000000000000000000000000000000000000000000000815293985073619c25f15edd45e4bcc9ad4be555000ac879ef559363dfa5303a936111c7938f939192899060040161434a565b602060405180830381865af41580156111e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112069190613c49565b60c08901519094506001161561126057875160608901518a5461125b92630100000090910473ffffffffffffffffffffffffffffffffffffffff169130906fffffffffffffffffffffffffffffffff16612e49565b6112a5565b875160608901518a546112a592630100000090910473ffffffffffffffffffffffffffffffffffffffff169130906fffffffffffffffffffffffffffffffff16612ed5565b60019250876040015173ffffffffffffffffffffffffffffffffffffffff16886020015173ffffffffffffffffffffffffffffffffffffffff167fcd9785bfc039f6e3acd9e28c39bd0ccaf80b54c214cafd169a2fb9b5b798f31f4285606001518c60600151875f01518b60405161132195949392919061442d565b60405180910390a350505b9450945094915050565b60148501545f9067ffffffffffffffff1634811115611381576040517f44846eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f4790505f806113a78a338b604001518c606001518d5f01518e602001518a8f8f611bcc565b909650909250905084806113b85750805b15611453576040517f44779129000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b59063447791299061140f908d908a90600401613f8a565b602060405180830381865af415801561142a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144e9190613c49565b820191505b6040517f11fb819900000000000000000000000000000000000000000000000000000000815267ffffffffffffffff851660048201526024810183905260448101849052739e87120d47bd6beeee46cb90e187d09b5b5a20b5906311fb8199906064015f6040518083038186803b1580156114cc575f80fd5b505af41580156114de573d5f803e3d5ffd5b50506040517fd0d248fb000000000000000000000000000000000000000000000000000000008152600481018d9052739e87120d47bd6beeee46cb90e187d09b5b5a20b5925063d0d248fb91506024015f6040518083038186803b158015611544575f80fd5b505af4158015611556573d5f803e3d5ffd5b505050505050505095945050505050565b5f478180611577898989896117ff565b90955090925090503373ffffffffffffffffffffffffffffffffffffffff891614611642576040517fe6318ea70000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff89166024820152739e87120d47bd6beeee46cb90e187d09b5b5a20b59063e6318ea7906044015f6040518083038186803b15801561161a575f80fd5b505af415801561162c573d5f803e3d5ffd5b50505050818361163c9190613e2e565b92505f91505b838061164b5750805b156116e6576040517f44779129000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b5906344779129906116a2908c908990600401613f8a565b602060405180830381865af41580156116bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e19190613c49565b820191505b6040517f11fb81990000000000000000000000000000000000000000000000000000000081525f60048201526024810183905260448101849052739e87120d47bd6beeee46cb90e187d09b5b5a20b5906311fb8199906064015f6040518083038186803b158015611755575f80fd5b505af4158015611767573d5f803e3d5ffd5b50506040517fd0d248fb000000000000000000000000000000000000000000000000000000008152600481018c9052739e87120d47bd6beeee46cb90e187d09b5b5a20b5925063d0d248fb91506024015f6040518083038186803b1580156117cd575f80fd5b505af41580156117df573d5f803e3d5ffd5b5050505050505095945050505050565b5f47818061157789898989611a54565b6040517f7d9aae1c0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff841660248201525f90819081908190819073d07025f97504ea8dda1e8c40b04bbc11c3a9602290637d9aae1c906044016101a060405180830381865af415801561188d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b19190614491565b909250905060098251600a8111156118cb576118cb61397f565b14611902576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff161461196b576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61197789838989610289565b909450925083806119855750825b15611a48576040517f8c43fdfa000000000000000000000000000000000000000000000000000000008152600481018a905273ffffffffffffffffffffffffffffffffffffffff891660248201526fffffffffffffffffffffffffffffffff8216604482015273d07025f97504ea8dda1e8c40b04bbc11c3a9602290638c43fdfa906064015f6040518083038186803b158015611a20575f80fd5b505af4158015611a32573d5f803e3d5ffd5b50505050816080015167ffffffffffffffff1694505b50509450945094915050565b6040517f7d9aae1c0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff841660248201525f90819081908190819073d07025f97504ea8dda1e8c40b04bbc11c3a9602290637d9aae1c906044016101a060405180830381865af4158015611ae2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b069190614491565b909250905060078251600a811115611b2057611b2061397f565b14611b57576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff1614611bc0576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61197789838989611ead565b5f805f611bd7613028565b73619c25f15edd45e4bcc9ad4be555000ac879ef5563cdd669b48e8e8e8e8e8e8d8d6040518963ffffffff1660e01b8152600401611c1c9897969594939291906144c9565b6101c060405180830381865af4158015611c38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5c9190614632565b925090508180611c6d57508060e001515b15611c8b5760e0015167ffffffffffffffff87169350159150611e9e565b73619c25f15edd45e4bcc9ad4be555000ac879ef5563602e76bb8e8d8d8d8d8d886040518863ffffffff1660e01b8152600401611cce97969594939291906146e5565b602060405180830381865af4158015611ce9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0d9190613c49565b935080608001518d6022015f828254611d269190613e2e565b9250508190555073619c25f15edd45e4bcc9ad4be555000ac879ef55635abd1d8e8e8b5f01518c60400151855f01518d87604001516040518763ffffffff1660e01b8152600401611d7c9695949392919061484b565b6040805180830381865af4158015611d96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dba919061491c565b50600192508a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16825f01516040015173ffffffffffffffffffffffffffffffffffffffff167f8fccdf5b77c00cc1f078c285225277c7e1f9bb7f4a44a9f5ce4278df56e89b188c855f0151608001518d8760400151885f015160600151611e4d9190614936565b60408051855160020b81526020808701519082015294810151908501526fffffffffffffffffffffffffffffffff928316606085015290821660808401521660a082015260c00160405180910390a4505b99509950999650505050505050565b5f805f8073619c25f15edd45e4bcc9ad4be555000ac879ef5563d08b932e898989896040518563ffffffff1660e01b8152600401611eee949392919061495e565b61034060405180830381865af4158015611f0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2e9190614987565b915091508015611f4a5750610120015115915060019050610b59565b81610120015115611f62575f80935093505050610b59565b600888015460c08301516fffffffffffffffffffffffffffffffff8216101561277557611f8d6130a2565b60208401516040517f2e110ac90000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9182166004820152908316602482015273ea6c2644d67546b2dad7645372e2355b18ac8d0190632e110ac990604401602060405180830381865af4158015612013573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120379190613e41565b6fffffffffffffffffffffffffffffffff1660a085018190526040517f06d647ec000000000000000000000000000000000000000000000000000000008152600481018c9052602481019190915273ea6c2644d67546b2dad7645372e2355b18ac8d01906306d647ec90604401602060405180830381865af41580156120bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e39190613e95565b600290810b8252600b8b01546601000000000000900460ff16602083018190528b54612110920b90614a5c565b815161211c9190614a7b565b60408281018051600293840b9052515190517fe289dab9000000000000000000000000000000000000000000000000000000008152600481018d9052910b602482015273ea6c2644d67546b2dad7645372e2355b18ac8d019063e289dab990604401602060405180830381865af4158015612199573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121bd9190613e7a565b60ff90811660608301819052602083015190911690036122905780516040517fb99fa9fd00000000000000000000000000000000000000000000000000000000815273ea6c2644d67546b2dad7645372e2355b18ac8d019163b99fa9fd91612235918e9160040191825260020b602082015260400190565b602060405180830381865af4158015612250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122749190613e41565b6fffffffffffffffffffffffffffffffff1660a08501526123db565b60408181015151606083015191517fcb1efff6000000000000000000000000000000000000000000000000000000008152600481018d905260029190910b602482015260ff909116604482015273ea6c2644d67546b2dad7645372e2355b18ac8d019063b99fa9fd908c90839063cb1efff690606401602060405180830381865af4158015612321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123459190613e95565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260020b6024820152604401602060405180830381865af415801561239f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123c39190613e41565b6fffffffffffffffffffffffffffffffff1660a08501525b73619c25f15edd45e4bcc9ad4be555000ac879ef55635abd1d8e8b865f015160a00151875f0151610120015188608001518960800151608001518a60800151606001516040518763ffffffff1660e01b815260040161243f9695949392919061484b565b6040805180830381865af4158015612459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247d919061491c565b506080808501510151602085015160a08601516040517f8688c4530000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9384166004820152918316602483015291909116604482015273ea6c2644d67546b2dad7645372e2355b18ac8d0190638688c45390606401602060405180830381865af415801561251a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061253e9190613e41565b8460800151606001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050600184608001515f01901515908115158152505073619c25f15edd45e4bcc9ad4be555000ac879ef556344dc9d9b8b83604001515f0151876080015185606001516040518563ffffffff1660e01b81526004016125d19493929190614205565b608060405180830381865af41580156125ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126109190614316565b5082604001516020018360400151604001828152508281525050505f61264785608001516060015186604001518760a00151612f2d565b90506126588b828760e00151612f8c565b6040805160608082018352875160a0015160020b8083528851610100015160208085019182528a5161012001519486019485528551928352905190820152915182840152825191829003018120918401517fd22a27ccc50eb5b841f6071c753eb4eee94ec394c120b158118c7b8c5c28338c916126d59190614abc565b60405180910390a2845f01516060015173ffffffffffffffffffffffffffffffffffffffff16855f01516040015173ffffffffffffffffffffffffffffffffffffffff167f44c818c75b936d07e30545c1c628a229e0c77fb943fcb4f57ca84f0f47bcf5548760800151606001518860200151866040015160405161275c93929190614ae0565b60405180910390a360015f965096505050505050610b59565b6080838101516060810151910151602085015160a08601516040517f8688c4530000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d0190638688c45390606401602060405180830381865af4158015612819573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061283d9190613e41565b6080860180516fffffffffffffffffffffffffffffffff83166060918201528151600190529051908701515f90815260278e01602052604090208751610120015181549394509192909190811061289657612896614b25565b5f9182526020918290208351600290920201805492840151604085015173ffffffffffffffffffffffffffffffffffffffff166601000000000000027fffffffffffff0000000000000000000000000000000000000000ffffffffffff64ffffffffff909216610100027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090951694909417929092179190911691909117815560608201516080909201516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029281169290921760019091015560238c0154838216916129b39190841690613e5c565b6129bd9190613e2e565b60238c015560608501515f90815260288c01602052604081208c54610100880151919291739cb4861470341446619af06886e688c5785e5c8391639ca2f8c691612a0d9160020b9060ff16614a5c565b895160a00151612a1d9190614b52565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260029190910b6004820152602401602060405180830381865af4158015612a72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a969190613c49565b9050836fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16835f0154612acc9190613e5c565b612ad69190613e2e565b82556040805180820190915260248e0154815260258e01546020820152734c5ab10d25e152e039983380faa4011da0bce1739063343a0d4590612b56612b2e856fffffffffffffffffffffffffffffffff8916613ddf565b6040805180820182525f80825260209182018190528251808401909352825281019190915290565b6040518363ffffffff1660e01b8152600401612b73929190614b93565b6040805180830381865af4158015612b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb1919061491c565b734c5ab10d25e152e039983380faa4011da0bce1739063b0cccdb590612bec612b2e856fffffffffffffffffffffffffffffffff8a16613ddf565b6040518363ffffffff1660e01b8152600401612c09929190614b93565b6040805180830381865af4158015612c23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c47919061491c565b805160248f01556020015160258e01555050604085015160a08601515f91612c7191849190612f2d565b9050612c828c828860e00151612f8c565b60019750855f01516060015173ffffffffffffffffffffffffffffffffffffffff16865f01516040015173ffffffffffffffffffffffffffffffffffffffff167f44c818c75b936d07e30545c1c628a229e0c77fb943fcb4f57ca84f0f47bcf55484896020015160405180606001604052808c5f015160a0015160020b81526020018c5f0151610100015181526020018c5f01516101200151815250604051612d2d93929190614ae0565b60405180910390a350505050505094509492505050565b5f6fffffffffffffffffffffffffffffffff821115612d9e576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260806004820152602481018390526044015b60405180910390fd5b5090565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612de2576390b8ec185f526004601cfd5b5f603452505050565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612d9e576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401612d95565b6040518460601b60601c60748201528160548201528260348201528360601b60208201526f36c7851600000000000000000000000081526e22d473030f116ddee9f6b43ac78ba36001461480612e9f5750803b15155b805f386084601087015f875af116612ecc57677939f4248757f0fd5f5260048460a01c151560021b601801fd5b50505050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f2057637939f4245f526004601cfd5b5f60605260405250505050565b5f6fffffffffffffffffffffffffffffffff8316612f4b8385614936565b6fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff16612f7a9190613ddf565b612f849190613df6565b949350505050565b80821115612fda575f612f9f8284613e2e565b90508084601e015f828254612fb49190613e2e565b9250508190555080846022015f828254612fce9190613e5c565b90915550613023915050565b80821015613023575f612fed8383613e2e565b90508084601e015f8282546130029190613e5c565b9250508190555080846022015f82825461301c9190613e2e565b9091555050505b505050565b604080516101a0810182525f6101008201818152610120830182905261014083018290526101608301829052610180830182905282526020808301829052828401829052606083018290526080830182905260a0830182905283518085019094528184528301529060c08201905b81525f60209091015290565b60405180608001604052805f60020b81526020015f60ff16815260200161309660405180606001604052805f60020b81526020015f81526020015f81525090565b604051610180810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b60405160e0810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610140810167ffffffffffffffff8111828210171561312c577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600b81106132f0575f80fd5b50565b80356132fe816132e4565b919050565b64ffffffffff811681146132f0575f80fd5b80356132fe81613303565b73ffffffffffffffffffffffffffffffffffffffff811681146132f0575f80fd5b80356132fe81613320565b67ffffffffffffffff811681146132f0575f80fd5b80356132fe8161334c565b8060020b81146132f0575f80fd5b80356132fe8161336c565b6fffffffffffffffffffffffffffffffff811681146132f0575f80fd5b80356132fe81613385565b5f8083601f8401126133bd575f80fd5b50813567ffffffffffffffff8111156133d4575f80fd5b6020830191508360208285010111156133eb575f80fd5b9250929050565b5f805f808486036101c0811215613407575f80fd5b853594506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561343b575f80fd5b506134446130e3565b613450602087016132f3565b815261345e60408701613315565b602082015261346f60608701613341565b604082015261348060808701613341565b606082015261349160a08701613361565b60808201526134a260c0870161337a565b60a08201526134b360e087016133a2565b60c08201526134c561010087016133a2565b60e082015261012086810135610100830152610140808801359183019190915261016080880135918301919091526101808701359082015292506101a085013567ffffffffffffffff811115613519575f80fd5b613525878288016133ad565b95989497509550505050565b60ff811681146132f0575f80fd5b80356132fe81613531565b5f60e0828403121561355a575f80fd5b613562613132565b9050813561356f81613320565b8152602082013561357f81613320565b6020820152604082013561359281613320565b604082015260608201356135a581613385565b60608201526135b6608083016133a2565b60808201526135c760a08301613361565b60a08201526135d860c0830161353f565b60c082015292915050565b5f604082840312156135f3575f80fd5b50919050565b5f805f805f610140868803121561360e575f80fd5b8535945061361f876020880161354a565b935061010086013567ffffffffffffffff81111561363b575f80fd5b613647888289016133ad565b90945092505061012086013567ffffffffffffffff811115613667575f80fd5b613673888289016135e3565b9150509295509295909350565b8215158152608081016136ad6020830184805160020b825260208082015190830152604090810151910152565b9392505050565b5f805f8061012085870312156136c8575f80fd5b843593506136d9866020870161354a565b925061010085013567ffffffffffffffff811115613519575f80fd5b5f60608284031215613705575f80fd5b61370d61317a565b9050813561371a8161336c565b81526020828101359082015260409182013591810191909152919050565b5f805f805f85870361012081121561374e575f80fd5b8635955060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215613781575f80fd5b5061378a6131c2565b61379788602089016136f5565b815260808701356137a781613385565b602082015260a08701356137ba81613320565b604082015260c08701356137cd81613320565b6060820152935060e086013567ffffffffffffffff8111156137ed575f80fd5b6137f9888289016133ad565b90945092505061010086013567ffffffffffffffff811115613667575f80fd5b5f805f805f6080868803121561382d575f80fd5b85359450602086013561383f81613320565b9350604086013567ffffffffffffffff81111561385a575f80fd5b613866888289016133ad565b909450925050606086013567ffffffffffffffff811115613667575f80fd5b5f805f8060608587031215613898575f80fd5b8435935060208501356138aa81613320565b9250604085013567ffffffffffffffff811115613519575f80fd5b5f805f805f805f805f6101408a8c0312156138de575f80fd5b8935985060208a01356138f081613320565b975060408a013561390081613320565b965060608a013561391081613320565b955061391f8b60808c016136f5565b945060e08a013561392f81613385565b93506101008a01356139408161334c565b92506101208a013567ffffffffffffffff81111561395c575f80fd5b6139688c828d016133ad565b915080935050809150509295985092959850929598565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600b81106139e1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6139f08282516139ac565b6020810151613a08602084018264ffffffffff169052565b506040810151613a30604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060810151613a58606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080810151613a74608084018267ffffffffffffffff169052565b5060a0810151613a8960a084018260020b9052565b5060c0810151613aad60c08401826fffffffffffffffffffffffffffffffff169052565b5060e0810151613ad160e08401826fffffffffffffffffffffffffffffffff169052565b506101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b6101808101613b1582846139e5565b92915050565b80516132fe816132e4565b80516132fe81613303565b80516132fe81613320565b80516132fe8161334c565b80516132fe8161336c565b80516132fe81613385565b5f6101808284031215613b6e575f80fd5b613b766130e3565b9050613b8182613b1b565b8152613b8f60208301613b26565b6020820152613ba060408301613b31565b6040820152613bb160608301613b31565b6060820152613bc260808301613b3c565b6080820152613bd360a08301613b47565b60a0820152613be460c08301613b52565b60c0820152613bf560e08301613b52565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101609182015191810191909152919050565b5f6101808284031215613c3f575f80fd5b6136ad8383613b5d565b5f60208284031215613c59575f80fd5b5051919050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b868152613cb760208201876139ac565b64ffffffffff8516604082015283606082015260a060808201525f613ce060a083018486613c60565b98975050505050505050565b5f6060828403128015613cfd575f80fd5b50613d0661317a565b82518152602080840151908201526040928301519281019290925250919050565b88815287602082015286604082015261ffff861660608201528415156080820152613d5560a08201856139ac565b60e060c08201525f613d6b60e083018486613c60565b9a9950505050505050505050565b805180151581146132fe575f80fd5b5f8060408385031215613d99575f80fd5b82519150613da960208401613d79565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417613b1557613b15613db2565b5f82613e29577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115613b1557613b15613db2565b5f60208284031215613e51575f80fd5b81516136ad81613385565b80820180821115613b1557613b15613db2565b80516132fe81613531565b5f60208284031215613e8a575f80fd5b81516136ad81613531565b5f60208284031215613ea5575f80fd5b81516136ad8161336c565b8181035f831280158383131683831282161715613ecf57613ecf613db2565b5092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f09575f80fd5b830160208101925035905067ffffffffffffffff811115613f28575f80fd5b8060051b36038213156133eb575f80fd5b8183526020830192505f815f5b84811015613f80578135613f5981613385565b6fffffffffffffffffffffffffffffffff1686526020958601959190910190600101613f46565b5093949350505050565b828152604060208201525f60808201613fa38485613ed6565b6040808601528281845260a08601905060a08260051b8701019350825f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603015b84821015614072577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608988030184528235818112614022575f80fd5b860160208101903567ffffffffffffffff81111561403e575f80fd5b80360382131561404c575f80fd5b614057898284613c60565b98505050602083019250602084019350600182019150613fe6565b5050505050506140856020850185613ed6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160608601526140ba838284613f39565b979650505050505050565b86815273ffffffffffffffffffffffffffffffffffffffff861660208201526fffffffffffffffffffffffffffffffff851660408201526fffffffffffffffffffffffffffffffff8416606082015260a060808201525f613ce060a083018486613c60565b5f8183036101008112801561413d575f80fd5b5061414661320a565b835161415181613385565b815260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083011215614182575f80fd5b61418a61317a565b9150602084015161419a8161336c565b825260408481015160208085019190915260608601519184019190915281018290526141c860808501613e6f565b60408201526141d960a08501613b52565b606082015260c08401516080820181905291506141f860e08501613d79565b60a0820152949350505050565b848152600284900b60208201526101008101614292604083018580511515825264ffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526fffffffffffffffffffffffffffffffff60608201511660608301526fffffffffffffffffffffffffffffffff60808201511660808301525050565b60ff831660e083015295945050505050565b5f604082840312156142b4575f80fd5b6040805190810167ffffffffffffffff811182821017156142fc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b5f805f60808486031215614328575f80fd5b83516020850151909350915061434185604086016142a4565b90509250925092565b5f6101808201905086825273ffffffffffffffffffffffffffffffffffffffff8616602083015273ffffffffffffffffffffffffffffffffffffffff8516604083015267ffffffffffffffff841660608301526fffffffffffffffffffffffffffffffff835116608083015260208301516143df60a0840182805160020b825260208082015190830152604090810151910152565b5060ff6040840151166101008301526fffffffffffffffffffffffffffffffff606084015116610120830152608083015161014083015260a083015115156101608301529695505050505050565b64ffffffffff861681526fffffffffffffffffffffffffffffffff858116602083015284811660408301528316606082015260e081016144876080830184805160020b825260208082015190830152604090810151910152565b9695505050505050565b5f806101a083850312156144a3575f80fd5b6144ad8484613b5d565b91506101808301516144be81613385565b809150509250929050565b88815273ffffffffffffffffffffffffffffffffffffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff8716604082015273ffffffffffffffffffffffffffffffffffffffff861660608201526145446080820186805160020b825260208082015190830152604090810151910152565b6fffffffffffffffffffffffffffffffff841660e08201526101206101008201525f613d6b61012083018486613c60565b5f60a08284031215614585575f80fd5b60405160a0810167ffffffffffffffff811182821017156145cd577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040529050806145dc83613d79565b815260208301516145ec81613303565b602082015260408301516145ff81613320565b6040820152606083015161461281613385565b6060820152608083015161462581613385565b6080919091015292915050565b5f808284036101c0811215614645575f80fd5b6101a0811215614653575f80fd5b5061465c613252565b6146668585614575565b815261467460a08501613e6f565b602082015261468560c08501613b52565b604082015261469660e08501613b52565b6060820152610100840151608082015261012084015160a08201526146bf8561014086016142a4565b60c08201526146d16101808501613d79565b60e08201529150613da96101a08401613d79565b87815273ffffffffffffffffffffffffffffffffffffffff8781166020830152861660408201526102a081016147356060830187805160020b825260208082015190830152604090810151910152565b6fffffffffffffffffffffffffffffffff85811660c084015267ffffffffffffffff851660e0840152835180511515610100850152602081015164ffffffffff16610120850152604081015173ffffffffffffffffffffffffffffffffffffffff1661014085015260608101518216610160850152608001511661018083015260ff6020840151166101a08301526fffffffffffffffffffffffffffffffff6040840151166101c083015260608301516148046101e08401826fffffffffffffffffffffffffffffffff169052565b50608083015161020083015260a083015161022083015260c083015180516102408401526020015161026083015260e0909201511515610280909101529695505050505050565b868152600286900b60208201526040810185905261014081016148df606083018680511515825264ffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526fffffffffffffffffffffffffffffffff60608201511660608301526fffffffffffffffffffffffffffffffff60808201511660808301525050565b6fffffffffffffffffffffffffffffffff84166101008301526fffffffffffffffffffffffffffffffff8316610120830152979650505050505050565b5f6040828403121561492c575f80fd5b6136ad83836142a4565b6fffffffffffffffffffffffffffffffff8281168282160390811115613b1557613b15613db2565b84815261496e60208201856139e5565b6101c06101a08201525f6144876101c083018486613c60565b5f8082840361034081121561499a575f80fd5b6103208112156149a8575f80fd5b506149b161329b565b6149bb8585613b5d565b81526149ca6101808501613b52565b60208201526149dc6101a08501613b52565b60408201526101c084015160608201526149fa856101e08601614575565b6080820152614a0c6102808501613b52565b60a08201526102a084015160c08201526102c084015160e0820152614a346102e08501613e6f565b610100820152614a476103008501613d79565b6101208201529150613da96103208401613d79565b5f8260020b8260020b028060020b9150808214613ecf57613ecf613db2565b600281810b9083900b01627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715613b1557613b15613db2565b815160020b8152602080830151908201526040808301519082015260608101613b15565b6fffffffffffffffffffffffffffffffff84811682528316602082015260a08101612f846040830184805160020b825260208082015190830152604090810151910152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715613b1557613b15613db2565b8251815260208084015181830152825160408301528201516060820152608081016136ad56fea2646970667358221220575f49a338e04c72873c07fd2b47987bbadd51c8bce4189aaa682044c4e7267364736f6c634300081a0033", - "nonce": "0x33", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x346399619a32fae55a6a72eee8192fae0fe89b84fc9436ea51b1764a26700fa0", - "transactionType": "CREATE", - "contractName": "UsdnProtocolActionsUtilsLibrary", - "contractAddress": "0x619c25f15edd45e4bcc9ad4be555000ac879ef55", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x57e6ae", - "input": "0x614f7e610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100f0575f3560e01c8063b921b2c011610093578063dfa5303a1161006e578063dfa5303a146102c0578063f0145c0f146102df578063f7de7641146102fe578063fc9ad0dd1461031d575f80fd5b8063b921b2c014610253578063cdd669b414610266578063d08b932e14610293575f80fd5b8063521b6870116100ce578063521b6870146101695780635abd1d8e146101f5578063602e76bb1461022157806392a0219414610240575f80fd5b80630ff3fb8e146100f457806341c79ceb1461012657806344dc9d9b1461013b575b5f80fd5b8180156100ff575f80fd5b5061011361010e366004613440565b61033c565b6040519081526020015b60405180910390f35b610139610134366004613491565b61051c565b005b818015610146575f80fd5b5061015a6101553660046136fd565b61066b565b60405161011d9392919061374d565b610113610177366004613770565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b1660348201525f9060440160405160208183030381529060405280519060200120905092915050565b818015610200575f80fd5b5061021461020f3660046137a7565b610d6d565b60405161011d9190613815565b81801561022c575f80fd5b5061011361023b3660046138be565b6112ca565b61011361024e3660046139f3565b61152b565b610139610261366004613a38565b611610565b818015610271575f80fd5b50610285610280366004613af0565b6119bf565b60405161011d929190613b95565b81801561029e575f80fd5b506102b26102ad366004613cc2565b611f5b565b60405161011d929190613f88565b8180156102cb575f80fd5b506101136102da36600461407b565b612791565b8180156102ea575f80fd5b506101396102f9366004614175565b61296f565b818015610309575f80fd5b50610139610318366004614295565b612cae565b818015610328575f80fd5b50610113610337366004614351565b612ddb565b5f478161034c60208601866143ab565b90508411156103665761036260208601866143ab565b9450505b5f805f739e87120d47bd6beeee46cb90e187d09b5b5a20b563255904138a8a6040518363ffffffff1660e01b81526004016103a292919061450a565b608060405180830381865af41580156103bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103e1919061463a565b93509350935050821580156103f4575081155b1561040157505050610416565b60019095019492909201915050838310610366575b6040517f11fb81990000000000000000000000000000000000000000000000000000000081525f60048201526024810182905260448101839052739e87120d47bd6beeee46cb90e187d09b5b5a20b5906311fb8199906064015f6040518083038186803b158015610485575f80fd5b505af4158015610497573d5f803e3d5ffd5b50506040517fd0d248fb00000000000000000000000000000000000000000000000000000000815260048101899052739e87120d47bd6beeee46cb90e187d09b5b5a20b5925063d0d248fb91506024015f6040518083038186803b1580156104fd575f80fd5b505af415801561050f573d5f803e3d5ffd5b5050505050509392505050565b60118301545f81900361052f5750505050565b5f61054f61053c8461302b565b610549876022015461302b565b9061308d565b90505f84866023015461056291906146b7565b90505f61058087601f015461057a89601e015461302b565b90613135565b6040517fd2647be20000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490529091505f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063d2647be290606401602060405180830381865af41580156105fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061e91906146ca565b9050848112610661576040517f6cf9f423000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b5050505050505050565b5f8061068860405180604001604052805f81526020015f81525090565b6040517fa064a6b600000000000000000000000000000000000000000000000000000000815260048101889052600287900b60248201525f9073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af41580156106fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071e91906146e1565b5f82815260278b0160205260409020805460298c01549297509550919250600290810b9089900b13156107b4576029890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662ffffff8a16179055604051600289900b81527f2e41738f5de266cc443362a69d6d5ac37216649e1d0925323f2f9e4a2f393f1a9060200160405180910390a15b8054600181810183555f83815260208082208b516002909502018054918c015160408d015173ffffffffffffffffffffffffffffffffffffffff166601000000000000027fffffffffffff0000000000000000000000000000000000000000ffffffffffff64ffffffffff909216610100027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff971515979097167fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090941693909317959095179490941617835560608a015160808b01516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029116908117939092019290925560238b018054919290916108d4908490614703565b9091555050602a890180545f906108ea90614716565b909155505f82815260288a016020526040812060018101549091907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff168103610aee576040517f1a71442c000000000000000000000000000000000000000000000000000000008152600481018c905260028b900b60248201526109ed9073d07025f97504ea8dda1e8c40b04bbc11c3a9602290631a71442c90604401602060405180830381865af41580156109a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c591906146ca565b600881901c5f908152602b8e01602052604090208054600160ff9093169290921b9091179055565b60608901516fffffffffffffffffffffffffffffffff16825560ff88167f010000000000000000000000000000000000000000000000000000000000000081026001908117908401558b54739cb4861470341446619af06886e688c5785e5c8391639ca2f8c691610a649160029190910b9061474d565b610a6e908d614773565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260029190910b6004820152602401602060405180830381865af4158015610ac3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae791906146ca565b9050610c68565b88606001516fffffffffffffffffffffffffffffffff16825f015f828254610b169190614703565b9091555050600182810180545f90610b509084907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166147b4565b82547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182166101009390930a9283029190920219909116179055508a546001830154739cb4861470341446619af06886e688c5785e5c8391639ca2f8c691610be29160020b9060ff7f01000000000000000000000000000000000000000000000000000000000000009091041661474d565b610bec908d614773565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260029190910b6004820152602401602060405180830381865af4158015610c41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6591906146ca565b90505b6040805180820190915260248c0154815260258c0154602082015260608a0151734c5ab10d25e152e039983380faa4011da0bce1739163343a0d4591610cec90610cc4906fffffffffffffffffffffffffffffffff16866147eb565b6040805180820182525f80825260209182018190528251808401909352825281019190915290565b6040518363ffffffff1660e01b8152600401610d09929190614802565b6040805180830381865af4158015610d23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d479190614828565b805160248d015560208101516025909c019b909b55509499939897509295505050505050565b604080518082019091525f80825260208201526040517fa064a6b600000000000000000000000000000000000000000000000000000000815260048101889052600287900b60248201525f9073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af4158015610df2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1691906146e1565b505f81815260288a01602052604081208a5460018201549394509092739cb4861470341446619af06886e688c5785e5c8391639ca2f8c691610e819160020b907f0100000000000000000000000000000000000000000000000000000000000000900460ff1661474d565b610e8b908c614773565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260029190910b6004820152602401602060405180830381865af4158015610ee0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0491906146ca565b905086608001516fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff161015610fb2575f83815260278b016020526040812080548a908110610f5757610f57614859565b905f5260205f2090600202019050858860600151610f759190614886565b60808901518890036fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029116176001909101556111a2565b60608701516001838101805492975090915f90610ff19084907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166148ae565b92506101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555089602a015f8154611055906148e5565b909155505f83815260278b016020526040902080548990811061107a5761107a614859565b5f9182526020822060029091020180547fffffffffffff000000000000000000000000000000000000000000000000000016815560019081018290558301547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690036111a2576040517f1a71442c000000000000000000000000000000000000000000000000000000008152600481018b905260028a900b60248201526111a29073d07025f97504ea8dda1e8c40b04bbc11c3a9602290631a71442c90604401602060405180830381865af4158015611155573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117991906146ca565b600881901c5f908152602b8d01602052604090208054600160ff9093169290921b199091169055565b846fffffffffffffffffffffffffffffffff168a6023015f8282546111c791906146b7565b909155505081546fffffffffffffffffffffffffffffffff86169083905f906111f19084906146b7565b90915550506040805180820190915260248b0154815260258b01546020820152734c5ab10d25e152e039983380faa4011da0bce1739063b0cccdb59061124c610cc46fffffffffffffffffffffffffffffffff8a16866147eb565b6040518363ffffffff1660e01b8152600401611269929190614802565b6040805180830381865af4158015611283573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a79190614828565b805160248c015560208101516025909b019a909a55509798975050505050505050565b5f806040518061018001604052806009600a8111156112eb576112eb613e01565b81526020014264ffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018567ffffffffffffffff168152602001875f015160020b8152602001866fffffffffffffffffffffffffffffffff16815260200184604001516fffffffffffffffffffffffffffffffff168152602001876020015181526020018760400151815260200173ea6c2644d67546b2dad7645372e2355b18ac8d0163bf8fd04786606001518760a001518860c001516040518463ffffffff1660e01b81526004016113e093929190614919565b602060405180830381865af41580156113fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141f91906146ca565b81526020018460800151815250905073d07025f97504ea8dda1e8c40b04bbc11c3a9602263f95899498a8973d07025f97504ea8dda1e8c40b04bbc11c3a96022630a376f6b866040518263ffffffff1660e01b8152600401611481919061494e565b61018060405180830381865af415801561149d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c19190614a70565b6040518463ffffffff1660e01b81526004016114df93929190614a8b565b602060405180830381865af41580156114fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151e91906146ca565b9998505050505050505050565b60228401546040517fb60ac8540000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff80861660048301528085166024830152831660448201525f9190829073ea6c2644d67546b2dad7645372e2355b18ac8d019063b60ac85490606401602060405180830381865af41580156115bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e191906146ca565b90505f81136115f2575f9250611606565b8181111561160257819250611606565b8092505b5050949350505050565b73ffffffffffffffffffffffffffffffffffffffff841661165d576040517f5927466c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166116aa576040517f53e78b9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614611713576040517f322694f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805161174b576040517f0214c41900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff165f03611796576040517fe4cdd09200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001516fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16111561181a5760808101516040517ff663741d0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff80851660048301529091166024820152604401610658565b5f82826080015161182b9190614886565b90505f816fffffffffffffffffffffffffffffffff1611801561186357508660170154816fffffffffffffffffffffffffffffffff16105b156119b657600687015473ffffffffffffffffffffffffffffffffffffffff908116908716819003611984576040517f18cf2c5700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301525f91908316906318cf2c5790602401606060405180830381865afa1580156118fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119209190614abc565b602001516affffffffffffffffffffff1690506fffffffffffffffffffffffffffffffff8516811461197e576040517f5d57a9aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610661565b6040517f5d57a9aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b611a3b604080516101a0810182525f6101008201818152610120830182905261014083018290526101608301829052610180830182905282526020808301829052828401829052606083018290526080830182905260a0830182905283518085019094528184528301529060c082019081525f60209091015290565b6040517f9fcd1a770000000000000000000000000000000000000000000000000000000081525f9073ea6c2644d67546b2dad7645372e2355b18ac8d0190639fcd1a7790611a8f908d908a90600401614b1f565b60c060405180830381865af4158015611aaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ace9190614b4a565b60ff166020840152808352611aec908b908b908b908b908a90611610565b5f739e87120d47bd6beeee46cb90e187d09b5b5a20b5635cb180838c600842611b8e8f426040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b1660348201525f9060440160405160208183030381529060405280519060200120905092915050565b8a8a6040518763ffffffff1660e01b8152600401611bb196959493929190614bdc565b606060405180830381865af4158015611bcc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf09190614c1a565b905073ea6c2644d67546b2dad7645372e2355b18ac8d016325d030b68c836020015184604001518f600b015f9054906101000a900461ffff165f60088c8c6040518963ffffffff1660e01b8152600401611c51989796959493929190614c55565b6040805180830381865af4158015611c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8f9190614ca7565b151560e085015250865160020b5f90815260268c016020908152604090912054908801518114611cc5575060019150611f4e9050565b8360e0015115611cda57505f9150611f4e9050565b611d3d845f0151608001516fffffffffffffffffffffffffffffffff16886fffffffffffffffffffffffffffffffff16865f0151606001516fffffffffffffffffffffffffffffffff16611d2e91906147eb565b611d389190614ccb565b6131d7565b6fffffffffffffffffffffffffffffffff16604085015260228c015460238d0154611d6891906146b7565b8460a00181815250508b6024016040518060400160405290815f82015481526020016001820154815250508460c001819052508b6019015f9054906101000a90046fffffffffffffffffffffffffffffffff1684606001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250505f73ea6c2644d67546b2dad7645372e2355b18ac8d0163cb1efff68e8b5f015188602001516040518463ffffffff1660e01b8152600401611e449392919092835260029190910b602083015260ff16604082015260600190565b602060405180830381865af4158015611e5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e839190614d03565b9050611f208d866060015173ea6c2644d67546b2dad7645372e2355b18ac8d016312929a69858a606001518b60a001518c60c001516040518563ffffffff1660e01b8152600401611ed79493929190614d1e565b602060405180830381865af4158015611ef2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f169190614d68565b886040015161152b565b608086018190526040860151611f4a918f916fffffffffffffffffffffffffffffffff169061051c565b5050505b9850989650505050505050565b604080516102c0810182525f6101408201818152610160830182905261018083018290526101a083018290526101c083018290526101e08301829052610200830182905261022083018290526102408301829052610260830182905261028083018290526102a08301829052825260208083018290528284018290526060808401839052845160a080820187528482529281018490528086018490529081018390526080808201849052840152820181905260c0820181905260e082018190526101008201819052610120820181905291517ff36bd1dc00000000000000000000000000000000000000000000000000000000815290919073d07025f97504ea8dda1e8c40b04bbc11c3a960229063f36bd1dc9061207d90889060040161494e565b61018060405180830381865af4158015612099573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120bd9190614a70565b808352602080820151606092830151604080519190941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168184015274ffffffffff00000000000000000000000000000000608083901b16603482015283516024818303018152604482019485905280519301929092207f5cb18083000000000000000000000000000000000000000000000000000000009093525f92739e87120d47bd6beeee46cb90e187d09b5b5a20b592635cb180839261218e928c9260079291908c908c90604801614d83565b606060405180830381865af41580156121a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121cd9190614c1a565b90506121db815f01516131d7565b6fffffffffffffffffffffffffffffffff16604084015260138701548151612225916127109161220f9161ffff16906147eb565b6122199190614ccb565b8251611d389190614703565b6fffffffffffffffffffffffffffffffff16602080850191909152810151604080830151600b8a015491517f25d030b600000000000000000000000000000000000000000000000000000000815273ea6c2644d67546b2dad7645372e2355b18ac8d01936325d030b6936122ad938d93909161ffff16905f906007908e908e90600401614c55565b6040805180830381865af41580156122c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122eb9190614ca7565b151561012085015250825160a001516040517fa064a6b60000000000000000000000000000000000000000000000000000000081526004810189905260029190910b60248201525f9073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af415801561236d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061239191906146e1565b6060860191909152845161010001519091508114612436578351606090810151604080519283018152865160a0015160020b835286516101000151602084015286516101200151838201525173ffffffffffffffffffffffffffffffffffffffff909116917fa0a2f491d51aea2fa8d669b6b4db8184e5b75691d4db132c93d892cf316d1b80916124229190614dbc565b60405180910390a250600191506127889050565b8361012001511561244c57505f91506127889050565b60608401515f9081526027890160205260409020845161012001518154811061247757612477614859565b5f91825260208083206040805160a080820183526002909502909201805460ff8082161515855264ffffffffff610100808404919091168688015273ffffffffffffffffffffffffffffffffffffffff660100000000000090930492909216858501526001928301546fffffffffffffffffffffffffffffffff808216606080890191909152700100000000000000000000000000000000909204166080808801919091528d0195909552938b0151875260288f0190945294819020909401547f010000000000000000000000000000000000000000000000000000000000000090041690870181905286519091015191517fcb1efff600000000000000000000000000000000000000000000000000000000815273ea6c2644d67546b2dad7645372e2355b18ac8d019263b99fa9fd928c92859263cb1efff6926125d9928692919060040192835260029190910b602083015260ff16604082015260600190565b602060405180830381865af41580156125f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126189190614d03565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260020b6024820152604401602060405180830381865af4158015612672573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126969190614d68565b6fffffffffffffffffffffffffffffffff90811660a0860181905260208601516040517f3f81431600000000000000000000000000000000000000000000000000000000815292166004830152602482015273ea6c2644d67546b2dad7645372e2355b18ac8d0190633f81431690604401602060405180830381865af4158015612722573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274691906146ca565b60c0850152601988015460808501516060015160a08601516fffffffffffffffffffffffffffffffff9092169161277f9190839061322c565b60e08601525050505b94509492505050565b5f806040518061018001604052806007600a8111156127b2576127b2613e01565b81526020014264ffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018567ffffffffffffffff16815260200184602001515f015160020b81526020015f6fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff168152602001846020015160200151815260200184602001516040015181526020015f81526020015f815250905073d07025f97504ea8dda1e8c40b04bbc11c3a9602263f9589949888773d07025f97504ea8dda1e8c40b04bbc11c3a96022630a376f6b866040518263ffffffff1660e01b81526004016128c7919061494e565b61018060405180830381865af41580156128e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129079190614a70565b6040518463ffffffff1660e01b815260040161292593929190614a8b565b602060405180830381865af4158015612940573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296491906146ca565b979650505050505050565b5f8073d07025f97504ea8dda1e8c40b04bbc11c3a9602263a064a6b6866129996020880188614de0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260020b60248201526044016040805180830381865af41580156129f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1691906146e1565b9150915080846020013514612a64576040517f39354abe0000000000000000000000000000000000000000000000000000000081526004810182905260208501356024820152604401610658565b5f82815260278601602052604080822080549091870135908110612a8a57612a8a614859565b5f918252602090912060029091020180549091506601000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612af6576040517f322694f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416612b43576040517f5927466c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffff0000000000000000000000000000000000000000ffffffffffff16660100000000000073ffffffffffffffffffffffffffffffffffffffff861602178155612bb4847f43a621b20000000000000000000000000000000000000000000000000000000061328b565b15612c3b576040517f43a621b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906343a621b290612c0d9033908990600401614dfb565b5f604051808303815f87803b158015612c24575f80fd5b505af1158015612c36573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1686604051612c779190614e4a565b604051908190038120907f3246ef10eaab85b25a36a5dbcf1390c21bd9af30e8da1d4eff162478155f2ae2905f90a4505050505050565b60058801546040517fab4cca2d0000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff169063ab4cca2d90612d12908b908b908b908b908b908b908b90600401614ec5565b602060405180830381865afa158015612d2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d5191906146ca565b90508089601e01541015612d665750601e8801545b601e8901805482900390558854612d9b906301000000900473ffffffffffffffffffffffffffffffffffffffff1633836132ad565b60405181815233907fae40228879ae46643c23b1e3f706a1bab8d094bab16d66bb268ec596eebc900e9060200160405180910390a2505050505050505050565b6040517f5cb180830000000000000000000000000000000000000000000000000000000081525f9047908290739e87120d47bd6beeee46cb90e187d09b5b5a20b590635cb1808390612e3a908a90600a9086908c908c90600401614f16565b606060405180830381865af4158015612e55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e799190614c1a565b602081015160408083015190517f25d030b600000000000000000000000000000000000000000000000000000000815292935073ea6c2644d67546b2dad7645372e2355b18ac8d01926325d030b692612ee2928c928a90600190600a908f908f90600401614c55565b6040805180830381865af4158015612efc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f209190614ca7565b506040517f11fb81990000000000000000000000000000000000000000000000000000000081525f60048201819052602482015260448101849052909350739e87120d47bd6beeee46cb90e187d09b5b5a20b5906311fb8199906064015f6040518083038186803b158015612f93575f80fd5b505af4158015612fa5573d5f803e3d5ffd5b50506040517fd0d248fb000000000000000000000000000000000000000000000000000000008152600481018a9052739e87120d47bd6beeee46cb90e187d09b5b5a20b5925063d0d248fb91506024015f6040518083038186803b15801561300b575f80fd5b505af415801561301d573d5f803e3d5ffd5b505050505050949350505050565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613089576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401610658565b5090565b8082035f821280159061309f57508281135b156130e0576040517f82e2e6380000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610658565b5f821280156130ee57508281125b1561312f576040517f82e2e6380000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610658565b92915050565b8181015f831280159061314757508181125b15613188576040517fcae3b63a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610658565b5f8312801561319657508181135b1561312f576040517fcae3b63a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610658565b5f6fffffffffffffffffffffffffffffffff821115613089576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526080600482015260248101839052604401610658565b5f6fffffffffffffffffffffffffffffffff831661324a8385614886565b6fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1661327991906147eb565b6132839190614ccb565b949350505050565b5f613295836132f6565b80156132a657506132a68383613359565b9392505050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166132ed576390b8ec185f526004601cfd5b5f603452505050565b5f613321827f01ffc9a700000000000000000000000000000000000000000000000000000000613359565b801561312f5750613352827fffffffff00000000000000000000000000000000000000000000000000000000613359565b1592915050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000821660248201525f908190604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282519293505f9283928392909183918a617530fa92503d91505f51905082801561342d575060208210155b8015612964575015159695505050505050565b5f805f60608486031215613452575f80fd5b83359250602084013567ffffffffffffffff81111561346f575f80fd5b840160408187031215613480575f80fd5b929592945050506040919091013590565b5f805f606084860312156134a3575f80fd5b505081359360208301359350604090920135919050565b8060020b81146134c8575f80fd5b50565b80356134d6816134ba565b919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff8111828210171561352b5761352b6134db565b60405290565b6040516060810167ffffffffffffffff8111828210171561352b5761352b6134db565b6040805190810167ffffffffffffffff8111828210171561352b5761352b6134db565b604051610100810167ffffffffffffffff8111828210171561352b5761352b6134db565b604051610180810167ffffffffffffffff8111828210171561352b5761352b6134db565b60405160c0810167ffffffffffffffff8111828210171561352b5761352b6134db565b80151581146134c8575f80fd5b80356134d6816135e2565b64ffffffffff811681146134c8575f80fd5b80356134d6816135fa565b73ffffffffffffffffffffffffffffffffffffffff811681146134c8575f80fd5b80356134d681613617565b6fffffffffffffffffffffffffffffffff811681146134c8575f80fd5b80356134d681613643565b5f60a0828403121561367b575f80fd5b613683613508565b90508135613690816135e2565b815260208201356136a0816135fa565b602082015260408201356136b381613617565b604082015260608201356136c681613643565b606082015260808201356136d981613643565b608082015292915050565b60ff811681146134c8575f80fd5b80356134d6816136e4565b5f805f806101008587031215613711575f80fd5b843593506020850135613723816134ba565b9250613732866040870161366b565b915060e0850135613742816136e4565b939692955090935050565b838152602080820184905282516040830152820151606082015260808101613283565b5f8060408385031215613781575f80fd5b823561378c81613617565b9150602083013561379c81613643565b809150509250929050565b5f805f805f8061014087890312156137bd575f80fd5b8635955060208701356137cf816134ba565b9450604087013593506137e5886060890161366b565b92506101008701356137f681613643565b915061012087013561380781613643565b809150509295509295509295565b81518152602080830151908201526040810161312f565b5f6060828403121561383c575f80fd5b613844613531565b90508135613851816134ba565b81526020828101359082015260409182013591810191909152919050565b67ffffffffffffffff811681146134c8575f80fd5b80356134d68161386f565b5f6040828403121561389f575f80fd5b6138a7613554565b823581526020928301359281019290925250919050565b5f805f805f805f8789036102a08112156138d6575f80fd5b8835975060208901356138e881613617565b965060408901356138f881613617565b95506139078a60608b0161382c565b945060c089013561391781613643565b935060e08901356139278161386f565b92506101a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082011215613959575f80fd5b50613962613577565b6139708a6101008b0161366b565b815261397f6101a08a016136f2565b60208201526139916101c08a01613660565b60408201526139a36101e08a01613660565b6060820152610200890135608082015261022089013560a08201526139cc8a6102408b0161388f565b60c08201526139de6102808a016135ef565b60e08201528091505092959891949750929550565b5f805f8060808587031215613a06575f80fd5b843593506020850135613a1881613643565b92506040850135613a2881613643565b9150606085013561374281613643565b5f805f805f806101408789031215613a4e575f80fd5b863595506020870135613a6081613617565b94506040870135613a7081613617565b93506060870135613a8081613617565b92506080870135613a9081613643565b9150613a9f8860a0890161366b565b90509295509295509295565b5f8083601f840112613abb575f80fd5b50813567ffffffffffffffff811115613ad2575f80fd5b602083019150836020828501011115613ae9575f80fd5b9250929050565b5f805f805f805f80610120898b031215613b08575f80fd5b883597506020890135613b1a81613617565b96506040890135613b2a81613617565b95506060890135613b3a81613617565b9450613b498a60808b0161382c565b935060e0890135613b5981613643565b925061010089013567ffffffffffffffff811115613b75575f80fd5b613b818b828c01613aab565b999c989b5096995094979396929594505050565b5f6101c082019050613c1682855180511515825264ffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526fffffffffffffffffffffffffffffffff60608201511660608301526fffffffffffffffffffffffffffffffff60808201511660808301525050565b60ff60208501511660a08301526fffffffffffffffffffffffffffffffff60408501511660c08301526060840151613c6260e08401826fffffffffffffffffffffffffffffffff169052565b50608084015161010083015260a084015161012083015260c084015180516101408401526020015161016083015260e09093015115156101808201529015156101a09091015290565b600b81106134c8575f80fd5b80356134d681613cab565b5f805f808486036101c0811215613cd7575f80fd5b853594506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215613d0b575f80fd5b50613d1461359b565b613d2060208701613cb7565b8152613d2e6040870161360c565b6020820152613d3f60608701613638565b6040820152613d5060808701613638565b6060820152613d6160a08701613884565b6080820152613d7260c087016134cb565b60a0820152613d8360e08701613660565b60c0820152613d956101008701613660565b60e082015261012086810135610100830152610140808801359183019190915261016080880135918301919091526101808701359082015292506101a085013567ffffffffffffffff811115613de9575f80fd5b613df587828801613aab565b95989497509550505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600b8110613e63577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b613e72828251613e2e565b6020810151613e8a602084018264ffffffffff169052565b506040810151613eb2604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060810151613eda606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080810151613ef6608084018267ffffffffffffffff169052565b5060a0810151613f0b60a084018260020b9052565b5060c0810151613f2f60c08401826fffffffffffffffffffffffffffffffff169052565b5060e0810151613f5360e08401826fffffffffffffffffffffffffffffffff169052565b506101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b5f61034082019050613f9b828551613e67565b6020848101516fffffffffffffffffffffffffffffffff90811661018085015260408087015182166101a08601526060808801516101c0870152608080890151805115156101e08901529485015164ffffffffff166102008801529184015173ffffffffffffffffffffffffffffffffffffffff1661022087015283015182166102408601529190910151811661026084015260a08501511661028083015260c08401516102a083015260e08401516102c083015261010084015160ff166102e083015261012084015115156103008301528215156103208301526132a6565b5f805f805f858703610180811215614091575f80fd5b8635955060208701356140a381613617565b945060408701356140b381613617565b935060608701356140c38161386f565b92506101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80820112156140f5575f80fd5b506140fe6135bf565b608087013561410c81613643565b815261411b8860a0890161382c565b602082015261010087013561412f816136e4565b604082015261012087013561414381613643565b60608201526101408701356080820152610160870135614162816135e2565b60a0820152949793965091945092919050565b5f805f83850360a0811215614188575f80fd5b8435935060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156141bb575f80fd5b5060208401915060808401356141d081613617565b809150509250925092565b803561ffff811681146134d6575f80fd5b5f82601f8301126141fb575f80fd5b813567ffffffffffffffff811115614215576142156134db565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715614262576142626134db565b604052818152838201602001851015614279575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b0312156142ad575f80fd5b883597506142bd60208a016141db565b96506040890135955060608901356142d4816135e2565b945060808901356142e4816135e2565b93506142f260a08a01613cb7565b925060c089013567ffffffffffffffff81111561430d575f80fd5b6143198b828c016141ec565b92505060e089013567ffffffffffffffff811115614335575f80fd5b6143418b828c016141ec565b9150509295985092959890939650565b5f805f8060608587031215614364575f80fd5b84359350602085013567ffffffffffffffff811115614381575f80fd5b61438d87828801613aab565b90945092506143a09050604086016141db565b905092959194509250565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143de575f80fd5b83018035915067ffffffffffffffff8211156143f8575f80fd5b6020019150600581901b3603821315613ae9575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614442575f80fd5b830160208101925035905067ffffffffffffffff811115614461575f80fd5b8060051b3603821315613ae9575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526020830192505f815f5b848110156145005781356144d981613643565b6fffffffffffffffffffffffffffffffff16865260209586019591909101906001016144c6565b5093949350505050565b828152604060208201525f60808201614523848561440f565b6040808601528281845260a08601905060a08260051b8701019350825f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603015b848210156145f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6089880301845282358181126145a2575f80fd5b860160208101903567ffffffffffffffff8111156145be575f80fd5b8036038213156145cc575f80fd5b6145d7898284614472565b98505050602083019250602084019350600182019150614566565b505050505050614605602085018561440f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160608601526129648382846144b9565b5f805f806080858703121561464d575f80fd5b8451614658816135e2565b6020860151909450614669816135e2565b604086015190935061467a816135e2565b6060959095015193969295505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561312f5761312f61468a565b5f602082840312156146da575f80fd5b5051919050565b5f80604083850312156146f2575f80fd5b505080516020909101519092909150565b8082018082111561312f5761312f61468a565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147465761474661468a565b5060010190565b5f8260020b8260020b028060020b915080821461476c5761476c61468a565b5092915050565b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171561312f5761312f61468a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818116838216019081111561312f5761312f61468a565b808202811582820484141761312f5761312f61468a565b8251815260208084015181830152825160408301528201516060820152608081016132a6565b5f6040828403128015614839575f80fd5b50614842613554565b825181526020928301519281019290925250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6fffffffffffffffffffffffffffffffff828116828216039081111561312f5761312f61468a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828116828216039081111561312f5761312f61468a565b5f816148f3576148f361468a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6fffffffffffffffffffffffffffffffff84168152602080820184905282516040830152820151606082015260808101613283565b610180810161312f8284613e67565b80516134d681613cab565b80516134d6816135fa565b80516134d681613617565b80516134d68161386f565b80516134d6816134ba565b80516134d681613643565b5f61018082840312156149b0575f80fd5b6149b861359b565b90506149c38261495d565b81526149d160208301614968565b60208201526149e260408301614973565b60408201526149f360608301614973565b6060820152614a046080830161497e565b6080820152614a1560a08301614989565b60a0820152614a2660c08301614994565b60c0820152614a3760e08301614994565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101609182015191810191909152919050565b5f6101808284031215614a81575f80fd5b6132a6838361499f565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526101c081016132836040830184613e67565b5f6060828403128015614acd575f80fd5b50614ad6613531565b8251614ae1816135fa565b815260208301516affffffffffffffffffffff81168114614b00575f80fd5b60208201526040830151614b1381613643565b60408201529392505050565b828152608081016132a66020830184805160020b825260208082015190830152604090810151910152565b5f8082840360c0811215614b5c575f80fd5b60a0811215614b69575f80fd5b50614b72613508565b8351614b7d816135e2565b81526020840151614b8d816135fa565b60208201526040840151614ba081613617565b60408201526060840151614bb381613643565b60608201526080840151614bc681613643565b608082015260a084015190925061379c816136e4565b868152614bec6020820187613e2e565b84604082015283606082015260a060808201525f614c0e60a083018486614472565b98975050505050505050565b5f6060828403128015614c2b575f80fd5b50614c34613531565b82518152602080840151908201526040928301519281019290925250919050565b88815287602082015286604082015261ffff861660608201528415156080820152614c8360a0820185613e2e565b60e060c08201525f614c9960e083018486614472565b9a9950505050505050505050565b5f8060408385031215614cb8575f80fd5b8251602084015190925061379c816135e2565b5f82614cfe577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215614d13575f80fd5b81516132a6816134ba565b600285900b81526fffffffffffffffffffffffffffffffff841660208201526040810183905260a08101614d5f606083018480518252602090810151910152565b95945050505050565b5f60208284031215614d78575f80fd5b81516132a681613643565b868152614d936020820187613e2e565b64ffffffffff8516604082015283606082015260a060808201525f614c0e60a083018486614472565b815160020b815260208083015190820152604080830151908201526060810161312f565b5f60208284031215614df0575f80fd5b81356132a6816134ba565b73ffffffffffffffffffffffffffffffffffffffff83168152608081018235614e23816134ba565b60020b60208381019190915283013560408084019190915290920135606090910152919050565b5f8235614e56816134ba565b60020b825250602082810135908201526040918201359181019190915260600190565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b61ffff8816815286602082015285151560408201528415156060820152614eef6080820185613e2e565b60e060a08201525f614f0460e0830185614e79565b82810360c0840152614c998185614e79565b858152614f266020820186613e2e565b8360408201525f606082015260a060808201525f61296460a08301848661447256fea2646970667358221220f582628078df0f43ed5b20725171ea6117ef4bbf8eac577f11caa0f996ac92bf64736f6c634300081a0033", - "nonce": "0x34", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6fbdcc878b4d23ac629dc7efe0be1a47275a02ba2212c5a8edc15129d0f6d73f", - "transactionType": "CREATE", - "contractName": "UsdnProtocolActionsVaultLibrary", - "contractAddress": "0x9e87120d47bd6beeee46cb90e187d09b5b5a20b5", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x5c84e3", - "input": "0x6153d1610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610184575f3560e01c806344779129116100dd57806395997d9d11610093578063d0d248fb1161006e578063d0d248fb1461051f578063e6318ea71461053e578063f73b3d071461055d575f80fd5b806395997d9d146104c25780639d0b39ee146104e1578063cb89b7d414610500575f80fd5b806359f96b0b116100c357806359f96b0b146103e65780635cb180831461046e5780637d7f043a146104af575f80fd5b806344779129146103a857806353b4006b146103c7575f80fd5b80632b7a6b4e1161013d5780633863acba116101185780633863acba1461033d5780633b3b53321461035c5780633dcd398914610389575f80fd5b80632b7a6b4e146102775780632cf7a3ba146102965780633445c7c21461031e575f80fd5b806311fb81991161016d57806311fb8199146101db5780631e5bbd3b146101fc5780632559041314610230575f80fd5b8063069d5da91461018857806306c0bc72146101bc575b5f80fd5b818015610193575f80fd5b506101a76101a2366004613fd7565b610570565b60405190151581526020015b60405180910390f35b8180156101c7575f80fd5b506101a76101d6366004613fd7565b6105eb565b8180156101e6575f80fd5b506101fa6101f536600461405c565b6105fa565b005b818015610207575f80fd5b5061021b610216366004614095565b61066e565b604080519283529015156020830152016101b3565b81801561023b575f80fd5b5061024f61024a3660046140ed565b6108b5565b60408051941515855292151560208501529015159183019190915260608201526080016101b3565b818015610282575f80fd5b5061021b610291366004614173565b610dd9565b8180156102a1575f80fd5b506102b56102b036600461423d565b6110d4565b6040516101b391905f60e0820190506fffffffffffffffffffffffffffffffff835116825260208301511515602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b818015610329575f80fd5b5061021b6103383660046142bb565b611730565b818015610348575f80fd5b5061021b610357366004614095565b611a0b565b818015610367575f80fd5b5061037b610376366004614416565b611b81565b6040519081526020016101b3565b818015610394575f80fd5b5061037b6103a3366004614510565b611ea9565b8180156103b3575f80fd5b5061037b6103c23660046140ed565b612039565b8180156103d2575f80fd5b506101a76103e136600461460a565b61208c565b8180156103f1575f80fd5b506104056104003660046146b1565b61212b565b6040516101b391905f60e0820190506fffffffffffffffffffffffffffffffff83511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b818015610479575f80fd5b5061048d6104883660046146fc565b612507565b60408051825181526020808401519082015291810151908201526060016101b3565b6101fa6104bd36600461405c565b6126a2565b8180156104cd575f80fd5b506101a76104dc3660046147a0565b612794565b8180156104ec575f80fd5b506101a76104fb3660046147a0565b612ddf565b81801561050b575f80fd5b506101a761051a3660046148c7565b613537565b81801561052a575f80fd5b506101fa610539366004614980565b6135d8565b818015610549575f80fd5b506101fa610558366004614997565b61372b565b6101fa61056b3660046149c5565b613814565b5f478161057f88888888611a0b565b935090503373ffffffffffffffffffffffffffffffffffffffff8816146105ba576105aa818861372b565b6105b48183614a12565b91505f90505b82156105cc576105ca8885612039565b015b6105d75f82846105fa565b6105e0886135d8565b505095945050505050565b5f478161057f8888888861066e565b5f346106064785614a25565b6106109190614a25565b90505f61061d8584614a25565b905081811115610659576040517f6d75724400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203610666813361372b565b505050505050565b6040517f7d9aae1c0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff841660248201525f9081908190819073d07025f97504ea8dda1e8c40b04bbc11c3a9602290637d9aae1c906044016101a060405180830381865af41580156106fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071e9190614b4b565b909250905060038251600a81111561073857610738614b78565b1461076f576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff16146107d8576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e488838888612794565b925082156108aa576040517f8c43fdfa0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff881660248201526fffffffffffffffffffffffffffffffff8216604482015273d07025f97504ea8dda1e8c40b04bbc11c3a9602290638c43fdfa906064015f6040518083038186803b158015610882575f80fd5b505af4158015610894573d5f803e3d5ffd5b50505050816080015167ffffffffffffffff1693505b505094509492505050565b5f805f805f8073d07025f97504ea8dda1e8c40b04bbc11c3a9602263b1457adb896040518263ffffffff1660e01b81526004016108f491815260200190565b6101a060405180830381865af4158015610910573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109349190614b4b565b90925090505f8251600a81111561094d5761094d614b78565b036109665760015f805f95509550955095505050610dd0565b5f6109718880614ba5565b915081905061098360208a018a614ba5565b90501415806109925750600181105b156109ab575f805f809650965096509650505050610dd0565b5f6109b960208a018a614ba5565b5f8181106109c9576109c9614c09565b90506020020160208101906109de9190614c36565b8303905081816fffffffffffffffffffffffffffffffff16101580610a6a57506fffffffffffffffffffffffffffffffff8316610a1e60208b018b614ba5565b836fffffffffffffffffffffffffffffffff16818110610a4057610a40614c09565b9050602002016020810190610a559190614c36565b6fffffffffffffffffffffffffffffffff1614155b15610a84575f805f80975097509750975050505050610dd0565b365f610a908b80614ba5565b846fffffffffffffffffffffffffffffffff16818110610ab257610ab2614c09565b9050602002810190610ac49190614c51565b909250905060038651600a811115610ade57610ade614b78565b03610af657610aef8c878484612794565b9850610c88565b60058651600a811115610b0b57610b0b614b78565b03610b1c57610aef8c878484612ddf565b60078651600a811115610b3157610b31614b78565b03610bd4576040517fac84ee2f00000000000000000000000000000000000000000000000000000000815273ea9d32e35d0c7f728d6ea54f471d07471763a7909063ac84ee2f90610b8c908f908a9087908790600401614e53565b6040805180830381865af4158015610ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190614e86565b9099509750610c88565b60098651600a811115610be957610be9614b78565b03610c88576040517f1634924600000000000000000000000000000000000000000000000000000000815273ea9d32e35d0c7f728d6ea54f471d07471763a79090631634924690610c44908f908a9087908790600401614e53565b6040805180830381865af4158015610c5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c829190614e86565b90995097505b600199508880610c955750875b15610dc95760608601516040517f8c43fdfa000000000000000000000000000000000000000000000000000000008152600481018e905273ffffffffffffffffffffffffffffffffffffffff90911660248201526fffffffffffffffffffffffffffffffff8616604482015273d07025f97504ea8dda1e8c40b04bbc11c3a9602290638c43fdfa906064015f6040518083038186803b158015610d36575f80fd5b505af4158015610d48573d5f803e3d5ffd5b50505050856080015167ffffffffffffffff1696503373ffffffffffffffffffffffffffffffffffffffff16866060015173ffffffffffffffffffffffffffffffffffffffff167f03b2075c0a8ffcac919b7d54a44b2d70c980fdf0b9250930ce230541c9c2050e89604051610dc091815260200190565b60405180910390a35b5050505050505b92959194509250565b5f8073ffffffffffffffffffffffffffffffffffffffff8816610e28576040517f5927466c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8716610e75576040517f53e78b9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8572ffffffffffffffffffffffffffffffffffffff165f03610ec3576040517fe4cdd09200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ed18b8989888861212b565b90508060c0015115610ef15750505067ffffffffffffffff83165f6110c7565b610eff8b8a8a8a8a86611b81565b60018c01546040517f6d78045900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d8116600483015230602483015272ffffffffffffffffffffffffffffffffffffff8b1660448301529295509116908190636d780459906064016020604051808303815f875af1158015610f95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb99190614eb3565b50610fc78260a001516138e8565b8c601f015f828254610fd99190614ece565b90915550506040517f8590625600000000000000000000000000000000000000000000000000000000815272ffffffffffffffffffffffffffffffffffffff891660048201526001935073ffffffffffffffffffffffffffffffffffffffff808b16918c8216917fd0253f9da5b821d27dd3100908130cedc47bf383232d880baa15d45e83d618619190851690638590625690602401602060405180830381865afa15801561108a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ae9190614eed565b604080519182524260208301520160405180910390a350505b9850989650505050505050565b6111216040518060e001604052805f6fffffffffffffffffffffffffffffffff1681526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040517f521b687000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152426fffffffffffffffffffffffffffffffff811660248301525f916111ee9189916002919073619c25f15edd45e4bcc9ad4be555000ac879ef559063521b6870906044015b602060405180830381865af41580156111c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e79190614eed565b8888612507565b6020810151604080830151600b8b015491517f25d030b600000000000000000000000000000000000000000000000000000000815293945073ea6c2644d67546b2dad7645372e2355b18ac8d01936325d030b693611262938d93919261ffff909116905f906002908d908d90600401614f04565b6040805180830381865af415801561127c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a09190614f56565b158015602085015290506112b45750611727565b6112d087866fffffffffffffffffffffffffffffffff16613814565b6013870154815161130e91612710916112f39162010000900461ffff1690614f7a565b6112fd9190614fbe565b82516113099190614a12565b61394a565b6fffffffffffffffffffffffffffffffff9081168084526023890154604080860182905260228b015460608701819052601e8c015460198d015492517fe45d9ac80000000000000000000000000000000000000000000000000000000081526004810194909452602484015260448301526064820192909252911660848201526113f6907310abe072ace566266e7e329ea040e35a3107377b9063e45d9ac89060a4015b602060405180830381865af41580156113cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f19190614eed565b61399f565b60808301526001870154604080517f3a98ef39000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216918291633a98ef399160048083019260209291908290030181865afa15801561146c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114909190614eed565b60a08401819052608084015184516040517f59067472000000000000000000000000000000000000000000000000000000008152600481018c90526fffffffffffffffffffffffffffffffff808b166024830152604482019390935260648101939093521660848201525f907310abe072ace566266e7e329ea040e35a3107377b9063590674729060a401602060405180830381865af4158015611536573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155a9190614eed565b6040517f85906256000000000000000000000000000000000000000000000000000000008152600481018290529091505f9073ffffffffffffffffffffffffffffffffffffffff841690638590625690602401602060405180830381865afa1580156115c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ec9190614eed565b9050805f03611627576040517f02e6ca8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60138a01546040517f9e141c3a0000000000000000000000000000000000000000000000000000000081526004810183905264010000000090910463ffffffff1660248201819052907310abe072ace566266e7e329ea040e35a3107377b90639e141c3a90604401602060405180830381865af41580156116aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ce9190614eed565b60c087015263ffffffff8116158015906116ea575060c0860151155b15611721576040517f02e6ca8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff891661177f576040517f5927466c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff88166117cc576040517f53e78b9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866fffffffffffffffffffffffffffffffff165f03611817576040517fe4cdd09200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6118258c8a8a88886110d4565b90508060200151156118455750505067ffffffffffffffff84165f6119fd565b6118538c8b8b8a8c86611ea9565b60c0820151909350156118d25760028616156118a05760c081015160028d015461189b9173ffffffffffffffffffffffffffffffffffffffff909116908d9061dead906139dd565b6118d2565b60c081015160028d01546118d29173ffffffffffffffffffffffffffffffffffffffff909116908d9061dead90613a60565b600186161561191d578b54611918906301000000900473ffffffffffffffffffffffffffffffffffffffff168c306fffffffffffffffffffffffffffffffff8c166139dd565b61195a565b8b5461195a906301000000900473ffffffffffffffffffffffffffffffffffffffff168c306fffffffffffffffffffffffffffffffff8c16613a60565b6fffffffffffffffffffffffffffffffff88168c601f015f82825461197f9190614ff6565b909155505060c0810151604080516fffffffffffffffffffffffffffffffff8b16815242602082015280820192909252516001935073ffffffffffffffffffffffffffffffffffffffff8b811692908d16917f18ad3b5c323a8e1a3ee0f3acb7b2d0abf761ea555025c700fde4c72851df0fcc9181900360600190a3505b995099975050505050505050565b6040517f7d9aae1c0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff841660248201525f9081908190819073d07025f97504ea8dda1e8c40b04bbc11c3a9602290637d9aae1c906044016101a060405180830381865af4158015611a97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abb9190614b4b565b909250905060058251600a811115611ad557611ad5614b78565b14611b0c576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff1614611b75576040517f4c8b8a3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e488838888612ddf565b5f8073d07025f97504ea8dda1e8c40b04bbc11c3a9602263bd9d3b8e6040518061018001604052806005600a811115611bbc57611bbc614b78565b815264ffffffffff4216602082015273ffffffffffffffffffffffffffffffffffffffff808c16604080840191909152908b16606083015267ffffffffffffffff89166080830152517f3fe927f600000000000000000000000000000000000000000000000000000000815272ffffffffffffffffffffffffffffffffffffff8a16600482015260a0909101907310abe072ace566266e7e329ea040e35a3107377b90633fe927f690602401602060405180830381865af4158015611c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca7919061502f565b62ffffff1681526040517fff2823f500000000000000000000000000000000000000000000000000000000815272ffffffffffffffffffffffffffffffffffffff8a1660048201526020909101907310abe072ace566266e7e329ea040e35a3107377b9063ff2823f590602401602060405180830381865af4158015611d2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d539190615048565b6fffffffffffffffffffffffffffffffff168152602001865f01516fffffffffffffffffffffffffffffffff16815260200186604001518152602001866080015181526020018660600151815260200186602001518152506040518263ffffffff1660e01b8152600401611dc79190615063565b61018060405180830381865af4158015611de3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e079190615190565b6040517ff958994900000000000000000000000000000000000000000000000000000000815290915073d07025f97504ea8dda1e8c40b04bbc11c3a960229063f958994990611e5e908b908a9086906004016151ab565b602060405180830381865af4158015611e79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9d9190614eed565b98975050505050505050565b5f806040518061018001604052806003600a811115611eca57611eca614b78565b81526020014264ffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018667ffffffffffffffff1681526020015f60020b8152602001856fffffffffffffffffffffffffffffffff168152602001845f01516fffffffffffffffffffffffffffffffff1681526020018460400151815260200184608001518152602001846060015181526020018460a00151815250905073d07025f97504ea8dda1e8c40b04bbc11c3a9602263f9589949898873d07025f97504ea8dda1e8c40b04bbc11c3a96022630226abe3866040518263ffffffff1660e01b8152600401611fdb91906151dc565b61018060405180830381865af4158015611ff7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201b9190615190565b6040518463ffffffff1660e01b8152600401611e5e939291906151ab565b5f8061204584846108b5565b94509192508291506120859050576040517f79b86f9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b60148701545f9067ffffffffffffffff16348111156120d7576040517f44846eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b475f6120e98b338b8b8e888d8d610dd9565b9450905083156120ff576120fd8b86612039565b015b6121148367ffffffffffffffff1682846105fa565b61211d8b6135d8565b505050979650505050505050565b6121786040518060e001604052805f6fffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f151581525090565b5f6121ec8760044273619c25f15edd45e4bcc9ad4be555000ac879ef5563521b68708b426040518363ffffffff1660e01b81526004016111a892919073ffffffffffffffffffffffffffffffffffffffff9290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b6020810151604080830151600b8b015491517f25d030b600000000000000000000000000000000000000000000000000000000815293945073ea6c2644d67546b2dad7645372e2355b18ac8d01936325d030b69361225f938d93919261ffff909116905f906004908d908d908301614f04565b6040805180830381865af4158015612279573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229d9190614f56565b15801560c085015290506122b15750611727565b601387015481516122ea91612710916122d49162010000900461ffff1690614f7a565b6122de9190614fbe565b82516113099190614a25565b6fffffffffffffffffffffffffffffffff9081168084526023890154604080860182905260228b015460608701819052601e8c015460198d015492517fe45d9ac8000000000000000000000000000000000000000000000000000000008152600481019490945260248401526044830152606482019290925291166084820152612392907310abe072ace566266e7e329ea040e35a3107377b9063e45d9ac89060a4016113b2565b60808301526001870154604080517f3a98ef39000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691633a98ef39916004808201926020929091908290030181865afa158015612407573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242b9190614eed565b6020830181905260808301516040517f90d1816200000000000000000000000000000000000000000000000000000000815272ffffffffffffffffffffffffffffffffffffff88166004820152602481019190915260448101919091527310abe072ace566266e7e329ea040e35a3107377b906390d1816290606401602060405180830381865af41580156124c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e69190614eed565b60a0830181905260408301516124fd9189916126a2565b5095945050505050565b61252860405180606001604052805f81526020015f81526020015f81525090565b6004808801546040517f3f5bd8a90000000000000000000000000000000000000000000000000000000081525f9273ffffffffffffffffffffffffffffffffffffffff90921691633f5bd8a99161258591889188918d91016151eb565b602060405180830381865afa1580156125a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c49190614eed565b905080471015612600576040517faf6d20e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004808901546040517ff211abcc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163f211abcc918491612661918a918c918e918c918c910161520d565b60606040518083038185885af115801561267d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e9d919061524b565b600f8301545f8190036126b55750505050565b5f6126e36126c2856138e8565b6126dd87601f01546126d789601e01546138e8565b90613ab8565b90613b60565b9050805f0361271e576040517f03205a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6127518261274b612710612745866126dd8c602201548b6127409190614a12565b6138e8565b90613c02565b90613cbd565b9050828112610666576040517f6cf9f423000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b5f8073d07025f97504ea8dda1e8c40b04bbc11c3a960226328d43f5e866040518263ffffffff1660e01b81526004016127cd91906151dc565b61018060405180830381865af41580156127e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280d9190615190565b602081015160608201516040517f521b687000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015264ffffffffff909116602482018190529192505f916128de91899160039173619c25f15edd45e4bcc9ad4be555000ac879ef559063521b6870906044015b602060405180830381865af41580156128b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d79190614eed565b8989612507565b6020810151604080830151600b8b015491517f25d030b60000000000000000000000000000000000000000000000000000000081529394505f9373ea6c2644d67546b2dad7645372e2355b18ac8d01936325d030b693612952938e93909161ffff169088906003908f908f90600401614f04565b6040805180830381865af415801561296c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129909190614f56565b91505080156129a4575f9350505050612dd7565b50601387015481515f916129e191612710916129cb916201000090910461ffff1690614f7a565b6129d59190614fbe565b83516113099190614a12565b60c084015161012085015161016086015160e08701516040517f59067472000000000000000000000000000000000000000000000000000000008152600481018e90526fffffffffffffffffffffffffffffffff9485166024820152604481019390935260648301919091529190911660848201529091505f907310abe072ace566266e7e329ea040e35a3107377b9063590674729060a401602060405180830381865af4158015612a95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ab99190614eed565b60c085015161010086015161012087015161014088015160e08901516040517fe45d9ac80000000000000000000000000000000000000000000000000000000081526004810194909452602484019290925260448301526fffffffffffffffffffffffffffffffff80871660648401521660848201529192505f917310abe072ace566266e7e329ea040e35a3107377b916359067472918d9190612b6790859063e45d9ac89060a4016113b2565b6101608a01516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815260048101949094526fffffffffffffffffffffffffffffffff9283166024850152604484019190915260648301528616608482015260a401602060405180830381865af4158015612bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c109190614eed565b90505f818311612c21575081612c24565b50805b8560c001516fffffffffffffffffffffffffffffffff168b601e015f828254612c4d9190614a25565b909155505060c08601516fffffffffffffffffffffffffffffffff168b601f015f828254612c7b9190614ece565b909155505060018b015460408781015190517f528c198a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018490525f92919091169063528c198a906044016020604051808303815f875af1158015612d00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d249190614eed565b905060019750866060015173ffffffffffffffffffffffffffffffffffffffff16876040015173ffffffffffffffffffffffffffffffffffffffff167fc30aa039cdd6b3f3c49f47e33ccfed1e781075ad4c90a432176d68e6613680658960c00151848b60200151604051612dc7939291906fffffffffffffffffffffffffffffffff939093168352602083019190915264ffffffffff16604082015260600190565b60405180910390a3505050505050505b949350505050565b5f8073d07025f97504ea8dda1e8c40b04bbc11c3a960226382e6e0e9866040518263ffffffff1660e01b8152600401612e1891906151dc565b61018060405180830381865af4158015612e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e5891906152c9565b602081015160608201516040517f521b687000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015264ffffffffff909116602482018190529192505f91612ee791899160059173619c25f15edd45e4bcc9ad4be555000ac879ef559063521b687090604401612898565b6020810151604080830151600b8b015491517f25d030b60000000000000000000000000000000000000000000000000000000081529394505f9373ea6c2644d67546b2dad7645372e2355b18ac8d01936325d030b693612f5b938e93909161ffff169088906005908f908f90600401614f04565b6040805180830381865af4158015612f75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f999190614f56565b9150508015612fad575f9350505050612dd7565b601388015482515f918291612fea9161271091612fd49162010000900461ffff1690614f7a565b612fde9190614fbe565b85516113099190614a25565b61012086015161010087015161014088015160e08901516040517fe45d9ac800000000000000000000000000000000000000000000000000000000815260048101939093526024830184905260448301919091526fffffffffffffffffffffffffffffffff8085166064840152166084820152919250905f9061308b907310abe072ace566266e7e329ea040e35a3107377b9063e45d9ac89060a4016113b2565b905080821161309c578193506130a0565b8093505b50505060a084015160c08501516040517f6ef704f600000000000000000000000000000000000000000000000000000000815262ffffff90921660048301526fffffffffffffffffffffffffffffffff1660248201525f9073d07025f97504ea8dda1e8c40b04bbc11c3a9602290636ef704f690604401602060405180830381865af4158015613132573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131569190614eed565b6101208601516101608701516040517f90d1816200000000000000000000000000000000000000000000000000000000815260048101849052602481019290925260448201529091505f907310abe072ace566266e7e329ea040e35a3107377b906390d1816290606401602060405180830381865af41580156131db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131ff9190614eed565b905061320a816138e8565b8b601f015f82825461321c9190614ff6565b925050819055505f8b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f7310abe072ace566266e7e329ea040e35a3107377b6390d1816285878573ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132d49190614eed565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935260248301919091526044820152606401602060405180830381865af4158015613333573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133579190614eed565b6040517f853c637d0000000000000000000000000000000000000000000000000000000081526004810186905290915073ffffffffffffffffffffffffffffffffffffffff83169063853c637d906024015f604051808303815f87803b1580156133bf575f80fd5b505af11580156133d1573d5f803e3d5ffd5b505050505f81111561342557808d601e015f8282546133f09190614a12565b909155505060408801518d5461342591630100000090910473ffffffffffffffffffffffffffffffffffffffff169083613da0565b60019850876060015173ffffffffffffffffffffffffffffffffffffffff16886040015173ffffffffffffffffffffffffffffffffffffffff167f5417aafb75f8ac516807445e98c1da8698d1932cc50ccf9a19fded4bb1266c57838573ffffffffffffffffffffffffffffffffffffffff166385906256896040518263ffffffff1660e01b81526004016134bc91815260200190565b602060405180830381865afa1580156134d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134fb9190614eed565b6020808e0151604080519485529184019290925264ffffffffff9091169082015260600160405180910390a35050505050505050949350505050565b60148801545f9067ffffffffffffffff1634811115613582576040517f44846eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b475f6135958c338c8c8f888e8e8e611730565b9450905083156135ab576135a98c86612039565b015b6135c08367ffffffffffffffff1682846105fa565b6135c98c6135d8565b50505098975050505050505050565b601a810154600d8201548110613727576013820154604080516801000000000000000090920473ffffffffffffffffffffffffffffffffffffffff1680835260208301849052917fa2588aba3a1098db793060f20ad6356df2823e39bb2fa00af5511ff65553062a910160405180910390a15f601a840155825461367a906301000000900473ffffffffffffffffffffffffffffffffffffffff168284613da0565b6136a4817f2a11057300000000000000000000000000000000000000000000000000000000613de9565b15613725576040517f2a1105730000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff821690632a110573906024015f604051808303815f87803b15801561370e575f80fd5b505af1158015613720573d5f803e3d5ffd5b505050505b505b5050565b73ffffffffffffffffffffffffffffffffffffffff8116613778576040517f5927466c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115613727575f8173ffffffffffffffffffffffffffffffffffffffff16836040515f6040518083038185875af1925050503d805f81146137d4576040519150601f19603f3d011682016040523d82523d5f602084013e6137d9565b606091505b5050905080613725576040517ff9838a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60108201545f81900361382657505050565b5f61383e846022015485602301546127409190614a12565b9050805f03613879576040517f2727fa4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f613893846126d787601f01546126d789601e01546138e8565b90505f6138aa8361274b6127106127458684613b60565b9050838112610666576040517f6cf9f4230000000000000000000000000000000000000000000000000000000081526004810182905260240161278b565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613946576040517f24775e060000000000000000000000000000000000000000000000000000000081526004810183905260240161278b565b5090565b5f6fffffffffffffffffffffffffffffffff821115613946576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152608060048201526024810183905260440161278b565b5f80821215613946576040517fa8ce44320000000000000000000000000000000000000000000000000000000081526004810183905260240161278b565b6040518460601b60601c60748201528160548201528260348201528360601b60208201526f36c7851600000000000000000000000081526e22d473030f116ddee9f6b43ac78ba36001461480613a335750803b15155b805f386084601087015f875af11661372057677939f4248757f0fd5f5260048460a01c151560021b601801fd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716613aab57637939f4245f526004601cfd5b5f60605260405250505050565b8181015f8312801590613aca57508181125b15613b0b576040517fcae3b63a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161278b565b5f83128015613b1957508181135b15613b5a576040517fcae3b63a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161278b565b92915050565b8082035f8212801590613b7257508281135b15613bb3576040517f82e2e638000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161278b565b5f82128015613bc157508281125b15613b5a576040517f82e2e638000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161278b565b5f825f03613c1157505f613b5a565b5081810281838281613c2557613c25614f91565b05141580613c7c57507f800000000000000000000000000000000000000000000000000000000000000082148015613c7c5750827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15613b5a576040517f23f447a7000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161278b565b5f815f03613cfa576040517ff0ae00e00000000000000000000000000000000000000000000000000000000081526004810184905260240161278b565b7f800000000000000000000000000000000000000000000000000000000000000083148015613d485750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15613d89576040517fc1fe304d000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161278b565b818381613d9857613d98614f91565b059392505050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716613de0576390b8ec185f526004601cfd5b5f603452505050565b5f613df383613e0b565b8015613e045750613e048383613e6e565b9392505050565b5f613e36827f01ffc9a700000000000000000000000000000000000000000000000000000000613e6e565b8015613b5a5750613e67827fffffffff00000000000000000000000000000000000000000000000000000000613e6e565b1592915050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000821660248201525f908190604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282519293505f9283928392909183918a617530fa92503d91505f519050828015613f42575060208210155b8015613f4d57505f81115b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613f79575f80fd5b50565b5f8083601f840112613f8c575f80fd5b50813567ffffffffffffffff811115613fa3575f80fd5b602083019150836020828501011115613fba575f80fd5b9250929050565b5f60408284031215613fd1575f80fd5b50919050565b5f805f805f60808688031215613feb575f80fd5b853594506020860135613ffd81613f58565b9350604086013567ffffffffffffffff811115614018575f80fd5b61402488828901613f7c565b909450925050606086013567ffffffffffffffff811115614043575f80fd5b61404f88828901613fc1565b9150509295509295909350565b5f805f6060848603121561406e575f80fd5b505081359360208301359350604090920135919050565b803561409081613f58565b919050565b5f805f80606085870312156140a8575f80fd5b8435935060208501356140ba81613f58565b9250604085013567ffffffffffffffff8111156140d5575f80fd5b6140e187828801613f7c565b95989497509550505050565b5f80604083850312156140fe575f80fd5b82359150602083013567ffffffffffffffff81111561411b575f80fd5b61412785828601613fc1565b9150509250929050565b803572ffffffffffffffffffffffffffffffffffffff81168114614090575f80fd5b67ffffffffffffffff81168114613f79575f80fd5b803561409081614153565b5f805f805f805f8060e0898b03121561418a575f80fd5b88359750602089013561419c81613f58565b965060408901356141ac81613f58565b955060608901356141bc81613f58565b94506141ca60808a01614131565b935060a08901356141da81614153565b925060c089013567ffffffffffffffff8111156141f5575f80fd5b6142018b828c01613f7c565b999c989b5096995094979396929594505050565b6fffffffffffffffffffffffffffffffff81168114613f79575f80fd5b803561409081614215565b5f805f805f60808688031215614251575f80fd5b85359450602086013561426381613f58565b9350604086013561427381614215565b9250606086013567ffffffffffffffff81111561428e575f80fd5b61429a88828901613f7c565b969995985093965092949392505050565b803560ff81168114614090575f80fd5b5f805f805f805f805f6101008a8c0312156142d4575f80fd5b8935985060208a01356142e681613f58565b975060408a01356142f681613f58565b965060608a013561430681613f58565b955060808a013561431681614215565b945060a08a013561432681614153565b935061433460c08b016142ab565b925060e08a013567ffffffffffffffff81111561434f575f80fd5b61435b8c828d01613f7c565b915080935050809150509295985092959850929598565b60405160e0810167ffffffffffffffff811182821017156143ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b604051610180810167ffffffffffffffff811182821017156143ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b8015158114613f79575f80fd5b5f805f805f8086880361018081121561442d575f80fd5b87359650602088013561443f81613f58565b9550604088013561444f81613f58565b945061445d60608901614131565b9350608088013561446d81614153565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561449e575f80fd5b506144a7614372565b60a08801356144b581614215565b815260c0880135602082015260e088013560408201526101008801356060820152610120880135608082015261014088013560a08201526101608801356144fb81614409565b8060c083015250809150509295509295509295565b5f805f805f80868803610180811215614527575f80fd5b87359650602088013561453981613f58565b9550604088013561454981613f58565b9450606088013561455981614153565b9350608088013561456981614215565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561459a575f80fd5b506145a3614372565b60a08801356145b181614215565b815260c08801356145c181614409565b602082015260e088013560408201526101008801356060820152610120880135608082015261014088013560a08201526101609097013560c08801525093969295509093909291565b5f805f805f805f60c0888a031215614620575f80fd5b8735965061463060208901614131565b9550604088013561464081613f58565b9450606088013561465081613f58565b9350608088013567ffffffffffffffff81111561466b575f80fd5b6146778a828b01613f7c565b90945092505060a088013567ffffffffffffffff811115614696575f80fd5b6146a28a828b01613fc1565b91505092959891949750929550565b5f805f805f608086880312156146c5575f80fd5b8535945060208601356146d781613f58565b935061427360408701614131565b600b8110613f79575f80fd5b8035614090816146e5565b5f805f805f8060a08789031215614711575f80fd5b863595506020870135614723816146e5565b94506040870135935060608701359250608087013567ffffffffffffffff81111561474c575f80fd5b61475889828a01613f7c565b979a9699509497509295939492505050565b64ffffffffff81168114613f79575f80fd5b80356140908161476a565b8060020b8114613f79575f80fd5b803561409081614787565b5f805f808486036101c08112156147b5575f80fd5b853594506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156147e9575f80fd5b506147f26143c0565b6147fe602087016146f1565b815261480c6040870161477c565b602082015261481d60608701614085565b604082015261482e60808701614085565b606082015261483f60a08701614168565b608082015261485060c08701614795565b60a082015261486160e08701614232565b60c08201526148736101008701614232565b60e082015261012086810135610100830152610140808801359183019190915261016080880135918301919091526101808701359082015292506101a085013567ffffffffffffffff8111156140d5575f80fd5b5f805f805f805f8060e0898b0312156148de575f80fd5b8835975060208901356148f081614215565b9650604089013561490081613f58565b9550606089013561491081613f58565b945061491e60808a016142ab565b935060a089013567ffffffffffffffff811115614939575f80fd5b6149458b828c01613f7c565b90945092505060c089013567ffffffffffffffff811115614964575f80fd5b6149708b828c01613fc1565b9150509295985092959890939650565b5f60208284031215614990575f80fd5b5035919050565b5f80604083850312156149a8575f80fd5b8235915060208301356149ba81613f58565b809150509250929050565b5f80604083850312156149d6575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115613b5a57613b5a6149e5565b80820180821115613b5a57613b5a6149e5565b8051614090816146e5565b80516140908161476a565b805161409081613f58565b805161409081614153565b805161409081614787565b805161409081614215565b5f6101808284031215614a8b575f80fd5b614a936143c0565b9050614a9e82614a38565b8152614aac60208301614a43565b6020820152614abd60408301614a4e565b6040820152614ace60608301614a4e565b6060820152614adf60808301614a59565b6080820152614af060a08301614a64565b60a0820152614b0160c08301614a6f565b60c0820152614b1260e08301614a6f565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101609182015191810191909152919050565b5f806101a08385031215614b5d575f80fd5b614b678484614a7a565b91506101808301516149ba81614215565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614bd8575f80fd5b83018035915067ffffffffffffffff821115614bf2575f80fd5b6020019150600581901b3603821315613fba575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215614c46575f80fd5b8135613e0481614215565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614c84575f80fd5b83018035915067ffffffffffffffff821115614c9e575f80fd5b602001915036819003821315613fba575f80fd5b600b8110614ce7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b614cf6828251614cb2565b6020810151614d0e602084018264ffffffffff169052565b506040810151614d36604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060810151614d5e606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080810151614d7a608084018267ffffffffffffffff169052565b5060a0810151614d8f60a084018260020b9052565b5060c0810151614db360c08401826fffffffffffffffffffffffffffffffff169052565b5060e0810151614dd760e08401826fffffffffffffffffffffffffffffffff169052565b506101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b848152614e636020820185614ceb565b6101c06101a08201525f614e7c6101c083018486614e0c565b9695505050505050565b5f8060408385031215614e97575f80fd5b8251614ea281614409565b60208401519092506149ba81614409565b5f60208284031215614ec3575f80fd5b8151613e0481614409565b8181035f831280158383131683831282161715612085576120856149e5565b5f60208284031215614efd575f80fd5b5051919050565b88815287602082015286604082015261ffff861660608201528415156080820152614f3260a0820185614cb2565b60e060c08201525f614f4860e083018486614e0c565b9a9950505050505050505050565b5f8060408385031215614f67575f80fd5b825160208401519092506149ba81614409565b8082028115828204841417613b5a57613b5a6149e5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82614ff1577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018281125f831280158216821582161715615015576150156149e5565b505092915050565b805162ffffff81168114614090575f80fd5b5f6020828403121561503f575f80fd5b613e048261501d565b5f60208284031215615058575f80fd5b8151613e0481614215565b5f61018082019050615076828451614cb2565b602083015161508e602084018264ffffffffff169052565b5060408301516150b6604084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608301516150de606084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060808301516150fa608084018267ffffffffffffffff169052565b5060a083015161511160a084018262ffffff169052565b5060c083015161513560c08401826fffffffffffffffffffffffffffffffff169052565b5060e083015161515960e08401826fffffffffffffffffffffffffffffffff169052565b5061010083015161010083015261012083015161012083015261014083015161014083015261016083015161016083015292915050565b5f61018082840312156151a1575f80fd5b613e048383614a7a565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526101c08101612dd76040830184614ceb565b6101808101613b5a8284614ceb565b604081525f6151fe604083018587614e0c565b9050612dd76020830184614cb2565b8581526fffffffffffffffffffffffffffffffff851660208201526152356040820185614cb2565b608060608201525f613f4d608083018486614e0c565b5f606082840312801561525c575f80fd5b506040516060810167ffffffffffffffff811182821017156152a5577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60409081528351825260208085015190830152928301519281019290925250919050565b5f6101808284031280156152db575f80fd5b506152e46143c0565b6152ed83614a38565b81526152fb60208401614a43565b602082015261530c60408401614a4e565b604082015261531d60608401614a4e565b606082015261532e60808401614a59565b608082015261533f60a0840161501d565b60a082015261535060c08401614a6f565b60c082015261536160e08401614a6f565b60e082015261010083810151908201526101208084015190820152610140808401519082015261016092830151928101929092525091905056fea26469706673582212205f8be0f92b25fb954e7ba85622b32ae4ce5e023fdde0d376f1870aaf4ca78f2964736f6c634300081a0033", - "nonce": "0x35", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xeac244d27b4e3aa145092eee80bc11afb683272bef35af5f37ea71903bcfedb7", - "transactionType": "CREATE", - "contractName": "UsdnProtocolCoreLibrary", - "contractAddress": "0xd07025f97504ea8dda1e8c40b04bbc11c3a96022", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x4deb93", - "input": "0x614660610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610226575f3560e01c80636ef704f61161012e578063a7aed4d4116100c3578063de58708b11610093578063e207b95111610079578063e207b951146105f2578063f36bd1dc1461022a578063f958994914610611575f80fd5b8063de58708b146105c0578063e08b5893146105df575f80fd5b8063a7aed4d41461055f578063b1457adb14610572578063bd9d3b8e14610591578063ca5d3adc1461059f575f80fd5b806382e6e0e9116100fe57806382e6e0e9146104e45780638c43fdfa146104ff57806399db8c361461051e578063a064a6b61461054c575f80fd5b80636ef704f61461046157806373eaec2c146104935780637ca1c4b6146104b25780637d9aae1c146104d1575f80fd5b806349c6d9a5116101be57806354b800271161018e578063690b11eb11610174578063690b11eb1461040e5780636c455f0f146104215780636ca2f63414610440575f80fd5b806354b80027146103955780635d9d655e146103a8575f80fd5b806349c6d9a51461031a5780634df01a171461034257806350b22dfc1461036357806351c64d3314610382575f80fd5b80632287b7ba116101f95780632287b7ba146102e157806328d43f5e1461022a578063313eb2b8146102f457806345e8b1dd14610307575f80fd5b80630226abe31461022a5780630a376f6b1461022a5780631a71442c146102ad5780631c32ffc3146102ce575b5f80fd5b610297610238366004613460565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160015290565b6040516102a49190613602565b60405180910390f35b6102c06102bb366004613611565b610634565b6040519081526020016102a4565b6102c06102dc36600461363f565b61064d565b6102c06102ef366004613662565b610679565b6102c06103023660046136a9565b610709565b6102c06103153660046136d3565b610741565b61032d610328366004613712565b6107ee565b604080519283526020830191909152016102a4565b81801561034d575f80fd5b5061036161035c366004613732565b61095e565b005b81801561036e575f80fd5b5061036161037d36600461375d565b61099b565b6102c0610390366004613791565b610a1e565b61032d6103a33660046137d6565b610ac9565b8180156103b3575f80fd5b506103c76103c23660046136d3565b610b0b565b6040516102a4919081511515815260208083015190820152604080830151908201526060918201516fffffffffffffffffffffffffffffffff169181019190915260800190565b61029761041c36600461380b565b610d2b565b81801561042c575f80fd5b5061036161043b36600461375d565b610d9d565b61045361044e36600461380b565b610e18565b6040516102a492919061382e565b6102c061046f36600461386f565b60181b72ffffffffffffffffffffffffffffffff0000001662ffffff919091161790565b81801561049e575f80fd5b506103616104ad366004613899565b610f6a565b8180156104bd575f80fd5b506102c06104cc36600461380b565b6116ab565b6104536104df36600461380b565b6118e1565b6104f2610238366004613460565b6040516102a49190613947565b81801561050a575f80fd5b50610361610519366004613a74565b61199b565b61053161052c3660046137d6565b611a59565b604080519384526020840192909252908201526060016102a4565b61032d61055a366004613611565b611b1a565b6102c061056d366004613a98565b611b42565b81801561057d575f80fd5b5061045361058c366004613ac4565b611b83565b610297610238366004613adb565b6105b26105ad36600461380b565b611e1f565b6040516102a4929190613bad565b8180156105cb575f80fd5b5061032d6105da366004613712565b612166565b6105316105ed36600461363f565b6121d4565b8180156105fd575f80fd5b5061036161060c366004613c58565b6121f4565b81801561061c575f80fd5b506102c061062b366004613c9d565b612c99565b5090565b81545f9061064690839060020b611b42565b9392505050565b6023820154602283015460198401545f9261064692909185906fffffffffffffffffffffffffffffffff165b5f8484106106915761068a84612dec565b9050610701565b5f6106b16fffffffffffffffffffffffffffffffff848116908616613d07565b90508486035f6106e66fffffffffffffffffffffffffffffffff87166106e0856106da86612dec565b90612e4a565b90612f05565b90506106fb816106f589612dec565b90612fe8565b93505050505b949350505050565b60405160e883901b6020820152602381018290525f906043016040516020818303038152906040528051906020012090505b92915050565b6040517f24a32ab8000000000000000000000000000000000000000000000000000000008152600481018490526fffffffffffffffffffffffffffffffff8084166024830152821660448201525f907310abe072ace566266e7e329ea040e35a3107377b906324a32ab890606401602060405180830381865af41580156107ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190613d2d565b5f806108136108008560220154612dec565b61080d8660230154612dec565b9061308a565b90505f61082385601e0154612dec565b90505f6108308284613d07565b9050805f03610843578493505050610957565b5f831361088d578461085760036012613d44565b61086290600a613ec1565b87600c01546108719190613ecf565b61087a90613ee6565b6108849190613f1c565b93505050610957565b815f036108bb57846108a160036012613d44565b6108ac90600a613ec1565b87600c015461087a9190613ecf565b5f6108c68280613f3b565b90505f84841315610928576108db8480613f3b565b90508661090e836108ee60036012613d44565b6108f990600a613ec1565b8b600c01546109089190613ecf565b8461312c565b61091790613ee6565b6109219190613f1c565b9550610952565b6109328580613f3b565b905086610945836108ee60036012613d44565b61094f9190613f1c565b95505b505050505b9250929050565b61098e828285600b0160079054906101000a90046fffffffffffffffffffffffffffffffff168660210154610a1e565b8360210181905550505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152601b84016020526040812054908190036109fc576040517f4d93e1e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a08600183613f86565b9050610a1785828560016121f4565b5050505050565b5f826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610610a51575083610701565b6fffffffffffffffffffffffffffffffff8316610a86610a718686613f99565b6fffffffffffffffffffffffffffffffff1690565b610a909084613f3b565b610aac6fffffffffffffffffffffffffffffffff871688613f3b565b610ab69190613f1c565b610ac09190613fee565b95945050505050565b5f805f80610ad8878787611a59565b90945092509050610aeb6012600a6141ca565b610af58284612e4a565b610aff9190613fee565b93505050935093915050565b604080516080810182525f80825260208201819052918101829052606081019190915260198401545f906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481169084168110610be7576040518060800160405280826fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff161415158152602001610bac8860220154612dec565b8152602001610bbe88601e0154612dec565b815260198801546fffffffffffffffffffffffffffffffff166020909101529250610646915050565b5f610bf787868960210154610ac9565b60188901819055604080518281526fffffffffffffffffffffffffffffffff891660208201529295509092507f6e5966d6b2fdb79d9a7c2af6831d838e5b69c7cbc25e37856cf3385b6b575f4f910160405180910390a1610c5d878261035c8589613f99565b50505f80610c6b8784612166565b915091505f610c7d8860220154612dec565b9050610c9a8361080d610c938b601e0154612dec565b8490612fe8565b90505f841315610cbc57610cb28461080d8a8a61064d565b6020860152610cd0565b610cca8261080d8a8a61064d565b60208601525b6020850151610ce090829061308a565b60408601525050506fffffffffffffffffffffffffffffffff808516606084018190529084167001000000000000000000000000000000000217601986015550600181529392505050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152610d958383610e18565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152601b8401602052604081205490819003610dfe576040517f4d93e1e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e0a600183613f86565b9050610a178582855f6121f4565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915273ffffffffffffffffffffffffffffffffffffffff82165f908152601b84016020526040812054808203610eac5750610957565b610eb7600182613f86565b6040517f9f4f48ea000000000000000000000000000000000000000000000000000000008152601c870160048201526fffffffffffffffffffffffffffffffff821660248201529092507327c897780f217d992af116a898acee8457d4493a90639f4f48ea9060440161018060405180830381865af4158015610f3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6091906142eb565b9250509250929050565b670de0b6b3a7640000856fffffffffffffffffffffffffffffffff161015610fcd576040517f784d9a62000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201526024015b60405180910390fd5b670de0b6b3a7640000846fffffffffffffffffffffffffffffffff16101561102b576040517f784d9a62000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006004820152602401610fc4565b6001860154604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169182916318160ddd9160048083019260209291908290030181865afa15801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190613d2d565b1561110f576040517ff701733000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610fc4565b6040517f5cb180830000000000000000000000000000000000000000000000000000000081525f90739e87120d47bd6beeee46cb90e187d09b5b5a20b590635cb180839061116a908b9060019042908a908a90600401614306565b606060405180830381865af4158015611185573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a99190614374565b6019890180546fffffffffffffffffffffffffffffffff42811670010000000000000000000000000000000002911617905580519091506111e9906131d9565b6019890180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9283161790556040517f06d647ec000000000000000000000000000000000000000000000000000000008152600481018a905290861660248201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d01906306d647ec90604401602060405180830381865af4158015611299573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bd91906143f2565b6040517fb99fa9fd000000000000000000000000000000000000000000000000000000008152600481018b9052600282900b60248201529091505f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063b99fa9fd90604401602060405180830381865af4158015611333573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611357919061440d565b90505f73ea6c2644d67546b2dad7645372e2355b18ac8d01638688c4538a611381875f01516131d9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526fffffffffffffffffffffffffffffffff928316600482015290821660248201529085166044820152606401602060405180830381865af41580156113f4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611418919061440d565b6040517f580b9b8b000000000000000000000000000000000000000000000000000000008152600481018d90526fffffffffffffffffffffffffffffffff8083166024830152808c1660448301528c1660648201529091507310abe072ace566266e7e329ea040e35a3107377b9063580b9b8b906084015f6040518083038186803b1580156114a5575f80fd5b505af41580156114b7573d5f803e3d5ffd5b505050507310abe072ace566266e7e329ea040e35a3107377b63b039399c8c8c6114e3885f01516131d9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526fffffffffffffffffffffffffffffffff91821660248401521660448201526064015f6040518083038186803b15801561154f575f80fd5b505af4158015611561573d5f803e3d5ffd5b505050507310abe072ace566266e7e329ea040e35a3107377b63c4946b298c8b61158d885f01516131d9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526fffffffffffffffffffffffffffffffff918216602484015281166044830152600287900b60648301528416608482015260a4015f6040518083038186803b15801561160b575f80fd5b505af415801561161d573d5f803e3d5ffd5b50506040517fe6318ea7000000000000000000000000000000000000000000000000000000008152476004820152336024820152739e87120d47bd6beeee46cb90e187d09b5b5a20b5925063e6318ea791506044015f6040518083038186803b158015611688575f80fd5b505af415801561169a573d5f803e3d5ffd5b505050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152601b8301602052604081205481036116df57505f61073b565b5f806116eb8585610e18565b909250905060078251600a8111156117055761170561347b565b036118d9575f61176e8360408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160015290565b60a081015160020b5f9081526026880160205260409020546101008201519192509081146118d65760808201516040517f1fcccd42000000000000000000000000000000000000000000000000000000008152601c890160048201526fffffffffffffffffffffffffffffffff8516602482015267ffffffffffffffff90911695507327c897780f217d992af116a898acee8457d4493a90631fcccd42906044015f6040518083038186803b158015611825575f80fd5b505af4158015611837573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff86165f818152601b8901602090815260408083209290925581516060808201845260a087015160020b808352610100880151838501908152610120890151938601938452855191825251938101939093529051928201929092527fa0a2f491d51aea2fa8d669b6b4db8184e5b75691d4db132c93d892cf316d1b80910160405180910390a25b50505b505092915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061194b8484610e18565b90925090505f8251600a8111156119645761196461347b565b03610957576040517f4d93e1e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fcccd42000000000000000000000000000000000000000000000000000000008152601c840160048201526fffffffffffffffffffffffffffffffff821660248201527327c897780f217d992af116a898acee8457d4493a90631fcccd42906044015f6040518083038186803b158015611a17575f80fd5b505af4158015611a29573d5f803e3d5ffd5b50505073ffffffffffffffffffffffffffffffffffffffff9092165f908152601b90930160205250506040812055565b5f805f611a6686856107ee565b601988015491935091506fffffffffffffffffffffffffffffffff7001000000000000000000000000000000009091048116908616811115611ad4576040517fda6c0dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8086036fffffffffffffffffffffffffffffffff165f819003611afb575f94505050611b11565b611b0c620151806106e08684612e4a565b945050505b93509350939050565b600281900b5f908152602683016020526040812054611b398382610709565b91509250929050565b5f8160020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b660020b8460020b611b799190613d07565b6106469190613fee565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526040517fb5d02b42000000000000000000000000000000000000000000000000000000008152601c830160048201525f9081907327c897780f217d992af116a898acee8457d4493a9063b5d02b4290602401602060405180830381865af4158015611c50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c749190613d2d565b9050805f03611c835750915091565b601480821015611c905750805b5f5b6040517f1b6be324000000000000000000000000000000000000000000000000000000008152601c870160048201525f9081907327c897780f217d992af116a898acee8457d4493a90631b6be324906024016101a060405180830381865af4158015611d00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d249190614428565b6020820151600190950194919350915064ffffffffff165f03611dd7576040517f1c376cc2000000000000000000000000000000000000000000000000000000008152601c890160048201527327c897780f217d992af116a898acee8457d4493a90631c376cc29060240161018060405180830381865af4158015611dab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcf91906142eb565b505050611e10565b428860090154836020015164ffffffffff16611df39190614455565b1015611e06579097909650945050505050565b5050505050915091565b818110611c9257505050915091565b6040517fb5d02b42000000000000000000000000000000000000000000000000000000008152601c8301600482015260609081905f907327c897780f217d992af116a898acee8457d4493a9063b5d02b4290602401602060405180830381865af4158015611e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb39190613d2d565b9050805f03611ec25750610957565b6040805160148082526102a0820190925290816020015b60408051610180810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611ed95750506040805160148082526102a082019092529194506020820161028080368337019050509150601480821015611f985750805b5f805b6040517fe2dfa3b0000000000000000000000000000000000000000000000000000000008152601c89016004820152602481018390525f9081907327c897780f217d992af116a898acee8457d4493a9063e2dfa3b0906044016101a060405180830381865af4158015612010573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120349190614428565b91509150816020015164ffffffffff165f148061208057508873ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff16145b156120c4578087858151811061209857612098614468565b6fffffffffffffffffffffffffffffffff9092166020928302919091019091015260019093019261214d565b428a60090154836020015164ffffffffff166120e09190614455565b101561214657818885815181106120f9576120f9614468565b60200260200101819052508087858151811061211757612117614468565b6fffffffffffffffffffffffffffffffff9092166020928302919091019091015260019093019283925061214d565b5050612157565b5050828210611f9b575b80865284525050509250929050565b600b8201545f90819062010000900461ffff166127106121868286613f3b565b6121909190613fee565b925061219c8385613d07565b91505f8312156121b2576121af83613ee6565b92505b8285601a015f8282546121c59190614455565b92505081905550509250929050565b5f805f6121e685858760210154611a59565b919790965090945092505050565b6040517f9f4f48ea000000000000000000000000000000000000000000000000000000008152601c850160048201526fffffffffffffffffffffffffffffffff841660248201525f907327c897780f217d992af116a898acee8457d4493a90639f4f48ea9060440161018060405180830381865af4158015612278573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229c91906142eb565b90508460090154816020015164ffffffffff166122b99190614455565b6122c590610e10614455565b4210156122fe576040517f322694f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015173ffffffffffffffffffffffffffffffffffffffff165f908152601b8601602052604080822091909155517f1fcccd42000000000000000000000000000000000000000000000000000000008152601c860160048201526fffffffffffffffffffffffffffffffff851660248201527327c897780f217d992af116a898acee8457d4493a90631fcccd42906044015f6040518083038186803b1580156123a7575f80fd5b505af41580156123b9573d5f803e3d5ffd5b50600392506123c6915050565b8151600a8111156123d9576123d961347b565b1480156123e35750815b156124cb575f61244c8260408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160015290565b905061246b8160c001516fffffffffffffffffffffffffffffffff1690565b86601f015f82825461247d9190613d07565b909155505060c081015186546124c591630100000090910473ffffffffffffffffffffffffffffffffffffffff169086906fffffffffffffffffffffffffffffffff1661322e565b50612be7565b60058151600a8111156124e0576124e061347b565b1480156124ea5750815b15612661575f6125538260408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160015290565b60a081015160c08201519192505f9160181b72ffffffffffffffffffffffffffffffff0000001662ffffff9091161790505f61259a8284610120015185610160015161312c565b90506125a581612dec565b88601f015f8282546125b79190613f1c565b909155505060018801546040517f8fcb4e5b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526024820185905290911690638fcb4e5b906044016020604051808303815f875af1158015612634573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126589190614495565b50505050612be7565b60078151600a8111156126765761267661347b565b03612b3e575f6126df8260408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160015290565b90505f806126f1888460a00151611b1a565b915091508261010001518103612b36575f82815260278901602052604081206101208501518154919291839190811061272c5761272c614468565b5f91825260208083206040805160a0810182526002909402909101805460ff81161515855264ffffffffff6101008204168585015273ffffffffffffffffffffffffffffffffffffffff66010000000000009091041684830152600101546fffffffffffffffffffffffffffffffff808216606086015270010000000000000000000000000000000090910416608084015287845260278e019091529091206101208701518154929350909181106127e6576127e6614468565b5f9182526020822060029091020180547fffffffffffff0000000000000000000000000000000000000000000000000000168155600101558615612b33575f84815260288b0160205260408120602a8c01805491929091612846906144b0565b90915550600181810180545f9061287f9084907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166144e4565b82546101009290920a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181021990931691831602179091556001830154165f0390506128ff576128ff6128d68c8860a00151610634565b600881901c5f908152602b8e01602052604090208054600160ff9093169290921b199091169055565b8a5460018201545f91739cb4861470341446619af06886e688c5785e5c8391639ca2f8c69161295a9160029190910b907f0100000000000000000000000000000000000000000000000000000000000000900460ff1661451b565b8960a00151612969919061453a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260029190910b6004820152602401602060405180830381865af41580156129be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e29190613d2d565b905082606001516fffffffffffffffffffffffffffffffff168c6023015f828254612a0d9190613f86565b9250508190555082606001516fffffffffffffffffffffffffffffffff16825f015f828254612a3c9190613f86565b90915550506040805180820190915260248d0154815260258d015460208201526060840151734c5ab10d25e152e039983380faa4011da0bce1739163b0cccdb591612ac590612a9d906fffffffffffffffffffffffffffffffff1686613ecf565b6040805180820182525f80825260209182018190528251808401909352825281019190915290565b6040518363ffffffff1660e01b8152600401612ae292919061457b565b6040805180830381865af4158015612afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2091906145a1565b805160248e01556020015160258d015550505b50505b505050612be7565b60098151600a811115612b5357612b5361347b565b148015612b5d5750815b15612be7575f612bc68260408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160015290565b905080610160015186601e015f828254612be09190614455565b9091555050505b8115610a17575f8373ffffffffffffffffffffffffffffffffffffffff16826080015167ffffffffffffffff166040515f6040518083038185875af1925050503d805f8114612c51576040519150601f19603f3d011682016040523d82523d5f602084013e612c56565b606091505b5050905080612c91576040517ff9838a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b5f612ca484846116ab565b73ffffffffffffffffffffffffffffffffffffffff84165f908152601b8601602052604090205490915015612d05576040517f2af93dd500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f76c23e390000000000000000000000000000000000000000000000000000000081525f907327c897780f217d992af116a898acee8457d4493a906376c23e3990612d5c90601c8901908790600401614615565b602060405180830381865af4158015612d77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d9b919061440d565b9050612dba6fffffffffffffffffffffffffffffffff82166001614455565b73ffffffffffffffffffffffffffffffffffffffff9094165f908152601b909501602052506040909320919091555090565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610630576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401610fc4565b5f825f03612e5957505f61073b565b5081810281838281612e6d57612e6d613fc1565b05141580612ec457507f800000000000000000000000000000000000000000000000000000000000000082148015612ec45750827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b1561073b576040517f23f447a70000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610fc4565b5f815f03612f42576040517ff0ae00e000000000000000000000000000000000000000000000000000000000815260048101849052602401610fc4565b7f800000000000000000000000000000000000000000000000000000000000000083148015612f905750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15612fd1576040517fc1fe304d0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610fc4565b818381612fe057612fe0613fc1565b059392505050565b8181015f8312801590612ffa57508181125b1561303b576040517fcae3b63a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610fc4565b5f8312801561304957508181135b1561073b576040517fcae3b63a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610fc4565b8082035f821280159061309c57508281135b156130dd576040517f82e2e6380000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610fc4565b5f821280156130eb57508281125b1561073b576040517f82e2e6380000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610fc4565b828202818385830414851517026131d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8385098181108201900382848609835f0384168285116131855763ae47f7025f526004601cfd5b93849004938382119092035f839003839004600101029203041760026003830281188084028203028084028203028084028203028084028203028084028203028084029091030202610646565b0492915050565b5f6fffffffffffffffffffffffffffffffff821115610630576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526080600482015260248101839052604401610fc4565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661326e576390b8ec185f526004601cfd5b5f603452505050565b604051610180810167ffffffffffffffff811182821017156132c0577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b600b81106132d2575f80fd5b50565b80356132e0816132c6565b919050565b64ffffffffff811681146132d2575f80fd5b80356132e0816132e5565b73ffffffffffffffffffffffffffffffffffffffff811681146132d2575f80fd5b80356132e081613302565b67ffffffffffffffff811681146132d2575f80fd5b80356132e08161332e565b8060020b81146132d2575f80fd5b80356132e08161334e565b6fffffffffffffffffffffffffffffffff811681146132d2575f80fd5b80356132e081613367565b5f61018082840312156133a0575f80fd5b6133a8613277565b90506133b3826132d5565b81526133c1602083016132f7565b60208201526133d260408301613323565b60408201526133e360608301613323565b60608201526133f460808301613343565b608082015261340560a0830161335c565b60a082015261341660c08301613384565b60c082015261342760e08301613384565b60e08201526101008281013590820152610120808301359082015261014080830135908201526101609182013591810191909152919050565b5f6101808284031215613471575f80fd5b610646838361338f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600b81106134dd577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6134ec8282516134a8565b6020810151613504602084018264ffffffffff169052565b50604081015161352c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060810151613554606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080810151613570608084018267ffffffffffffffff169052565b5060a081015161358560a084018260020b9052565b5060c08101516135a960c08401826fffffffffffffffffffffffffffffffff169052565b5060e08101516135cd60e08401826fffffffffffffffffffffffffffffffff169052565b506101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b610180810161073b82846134e1565b5f8060408385031215613622575f80fd5b8235915060208301356136348161334e565b809150509250929050565b5f8060408385031215613650575f80fd5b82359150602083013561363481613367565b5f805f8060808587031215613675575f80fd5b8435935060208501359250604085013561368e81613367565b9150606085013561369e81613367565b939692955090935050565b5f80604083850312156136ba575f80fd5b82356136c58161334e565b946020939093013593505050565b5f805f606084860312156136e5575f80fd5b8335925060208401356136f781613367565b9150604084013561370781613367565b809150509250925092565b5f8060408385031215613723575f80fd5b50508035926020909101359150565b5f805f60608486031215613744575f80fd5b8335925060208401359150604084013561370781613367565b5f805f6060848603121561376f575f80fd5b83359250602084013561378181613302565b9150604084013561370781613302565b5f805f80608085870312156137a4575f80fd5b8435935060208501356137b681613367565b925060408501356137c681613367565b9396929550929360600135925050565b5f805f606084860312156137e8575f80fd5b8335925060208401356137fa81613367565b929592945050506040919091013590565b5f806040838503121561381c575f80fd5b82359150602083013561363481613302565b6101a0810161383d82856134e1565b6fffffffffffffffffffffffffffffffff83166101808301529392505050565b803562ffffff811681146132e0575f80fd5b5f8060408385031215613880575f80fd5b6138898361385d565b9150602083013561363481613367565b5f805f805f8060a087890312156138ae575f80fd5b8635955060208701356138c081613367565b945060408701356138d081613367565b935060608701356138e081613367565b9250608087013567ffffffffffffffff8111156138fb575f80fd5b8701601f8101891361390b575f80fd5b803567ffffffffffffffff811115613921575f80fd5b896020828401011115613932575f80fd5b60208201935080925050509295509295509295565b5f6101808201905061395a8284516134a8565b6020830151613972602084018264ffffffffff169052565b50604083015161399a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608301516139c2606084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060808301516139de608084018267ffffffffffffffff169052565b5060a08301516139f560a084018262ffffff169052565b5060c0830151613a1960c08401826fffffffffffffffffffffffffffffffff169052565b5060e0830151613a3d60e08401826fffffffffffffffffffffffffffffffff169052565b5061010083015161010083015261012083015161012083015261014083015161014083015261016083015161016083015292915050565b5f805f60608486031215613a86575f80fd5b8335925060208401356136f781613302565b5f8060408385031215613aa9575f80fd5b8235613ab48161334e565b915060208301356136348161334e565b5f60208284031215613ad4575f80fd5b5035919050565b5f610180828403128015613aed575f80fd5b50613af6613277565b613aff836132d5565b8152613b0d602084016132f7565b6020820152613b1e60408401613323565b6040820152613b2f60608401613323565b6060820152613b4060808401613343565b6080820152613b5160a0840161385d565b60a0820152613b6260c08401613384565b60c0820152613b7360e08401613384565b60e0820152610100838101359082015261012080840135908201526101408084013590820152610160928301359281019290925250919050565b604080825283519082018190525f9060208501906060840190835b81811015613bf257613bdb8385516134e1565b602093909301926101809290920191600101613bc8565b5050838103602080860191909152855180835291810192508501905f5b81811015613c3f5782516fffffffffffffffffffffffffffffffff16845260209384019390920191600101613c0f565b50919695505050505050565b80151581146132d2575f80fd5b5f805f8060808587031215613c6b575f80fd5b843593506020850135613c7d81613367565b92506040850135613c8d81613302565b9150606085013561369e81613c4b565b5f805f6101c08486031215613cb0575f80fd5b833592506020840135613cc281613302565b9150613cd1856040860161338f565b90509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181035f831280158383131683831282161715613d2657613d26613cda565b5092915050565b5f60208284031215613d3d575f80fd5b5051919050565b60ff828116828216039081111561073b5761073b613cda565b6001815b6001841115613d9857808504811115613d7c57613d7c613cda565b6001841615613d8a57908102905b60019390931c928002613d61565b935093915050565b80825b6001851115613dda57808604811115613dbe57613dbe613cda565b6001851615613dcc57908102905b60019490941c938002613da3565b94509492505050565b5f82613df15750600161073b565b81613dfd57505f61073b565b8160018114613e135760028114613e1d57613e39565b600191505061073b565b60ff841115613e2e57613e2e613cda565b50506001821b61073b565b5060208310610133831016604e8410600b8410161715613e5c575081810a61073b565b613e877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d5d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613eb957613eb9613cda565b029392505050565b5f61064660ff841683613de3565b808202811582820484141761073b5761073b613cda565b5f7f80000000000000000000000000000000000000000000000000000000000000008203613f1657613f16613cda565b505f0390565b8082018281125f8312801582168215821617156118d9576118d9613cda565b8082025f82127f800000000000000000000000000000000000000000000000000000000000000084141615613f7257613f72613cda565b818105831482151761073b5761073b613cda565b8181038181111561073b5761073b613cda565b6fffffffffffffffffffffffffffffffff828116828216039081111561073b5761073b613cda565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82614021577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561407557614075613cda565b500590565b5f828015613e135760018103614093578291505061073b565b50816140a057505f61073b565b5060015f82138082146140b85780156140ef57614121565b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311156140ea576140ea613cda565b614121565b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0583121561412157614121613cda565b508083161561412d5750805b61415e7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460011c84850284613da0565b807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482115f8313161561419457614194613cda565b807f80000000000000000000000000000000000000000000000000000000000000000582125f83121615613eb957613eb9613cda565b5f61064660ff84168361407a565b80516132e0816132c6565b80516132e0816132e5565b80516132e081613302565b80516132e08161332e565b80516132e08161334e565b80516132e081613367565b5f610180828403121561422b575f80fd5b614233613277565b905061423e826141d8565b815261424c602083016141e3565b602082015261425d604083016141ee565b604082015261426e606083016141ee565b606082015261427f608083016141f9565b608082015261429060a08301614204565b60a08201526142a160c0830161420f565b60c08201526142b260e0830161420f565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101609182015191810191909152919050565b5f61018082840312156142fc575f80fd5b610646838361421a565b85815261431660208201866134a8565b8360408201525f606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b5f6060828403128015614385575f80fd5b506040516060810167ffffffffffffffff811182821017156143ce577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60409081528351825260208085015190830152928301519281019290925250919050565b5f60208284031215614402575f80fd5b81516106468161334e565b5f6020828403121561441d575f80fd5b815161064681613367565b5f806101a0838503121561443a575f80fd5b614444848461421a565b915061018083015161363481613367565b8082018082111561073b5761073b613cda565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156144a5575f80fd5b815161064681613c4b565b5f816144be576144be613cda565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828116828216039081111561073b5761073b613cda565b5f8260020b8260020b028060020b9150808214613d2657613d26613cda565b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171561073b5761073b613cda565b825181526020808401518183015282516040830152820151606082015260808101610646565b5f60408284031280156145b2575f80fd5b506040805190810167ffffffffffffffff811182821017156145fb577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b8281526101a0810161064660208301846134e156fea264697066735822122068d7e085fb0f9107f60a6f256e7afc7d568fec7ac3db98871430ced96332aeaa64736f6c634300081a0033", - "nonce": "0x36", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x04fe99b6e0a9f72471690ba7446bd57647d1f13ec06b98c4f63c87061f08b707", - "transactionType": "CREATE", - "contractName": "UsdnProtocolLongLibrary", - "contractAddress": "0xea6c2644d67546b2dad7645372e2355b18ac8d01", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x65da2f", - "input": "0x615c33610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106102cd575f3560e01c80639945bf4311610187578063bd2c68b3116100e8578063d2647be21161009e578063e86c365211610079578063e86c3652146106e9578063f3ce7154146106fc578063fd3f25141461070f575f80fd5b8063d2647be2146106b0578063e289dab9146106c3578063e86335e4146106d6575f80fd5b8063cb1efff6116100ce578063cb1efff61461065e578063ce3f293b14610671578063cec418cf14610684575f80fd5b8063bd2c68b314610638578063bf8fd0471461064b575f80fd5b8063aeec549d1161013d578063b60ac85411610123578063b60ac854146105ff578063b6f244b514610612578063b99fa9fd14610625575f80fd5b8063aeec549d146105c4578063b5187b5d146105d7575f80fd5b80639fcd1a771161016d5780639fcd1a7714610558578063a48037f214610579578063ab9f0c0f14610598575f80fd5b80639945bf43146105325780639b348b4314610545575f80fd5b806338285f8911610231578063822dc2c0116101e75780638688c453116101cd5780638688c453146104f957806389fa87581461050c57806390d63cdb1461051f575f80fd5b8063822dc2c0146104c757806385aeba29146104e6575f80fd5b8063572ae26811610217578063572ae2681461041f578063612e75eb146104325780637639323c14610457575f80fd5b806338285f89146103f95780633f8143161461040c575f80fd5b8063229a493c11610286578063282171dd1161026c578063282171dd146103b257806329f0f6a3146103d35780632e110ac9146103e6575f80fd5b8063229a493c1461036b57806325d030b61461037e575f80fd5b806312929a69116102b657806312929a691461031157806315df3f281461034557806316b44d9114610358575f80fd5b806306d647ec146102d15780630b5ecf98146102fc575b5f80fd5b6102e46102df366004614498565b61072e565b60405160029190910b81526020015b60405180910390f35b61030f61030a3660046144c6565b610790565b005b61032461031f366004614628565b610839565b6040516fffffffffffffffffffffffffffffffff90911681526020016102f3565b61032461035336600461466e565b6108de565b6102e46103663660046146ac565b61095c565b61030f6103793660046146cf565b610a31565b818015610389575f80fd5b5061039d61039836600461477c565b610af1565b604080519283529015156020830152016102f3565b6103c56103c036600461481f565b610e1d565b6040519081526020016102f3565b6103c56103e13660046144c6565b610ebc565b6103246103f43660046148fc565b610f22565b6102e461040736600461499c565b610f79565b6103c561041a3660046148fc565b6111cd565b6102e461042d3660046149f5565b611298565b610445610440366004614a0c565b611332565b60405160ff90911681526020016102f3565b818015610462575f80fd5b50610476610471366004614a2c565b6113b5565b6040516102f391905f60c0820190508251825261ffff602084015116602083015260408301516040830152606083015160608301526080830151608083015260a0830151151560a083015292915050565b8180156104d2575f80fd5b506103c56104e1366004614ab2565b611a13565b6102e46104f4366004614af6565b611e5d565b610324610507366004614b50565b6120b2565b6103c561051a366004614b7d565b61216a565b61032461052d366004614bf4565b61220c565b61030f6105403660046146cf565b612376565b6102e4610553366004614a0c565b6123ff565b61056b610566366004614c26565b612411565b6040516102f3929190614c48565b818015610584575f80fd5b5061030f610593366004614d5b565b612626565b8180156105a3575f80fd5b506105b76105b2366004614e71565b612835565b6040516102f39190614ee2565b6103c56105d2366004614bf4565b612b03565b6105ea6105e5366004614a0c565b612ca4565b604080519283526020830191909152016102f3565b6103c561060d366004614b50565b612cf3565b610324610620366004614f06565b612da0565b6103246106333660046146ac565b612e3a565b6103c56106463660046146cf565b612e90565b6103c5610659366004614f30565b613141565b6102e461066c366004614f5a565b6132a4565b6102e461067f3660046149f5565b6132c2565b81801561068f575f80fd5b506106a361069e366004614f8c565b61331b565b6040516102f3919061500a565b6103c56106be3660046144c6565b6135fe565b6104456106d13660046146ac565b613653565b6103c56106e43660046146cf565b6136f8565b6102e46106f73660046146ac565b613714565b61032461070a366004614a0c565b61375b565b81801561071a575f80fd5b506105ea610729366004615095565b613775565b6019820154602283015460238401545f926107899285926fffffffffffffffffffffffffffffffff909216916107649190615106565b604080518082019091526024880154815260258801546020820152875460020b611e5d565b9392505050565b600e8301545f8190036107a35750505050565b5f6107bf85601f01546107b987601e0154613d77565b90613dd9565b90505f6107ee826107de8689602201546107d99190615119565b613d77565b8789602301546103e19190615119565b9050828112610831576040517f6cf9f423000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b505050505050565b6040517f9ca2f8c6000000000000000000000000000000000000000000000000000000008152600285900b60048201525f906108d590739cb4861470341446619af06886e688c5785e5c8390639ca2f8c690602401602060405180830381865af41580156108a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cd919061512c565b85858561220c565b95945050505050565b5f806108fc836fffffffffffffffffffffffffffffffff8616615119565b9050805f03610937576040517f42521a9300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d5610957866fffffffffffffffffffffffffffffffff168584613e7b565b613f09565b6040517f1a71442c00000000000000000000000000000000000000000000000000000000815260048101839052600282900b60248201525f908190610a039073d07025f97504ea8dda1e8c40b04bbc11c3a9602290631a71442c90604401602060405180830381865af41580156109d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f9919061512c565b602b860190613f5e565b90505f198103610a1d57610a1684611298565b9150610a2a565b610a2784826123ff565b91505b5092915050565b5f610a7061271085600a0154612710610a4a9190615106565b610a66906fffffffffffffffffffffffffffffffff8716615143565b6109579190615187565b9050806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610610aeb576040517fb0b075340000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff808416600483015282166024820152604401610828565b50505050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c082015281905f73d07025f97504ea8dda1e8c40b04bbc11c3a96022635d9d655e8d610b4e8e613f09565b610b578e613f09565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526fffffffffffffffffffffffffffffffff9182166024840152166044820152606401608060405180830381865af4158015610bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bec919061519a565b9050608081835e50805115610e0f575f610c278c83606001516fffffffffffffffffffffffffffffffff168b856020015186604001516113b5565b90508060a00151925082158015610c4557505f816020015161ffff16115b15610c85575f8c601101541315610c8557610c738c8360600151836060015184608001518560400151613775565b60808301526060820152600160a08301525b60608082015160228e01556080820151601e8e01558201516040517f7db97910000000000000000000000000000000000000000000000000000000008152600481018e90526fffffffffffffffffffffffffffffffff909116602482015288151560448201527310abe072ace566266e7e329ea040e35a3107377b90637db97910906064015f60405180830381865af4158015610d24573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d69919081019061520d565b60c084015215156080830152602081015161ffff1615610e0b5773619c25f15edd45e4bcc9ad4be555000ac879ef5563f7de76418d8360200151846040015186608001518760a001518d8960c001518e8e6040518a63ffffffff1660e01b8152600401610dde99989796959493929190615353565b5f6040518083038186803b158015610df4575f80fd5b505af4158015610e06573d5f803e3d5ffd5b505050505b5192505b509850989650505050505050565b5f80610e39610e31898986604001516132a4565b878787610839565b9050806fffffffffffffffffffffffffffffffff168611610e8c578251610e7c90610e76886fffffffffffffffffffffffffffffffff8516615106565b88613e7b565b610e85906153fe565b9150610eb1565b8251610eae90610e766fffffffffffffffffffffffffffffffff841689615106565b91505b509695505050505050565b5f835f03610eeb57507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610789565b5f83610ef684613d77565b610f009190615434565b90506108d585610f1c612710610f16858461404c565b906140ee565b9061418a565b5f6107896fffffffffffffffffffffffffffffffff808416908516610f496015600a615536565b610f539190615143565b610f5d9190615187565b610957906fffffffffffffffffffffffffffffffff8616615106565b600785015460088601545f919080851115610f92578094505b81851015610f9e578194505b5060128701545f610fb9610fb483612710615544565b61424e565b6127108660600151610fcb9190615143565b610fd59190615187565b90508085602001511061100d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000093505050506108d5565b5f85602001518261101e9190615106565b90505f6fffffffffffffffffffffffffffffffff89166110406015600a615536565b61105c8a6fffffffffffffffffffffffffffffffff8d16615143565b6110669190615187565b6110709190615106565b90508181101561107e578091505b5f6fffffffffffffffffffffffffffffffff8a1661109e6015600a615536565b6110ba886fffffffffffffffffffffffffffffffff8e16615143565b6110c49190615187565b6110ce9190615106565b9050828111156110dc578092505b506111156110eb8b8b856108de565b602089015160808a01518e546fffffffffffffffffffffffffffffffff8f1692919060020b611e5d565b95505f6111438a8c6105078a8f6fffffffffffffffffffffffffffffffff168d602001518e60800151610839565b6fffffffffffffffffffffffffffffffff1690508282141580156111a75750846111a56111738a60600151613d77565b6111988d6fffffffffffffffffffffffffffffffff168c604001516107d99190615119565b8b516106be908690615119565b135b156111be578b546111bb9060020b88615563565b96505b50505050505095945050505050565b5f816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1611611247576040517f6b5dea2d0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff808416600483015284166024820152604401610828565b61125182846155a4565b6fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff166015600a6112849190615536565b61128e9190615143565b6107899190615187565b80546040517f9ecaed4800000000000000000000000000000000000000000000000000000000815260029190910b60048201525f90739cb4861470341446619af06886e688c5785e5c8390639ecaed48906024015b602060405180830381865af4158015611308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132c91906155cc565b92915050565b5f818152602883016020526040812060018101547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16820361138457600b8401546601000000000000900460ff16610a27565b600101547f0100000000000000000000000000000000000000000000000000000000000000900460ff169392505050565b6113ee6040518060c001604052805f81526020015f61ffff1681526020015f81526020015f81526020015f81526020015f151581525090565b5f836113fd8860230154613d77565b6114079190615434565b90505f811361142a5761141a8484612ca4565b60808401526060830152506108d5565b61143261435a565b848152602080820185905260c0820183905260e082018890526040805180820190915260248a0154815260258a015491810191909152610100820152600a61ffff8716111561148057600a95505b5f61149e8260e001518360e001518460c00151856101000151612b03565b6040517f93bab5df00000000000000000000000000000000000000000000000000000000815260048101829052909150739cb4861470341446619af06886e688c5785e5c83906393bab5df90602401602060405180830381865af4158015611508573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c91906155cc565b600290810b604084015260298a0154900b60608301525b60608201516040517f1a71442c0000000000000000000000000000000000000000000000000000000081525f916115f39173d07025f97504ea8dda1e8c40b04bbc11c3a9602291631a71442c916115aa918f9160040191825260020b602082015260400190565b602060405180830381865af41580156115c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e9919061512c565b602b8c0190613f5e565b90505f19810361160357506119d4565b61160d8a826123ff565b600290810b60608501819052604085015190910b131561162d57506119d4565b60608301516040517fa064a6b6000000000000000000000000000000000000000000000000000000008152600481018c905260029190910b60248201525f9073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af41580156116a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c991906155e7565b505f81815260288d016020908152604091829020825160608101845281548082526001909201547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116938201939093527f010000000000000000000000000000000000000000000000000000000000000090920460ff1692820192909252608087018051939450909261175d908390615119565b9052508b5460408201515f91739cb4861470341446619af06886e688c5785e5c8391639ca2f8c6916117989160029190910b9060ff16615609565b88606001516117a79190615628565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260029190910b6004820152602401602060405180830381865af41580156117fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611820919061512c565b825190915061182f9082615143565b8660a0018181516118409190615119565b905250602082015188517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911690899061187b908390615119565b90525060208801805161188d90615669565b61ffff16908161ffff16815250505f6118bb8e88606001518960e001518a60c001518b610100015188610e1d565b905080896040018181516118cf9190615544565b905250606087015160020b5f90815260268f016020526040812080549091906118f790615689565b90915550600885901c5f908152602b8f01602052604090208054600160ff88161b19169055606087015160020b5f90815260268f01602052604090205461194090600190615106565b876060015160020b7fb64624ffaac1b0226fccb859570380e00ddef038d67b89cd781c6fac2703a9a78960e0015161198b8b606001518c60e001518d60c001518e6101000151610839565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152810185905260600160405180910390a350505050508661ffff16846020015161ffff1610611543575b6119df898386612626565b610120820151151560a0850152815160208301516119fd9190612ca4565b6080860152606085015250505095945050505050565b82516040517fa064a6b60000000000000000000000000000000000000000000000000000000081526004810186905260029190910b60248201525f908190819073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af4158015611a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab091906155e7565b9150915080866020015114611ac6575050611e55565b5f82815260288801602090815260408083206001015460278b019092528083209089015181547f010000000000000000000000000000000000000000000000000000000000000090930460ff1693928110611b2357611b236156a1565b5f9182526020918290206040805160a081018252600293909302909101805460ff811615158452610100810464ffffffffff1694840194909452660100000000000090930473ffffffffffffffffffffffffffffffffffffffff16908201526001909101546fffffffffffffffffffffffffffffffff80821660608401527001000000000000000000000000000000009091041660808201528851909150611c03908890611bf990611bd7908d90876132a4565b8a6fffffffffffffffffffffffffffffffff168a602001518b60800151610839565b8360600151612cf3565b94505f851215611c165750505050611e55565b73619c25f15edd45e4bcc9ad4be555000ac879ef55635abd1d8e8a8a5f01518b6040015185866080015187606001516040518763ffffffff1660e01b8152600401611c66969594939291906156ce565b6040805180830381865af4158015611c80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca491906157ce565b6080870152606081015186516fffffffffffffffffffffffffffffffff909116908790611cd2908390615106565b905250604086018051869190611ce9908390615106565b90525060408601518651611cfd9190615106565b60208781019190915260408281015160808085015183518d5160020b81528d860151958101959095528c840151858501526fffffffffffffffffffffffffffffffff1660608501819052908401525f60a0840152905173ffffffffffffffffffffffffffffffffffffffff90911691829182917f8fccdf5b77c00cc1f078c285225277c7e1f9bb7f4a44a9f5ce4278df56e89b18919081900360c00190a4806040015173ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff167fc33ba238fb9af2a35f2505ec61c7be464bf1919db4eb4a328351c17ce1800e1e8a88611e1186608001516fffffffffffffffffffffffffffffffff1690565b611e1b908b615434565b60408051845160020b81526020808601519082015293810151908401526060830191909152608082015260a00160405180910390a3505050505b949350505050565b5f80611e7d876fffffffffffffffffffffffffffffffff16878787612b03565b9050612710811015611f1f576040517f9ecaed48000000000000000000000000000000000000000000000000000000008152600284900b6004820152739cb4861470341446619af06886e688c5785e5c8390639ecaed4890602401602060405180830381865af4158015611ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1791906155cc565b9150506108d5565b6040517fb36f3f3400000000000000000000000000000000000000000000000000000000815260048101829052739cb4861470341446619af06886e688c5785e5c839063b36f3f3490602401602060405180830381865af4158015611f86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611faa91906155cc565b91505f8260020b12156120905782611fd0611fc4846157e8565b60020b8560020b61428c565b611fd9906157e8565b611fe39190615609565b6040517f9ecaed48000000000000000000000000000000000000000000000000000000008152600285900b60048201529092505f90739cb4861470341446619af06886e688c5785e5c8390639ecaed4890602401602060405180830381865af4158015612052573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207691906155cc565b90508060020b8360020b121561208a578092505b506120a8565b8261209b8184615824565b6120a59190615609565b91505b5095945050505050565b5f816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161161212c576040517f6b5dea2d0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff808416600483015284166024820152604401610828565b611e556109576fffffffffffffffffffffffffffffffff80871690861661215386886155a4565b6fffffffffffffffffffffffffffffffff16613e7b565b5f80806121808761056636899003890189615878565b915091505f6121908887876136f8565b90505f81121561219d57505f5b5f6121ee6121b88a6121b260208c018c615892565b866132a4565b6040805180820190915260248c0154815260258c015460208201526fffffffffffffffffffffffffffffffff8a16908590610839565b90506121ff87828660600151612cf3565b9998505050505050505050565b80515f9015801561221f57506020820151155b156122345761222d85613f09565b9050611e55565b5f734c5ab10d25e152e039983380faa4011da0bce17363c8a4ac9c8761225a8789615143565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016040805180830381865af41580156122b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122d491906157ce565b6040517f94eee6d200000000000000000000000000000000000000000000000000000000815290915061236c90734c5ab10d25e152e039983380faa4011da0bce173906394eee6d29061232d90859088906004016158ad565b602060405180830381865af4158015612348573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610957919061512c565b9695505050505050565b5f61238183836111cd565b905083600701548110156123c1576040517fe97fb23d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360080154811115610aeb576040517fdb21ff7a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f9061078990839060020b613714565b6040805160a0810182525f808252602082018190528183018190526060820181905260808201819052835192517fa064a6b60000000000000000000000000000000000000000000000000000000081526004810186905260029390930b602484015290918190819073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af41580156124b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124d691906155e7565b91509150808560200151146125275760208501516040517f39354abe000000000000000000000000000000000000000000000000000000008152610828918391600401918252602082015260400190565b5f82815260278701602052604090819020908601518154811061254c5761254c6156a1565b5f91825260208083206040805160a081018252600294909402909101805460ff80821615158652610100820464ffffffffff1686860152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff16858401526001918201546fffffffffffffffffffffffffffffffff808216606088015270010000000000000000000000000000000090910416608086015296855260289a909a019091529091209096015495967f0100000000000000000000000000000000000000000000000000000000000000909604909116949350505050565b8051602a840180545f9061263b908490615106565b909155505060808201516023840180545f90612658908490615106565b909155505060408051808201825260248501548152602585015460208083019190915260a0850151835180850185525f808252908301819052845180860186529081529182015291517fb0cccdb5000000000000000000000000000000000000000000000000000000008152734c5ab10d25e152e039983380faa4011da0bce1739263b0cccdb5926126ef929091906004016158ad565b6040805180830381865af4158015612709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272d91906157ce565b80516024850155602001516025840155805115612800575f826040015160020b836060015160020b12156127705761276984846040015161095c565b9050612796565b61277e84846060015161095c565b6040840151600282810b91900b131561012085015290505b6029840180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662ffffff8316179055604051600282900b81527f2e41738f5de266cc443362a69d6d5ac37216649e1d0925323f2f9e4a2f393f1a9060200160405180910390a1505b604081015182518390612814908390615434565b905250604081015160208301805161282d908390615544565b905250505050565b61285960405180606001604052805f60020b81526020015f81526020015f81525090565b600b8701548754660100000000000090910460ff169061287c9060020b82615609565b6128869086615563565b60020b8083525f90612899908a90613653565b90505f8260ff168260ff16036128d6576128cf87896fffffffffffffffffffffffffffffffff1687602001518860800151610839565b905061290c565b6129096128e78b865f0151856132a4565b896fffffffffffffffffffffffffffffffff1687602001518860800151610839565b90505b5f612918878a846120b2565b90505f6040518060a001604052806001151581526020014264ffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff168152602001896fffffffffffffffffffffffffffffffff16815250905073619c25f15edd45e4bcc9ad4be555000ac879ef556344dc9d9b8d885f015184886040518563ffffffff1660e01b81526004016129c894939291906158d3565b608060405180830381865af41580156129e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a079190615972565b508760200188604001828152508281525050508a73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fcd9785bfc039f6e3acd9e28c39bd0ccaf80b54c214cafd169a2fb9b5b798f31f428585608001518f8c604051612a8395949392919061599d565b60405180910390a38a73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f44c818c75b936d07e30545c1c628a229e0c77fb943fcb4f57ca84f0f47bcf554848d8a604051612aec939291906159f7565b60405180910390a350505050509695505050505050565b80515f90158015612b1657506020820151155b15612b22575083611e55565b825f03612b5b576040517faba2940800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f509f380f0000000000000000000000000000000000000000000000000000000081528251600482015260208301516024820152604481018690525f90734c5ab10d25e152e039983380faa4011da0bce1739063509f380f906064016040805180830381865af4158015612bd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf891906157ce565b9050734c5ab10d25e152e039983380faa4011da0bce173636a6a5e0982612c1f8789615143565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681528251600482015260209092015160248301526044820152606401602060405180830381865af4158015612c80573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236c919061512c565b5f805f841215612cbe57612cb88484615544565b92505f93505b5f831215612cd657612cd08385615544565b93505f92505b612cdf8461424e565b9150612cea8361424e565b90509250929050565b5f826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161015612d7d57612d6d6107d96fffffffffffffffffffffffffffffffff8416612d4387876155a4565b6fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff16613e7b565b612d76906153fe565b9050610789565b611e556107d96fffffffffffffffffffffffffffffffff8416612d4386886155a4565b6040517f9ca2f8c6000000000000000000000000000000000000000000000000000000008152600283900b60048201525f9061078990739cb4861470341446619af06886e688c5785e5c8390639ca2f8c690602401602060405180830381865af4158015612e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e34919061512c565b8361375b565b6019820154602283015460238401545f926107899285926fffffffffffffffffffffffffffffffff90921691612e709190615106565b604080518082019091526024880154815260258801546020820152610839565b60198301545f906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481169083161015612efa576040517fda6c0dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60218401546040517f54b80027000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff8416602482015260448101919091525f9073d07025f97504ea8dda1e8c40b04bbc11c3a96022906354b80027906064016040805180830381865af4158015612f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fab91906155e7565b5090505f81131561306d576040517f1c32ffc3000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff8516602482015261306690829073d07025f97504ea8dda1e8c40b04bbc11c3a9602290631c32ffc3906044015b602060405180830381865af415801561303c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613060919061512c565b9061404c565b9150613112565b600b8501545f906127109062010000900461ffff1661308c9084615a3c565b6130969190615a87565b905061310e6130a58284615434565b6040517f1c32ffc3000000000000000000000000000000000000000000000000000000008152600481018990526fffffffffffffffffffffffffffffffff8816602482015273d07025f97504ea8dda1e8c40b04bbc11c3a9602290631c32ffc390604401613021565b9250505b5f61312a86601e015487602201546107d99190615119565b905080831315613138578092505b50509392505050565b80515f9015801561315457506020820151155b1561316557612d766026600a615536565b5f734c5ab10d25e152e039983380faa4011da0bce17363c8a4ac9c61318c6026600a615536565b6131968789615143565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016040805180830381865af41580156131ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061321091906157ce565b6040517f94eee6d2000000000000000000000000000000000000000000000000000000008152909150734c5ab10d25e152e039983380faa4011da0bce173906394eee6d29061326590849087906004016158ad565b602060405180830381865af4158015613280573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d5919061512c565b82545f906132b89060020b60ff8416615609565b611e559084615628565b80546040517fef675edd00000000000000000000000000000000000000000000000000000000815260029190910b60048201525f90739cb4861470341446619af06886e688c5785e5c839063ef675edd906024016112ed565b6133236143c3565b6040517f521b687000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152426fffffffffffffffffffffffffffffffff811660248301525f91739e87120d47bd6beeee46cb90e187d09b5b5a20b591635cb18083918b9160069173619c25f15edd45e4bcc9ad4be555000ac879ef559063521b687090604401602060405180830381865af41580156133db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133ff919061512c565b89896040518763ffffffff1660e01b815260040161342296959493929190615acf565b606060405180830381865af415801561343d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134619190615b0d565b6013890154815191925061349991612710916134839161ffff90911690615143565b61348d9190615187565b82516109579190615119565b6fffffffffffffffffffffffffffffffff16825260208101515f906134bd90613f09565b6040830151600b8b01549192506134f2918b916fffffffffffffffffffffffffffffffff85169161ffff165f60068b8b610af1565b15801560a0860152905061350757505061236c565b613511898761072e565b60208401805160029290920b909152515161352d908a90613653565b60ff1660408401526020830151515f90613548908b90612e3a565b90506135558a8383610a31565b5f6135708b6106338d88602001515f015189604001516132a4565b90506135808b865f015183612376565b61358e89865f0151836120b2565b6fffffffffffffffffffffffffffffffff166060860181905284516135b49190836142ab565b8560800181815250506135f08b86606001516fffffffffffffffffffffffffffffffff168b6fffffffffffffffffffffffffffffffff16610790565b505050509695505050505050565b5f8061360d8461306085613d77565b9050805f0361363f577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050610789565b6108d581610f1c612710610f16898461404c565b6040517fa064a6b600000000000000000000000000000000000000000000000000000000815260048101839052600282900b60248201525f90819073d07025f97504ea8dda1e8c40b04bbc11c3a960229063a064a6b6906044016040805180830381865af41580156136c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136eb91906155e7565b509050610a278482611332565b5f611e55613707858585612e90565b6130608660230154613d77565b5f600282900b613744837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb14b6615824565b6137519060020b85615544565b6107899190615a3c565b5f61078961095784846137706026600a615536565b613e7b565b60068501548390839073ffffffffffffffffffffffffffffffffffffffff168061379f5750613d6d565b5f6040518060a001604052808a6023015481526020015f81526020018881526020016137dc8b601f01546137d28a613d77565b610fb49190615544565b815260408051808201825260248d0154815260258d01546020828101919091529092019190915281015181519192501115613843576040517f2727fa4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604081015181516138549190615106565b60208201525f808613156138af57600b8a01546138859061271090610a6690640100000000900461ffff1689615143565b9050806fffffffffffffffffffffffffffffffff16826060018181516138ab9190615106565b9052505b5f6138d46138c08460600151613d77565b6138cd8560400151613d77565b85516135fe565b90508a601101548112156138eb5750505050613d6d565b506138f461442b565b8373ffffffffffffffffffffffffffffffffffffffff1663dc72708b6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561393d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139619190615b48565b6040840181905260208401919091526fffffffffffffffffffffffffffffffff90911682525160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000014613a36575f6139c18c83604001518d87611a13565b90505f8112156139d5575050505050613d6d565b6139de81613f09565b6fffffffffffffffffffffffffffffffff166060830181905282518390613a06908390615bd5565b6fffffffffffffffffffffffffffffffff9081169091526060840151613a2e92501688615106565b965050613a59565b80516fffffffffffffffffffffffffffffffff165f03613a595750505050613d6d565b6127108b60170154613a6b9190615187565b81516fffffffffffffffffffffffffffffffff1611613b7b57604080516060810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000081525f6020820181815282840182815293517f6bf70227000000000000000000000000000000000000000000000000000000008152925160020b600484015251602483015291516044820152606481019190915273ffffffffffffffffffffffffffffffffffffffff851690636bf70227906084015f604051808303815f87803b158015613b3b575f80fd5b505af1158015613b4d573d5f803e3d5ffd5b50508251613b7092506fffffffffffffffffffffffffffffffff16905086615119565b945050505050613d6d565b613bcc84308360600151845f0151613b9391906155a4565b8e546301000000900473ffffffffffffffffffffffffffffffffffffffff169291906fffffffffffffffffffffffffffffffff16614302565b6fffffffffffffffffffffffffffffffff821615613c2957613c006fffffffffffffffffffffffffffffffff831686615106565b945081815f01818151613c139190615bd5565b6fffffffffffffffffffffffffffffffff169052505b5f613c3e8c8c845f0151856020015188610f79565b905062800000600282900b01613c80576040517f2797df6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f613c928d878e85875f01518a612835565b8351909150613cb3906fffffffffffffffffffffffffffffffff1689615119565b6060840151604080517f6bf70227000000000000000000000000000000000000000000000000000000008152845160020b6004820152602085015160248201529084015160448201526fffffffffffffffffffffffffffffffff909116606482015290985073ffffffffffffffffffffffffffffffffffffffff871690636bf70227906084015f604051808303815f87803b158015613d50575f80fd5b505af1158015613d62573d5f803e3d5ffd5b505050505050505050505b9550959350505050565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613dd5576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401610828565b5090565b8181015f8312801590613deb57508181125b15613e2c576040517fcae3b63a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610828565b5f83128015613e3a57508181135b1561132c576040517fcae3b63a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610828565b82820281838583041485151702613f02575f198385098181108201900382848609835f038416828511613eb55763ae47f7025f526004601cfd5b93849004938382119092035f839003839004600101029203041760026003830281188084028203028084028203028084028203028084028203028084028203028084029091030202610789565b0492915050565b5f6fffffffffffffffffffffffffffffffff821115613dd5576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526080600482015260248101839052604401610828565b600881901c5f818152602084905260409020545f19919060ff84191690811b901c81158117613f9e575b5081015f81815260409020548115811715613f88575b801561404457614035817f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be831560081b6fffffffffffffffffffffffffffffffff851160071b1784811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b600883901b178481115f031792505b505092915050565b8082035f821280159061405e57508281135b1561409f576040517f82e2e6380000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610828565b5f821280156140ad57508281125b1561132c576040517f82e2e6380000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610828565b5f825f036140fd57505f61132c565b50818102818382816141115761411161515a565b0514158061414957507f8000000000000000000000000000000000000000000000000000000000000000821480156141495750825f19145b1561132c576040517f23f447a70000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610828565b5f815f036141c7576040517ff0ae00e000000000000000000000000000000000000000000000000000000000815260048101849052602401610828565b7f8000000000000000000000000000000000000000000000000000000000000000831480156141f65750815f19145b15614237576040517fc1fe304d0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610828565b8183816142465761424661515a565b059392505050565b5f80821215613dd5576040517fa8ce443200000000000000000000000000000000000000000000000000000000815260048101839052602401610828565b5f8161429f576365244e4e5f526004601cfd5b50808206151591040190565b5f6fffffffffffffffffffffffffffffffff83166142c983856155a4565b6fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff166142f89190615143565b611e559190615187565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661434d57637939f4245f526004601cfd5b5f60605260405250505050565b6040518061014001604052805f81526020015f81526020015f60020b81526020015f60020b81526020015f81526020015f81526020015f81526020015f81526020016143b760405180604001604052805f81526020015f81525090565b81525f60209091015290565b6040518060c001604052805f6fffffffffffffffffffffffffffffffff16815260200161440a60405180606001604052805f60020b81526020015f81526020015f81525090565b81525f60208201819052604082018190526060820181905260809091015290565b60405180608001604052805f6fffffffffffffffffffffffffffffffff1681526020015f81526020016143b760405180606001604052805f60020b81526020015f81526020015f81525090565b6fffffffffffffffffffffffffffffffff81168114614495575f80fd5b50565b5f80604083850312156144a9575f80fd5b8235915060208301356144bb81614478565b809150509250929050565b5f805f606084860312156144d8575f80fd5b505081359360208301359350604090920135919050565b8060020b8114614495575f80fd5b8035614508816144ef565b919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561455d5761455d61450d565b60405290565b6040516060810167ffffffffffffffff8111828210171561455d5761455d61450d565b604051610140810167ffffffffffffffff8111828210171561455d5761455d61450d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156145f1576145f161450d565b604052919050565b5f60408284031215614609575f80fd5b61461161453a565b823581526020928301359281019290925250919050565b5f805f8060a0858703121561463b575f80fd5b8435614646816144ef565b9350602085013592506040850135915061466386606087016145f9565b905092959194509250565b5f805f60608486031215614680575f80fd5b833561468b81614478565b9250602084013561469b81614478565b929592945050506040919091013590565b5f80604083850312156146bd575f80fd5b8235915060208301356144bb816144ef565b5f805f606084860312156146e1575f80fd5b8335925060208401356146f381614478565b9150604084013561470381614478565b809150509250925092565b803561ffff81168114614508575f80fd5b8015158114614495575f80fd5b80356145088161471f565b5f8083601f840112614747575f80fd5b50813567ffffffffffffffff81111561475e575f80fd5b602083019150836020828501011115614775575f80fd5b9250929050565b5f805f805f805f8060e0898b031215614793575f80fd5b8835975060208901359650604089013595506147b160608a0161470e565b945060808901356147c18161471f565b935060a0890135600b81106147d4575f80fd5b925060c089013567ffffffffffffffff8111156147ef575f80fd5b6147fb8b828c01614737565b999c989b5096995094979396929594505050565b803560ff81168114614508575f80fd5b5f805f805f80868803610120811215614836575f80fd5b873596506020880135614848816144ef565b955060408801359450606088013593506148658960808a016145f9565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215614896575f80fd5b5061489f614563565b60c0880135815260e08801357effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146148d7575f80fd5b60208201526148e9610100890161480f565b6040820152809150509295509295509295565b5f806040838503121561490d575f80fd5b823561491881614478565b915060208301356144bb81614478565b5f60c08284031215614938575f80fd5b60405160a0810167ffffffffffffffff8111828210171561495b5761495b61450d565b6040908152833582526020808501359083015283810135908201526060808401359082015290508061499084608085016145f9565b60808201525092915050565b5f805f805f61014086880312156149b1575f80fd5b8535945060208601356149c381614478565b935060408601356149d381614478565b9250606086013591506149e98760808801614928565b90509295509295909350565b5f60208284031215614a05575f80fd5b5035919050565b5f8060408385031215614a1d575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215614a40575f80fd5b8535945060208601359350614a576040870161470e565b94979396509394606081013594506080013592915050565b5f60608284031215614a7f575f80fd5b614a87614563565b90508135614a94816144ef565b81526020828101359082015260409182013591810191909152919050565b5f805f806101608587031215614ac6575f80fd5b84359350614ad78660208701614a6f565b92506080850135614ae781614478565b91506146638660a08701614928565b5f805f805f60c08688031215614b0a575f80fd5b8535614b1581614478565b94506020860135935060408601359250614b3287606088016145f9565b915060a0860135614b42816144ef565b809150509295509295909350565b5f805f60608486031215614b62575f80fd5b8335614b6d81614478565b925060208401356146f381614478565b5f805f8084860360c0811215614b91575f80fd5b8535945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614bc4575f80fd5b506020850192506080850135614bd981614478565b915060a0850135614be981614478565b939692955090935050565b5f805f8060a08587031215614c07575f80fd5b84359350602085013592506040850135915061466386606087016145f9565b5f8060808385031215614c37575f80fd5b82359150612cea8460208501614a6f565b60c08101614cc4828580511515825264ffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526fffffffffffffffffffffffffffffffff60608201511660608301526fffffffffffffffffffffffffffffffff60808201511660808301525050565b60ff831660a08301529392505050565b5f60c08284031215614ce4575f80fd5b60405160c0810167ffffffffffffffff81118282101715614d0757614d0761450d565b60405282358152905080614d1d6020840161470e565b602082015260408381013590820152606080840135908201526080808401359082015260a0830135614d4e8161471f565b60a0919091015292915050565b5f805f838503610240811215614d6f575f80fd5b843593506101607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614da3575f80fd5b50614dac614586565b6020858101358252604086013590820152614dc9606086016144fd565b6040820152614dda608086016144fd565b606082015260a085810135608083015260c0808701359183019190915260e0808701359183019190915261010086013590820152614e1c8661012087016145f9565b610100820152614e2f610160860161472c565b6101208201529150614e45856101808601614cd4565b90509250925092565b803573ffffffffffffffffffffffffffffffffffffffff81168114614508575f80fd5b5f805f805f806101608789031215614e87575f80fd5b86359550614e9760208801614e4e565b94506040870135614ea781614478565b93506060870135614eb7816144ef565b92506080870135614ec781614478565b9150614ed68860a08901614928565b90509295509295509295565b815160020b815260208083015190820152604080830151908201526060810161132c565b5f8060408385031215614f17575f80fd5b8235614f22816144ef565b946020939093013593505050565b5f805f60808486031215614f42575f80fd5b8335925060208401359150614e4585604086016145f9565b5f805f60608486031215614f6c575f80fd5b833592506020840135614f7e816144ef565b9150614e456040850161480f565b5f805f805f8060a08789031215614fa1575f80fd5b86359550614fb160208801614e4e565b94506040870135614fc181614478565b93506060870135614fd181614478565b9250608087013567ffffffffffffffff811115614fec575f80fd5b614ff889828a01614737565b979a9699509497509295939492505050565b81516fffffffffffffffffffffffffffffffff16815260208083015161010083019161504f90840182805160020b825260208082015190830152604090810151910152565b5060ff60408401511660808301526fffffffffffffffffffffffffffffffff60608401511660a0830152608083015160c083015260a0830151151560e083015292915050565b5f805f805f60a086880312156150a9575f80fd5b8535945060208601356150bb81614478565b94979496505050506040830135926060810135926080909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561132c5761132c6150d9565b8082018082111561132c5761132c6150d9565b5f6020828403121561513c575f80fd5b5051919050565b808202811582820484141761132c5761132c6150d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826151955761519561515a565b500490565b5f60808284031280156151ab575f80fd5b506040516080810167ffffffffffffffff811182821017156151cf576151cf61450d565b60405282516151dd8161471f565b81526020838101519082015260408084015190820152606083015161520181614478565b60608201529392505050565b5f806040838503121561521e575f80fd5b82516152298161471f565b602084015190925067ffffffffffffffff811115615245575f80fd5b8301601f81018513615255575f80fd5b805167ffffffffffffffff81111561526f5761526f61450d565b6152a060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016145aa565b8181528660208385010111156152b4575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b600b8110615308577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b89815261ffff891660208201528760408201528615156060820152851515608082015261538360a08201866152d3565b61010060c08201525f845180610100840152806020870161012085015e5f61012082850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116830190506101208382030160e08401526153ee6101208201858761530c565b9c9b505050505050505050505050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361542e5761542e6150d9565b505f0390565b8181035f831280158383131683831282161715610a2a57610a2a6150d9565b6001815b600184111561548e57808504811115615472576154726150d9565b600184161561548057908102905b60019390931c928002615457565b935093915050565b5f826154a45750600161132c565b816154b057505f61132c565b81600181146154c657600281146154d0576154ec565b600191505061132c565b60ff8411156154e1576154e16150d9565b50506001821b61132c565b5060208310610133831016604e8410600b841016171561550f575081810a61132c565b61551b5f198484615453565b805f190482111561552e5761552e6150d9565b029392505050565b5f61078960ff841683615496565b8082018281125f831280158216821582161715614044576140446150d9565b600281810b9083900b01627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171561132c5761132c6150d9565b6fffffffffffffffffffffffffffffffff828116828216039081111561132c5761132c6150d9565b5f602082840312156155dc575f80fd5b8151610789816144ef565b5f80604083850312156155f8575f80fd5b505080516020909101519092909150565b5f8260020b8260020b028060020b9150808214610a2a57610a2a6150d9565b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171561132c5761132c6150d9565b5f61ffff821661ffff8103615680576156806150d9565b60010192915050565b5f5f19820361569a5761569a6150d9565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b868152600286900b6020820152604081018590526101408101615762606083018680511515825264ffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526fffffffffffffffffffffffffffffffff60608201511660608301526fffffffffffffffffffffffffffffffff60808201511660808301525050565b6fffffffffffffffffffffffffffffffff84166101008301526fffffffffffffffffffffffffffffffff8316610120830152979650505050505050565b5f604082840312156157af575f80fd5b6157b761453a565b825181526020928301519281019290925250919050565b5f604082840312156157de575f80fd5b610789838361579f565b5f8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810361581c5761581c6150d9565b5f0392915050565b5f8160020b8360020b8061583a5761583a61515a565b5f1981147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008314161561586f5761586f6150d9565b90059392505050565b5f60608284031215615888575f80fd5b6107898383614a6f565b5f602082840312156158a2575f80fd5b8135610789816144ef565b825181526020808401518183015282516040830152820151606082015260808101610789565b848152600284900b60208201526101008101615960604083018580511515825264ffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526fffffffffffffffffffffffffffffffff60608201511660608301526fffffffffffffffffffffffffffffffff60808201511660808301525050565b60ff831660e083015295945050505050565b5f805f60808486031215615984575f80fd5b835160208501519093509150614e45856040860161579f565b64ffffffffff861681526fffffffffffffffffffffffffffffffff858116602083015284811660408301528316606082015260e0810161236c6080830184805160020b825260208082015190830152604090810151910152565b6fffffffffffffffffffffffffffffffff84811682528316602082015260a08101611e556040830184805160020b825260208082015190830152604090810151910152565b8082025f82127f800000000000000000000000000000000000000000000000000000000000000084141615615a7357615a736150d9565b818105831482151761132c5761132c6150d9565b5f82615a9557615a9561515a565b5f1983147f800000000000000000000000000000000000000000000000000000000000000083141615615aca57615aca6150d9565b500590565b868152615adf60208201876152d3565b84604082015283606082015260a060808201525f615b0160a08301848661530c565b98975050505050505050565b5f6060828403128015615b1e575f80fd5b50615b27614563565b82518152602080840151908201526040928301519281019290925250919050565b5f805f83850360a0811215615b5b575f80fd5b8451615b6681614478565b6020860151909450925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215615b9f575f80fd5b50615ba8614563565b6040850151615bb6816144ef565b8152606085015160208201526080909401516040850152509093909250565b6fffffffffffffffffffffffffffffffff818116838216019081111561132c5761132c6150d956fea2646970667358221220cd3a5fbc5b5387e0190612473ff6df9ee1f3fff2f7ccad721673e619298a74b864736f6c634300081a0033", - "nonce": "0x37", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d489ed4058ea8d1153ce5e08e2cd6f6eddd36a1278b1df409f3d8917f02731d", - "transactionType": "CREATE", - "contractName": "UsdnProtocolVaultLibrary", - "contractAddress": "0x10abe072ace566266e7e329ea040e35a3107377b", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x274f30", - "input": "0x612302610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061013a575f3560e01c80637db97910116100b8578063c37e009c11610088578063d21824e91161006e578063d21824e9146102c9578063e45d9ac8146102dc578063ff2823f5146102ef575f80fd5b8063c37e009c14610297578063c4946b29146102aa575f80fd5b80637db979101461022557806390d18162146102525780639e141c3a14610265578063b039399c14610278575f80fd5b80633fe927f61161010d5780634dcf19c7116100f35780634dcf19c7146101ea578063580b9b8b146101fd5780635906747214610212575f80fd5b80633fe927f6146101b257806342f060c4146101d7575f80fd5b806302cc0d9f1461013e5780631d913c1f1461016457806324a32ab81461017757806335e33e931461018a575b5f80fd5b61015161014c366004611826565b610336565b6040519081526020015b60405180910390f35b610151610172366004611862565b610438565b610151610185366004611862565b610507565b61019d61019836600461189b565b610696565b6040805192835260208301919091520161015b565b6101c36101c03660046118d3565b90565b60405162ffffff909116815260200161015b565b6101516101e5366004611915565b61083c565b6101516101f836600461194d565b61088c565b61021061020b366004611977565b6108cc565b005b6101516102203660046119a8565b610a02565b818015610230575f80fd5b5061024461023f3660046119ef565b610b0f565b60405161015b929190611a2c565b610151610260366004611a88565b610dbf565b610151610273366004611ab1565b610dcb565b818015610283575f80fd5b50610210610292366004611862565b610de1565b6101516102a5366004611ae7565b611153565b8180156102b5575f80fd5b506102106102c4366004611b26565b6111a7565b6101516102d736600461194d565b6113cc565b6101516102ea366004611b87565b6113d8565b6103156102fd3660046118d3565b60181c6fffffffffffffffffffffffffffffffff1690565b6040516fffffffffffffffffffffffffffffffff909116815260200161015b565b60138401545f908190610374906127109061035b9062010000900461ffff1687611be6565b6103659190611c2a565b61036f9086611c3d565b6114be565b90505f610382878386610507565b90505f811215610396575f92505050610430565b61042b8682896001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610407573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102609190611c50565b925050505b949350505050565b5f61043061044f61044a868686610507565b611517565b6001860154604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051879273ffffffffffffffffffffffffffffffffffffffff16916318160ddd9160048083019260209291908290030181865afa1580156104be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e29190611c50565b875477010000000000000000000000000000000000000000000000900460ff1661083c565b60198301545f906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481169083161015610571576040517fda6c0dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60218401546040517f54b80027000000000000000000000000000000000000000000000000000000008152600481018690526fffffffffffffffffffffffffffffffff8416602482015260448101919091525f9073d07025f97504ea8dda1e8c40b04bbc11c3a96022906354b80027906064016040805180830381865af41580156105fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106229190611c67565b5090505f811215610648576106418161063b878761088c565b90611555565b915061068e565b600b8501545f906127109062010000900461ffff166106679084611c89565b6106719190611cd4565b905061068a6106808284611d3b565b61063b888861088c565b9250505b509392505050565b60138401545f9081908190612710906106b99062010000900461ffff1687611d61565b6106c39190611d8c565b6106cd9086611dcb565b600188015490915073ffffffffffffffffffffffffffffffffffffffff1661078388886106fe61044a83878b610507565b8473ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076b9190611c50565b866fffffffffffffffffffffffffffffffff16610a02565b6040517f859062560000000000000000000000000000000000000000000000000000000081526004810182905290945061082f9073ffffffffffffffffffffffffffffffffffffffff831690638590625690602401602060405180830381865afa1580156107f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108179190611c50565b60138a0154640100000000900463ffffffff16610dcb565b9250505094509492505050565b5f6108838561084d6012600a611f0c565b610869906fffffffffffffffffffffffffffffffff8816611be6565b61087485600a611f0c565b61087e9087611be6565b6115fd565b95945050505050565b5f6108c5836023015484601e0154856022015485876019015f9054906101000a90046fffffffffffffffffffffffffffffffff166113d8565b9392505050565b5f6108ef6108da8486611dcb565b6fffffffffffffffffffffffffffffffff1690565b60108601549091508015610978575f8261271061091e826fffffffffffffffffffffffffffffffff8816611d3b565b6109289190611c89565b6109329190611cd4565b905081811315610976576040517f6cf9f423000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b505b600e86015480156109f9575f6fffffffffffffffffffffffffffffffff85166127106109a48287611d3b565b6109ae9190611c89565b6109b89190611cd4565b9050818113156109f7576040517f6cf9f4230000000000000000000000000000000000000000000000000000000081526004810182905260240161096d565b505b50505050505050565b5f835f03610afa576001860154865473ffffffffffffffffffffffffffffffffffffffff9091169063c6e6f59290610a969088908690601290610a819060ff7801000000000000000000000000000000000000000000000000820481169177010000000000000000000000000000000000000000000000900416611f1a565b610a8b9190611f33565b61087e90600a611f0c565b6040518263ffffffff1660e01b8152600401610ab491815260200190565b602060405180830381865afa158015610acf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af39190611c50565b9050610883565b610b058584866115fd565b9695505050505050565b5f606082158015610b31575060168501546020860154610b2f9042611f4c565b105b15610b3e575f9150610db7565b426020808701919091556001860154604080517f1f2dc5ef000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216925f928492631f2dc5ef9260048083019391928290030181865afa158015610bb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdc9190611c50565b905086600301548111610bf3575f93505050610db7565b5f87601e015490505f885f0160179054906101000a900460ff1690505f8473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7d9190611c50565b90505f610c8c848b848661083c565b60158c01549091506fffffffffffffffffffffffffffffffff168111610cba575f9750505050505050610db7565b5f610ce7858c8e60140160089054906101000a90046fffffffffffffffffffffffffffffffff1687611153565b90505f610cf58488846115fd565b6040517fbc4f2d6d0000000000000000000000000000000000000000000000000000000081526004810182905290915073ffffffffffffffffffffffffffffffffffffffff89169063bc4f2d6d906024015f604051808303815f875af1925050508015610da157506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d9e9190810190611fdb565b60015b15610dae57919b50909950505b50505050505050505b935093915050565b5f6104308484846115fd565b5f6108c5838363ffffffff166305f5e1006115fd565b8254610e1e906301000000900473ffffffffffffffffffffffffffffffffffffffff1633306fffffffffffffffffffffffffffffffff86166116aa565b816fffffffffffffffffffffffffffffffff1683601e015f828254610e439190611c3d565b9091555050604080516fffffffffffffffffffffffffffffffff841681524260208201525f818301529051339182917f18ad3b5c323a8e1a3ee0f3acb7b2d0abf761ea555025c700fde4c72851df0fcc9181900360600190a35f610ece84846fffffffffffffffffffffffffffffffff165f80866fffffffffffffffffffffffffffffffff16610a02565b60018501546040517fc6e6f5920000000000000000000000000000000000000000000000000000000081526103e8600482015291925073ffffffffffffffffffffffffffffffffffffffff16905f90829063c6e6f59290602401602060405180830381865afa158015610f43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f679190611c50565b6040517f528c198a00000000000000000000000000000000000000000000000000000000815261dead60048201526024810182905290915073ffffffffffffffffffffffffffffffffffffffff83169063528c198a906044016020604051808303815f875af1158015610fdc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110009190611c50565b505f61100c8285611f4c565b6040517f528c198a000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091505f9073ffffffffffffffffffffffffffffffffffffffff85169063528c198a906044016020604051808303815f875af1158015611081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a59190611c50565b604080515f81526103e860208201524281830152905191925061dead9182917fc30aa039cdd6b3f3c49f47e33ccfed1e781075ad4c90a432176d68e661368065919081900360600190a3604080516fffffffffffffffffffffffffffffffff89168152602081018390524291810191909152339081907fc30aa039cdd6b3f3c49f47e33ccfed1e781075ad4c90a432176d68e661368065906060015b60405180910390a35050505050505050565b5f610883856111646012600a611f0c565b611180906fffffffffffffffffffffffffffffffff8816611be6565b61118b85600a611f0c565b61087e906fffffffffffffffffffffffffffffffff8816611be6565b84546111e4906301000000900473ffffffffffffffffffffffffffffffffffffffff1633306fffffffffffffffffffffffffffffffff88166116aa565b600b850154604080516060810182525f8082526020820181905291810191909152660100000000000090910460ff169086546112269060020b60ff84166120a9565b61123090856120c8565b60020b81526040805160a0810182526001815264ffffffffff4216602082015233818301526fffffffffffffffffffffffffffffffff808616606083015288166080820152825191517f44dc9d9b000000000000000000000000000000000000000000000000000000008152909173619c25f15edd45e4bcc9ad4be555000ac879ef55916344dc9d9b916112cd918c919086908990600401612109565b608060405180830381865af41580156112e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130c919061219e565b506040840152602083015260808101516022890180546fffffffffffffffffffffffffffffffff909216915f90611344908490611c3d565b909155505060208101516080820151604051339283927fcd9785bfc039f6e3acd9e28c39bd0ccaf80b54c214cafd169a2fb9b5b798f31f9261138c92918a918d908a9061222d565b60405180910390a3604051339081907f44c818c75b936d07e30545c1c628a229e0c77fb943fcb4f57ca84f0f47bcf554906111419088908b908890612287565b5f6108c5838342610438565b5f806113ef6113e687611702565b61063b87611702565b6040517f2287b7ba00000000000000000000000000000000000000000000000000000000815260048101899052602481018790526fffffffffffffffffffffffffffffffff8087166044830152851660648201529091505f9073d07025f97504ea8dda1e8c40b04bbc11c3a9602290632287b7ba90608401602060405180830381865af4158015611482573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a69190611c50565b90506114b28282611760565b98975050505050505050565b5f6fffffffffffffffffffffffffffffffff821115611513576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152608060048201526024810183905260440161096d565b5090565b5f80821215611513576040517fa8ce44320000000000000000000000000000000000000000000000000000000081526004810183905260240161096d565b8181015f831280159061156757508181125b156115a8576040517fcae3b63a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161096d565b5f831280156115b657508181135b156115f7576040517fcae3b63a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161096d565b92915050565b828202818385830414851517026116a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8385098181108201900382848609835f0384168285116116565763ae47f7025f526004601cfd5b93849004938382119092035f8390038390046001010292030417600260038302811880840282030280840282030280840282030280840282030280840282030280840290910302026108c5565b0492915050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166116f557637939f4245f526004601cfd5b5f60605260405250505050565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611513576040517f24775e060000000000000000000000000000000000000000000000000000000081526004810183905260240161096d565b8082035f821280159061177257508281135b156117b3576040517f82e2e638000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161096d565b5f821280156117c157508281125b156115f7576040517f82e2e638000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260440161096d565b80356fffffffffffffffffffffffffffffffff81168114611821575f80fd5b919050565b5f805f8060808587031215611839575f80fd5b84359350602085013592506040850135915061185760608601611802565b905092959194509250565b5f805f60608486031215611874575f80fd5b8335925061188460208501611802565b915061189260408501611802565b90509250925092565b5f805f80608085870312156118ae575f80fd5b84359350602085013592506118c560408601611802565b915061185760608601611802565b5f602082840312156118e3575f80fd5b813572ffffffffffffffffffffffffffffffffffffff811681146108c5575f80fd5b803560ff81168114611821575f80fd5b5f805f8060808587031215611928575f80fd5b8435935061193860208601611802565b92506040850135915061185760608601611905565b5f806040838503121561195e575f80fd5b8235915061196e60208401611802565b90509250929050565b5f805f806080858703121561198a575f80fd5b8435935061199a60208601611802565b92506118c560408601611802565b5f805f805f60a086880312156119bc575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b80151581146119ec575f80fd5b50565b5f805f60608486031215611a01575f80fd5b83359250611a1160208501611802565b91506040840135611a21816119df565b809150509250925092565b8215158152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509392505050565b5f805f60608486031215611a9a575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611ac2575f80fd5b82359150602083013563ffffffff81168114611adc575f80fd5b809150509250929050565b5f805f8060808587031215611afa575f80fd5b84359350611b0a60208601611802565b9250611b1860408601611802565b915061185760608601611905565b5f805f805f60a08688031215611b3a575f80fd5b85359450611b4a60208701611802565b9350611b5860408701611802565b925060608601358060020b8114611b6d575f80fd5b9150611b7b60808701611802565b90509295509295909350565b5f805f805f60a08688031215611b9b575f80fd5b853594506020860135935060408601359250611b6d60608701611802565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176115f7576115f7611bb9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611c3857611c38611bfd565b500490565b808201808211156115f7576115f7611bb9565b5f60208284031215611c60575f80fd5b5051919050565b5f8060408385031215611c78575f80fd5b505080516020909101519092909150565b8082025f82127f800000000000000000000000000000000000000000000000000000000000000084141615611cc057611cc0611bb9565b81810583148215176115f7576115f7611bb9565b5f82611ce257611ce2611bfd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615611d3657611d36611bb9565b500590565b8181035f831280158383131683831282161715611d5a57611d5a611bb9565b5092915050565b6fffffffffffffffffffffffffffffffff8181168382160290811690818114611d5a57611d5a611bb9565b5f6fffffffffffffffffffffffffffffffff831680611dad57611dad611bfd565b806fffffffffffffffffffffffffffffffff84160491505092915050565b6fffffffffffffffffffffffffffffffff82811682821603908111156115f7576115f7611bb9565b6001815b6001841115610db757808504811115611e1257611e12611bb9565b6001841615611e2057908102905b60019390931c928002611df7565b5f82611e3c575060016115f7565b81611e4857505f6115f7565b8160018114611e5e5760028114611e6857611e84565b60019150506115f7565b60ff841115611e7957611e79611bb9565b50506001821b6115f7565b5060208310610133831016604e8410600b8410161715611ea7575081810a6115f7565b611ed27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611df3565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611f0457611f04611bb9565b029392505050565b5f6108c560ff841683611e2e565b60ff81811683821601908111156115f7576115f7611bb9565b60ff82811682821603908111156115f7576115f7611bb9565b818103818111156115f7576115f7611bb9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fd357611fd3611f5f565b604052919050565b5f805f60608486031215611fed575f80fd5b8351611ff8816119df565b60208501516040860151919450925067ffffffffffffffff81111561201b575f80fd5b8401601f8101861361202b575f80fd5b805167ffffffffffffffff81111561204557612045611f5f565b61207660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f8c565b81815287602083850101111561208a575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f8260020b8260020b028060020b9150808214611d5a57611d5a611bb9565b600281810b9083900b01627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156115f7576115f7611bb9565b5f610100820190508582528460020b602083015283511515604083015264ffffffffff602085015116606083015273ffffffffffffffffffffffffffffffffffffffff60408501511660808301526fffffffffffffffffffffffffffffffff60608501511660a08301526fffffffffffffffffffffffffffffffff60808501511660c083015261088360e083018460ff169052565b5f805f83850360808112156121b1575f80fd5b84516020860151909450925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820112156121ec575f80fd5b506040805190810167ffffffffffffffff8111828210171561221057612210611f5f565b604090815285015181526060909401516020850152509093909250565b64ffffffffff861681526fffffffffffffffffffffffffffffffff858116602083015284811660408301528316606082015260e08101610b056080830184805160020b825260208082015190830152604090810151910152565b6fffffffffffffffffffffffffffffffff84811682528316602082015260a081016104306040830184805160020b82526020808201519083015260409081015191015256fea2646970667358221220a2a78ac60abfd64cc2c0b88b40d68c43960536e973c70e86052a15991bf9071f64736f6c634300081a0033", - "nonce": "0x38", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x52243d561794d26108a877b4034edb8b4b1fe85c6c537600fdb384c59d8cde0b", - "transactionType": "CREATE", - "contractName": "WstEthOracleMiddleware", - "contractAddress": "0xd43311651fdb0f6d4e2e11859196574d71a071ce", - "function": null, - "arguments": [ - "0xDd24F84d36BF92C65F92307595335bdFab5Bbd21", - "0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace", - "0x694AA1769357215DE4FAC081bf1f309aDC325306", - "0x40b8b38dd0deDCa43fC7831D4494e8Cbe843CC1B", - "3720" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x3261c8", - "value": "0x0", - "input": "0x6101006040525f80546001600160401b031916602d1790556018600455600580546304b00fa063ffffffff1990911617905534801561003c575f80fd5b50604051612d2a380380612d2a83398101604081905261005b9161014f565b6001600160a01b0380861660a0526080859052831660c05260018190558484848333806100a157604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100aa816100c7565b5050506001600160a01b0390931660e052506101a2945050505050565b600380546001600160a01b03191690556100e0816100e3565b50565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b038116811461014a575f80fd5b919050565b5f805f805f60a08688031215610163575f80fd5b61016c86610134565b94506020860151935061018160408701610134565b925061018f60608701610134565b9150608086015190509295509295909350565b60805160a05160c05160e051612b016102295f395f610b0301525f8181610368015281816108f8015281816116d2015281816118f001528181611f5b015261209d01525f818161023a01528181610d940152818161183d01528181611ad501528181611c1e0152611d2401525f8181610427015281816118150152611a150152612b015ff3fe608060405260043610610199575f3560e01c80639e87a5cd116100dc578063be7756dd11610087578063e30c397811610062578063e30c39781461049c578063f0141d84146104c6578063f211abcc146104e1578063f2fde38b14610516575f80fd5b8063be7756dd1461044b578063c4fa8bf41461045f578063c93713271461047e575f80fd5b8063af933b57116100b7578063af933b57146103d3578063b1529fbf146103f2578063b222ec7114610419575f80fd5b80639e87a5cd1461035a578063ab8b2f341461038c578063af2d32bb146103a0575f80fd5b8063831bcbf311610147578063942180741161012257806394218074146102f0578063949a17ef14610308578063986e18901461032757806398793ff914610346575f80fd5b8063831bcbf3146102935780638da5cb5b146102a757806393f22b9d146102d1575f80fd5b8063715018a611610177578063715018a61461021857806378399b0b1461022c57806379ba50971461027f575f80fd5b8063191fe1ed1461019d5780633f5bd8a9146101ca57806363174c7c146101f7575b5f80fd5b3480156101a8575f80fd5b506101b261271081565b60405161ffff90911681526020015b60405180910390f35b3480156101d5575f80fd5b506101e96101e436600461216d565b610535565b6040519081526020016101c1565b348015610202575f80fd5b506102166102113660046121d2565b610559565b005b348015610223575f80fd5b50610216610676565b348015610237575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c1565b34801561028a575f80fd5b50610216610689565b34801561029e575f80fd5b506004546101e9565b3480156102b2575f80fd5b5060025473ffffffffffffffffffffffffffffffffffffffff1661025a565b3480156102dc575f80fd5b506102166102eb3660046121ed565b610700565b3480156102fb575f80fd5b5060055461ffff166101b2565b348015610313575f80fd5b506102166103223660046121ed565b6107b7565b348015610332575f80fd5b5061021661034136600461220e565b6108a8565b348015610351575f80fd5b506101b26108e5565b348015610365575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061025a565b348015610397575f80fd5b506101e96108f5565b3480156103ab575f80fd5b506101e97f800000000000000000000000000000000000000000000000000000000000000081565b3480156103de575f80fd5b506102166103ed366004612225565b61098b565b3480156103fd575f80fd5b505f5460405167ffffffffffffffff90911681526020016101c1565b348015610424575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006101e9565b348015610456575f80fd5b506001546101e9565b34801561046a575f80fd5b5061021661047936600461220e565b610a92565b348015610489575f80fd5b5060055462010000900461ffff166101b2565b3480156104a7575f80fd5b5060035473ffffffffffffffffffffffffffffffffffffffff1661025a565b3480156104d1575f80fd5b50604051601281526020016101c1565b6104f46104ef366004612258565b610acf565b60408051825181526020808401519082015291810151908201526060016101c1565b348015610521575f80fd5b50610216610530366004612225565b610c00565b5f6105408484610cb0565b156105525761054f8484610cd3565b90505b9392505050565b610561610e10565b600a8167ffffffffffffffff1610156105b7576040517fd44ff2b100000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024015b60405180910390fd5b6102588167ffffffffffffffff161115610609576040517fd44ff2b100000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016105ae565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f241c93c63d73e9b5365f977482dd8048b228ee742453ca59b21448b4a6a4b5b8906020015b60405180910390a150565b61067e610e10565b6106875f610e63565b565b600354339073ffffffffffffffffffffffffffffffffffffffff1681146106f4576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016105ae565b6106fd81610e63565b50565b610708610e10565b6107156127106002612305565b61ffff168161ffff161115610756576040517fc18fce8e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f444babe03f2cf1ecf2d92f386b4b36c9bc9a3cb1874b3abe1c5d5a55291395a89060200161066b565b6107bf610e10565b6103848161ffff1610156107ff576040517f14a7fd0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115188161ffff16111561083f576040517f14a7fd0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8416908102919091179091556040519081527fdd0f8a3132b698ac11a3f9bcd9f8e2799f39bc4f08b761827d9e24e0ace6edd59060200161066b565b6108b0610e10565b60048190556040518181527f42e08bed13b165e657b77ec405fe78a7cc5893381b77bf557b457f00ee8fa10a9060200161066b565b6108f26127106002612305565b81565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109839190612329565b60ff16905090565b610993610e10565b73ffffffffffffffffffffffffffffffffffffffff81166109e0576040517f80bc7b9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff16476040515f6040518083038185875af1925050503d805f8114610a36576040519150601f19603f3d011682016040523d82523d5f602084013e610a3b565b606091505b5050905080610a8e576040517fb5ed065300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105ae565b5050565b610a9a610e10565b60018190556040518181527fb253a4f7edf0a3926be13935f7bfcce96181bceff9941569c8124dc09d0ecc699060200161066b565b610af060405180606001604052805f81526020015f81526020015f81525090565b5f610afe8787878787610e94565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663035faf826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190612349565b90506040518060600160405280670de0b6b3a764000083855f0151610bb39190612360565b610bbd91906123a4565b8152602001670de0b6b3a7640000838560200151610bdb9190612360565b610be591906123a4565b81526020018360400151815250925050505b95945050505050565b610c08610e10565b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610c6b60025473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f60208211610cc057505f610ccd565b5063504e4155823560e01c145b92915050565b6040805160018082528183019092525f91829190816020015b6060815260200190600190039081610cec57905050905083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250855186945090925015159050610d4c57610d4c6123e4565b60209081029190910101526040517fd47eed4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d47eed4590610dc99084906004016124c7565b602060405180830381865afa158015610de4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e089190612349565b949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610687576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016105ae565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556106fd81611071565b610eb560405180606001604052805f81526020015f81526020015f81525090565b5f84600a811115610ec857610ec86124d9565b03610efd57600554610ef690849084908890600290610ef19062010000900461ffff1683612506565b6110e7565b9050610bf7565b600184600a811115610f1157610f116124d9565b03610f2257610ef683836002611156565b600384600a811115610f3657610f366124d9565b03610f4857610ef68383876001611323565b600584600a811115610f5c57610f5c6124d9565b03610f6d57610ef68383875f611323565b600784600a811115610f8157610f816124d9565b03610f9257610ef68383875f611323565b600984600a811115610fa657610fa66124d9565b03610fb857610ef68383876001611323565b600a84600a811115610fcc57610fcc6124d9565b03610fdf57610ef683835f60025f6110e7565b600284600a811115610ff357610ff36124d9565b0361100457610ef683836001611156565b600484600a811115611018576110186124d9565b0361102857610ef683835f611156565b600684600a81111561103c5761103c6124d9565b0361104c57610ef683835f611156565b600884600a811115611060576110606124d9565b03610bf757610ef683836001611156565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61110860405180606001604052805f81526020015f81526020015f81525090565b6fffffffffffffffffffffffffffffffff8416156111305760045461112d9085612506565b93505b5f61113f878787601287611548565b905061114b81856115cf565b979650505050505050565b61117760405180606001604052805f81526020015f81526020015f81525090565b82156111915761118a84845f855f6110e7565b9050610552565b34156111c9576040517fd7d2537300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111d460126116bc565b90505f6111e160126117cc565b90508060400151826020015111611257576001546111ff904261252e565b816040015110156112445780604001516040517f18802ca00000000000000000000000000000000000000000000000000000000081526004016105ae91815260200190565b61124e81856115cf565b92505050610552565b81517f8000000000000000000000000000000000000000000000000000000000000000016112b95781602001516040517f18802ca00000000000000000000000000000000000000000000000000000000081526004016105ae91815260200190565b81515f126112f95781516040517fd3b9d7b800000000000000000000000000000000000000000000000000000000815260048101919091526024016105ae565b50604080516060810182528251815282516020808301919091529092015190820152949350505050565b61134460405180606001604052805f81526020015f81526020015f81525090565b6005545f9061135d9062010000900461ffff1685612506565b9050806fffffffffffffffffffffffffffffffff16421161138d5761138586868686856110e7565b915050610e08565b34156113c5576040517fd7d2537300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113d286880188612558565b90505f6113ea60126113e5600185612573565b6118da565b90505f815f01511361142e5780516040517fd3b9d7b800000000000000000000000000000000000000000000000000000000815260048101919091526024016105ae565b826fffffffffffffffffffffffffffffffff168160200151111561147e576040517f649fc61100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114896012836118da565b90505f815f0151136114cd5780516040517fd3b9d7b800000000000000000000000000000000000000000000000000000000815260048101919091526024016105ae565b826fffffffffffffffffffffffffffffffff1681602001511161151c576040517f649fc61100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060810182528251815282516020808301919091529092015190820152979650505050505050565b61156960405180606001604052805f81526020015f81526020015f81525090565b5f611576878787866119cd565b90505f816040015160030b13156115c55760408082015190517f19c6ad6600000000000000000000000000000000000000000000000000000000815260039190910b60048201526024016105ae565b61114b8185611e75565b6115f060405180606001604052805f81526020015f81526020015f81525090565b6001826002811115611604576116046124d9565b036116515760055460208401515f91612710916116259161ffff1690612360565b61162f91906123a4565b84519091508110611643576001825261164b565b835181900382525b506116a7565b5f826002811115611664576116646124d9565b036116a2576005546020840151612710916116859161ffff90911690612360565b61168f91906123a4565b835161169b9190612595565b81526116a7565b825181525b60408084015190820152915160208301525090565b604080518082019091525f80825260208201525f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611739573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175d9190612329565b9050611767611f44565b80519092507f8000000000000000000000000000000000000000000000000000000000000000016117985750919050565b6117a381600a6126c9565b6117ae84600a6126d7565b83516117ba91906126e2565b6117c4919061272d565b825250919050565b6117ed60405180606001604052805f81526020015f81526020015f81525090565b6040517f96834ad30000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906396834ad390602401608060405180830381865afa158015611897573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bb9190612896565b90505f815f015160070b136118d05750919050565b6105528184611e75565b604080518082019091525f80825260208201525f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b9190612329565b90506119868361203d565b91505f825f0151136119985750610ccd565b6119a381600a6126c9565b6119ae85600a6126d7565b83516119ba91906126e2565b6119c4919061272d565b82525092915050565b604080516080810182525f80825260208201819052818301819052606082018190528251600180825281850190945291929091908160200160208202803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000815f81518110611a4657611a466123e4565b60209081029190910101526040805160018082528183019092525f91816020015b6060815260200190600190039081611a6757905050905086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250855186945090925015159050611ac757611ac76123e4565b60200260200101819052505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d47eed45836040518263ffffffff1660e01b8152600401611b2c91906124c7565b602060405180830381865afa158015611b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6b9190612349565b9050662386f26fc10000811115611bb1576040517f2ff94f9b000000000000000000000000000000000000000000000000000000008152600481018290526024016105ae565b803414611bea576040517fd7d2537300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060866fffffffffffffffffffffffffffffffff165f03611ce7575f5473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634716e9c590849086908890611c5f9067ffffffffffffffff16426128b0565b426040518663ffffffff1660e01b8152600401611c7f94939291906128d0565b5f6040518083038185885af1158015611c9a573d5f803e3d5ffd5b50505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611ce0919081019061294c565b9050611dc5565b6040517faccca7f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063accca7f9908490611d6190879089908d908d906004016128d0565b5f6040518083038185885af1158015611d7c573d5f803e3d5ffd5b50505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dc2919081019061294c565b90505b5f815f81518110611dd857611dd86123e4565b6020026020010151602001515f015160070b13611e4957805f81518110611e0157611e016123e4565b6020908102919091018101510151516040517fd3b9d7b800000000000000000000000000000000000000000000000000000000815260079190910b60048201526024016105ae565b805f81518110611e5b57611e5b6123e4565b602002602001015160200151945050505050949350505050565b611e9660405180606001604052805f81526020015f81526020015f81525090565b5f8360400151611ea590612a3b565b63ffffffff169050604051806060016040528082600a611ec591906126d7565b611ed086600a6126d7565b8751611ee6919067ffffffffffffffff16612360565b611ef091906123a4565b8152602001611f0083600a6126d7565b611f0b86600a6126d7565b876020015167ffffffffffffffff16611f249190612360565b611f2e91906123a4565b8152602001856060015181525091505092915050565b604080518082019091525f80825260208201525f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611fc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe69190612a77565b5093505092505060015442611ffb919061252e565b811015612026577f800000000000000000000000000000000000000000000000000000000000000091505b604080518082019091529182526020820152919050565b6040805180820182525f808252602082015290517f9a6fc8f500000000000000000000000000000000000000000000000000000000815269ffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639a6fc8f59060240160a060405180830381865afa1580156120e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121069190612a77565b50602085015250825250919050565b5f8083601f840112612125575f80fd5b50813567ffffffffffffffff81111561213c575f80fd5b602083019150836020828501011115612153575f80fd5b9250929050565b8035600b8110612168575f80fd5b919050565b5f805f6040848603121561217f575f80fd5b833567ffffffffffffffff811115612195575f80fd5b6121a186828701612115565b90945092506121b490506020850161215a565b90509250925092565b67ffffffffffffffff811681146106fd575f80fd5b5f602082840312156121e2575f80fd5b8135610552816121bd565b5f602082840312156121fd575f80fd5b813561ffff81168114610552575f80fd5b5f6020828403121561221e575f80fd5b5035919050565b5f60208284031215612235575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610552575f80fd5b5f805f805f6080868803121561226c575f80fd5b8535945060208601356fffffffffffffffffffffffffffffffff81168114612292575f80fd5b93506122a06040870161215a565b9250606086013567ffffffffffffffff8111156122bb575f80fd5b6122c788828901612115565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8181168382160290811690818114612322576123226122d8565b5092915050565b5f60208284031215612339575f80fd5b815160ff81168114610552575f80fd5b5f60208284031215612359575f80fd5b5051919050565b8082028115828204841417610ccd57610ccd6122d8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826123b2576123b2612377565b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825180855260208501945060208160051b830101602085015f5b838110156124bb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403018852815180518085528060208301602087015e5f6020828701015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168601019450505060208201915060208801975060018101905061242d565b50909695505050505050565b602081525f6105526020830184612411565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6fffffffffffffffffffffffffffffffff8181168382160190811115610ccd57610ccd6122d8565b81810381811115610ccd57610ccd6122d8565b69ffffffffffffffffffff811681146106fd575f80fd5b5f60208284031215612568575f80fd5b813561055281612541565b69ffffffffffffffffffff8281168282160390811115610ccd57610ccd6122d8565b80820180821115610ccd57610ccd6122d8565b6001815b60018411156125e3578085048111156125c7576125c76122d8565b60018416156125d557908102905b60019390931c9280026125ac565b935093915050565b5f826125f957506001610ccd565b8161260557505f610ccd565b816001811461261b576002811461262557612641565b6001915050610ccd565b60ff841115612636576126366122d8565b50506001821b610ccd565b5060208310610133831016604e8410600b8410161715612664575081810a610ccd565b61268f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125a8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156126c1576126c16122d8565b029392505050565b5f61055260ff8416836125eb565b5f61055283836125eb565b8082025f82127f800000000000000000000000000000000000000000000000000000000000000084141615612719576127196122d8565b8181058314821517610ccd57610ccd6122d8565b5f8261273b5761273b612377565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561278f5761278f6122d8565b500590565b6040516060810167ffffffffffffffff811182821017156127b7576127b76123b7565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612804576128046123b7565b604052919050565b5f6080828403121561281c575f80fd5b6040516080810167ffffffffffffffff8111828210171561283f5761283f6123b7565b806040525080915082518060070b8114612857575f80fd5b81526020830151612867816121bd565b60208201526040830151600381900b8114612880575f80fd5b6040820152606092830151920191909152919050565b5f608082840312156128a6575f80fd5b610552838361280c565b67ffffffffffffffff8281168282160390811115610ccd57610ccd6122d8565b608081525f6128e26080830187612411565b82810360208401528086518083526020830191506020880192505f5b8181101561291c5783518352602093840193909201916001016128fe565b5050809250505067ffffffffffffffff8416604083015267ffffffffffffffff8316606083015295945050505050565b5f6020828403121561295c575f80fd5b815167ffffffffffffffff811115612972575f80fd5b8201601f81018413612982575f80fd5b805167ffffffffffffffff81111561299c5761299c6123b7565b6129ab60208260051b016127bd565b80828252602082019150602061012084028501019250868311156129cd575f80fd5b6020840193505b82841015612a315761012084880312156129ec575f80fd5b6129f4612794565b84518152612a05886020870161280c565b6020820152612a178860a0870161280c565b6040820152825261012093909301926020909101906129d4565b9695505050505050565b5f8160030b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000008103612a6f57612a6f6122d8565b5f0392915050565b5f805f805f60a08688031215612a8b575f80fd5b8551612a9681612541565b60208701516040880151606089015160808a015193985091965094509250612abd81612541565b80915050929550929590935056fea2646970667358221220f64251dac7c5d780f4975280e08acb80481371d39535660d469bed6fe82b2d4364736f6c634300081a0033000000000000000000000000dd24f84d36bf92c65f92307595335bdfab5bbd21ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace000000000000000000000000694aa1769357215de4fac081bf1f309adc32530600000000000000000000000040b8b38dd0dedca43fc7831d4494e8cbe843cc1b0000000000000000000000000000000000000000000000000000000000000e88", - "nonce": "0x39", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x284af2838a8e4ff40e256feff5aaede672d480560a8d871a4c9540c8ec29486f", - "transactionType": "CREATE", - "contractName": "LiquidationRewardsManager", - "contractAddress": "0x2e9f3d7af026df648d7e9522f8f1508c2b57b62d", - "function": null, - "arguments": [ - "0xf58C541746458e60BBf3393981B4B0aBD33b9536", - "0x40b8b38dd0deDCa43fC7831D4494e8Cbe843CC1B", - "7500" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x15f9c5", - "value": "0x0", - "input": "0x60c060405234801561000f575f80fd5b506040516113a23803806113a283398101604081905261002e9161016c565b6001600160a01b0383166080525f819055338061006457604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61006d816100eb565b50506001600160a01b031660a09081526040805160c08101825261c4388152620687646020820152610d77918101919091526203b164606082015264e8d4a51000608082015261753091015250600380546001600160e01b031916797530000000e8d4a510000003b16400000d77000687640000c4381790556101ac565b600280546001600160a01b031916905561010481610107565b50565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0381168114610104575f80fd5b5f805f6060848603121561017e575f80fd5b835161018981610158565b602085015190935061019a81610158565b80925050604084015190509250925092565b60805160a0516111c76101db5f395f6109e001525f818161034501528181610a9f0152610d4f01526111c75ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c80639e87a5cd116100c7578063e30c39781161007d578063ece6c2e611610063578063ece6c2e6146103da578063ef35e921146103e7578063f2fde38b146103f1575f80fd5b8063e30c3978146103b2578063ec41da2f146103d0575f80fd5b8063ab8b2f34116100ad578063ab8b2f341461037c578063af2d32bb14610384578063be7756dd146103ab575f80fd5b80639e87a5cd14610343578063ab4cca2d14610369575f80fd5b8063715018a61161011c57806379ba50971161010257806379ba5097146102f25780638786290e146102fa5780638da5cb5b14610304575f80fd5b8063715018a6146102d557806377c1957b146102df575f80fd5b8063079766a81461014d57806314dc966d14610169578063191fe1ed14610173578063368e4d1614610191575b5f80fd5b61015661520881565b6040519081526020015b60405180910390f35b61015662030d4081565b61017c61271081565b60405163ffffffff9091168152602001610160565b6102626040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260035463ffffffff80821683526401000000008204811660208401526801000000000000000082048116938301939093526c0100000000000000000000000081048316606083015267ffffffffffffffff70010000000000000000000000000000000082041660808301527801000000000000000000000000000000000000000000000000900490911660a082015290565b60405161016091905f60c08201905063ffffffff835116825263ffffffff602084015116602083015263ffffffff604084015116604083015263ffffffff606084015116606083015267ffffffffffffffff608084015116608083015263ffffffff60a08401511660a083015292915050565b6102dd610404565b005b6102dd6102ed366004610e48565b610417565b6102dd6107b9565b610156620493e081565b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610160565b7f000000000000000000000000000000000000000000000000000000000000000061031e565b610156610377366004610f28565b610830565b610156610a9c565b6101567f800000000000000000000000000000000000000000000000000000000000000081565b5f54610156565b60025473ffffffffffffffffffffffffffffffffffffffff1661031e565b6101566207a12081565b610156650746a528800081565b610156620f424081565b6102dd6103ff366004610feb565b610b32565b61040c610be2565b6104155f610c35565b565b61041f610be2565b6207a1208663ffffffff16111561046f576040517f5b3d532400000000000000000000000000000000000000000000000000000000815263ffffffff871660048201526024015b60405180910390fd5b620f42408563ffffffff1611156104ba576040517f627df79000000000000000000000000000000000000000000000000000000000815263ffffffff86166004820152602401610466565b62030d408463ffffffff161115610505576040517fbb94b87800000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152602401610466565b620493e08363ffffffff161115610550576040517fdfb3c83600000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610466565b650746a52880008267ffffffffffffffff1611156105a6576040517f0e37d55400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610466565b6105b3612710600a611052565b63ffffffff168163ffffffff161115610600576040517f8b4a741500000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610466565b6040805160c0808201835263ffffffff89811680845289821660208086018290528a84168688018190528a8516606080890182905267ffffffffffffffff8c166080808b01829052978c1660a09a8b01819052600380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001689176401000000008902177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000087027fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff16176c010000000000000000000000008602177fffffffff000000000000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000084027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1617780100000000000000000000000000000000000000000000000083021790558b5197885294870195909552988501919091529683019690965291810191909152918201929092527fa8113a4fa87011f421069d351cda7ecb2fcf25e1653c0036d4cde24b96561d6a910160405180910390a1505050505050565b600254339073ffffffffffffffffffffffffffffffffffffffff168114610824576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610466565b61082d81610c35565b50565b5f8961ffff165f0361084357505f610a8f565b5f60036040518060c00160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160089054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f8201600c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090505f61271063ffffffff168260a0015163ffffffff168d61ffff16845f015163ffffffff1661096a9190611078565b6109749190611078565b61097e9190611095565b615208836020015163ffffffff1661099691906110cd565b6109a091906110cd565b905089156109c05760408201516109bd9063ffffffff16826110cd565b90505b88156109de5760608201516109db9063ffffffff16826110cd565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b0e38900610a2384610c66565b610a2d9084611078565b6040518263ffffffff1660e01b8152600401610a4b91815260200190565b602060405180830381865afa158015610a66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8a91906110e0565b925050505b9998505050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2a91906110f7565b60ff16905090565b610b3a610be2565b6002805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610b9d60015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60015473ffffffffffffffffffffffffffffffffffffffff163314610415576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610466565b600280547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561082d81610cc2565b5f80610c70610d38565b90505f815f015113610c8457505f92915050565b805191503a821115610c94573a91505b826080015167ffffffffffffffff16821115610cbc57826080015167ffffffffffffffff1691505b50919050565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b604080518082019091525f80825260208201525f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dda9190611130565b509350509250505f5442610dee919061117e565b811015610e19577f800000000000000000000000000000000000000000000000000000000000000091505b604080518082019091529182526020820152919050565b803563ffffffff81168114610e43575f80fd5b919050565b5f805f805f8060c08789031215610e5d575f80fd5b610e6687610e30565b9550610e7460208801610e30565b9450610e8260408801610e30565b9350610e9060608801610e30565b9250608087013567ffffffffffffffff81168114610eac575f80fd5b9150610eba60a08801610e30565b90509295509295509295565b80358015158114610e43575f80fd5b8035600b8110610e43575f80fd5b5f8083601f840112610ef3575f80fd5b50813567ffffffffffffffff811115610f0a575f80fd5b602083019150836020828501011115610f21575f80fd5b9250929050565b5f805f805f805f805f60e08a8c031215610f40575f80fd5b893561ffff81168114610f51575f80fd5b985060208a01359750610f6660408b01610ec6565b9650610f7460608b01610ec6565b9550610f8260808b01610ed5565b945060a08a013567ffffffffffffffff811115610f9d575f80fd5b610fa98c828d01610ee3565b90955093505060c08a013567ffffffffffffffff811115610fc8575f80fd5b610fd48c828d01610ee3565b915080935050809150509295985092959850929598565b5f60208284031215610ffb575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461101e575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff818116838216029081169081811461107157611071611025565b5092915050565b808202811582820484141761108f5761108f611025565b92915050565b5f826110c8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561108f5761108f611025565b5f602082840312156110f0575f80fd5b5051919050565b5f60208284031215611107575f80fd5b815160ff8116811461101e575f80fd5b805169ffffffffffffffffffff81168114610e43575f80fd5b5f805f805f60a08688031215611144575f80fd5b61114d86611117565b6020870151604088015160608901519297509095509350915061117260808701611117565b90509295509295909350565b8181038181111561108f5761108f61102556fea26469706673582212205894c4e704092b2955dd02589833e3fa5fa542b413d13e99682a1aa88006f3c364736f6c634300081a0033000000000000000000000000f58c541746458e60bbf3393981b4b0abd33b953600000000000000000000000040b8b38dd0dedca43fc7831d4494e8cbe843cc1b0000000000000000000000000000000000000000000000000000000000001d4c", - "nonce": "0x3a", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x13c90235658bcdc3c912238da8d60dea19e809863073ae0adc56668254b49f36", - "transactionType": "CREATE", - "contractName": "UsdnProtocolFallback", - "contractAddress": "0x7c9d3ad12d34ef0b02d10fbc30bb7bc0f9c7f2a1", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x4cfbe9", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b506145a68061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610743575f3560e01c8063792d51e1116103b7578063cc8463c8116101f5578063e3212f571161011f578063efadd6ad116100b4578063f8eda2c811610084578063f8eda2c8146112b9578063f980a965146112e1578063fcf45e91146112f4578063fe88129c14611307575f80fd5b8063efadd6ad14611277578063f2c237e214611295578063f4272e0b1461129f578063f8cf4b6c146112a6575f80fd5b8063e93fe97e116100ef578063e93fe97e14611224578063eaa7bbce14611249578063ec1636b814611251578063ed839a1f14611264575f80fd5b8063e3212f57146111ef578063e590cea5146111f7578063e689e95414611209578063e69d8c471461121c575f80fd5b8063d602b9fd11610195578063da86024111610165578063da8602411461117f578063db6c6a93146111a6578063dd2bbd5c146111b9578063e1e46882146111c1575f80fd5b8063d602b9fd146110fc578063d8cf24fd14611104578063d90df3d11461111e578063d9c8f1d414611126575f80fd5b8063d0970c76116101d0578063d0970c76146110bb578063d1074221146110c3578063d3127e63146110d6578063d547741f146110e9575f80fd5b8063cc8463c814611040578063cefc142914611048578063cf6eefb714611050575f80fd5b8063a42dce80116102e1578063be37b12c11610276578063c49afb1b11610246578063c49afb1b1461100a578063c569d36614611012578063c58aaa9614611025578063c9d3d0f214611038575f80fd5b8063be37b12c14610fdf578063bec8661114610ff2578063c05d873c14610ffa578063c437f99e14611002575f80fd5b8063a99af675116102b1578063a99af67514610ef8578063aa73351114610f35578063b82ee8b614610fcc578063b87e54a61461079d575f80fd5b8063a42dce8014610ebf578063a548929714610ed2578063a7e6e53f14610ee5578063a879081a14610eec575f80fd5b806391d14854116103575780639f0ecba5116103275780639f0ecba514610e6b578063a1eda53c14610e7e578063a217fddf14610ea5578063a2dac05514610eac575f80fd5b806391d1485414610db757806395a9292e14610e1b5780639cb752cd14610e425780639ccc050d14610e4d575f80fd5b80637db3fd69116103925780637db3fd6914610d3257806384ef8ffc14610d4c578063865d86fa14610d895780638da5cb5b14610daf575f80fd5b8063792d51e114610cdc5780637d17f76d14610ce45780637d5ac4b714610d0b575f80fd5b8063422f8c0a116105845780635c9b347c116104ae578063673ece9e116104435780636cfd1553116104135780636cfd155314610c875780636d859e1d14610c9a5780636f8cbb0014610ca257806371f62c1b14610cc8575f80fd5b8063673ece9e14610c295780636766735e14610c505780636b2293b814610c585780636b4e3c3714610c60575f80fd5b8063634e93da1161047e578063634e93da14610be25780636390c7b014610bf5578063649a5ec714610c0357806365974a9714610c16575f80fd5b80635c9b347c14610bb95780635cc00adc14610bc05780635d183d9014610bd35780635e623b9014610bdb575f80fd5b80634e6fd6c41161052457806358a0dbcc116104f457806358a0dbcc14610b4c5780635a5c7aad14610b5f5780635a92e23914610b815780635c222bad14610b94575f80fd5b80634e6fd6c414610b0e578063505da2ab14610b1657806355b1ce6114610b1d57806357827c9514610b25575f80fd5b80634b981b731161055f5780634b981b7314610aa45780634c5d7cb214610ab75780634c8d888514610aca5780634cbdc1a914610af0575f80fd5b8063422f8c0a14610a43578063432a6ba314610a6a57806349fac0a514610a88575f80fd5b8063191fe1ed116106705780632cebdccb1161060557806336568abe116105d557806336568abe146109f75780633657077614610a0a5780633ef1017314610a1d578063408b902114610a3b575f80fd5b80632cebdccb146109bd5780632f2ff15d146109d05780633330c4e9146109e357806335adfd7a146109ef575f80fd5b806320aedaa81161064057806320aedaa814610938578063248a9ca31461094b5780632b3e30ff1461098c5780632c4080591461099f575f80fd5b8063191fe1ed146108b75780631bd9cc3b146108bf5780631e522b29146108e05780631e7dbacc146108f5575f80fd5b80630acbc2da116106e65780630ebec7f8116106b65780630ebec7f8146108355780630f14d84c1461083d57806312fde4b7146108455780631314cfec14610890575f80fd5b80630acbc2da146107d75780630b08f110146107fe5780630bcacb80146108065780630ea8b3bf1461082d575f80fd5b806305407d591161072157806305407d591461079d578063073cd639146107b257806309df0a68146107c75780630aa6220b146107cf575f80fd5b806301ffc9a714610747578063022d63fb1461076f5780630516bdd51461078b575b5f80fd5b61075a610755366004614017565b611321565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff9091168152602001610766565b6021545b604051908152602001610766565b60125b60405160ff9091168152602001610766565b6107c56107c0366004614056565b61137c565b005b60185461078f565b6107c561144f565b61078f7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d81565b60175461078f565b61078f7f668144e07fd661d09cc13a56f823a5cecc9ddd81fac15e0f66a794e2048f7eeb81565b60095461078f565b600d5461078f565b60115461078f565b60145468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610766565b61078f7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba81565b61271061078f565b60145462010000900461ffff165b60405161ffff9091168152602001610766565b600c546601000000000000900460ff166107a0565b6015546801000000000000000090046fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff9091168152602001610766565b6107c5610946366004614077565b611464565b61078f610959366004614077565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6107c561099a36600461408e565b6115df565b602d5473ffffffffffffffffffffffffffffffffffffffff1661086b565b6107c56109cb366004614056565b611670565b6107c56109de3660046140d6565b61173a565b60145461ffff166108cd565b61078f61177f565b6107c5610a053660046140d6565b611815565b6107c5610a18366004614128565b61197c565b60055473ffffffffffffffffffffffffffffffffffffffff1661086b565b60125461078f565b6001547801000000000000000000000000000000000000000000000000900460ff166107a0565b60075473ffffffffffffffffffffffffffffffffffffffff1661086b565b60155460405167ffffffffffffffff9091168152602001610766565b6107c5610ab2366004614141565b611a71565b6107c5610ac5366004614077565b611b5b565b601454640100000000900463ffffffff1660405163ffffffff9091168152602001610766565b60065473ffffffffffffffffffffffffffffffffffffffff1661086b565b61dead61086b565b60266107a0565b60085461078f565b61078f7fe7b4cf829186f8c4eae56184e8b39efd89f053da9890202c466f766239b5c06d81565b6107c5610b5a366004614077565b611c32565b61078f610b6d36600461416d565b60020b5f9081526027602052604090205490565b6107c5610b8f366004614077565b611cd6565b6001546301000000900473ffffffffffffffffffffffffffffffffffffffff1661086b565b60036107a0565b6107c5610bce366004614186565b611d35565b60245461078f565b601461078f565b6107c5610bf0366004614141565b611e09565b670de0b6b3a764000061078f565b6107c5610c113660046141a6565b611e1c565b6107c5610c24366004614141565b611e2f565b61078f7f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e8281565b60235461078f565b60135461078f565b61078f7f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd4781565b6107c5610c95366004614141565b611f19565b600f5461078f565b60015477010000000000000000000000000000000000000000000000900460ff166107a0565b600c54640100000000900461ffff166108cd565b6103e861078f565b61078f7f750ec48621e602bf6e87efd3f05aacefc0afaaf02ef76bf2316cd7d61322e13681565b61078f7f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe81565b60015460020b5b60405160029190910b8152602001610766565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1661086b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000610d39565b61086b611fb6565b61075a610dc53660046140d6565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61078f7f98de2855152060acaf991c6c67bcd523513322d493b38e46544cf92e3fee833481565b602a5460020b610d39565b60035473ffffffffffffffffffffffffffffffffffffffff1661086b565b61078f610e793660046141cb565b611ff5565b610e866120b0565b6040805165ffffffffffff938416815292909116602083015201610766565b61078f5f81565b6107c5610eba3660046141fd565b61216d565b6107c5610ecd366004614141565b612246565b6107c5610ee0366004614077565b61233e565b600a6108cd565b600c5461ffff166108cd565b6040805180820182525f80825260209182015281518083018352602554808252602654918301918252835190815290519181019190915201610766565b610f48610f43366004614227565b61241c565b60405161076691905f60a08201905082511515825264ffffffffff602084015116602083015273ffffffffffffffffffffffffffffffffffffffff60408401511660408301526fffffffffffffffffffffffffffffffff60608401511660608301526fffffffffffffffffffffffffffffffff608084015116608083015292915050565b6107c5610fda36600461424f565b6125b2565b6107c5610fed366004614056565b612651565b602b5461078f565b60225461078f565b600b5461078f565b601f5461078f565b6107c5611020366004614128565b612724565b6107c561103336600461424f565b61281b565b600e5461078f565b6107746128ba565b6107c561299a565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920465ffffffffffff16602083015201610766565b60205461078f565b6107c56110d1366004614128565b612a15565b6107c56110e4366004614077565b612b98565b6107c56110f73660046140d6565b612c82565b6107c5612cc3565b601a546fffffffffffffffffffffffffffffffff16610917565b60045461078f565b61113961113436600461416d565b612cd5565b60408051825181526020808401517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16908201529181015160ff1690820152606001610766565b61078f7fe066b764dbc472e706cbc2f8733ab0fcee541dd01136dc6512dca8f6dc61b69281565b6107c56111b436600461426b565b612e17565b60195461078f565b601a5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16610917565b600a5461078f565b600c5462010000900461ffff166108cd565b6107c5611217366004614056565b612efc565b601b5461078f565b600c5467010000000000000090046fffffffffffffffffffffffffffffffff16610917565b60105461078f565b6107c561125f366004614077565b612fcf565b6107c5611272366004614077565b61302e565b60025473ffffffffffffffffffffffffffffffffffffffff1661086b565b6305f5e10061078f565b60156107a0565b6107c56112b4366004614056565b6130c9565b6112cc6112c736600461428e565b61319e565b60408051928352602083019190915201610766565b6107c56112ef3660046141fd565b613260565b6107c56113023660046142be565b613316565b6016546fffffffffffffffffffffffffffffffff16610917565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f314987860000000000000000000000000000000000000000000000000000000014806113765750611376826134c1565b92915050565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba6113a681613557565b6107d08261ffff1611156113e6576040517f75d84c3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff84169081179091556040519081527fa8b582e53aa7e56ef8b22ec0bce77bcc6d5a84dc67addf3c62a5b47c36d2867b906020015b60405180910390a15050565b5f61145981613557565b611461613561565b50565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba61148e81613557565b60188290556040518281527fd07e5161b57fc7f452055a3bcae23ecc325f544868103c9a71c6b04df193eb8b9060200160405180910390a160075473ffffffffffffffffffffffffffffffffffffffff1680158015906115595750828173ffffffffffffffffffffffffffffffffffffffff166393be248b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611533573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155791906142f5565b105b156115da576040517f83fcdc0b0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff8216906383fcdc0b906024015f604051808303815f87803b1580156115c3575f80fd5b505af11580156115d5573d5f803e3d5ffd5b505050505b505050565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba61160981613557565b601580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff84169081179091556040519081527f5ec05a0632169d5040890ed05a37e1db7022f4dfc2b539e6f1041aeb31fc702690602001611443565b7f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd4761169a81613557565b600a61ffff831611156116d9576040517f6ea6625c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff84169081179091556040519081527fe953ca5914d3f55ac19458ae5a4b98a020cad95c44d541292a4e760fcd6931fa90602001611443565b81611771576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61177b828261356d565b5050565b600554604080517f831bcbf300000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff169163831bcbf39160048281019260209291908290030181865afa1580156117ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181091906142f5565b905090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984008215801561187d57507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff8381169116145b15611972577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900465ffffffffffff16811515806118f0575065ffffffffffff8116155b8061190357504265ffffffffffff821610155b15611949576040517f19ca5ebb00000000000000000000000000000000000000000000000000000000815265ffffffffffff821660048201526024015b60405180910390fd5b505080547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff1681555b6115da83836135b6565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba6119a681613557565b6276a700826fffffffffffffffffffffffffffffffff1611156119f5576040517f520780fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffff00000000000000000000000000000000ffffffffffffff166701000000000000006fffffffffffffffffffffffffffffffff8516908102919091179091556040519081527ff76d81d2be950f73678f72d72f43db87fadb708c089f0b87c862eb6893aac0d190602001611443565b7f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe611a9b81613557565b73ffffffffffffffffffffffffffffffffffffffff8216611ae8576040517f1d329f7800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527fff2273eddd5e5d9d299c8bd9483897f648dfaabacdb95125dcf5281dd6d395bf90602001611443565b7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d611b8581613557565b603c821015611bc0576040517f03dfe9a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62015180821115611bfd576040517f03dfe9a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a8290556040518281527f624438ace294be38e1ed9c4b53ec18515edb92875b67d05a480c606c93bc804c90602001611443565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba611c5c81613557565b611c686003600a614452565b821115611ca1576040517feeba27b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d8290556040518281527fb19591e132f0a5c74cac73f83540b5c437c10367127b6e8db259300ce5572a2f90602001611443565b7f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e82611d0081613557565b60178290556040518281527feafeec4074da8b6e28136d3cc33c0971e16235db869ed63e3701fa26443ca69990602001611443565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba611d5f81613557565b600f8260ff161115611d9d576040517fcbd398d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff16660100000000000060ff8516908102919091179091556040519081527f73f7f1062692eb20ac6583d40a62080e32f00b8bd04d01c5d38c4ff5c7b1ad5590602001611443565b5f611e1381613557565b61177b8261360f565b5f611e2681613557565b61177b8261368e565b7f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe611e5981613557565b73ffffffffffffffffffffffffffffffffffffffff8216611ea6576040517f5012727100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f9a7d81fd4b57b7b53be0734695fc19f09380fca8b02edfc9cc4ba61de4daa56990602001611443565b7f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe611f4381613557565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f82932c2bbe344307ce4c4d0134c032fd62927625f9603697984f4f2668bc1ddc90602001611443565b5f6118107feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f02cc0d9f0000000000000000000000000000000000000000000000000000000081526001600482015260248101849052604481018390526fffffffffffffffffffffffffffffffff821660648201525f907310abe072ace566266e7e329ea040e35a3107377b906302cc0d9f90608401602060405180830381865af4158015612084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a891906142f5565b949350505050565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401545f907a010000000000000000000000000000000000000000000000000000900465ffffffffffff167feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400811580159061213257504265ffffffffffff831610155b61213d575f80612164565b600181015474010000000000000000000000000000000000000000900465ffffffffffff16825b92509250509091565b7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d61219781613557565b6040517fe207b951000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff8416602482015273ffffffffffffffffffffffffffffffffffffffff831660448201525f606482015273d07025f97504ea8dda1e8c40b04bbc11c3a960229063e207b951906084015b5f6040518083038186803b158015612234575f80fd5b505af41580156115d5573d5f803e3d5ffd5b7f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe61227081613557565b73ffffffffffffffffffffffffffffffffffffffff82166122bd576040517fbddceb9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90602001611443565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba61236881613557565b6123746015600a614452565b82116123ac576040517f881cf3a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095482106123e7576040517f881cf3a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088290556040518281527f9b05f1de07b3d0f9b22c747b463fe2018d4bf5016aa39cc0aa81c18cd494025890602001611443565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152600283900b5f818152602760205260408082205490517f313eb2b80000000000000000000000000000000000000000000000000000000081526004810193909352602483018190529173d07025f97504ea8dda1e8c40b04bbc11c3a960229063313eb2b890604401602060405180830381865af41580156124c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ed91906142f5565b5f8181526028602052604090208054919250908590811061251057612510614460565b5f9182526020918290206040805160a081018252600293909302909101805460ff811615158452610100810464ffffffffff1694840194909452660100000000000090930473ffffffffffffffffffffffffffffffffffffffff16908201526001909101546fffffffffffffffffffffffffffffffff808216606084015270010000000000000000000000000000000090910416608082015295945050505050565b7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d6125dc81613557565b6040517f6c455f0f0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015273d07025f97504ea8dda1e8c40b04bbc11c3a9602290636c455f0f9060640161221e565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba61267b81613557565b6127108261ffff1611156126bb576040517f13bc80e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8516908102919091179091556040519081527f0399aa81c69e33acc2ff42d0f7a0809e6bf4c10ff3c3a7e040b12fedc14602f290602001611443565b7f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e8261274e81613557565b6015546fffffffffffffffffffffffffffffffff68010000000000000000909104811690831610156127ac576040517fa2b1a11700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff84169081179091556040519081527fce42c6e12a1d57482141390156e9bbcd01fd4c1fe51ae1c3fe78b4113d21896390602001611443565b7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d61284581613557565b6040517f50b22dfc0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015273d07025f97504ea8dda1e8c40b04bbc11c3a96022906350b22dfc9060640161221e565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401545f907feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400907a010000000000000000000000000000000000000000000000000000900465ffffffffffff16801580159061293c57504265ffffffffffff8216105b61296d5781547a010000000000000000000000000000000000000000000000000000900465ffffffffffff16612993565b600182015474010000000000000000000000000000000000000000900465ffffffffffff165b9250505090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff16338114612a0d576040517fc22c8022000000000000000000000000000000000000000000000000000000008152336004820152602401611940565b6114616136f6565b7f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e82612a3f81613557565b6016546fffffffffffffffffffffffffffffffff9081169083161115612a91576040517f74c58a9c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154612abe907801000000000000000000000000000000000000000000000000900460ff16600a614452565b6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161015612b1b576040517f74c58a9c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffff00000000000000000000000000000000ffffffffffffffff16680100000000000000006fffffffffffffffffffffffffffffffff8516908102919091179091556040519081527f3a81bf5123d4577fe6be67c01087d160a2d7ddbba8b4d396bf6957de6e1e893c90602001611443565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba612bc281613557565b6008548211612bfd576040517fee8c78b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c096015600a614452565b612c1490606461448d565b821115612c4d576040517fee8c78b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098290556040518281527fb0f01601e93ad2a8fc4106e97567bc037aa114741705be9d80570fd2afa7bf1b90602001611443565b81612cb9576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61177b8282613825565b5f612ccd81613557565b611461613868565b604080516060810182525f8082526020820181905291810191909152600282900b5f818152602760205260408082205490517f313eb2b8000000000000000000000000000000000000000000000000000000008152600481019390935260248301529073d07025f97504ea8dda1e8c40b04bbc11c3a960229063313eb2b890604401602060405180830381865af4158015612d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d9691906142f5565b5f908152602960209081526040918290208251606081018452815481526001909101547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116928201929092527f010000000000000000000000000000000000000000000000000000000000000090910460ff16918101919091529392505050565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba612e4181613557565b612e5060146305f5e1006144a4565b8263ffffffff161115612e8f576040517f372aeb2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff1664010000000063ffffffff8516908102919091179091556040519081527face88eedba0a5ba6b6fcfe2df80f489fe0639762a33c524f1b6a29c5c3f7e05890602001611443565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba612f2681613557565b6107d08261ffff161115612f66576040517fed2ce17500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8516908102919091179091556040519081527fccd0aa7dd2f8665208195dd022d8b0ce3c6076b33033514270a19491eedb032490602001611443565b7f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd47612ff981613557565b600e8290556040518281527f35a4d8a305f73f3354715f0ebc63d113a037bcb0e332f8d2af2efe1299a9b3f190602001611443565b7f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd4761305881613557565b6107d0821115613094576040517fb5cfeda500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8290556040518281527fa650ab53b3e7ddfaaa47b234ada3fd147ea6084b35331a8853b9a018817475be90602001611443565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba6130f381613557565b6127108261ffff161115613133576040517f8008fe3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000061ffff8516908102919091179091556040519081527fde95bed2f1e627bd9e2587c07ef95116f15d7139a7bd0989f311cc4fa2a9062a90602001611443565b6040517f35e33e9300000000000000000000000000000000000000000000000000000000815260016004820152602481018490526fffffffffffffffffffffffffffffffff8084166044830152821660648201525f9081907310abe072ace566266e7e329ea040e35a3107377b906335e33e93906084016040805180830381865af415801561322f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325391906144dc565b915091505b935093915050565b7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d61328a81613557565b6040517fe207b9510000000000000000000000000000000000000000000000000000000081526001600482018190526fffffffffffffffffffffffffffffffff8516602483015273ffffffffffffffffffffffffffffffffffffffff84166044830152606482015273d07025f97504ea8dda1e8c40b04bbc11c3a960229063e207b9519060840161221e565b7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba61334081613557565b61334986613872565b600f5561335585613872565b601155831580159061336657508584105b1561339d576040517f6b2bb0c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133a684613872565b60105582158015906133b757508483105b156133ee576040517f6b2bb0c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133f783613872565b6012558282138061340f575061340c846144fe565b82125b8061342e575061342260026127106144a4565b61342b906144fe565b82125b15613465576040517f7583c7dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6013829055604080518781526020810187905290810185905260608101849052608081018390527fa77f8df17ffc72796fd6a46cdb0cc860f538ce2d07355383e7b2f2bc3593690f9060a00160405180910390a1505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061137657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614611376565b61146181336138d4565b61356b5f8061397a565b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546135a681613557565b6135b08383613b12565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314613605576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115da8282613c12565b5f6136186128ba565b61362142613cb5565b61362b9190614534565b90506136378282613d00565b60405165ffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff8316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61369882613dba565b6136a142613cb5565b6136ab9190614534565b90506136b7828261397a565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b9101611443565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400805473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900465ffffffffffff1680158061376657504265ffffffffffff821610155b156137a7576040517f19ca5ebb00000000000000000000000000000000000000000000000000000000815265ffffffffffff82166004820152602401611940565b6137ee5f6137e97feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b613c12565b506137f95f83613b12565b505081547fffffffffffff00000000000000000000000000000000000000000000000000001690915550565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461385e81613557565b6135b08383613c12565b61356b5f80613d00565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156138d0576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401611940565b5090565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661177b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401611940565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401547feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400907a010000000000000000000000000000000000000000000000000000900465ffffffffffff168015613a8c574265ffffffffffff82161015613a63576001820154825479ffffffffffffffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000090910465ffffffffffff167a01000000000000000000000000000000000000000000000000000002178255613a8c565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600101805473ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000065ffffffffffff9485160279ffffffffffffffffffffffffffffffffffffffffffffffffffff16177a0100000000000000000000000000000000000000000000000000009290931691909102919091179055565b5f7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840083613c08575f613b787feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614613bc5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b6120a88484613e08565b5f7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840083158015613c7b57507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff8481169116145b15613cab576001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b6120a88484613f26565b5f65ffffffffffff8211156138d0576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526030600482015260248101839052604401611940565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840080547401000000000000000000000000000000000000000065ffffffffffff84811682027fffffffffffff0000000000000000000000000000000000000000000000000000841673ffffffffffffffffffffffffffffffffffffffff88161717845591041680156135b0576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f80613dc46128ba565b90508065ffffffffffff168365ffffffffffff1611613dec57613de78382614552565b613e01565b613e0165ffffffffffff841662069780614002565b9392505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16613f1d575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055613eb93390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611376565b5f915050611376565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615613f1d575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611376565b5f8183106140105781613e01565b5090919050565b5f60208284031215614027575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613e01575f80fd5b5f60208284031215614066575f80fd5b813561ffff81168114613e01575f80fd5b5f60208284031215614087575f80fd5b5035919050565b5f6020828403121561409e575f80fd5b813567ffffffffffffffff81168114613e01575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611461575f80fd5b5f80604083850312156140e7575f80fd5b8235915060208301356140f9816140b5565b809150509250929050565b80356fffffffffffffffffffffffffffffffff81168114614123575f80fd5b919050565b5f60208284031215614138575f80fd5b613e0182614104565b5f60208284031215614151575f80fd5b8135613e01816140b5565b8035600281900b8114614123575f80fd5b5f6020828403121561417d575f80fd5b613e018261415c565b5f60208284031215614196575f80fd5b813560ff81168114613e01575f80fd5b5f602082840312156141b6575f80fd5b813565ffffffffffff81168114613e01575f80fd5b5f805f606084860312156141dd575f80fd5b83359250602084013591506141f460408501614104565b90509250925092565b5f806040838503121561420e575f80fd5b61421783614104565b915060208301356140f9816140b5565b5f8060408385031215614238575f80fd5b6142418361415c565b946020939093013593505050565b5f8060408385031215614260575f80fd5b8235614217816140b5565b5f6020828403121561427b575f80fd5b813563ffffffff81168114613e01575f80fd5b5f805f606084860312156142a0575f80fd5b833592506142b060208501614104565b91506141f460408501614104565b5f805f805f60a086880312156142d2575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f60208284031215614305575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001815b6001841115613258578085048111156143585761435861430c565b600184161561436657908102905b60019390931c92800261433d565b5f8261438257506001611376565b8161438e57505f611376565b81600181146143a457600281146143ae576143ca565b6001915050611376565b60ff8411156143bf576143bf61430c565b50506001821b611376565b5060208310610133831016604e8410600b84101617156143ed575081810a611376565b6144187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614339565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561444a5761444a61430c565b029392505050565b5f613e0160ff841683614374565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176113765761137661430c565b5f826144d7577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f80604083850312156144ed575f80fd5b505080516020909101519092909150565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361452e5761452e61430c565b505f0390565b65ffffffffffff81811683821601908111156113765761137661430c565b65ffffffffffff82811682821603908111156113765761137661430c56fea2646970667358221220f6606e124a467304cfab603434a535d16b6d9f5f2087bd1cd0b97d88c9b2311564736f6c634300081a0033", - "nonce": "0x3b", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6c775a4620adb9ae2ce02b047313cbbd87a70694cb78b4ee294b455d4929e5d4", - "transactionType": "CREATE", - "contractName": "UsdnProtocolImpl", - "contractAddress": "0x46c0adb73cb5f167e577197294e285fd5a45f031", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x673a3c", - "value": "0x0", - "input": "0x6080604052348015600e575f80fd5b5046600103604f5760405162461bcd60e51b815260206004820152600a6024820152691b9bc81b585a5b9b995d60b21b604482015260640160405180910390fd5b615d888061005c5f395ff3fe6080604052600436106103ac575f3560e01c80637d5ac4b7116101e6578063a63563cf1161010c578063cc8463c81161009f578063d602b9fd1161006e578063d602b9fd14610d4b578063da86024114610d5f578063dded0c4e14610d92578063de2a84ba14610db1576103ac565b8063cc8463c814610c8d578063cefc142914610ca1578063cf6eefb714610cb5578063d547741f14610d2c576103ac565b8063b3042999116100db578063b304299914610c1c578063b8ef222a14610c2f578063ba08c8eb14610c4e578063c713b6d814610c61576103ac565b8063a63563cf14610b11578063ab493b1e14610b30578063acea51be14610b4f578063b27ddda714610bfd576103ac565b806393dc7ca0116101845780639874eccc116101535780639874eccc14610a99578063a08b58df14610ab8578063a1eda53c14610acb578063a217fddf14610afe576103ac565b806393dc7ca014610a0357806394323ce314610a3457806395a9292e14610a535780639736661814610a86576103ac565b806384ef8ffc116101c057806384ef8ffc146108f6578063874cf8e6146109605780638da5cb5b1461097f57806391d1485414610993576103ac565b80637d5ac4b714610891578063806b4873146108c457806381ebaa8a146108d7576103ac565b806336568abe116102d6578063673ece9e1161026957806372fcfbf81161023857806372fcfbf8146108185780637aeabd991461082c5780637d17f76d1461084b5780637d58951d1461087e576103ac565b8063673ece9e1461075157806367a04af0146107845780636b4e3c37146107a5578063720950ac146107d8576103ac565b806357827c95116102a557806357827c95146106a6578063612008f4146106d9578063634e93da14610713578063649a5ec714610732576103ac565b806336568abe1461063657806342ff0e59146106555780634c1877651461066857806355e0d7cc14610687576103ac565b8063132cd1121161034e57806322cc24221161031d57806322cc24221461058c578063248a9ca3146105ab5780632f2ff15d146105f8578063313eb2b814610617576103ac565b8063132cd1121461050657806316989188146105255780631db3b6dd14610552578063216676d714610579576103ac565b80630aa6220b1161038a5780630aa6220b1461044b5780630acbc2da1461045f5780630bcacb80146104a05780631314cfec146104d3576103ac565b806301ffc9a7146103dc578063022d63fb146104105780630239040b14610438575b3480156103b7575f80fd5b50602d546103da9073ffffffffffffffffffffffffffffffffffffffff16610dc4565b005b3480156103e7575f80fd5b506103fb6103f63660046143a6565b610de7565b60405190151581526020015b60405180910390f35b34801561041b575f80fd5b50620697805b60405165ffffffffffff9091168152602001610407565b6103fb610446366004614461565b610e42565b348015610456575f80fd5b506103da610efe565b34801561046a575f80fd5b506104927f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d81565b604051908152602001610407565b3480156104ab575f80fd5b506104927f668144e07fd661d09cc13a56f823a5cecc9ddd81fac15e0f66a794e2048f7eeb81565b3480156104de575f80fd5b506104927fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba81565b348015610511575f80fd5b506103da6105203660046144dd565b610f13565b348015610530575f80fd5b5061054461053f3660046144dd565b611044565b604051610407929190614652565b34801561055d575f80fd5b50610566611119565b60405160029190910b8152602001610407565b6103fb61058736600461471b565b6111ac565b348015610597575f80fd5b506104926105a63660046147cd565b611271565b3480156105b6575f80fd5b506104926105c5366004614804565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b348015610603575f80fd5b506103da61061236600461481b565b611326565b348015610622575f80fd5b5061049261063136600461484c565b61136b565b348015610641575f80fd5b506103da61065036600461481b565b6113c8565b6103fb610663366004614461565b61152f565b348015610673575f80fd5b50610566610682366004614876565b611599565b348015610692575f80fd5b506103da6106a13660046148a1565b61163e565b3480156106b1575f80fd5b506104927fe7b4cf829186f8c4eae56184e8b39efd89f053da9890202c466f766239b5c06d81565b3480156106e4575f80fd5b506106f86106f3366004614876565b6116d8565b60408051938452602084019290925290820152606001610407565b34801561071e575f80fd5b506103da61072d3660046144dd565b61178e565b34801561073d575f80fd5b506103da61074c3660046148cc565b6117a1565b34801561075c575f80fd5b506104927f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e8281565b6107976107923660046148f1565b6117b4565b6040516104079291906149b5565b3480156107b0575f80fd5b506104927f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd4781565b3480156107e3575f80fd5b506107f76107f2366004614b1b565b6118fc565b6040516fffffffffffffffffffffffffffffffff9091168152602001610407565b348015610823575f80fd5b5061056661199c565b348015610837575f80fd5b50610492610846366004614876565b6119ef565b348015610856575f80fd5b506104927f750ec48621e602bf6e87efd3f05aacefc0afaaf02ef76bf2316cd7d61322e13681565b61049261088c366004614b61565b611a94565b34801561089c575f80fd5b506104927f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe81565b6103fb6108d2366004614461565b611b46565b3480156108e2575f80fd5b506107f76108f1366004614bba565b611bb0565b348015610901575f80fd5b507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610407565b34801561096b575f80fd5b5061049261097a3660046147cd565b611c47565b34801561098a575f80fd5b5061093b611cba565b34801561099e575f80fd5b506103fb6109ad36600461481b565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b348015610a0e575f80fd5b50610a22610a1d366004614bba565b611cf9565b60405160ff9091168152602001610407565b348015610a3f575f80fd5b506103da610a4e366004614be5565b611d90565b348015610a5e575f80fd5b506104927f98de2855152060acaf991c6c67bcd523513322d493b38e46544cf92e3fee833481565b6103da610a94366004614d22565b6129e7565b348015610aa4575f80fd5b506103da610ab3366004614d99565b612a81565b6103fb610ac6366004614dc5565b612b89565b348015610ad6575f80fd5b50610adf612c97565b6040805165ffffffffffff938416815292909116602083015201610407565b348015610b09575f80fd5b506104925f81565b348015610b1c575f80fd5b50610492610b2b3660046147cd565b612d54565b348015610b3b575f80fd5b50610492610b4a366004614e5c565b612dc7565b348015610b5a575f80fd5b50610b6e610b69366004614e98565b612e5f565b6040516104079291905f60c08201905083511515825264ffffffffff602085015116602083015273ffffffffffffffffffffffffffffffffffffffff60408501511660408301526fffffffffffffffffffffffffffffffff60608501511660608301526fffffffffffffffffffffffffffffffff608085015116608083015260ff831660a08301529392505050565b348015610c08575f80fd5b50610492610c173660046147cd565b612f1d565b610492610c2a366004614edc565b612f90565b348015610c3a575f80fd5b50610492610c493660046147cd565b613040565b6103fb610c5c366004614461565b6130b3565b348015610c6c575f80fd5b50610c80610c7b3660046144dd565b61311d565b6040516104079190614f1e565b348015610c98575f80fd5b50610421613225565b348015610cac575f80fd5b506103da613305565b348015610cc0575f80fd5b507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920465ffffffffffff16602083015201610407565b348015610d37575f80fd5b506103da610d4636600461481b565b613380565b348015610d56575f80fd5b506103da6133c1565b348015610d6a575f80fd5b506104927fe066b764dbc472e706cbc2f8733ab0fcee541dd01136dc6512dca8f6dc61b69281565b348015610d9d575f80fd5b50610566610dac366004614f2d565b6133d3565b6103fb610dbf366004614f87565b6134a4565b365f80375f80365f845af43d5f803e808015610dde573d5ff35b3d5ffd5b505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f31498786000000000000000000000000000000000000000000000000000000001480610e3c5750610e3c8261355c565b92915050565b5f610e4b6135f2565b610e5361362c565b6040517f40afeead00000000000000000000000000000000000000000000000000000000815273ea9d32e35d0c7f728d6ea54f471d07471763a790906340afeead90610eac90600190899089908990899060040161523a565b602060405180830381865af4158015610ec7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eeb919061529c565b9050610ef660015f55565b949350505050565b5f610f088161366d565b610f10613677565b50565b6040515f90610f97907fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b167fadc8ceae02bcb0c733aa00f7b359ef9c89e6339aabc368dbaf2f4a78e4b92fad17907e053164fdfb50df659af58e58344f55561f97b8f44967c2fba01f04d9f2756f90602001918252602082015260400190565b6040516020818303038152906040528051906020012090507ff26f1182a770fd030fb7ab0ba9470fc850b9a8c780127bc604c4479f5e40ae305f1b8114610fdc575f80fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16476040515f6040518083038185875af1925050503d805f8114611032576040519150601f19603f3d011682016040523d82523d5f602084013e611037565b606091505b5050905080610de2575f80fd5b6040517fca5d3adc0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152606090819073d07025f97504ea8dda1e8c40b04bbc11c3a960229063ca5d3adc906044015f60405180830381865af41580156110cb573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111109190810190615476565b91509150915091565b6040517fce3f293b000000000000000000000000000000000000000000000000000000008152600160048201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063ce3f293b906024015b602060405180830381865af4158015611183573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a79190615540565b905090565b5f6111b56135f2565b6111bd61362c565b6040517fcb89b7d4000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b59063cb89b7d49061121c906001908c908c908c908c908c908c908c9060040161555b565b602060405180830381865af4158015611237573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125b919061529c565b905061126660015f55565b979650505050505050565b6040517f45e8b1dd000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff8084166024830152821660448201525f9073d07025f97504ea8dda1e8c40b04bbc11c3a96022906345e8b1dd906064015b602060405180830381865af41580156112fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131f91906155ee565b9392505050565b8161135d576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113678282613681565b5050565b6040517f313eb2b8000000000000000000000000000000000000000000000000000000008152600283900b6004820152602481018290525f9073d07025f97504ea8dda1e8c40b04bbc11c3a960229063313eb2b8906044016112e0565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984008215801561143057507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff8381169116145b15611525577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900465ffffffffffff16811515806114a3575065ffffffffffff8116155b806114b657504265ffffffffffff821610155b156114fc576040517f19ca5ebb00000000000000000000000000000000000000000000000000000000815265ffffffffffff821660048201526024015b60405180910390fd5b505080547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff1681555b610de283836136ca565b5f6115386135f2565b61154061362c565b6040517f06c0bc72000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b5906306c0bc7290610eac90600190899089908990899060040161523a565b6040517f06d647ec000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff821660248201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d01906306d647ec90604401602060405180830381865af415801561161a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190615540565b6116466135f2565b61164e61362c565b6040517ff0145c0f00000000000000000000000000000000000000000000000000000000815273619c25f15edd45e4bcc9ad4be555000ac879ef559063f0145c0f906116a3906001908690869060040161562a565b5f6040518083038186803b1580156116b9575f80fd5b505af41580156116cb573d5f803e3d5ffd5b5050505061136760015f55565b6040517fe08b5893000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff821660248201525f908190819073d07025f97504ea8dda1e8c40b04bbc11c3a960229063e08b589390604401606060405180830381865af415801561175d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117819190615662565b9250925092509193909250565b5f6117988161366d565b61136782613723565b5f6117ab8161366d565b611367826137a2565b604080516060810182525f808252602082018190529181018290526117d76135f2565b6117df61362c565b6040805160e08101825233815273ffffffffffffffffffffffffffffffffffffffff8a811660208301528916818301526fffffffffffffffffffffffffffffffff808d1660608301528b16608082015260155467ffffffffffffffff1660a082015260ff881660c082015290517f20b71adf00000000000000000000000000000000000000000000000000000000815273ea9d32e35d0c7f728d6ea54f471d07471763a790906320b71adf906118a29060019085908b908b908b9060040161568d565b608060405180830381865af41580156118bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e1919061577c565b92509250506118ef60015f55565b9850989650505050505050565b6040517f12929a690000000000000000000000000000000000000000000000000000000081525f9073ea6c2644d67546b2dad7645372e2355b18ac8d01906312929a6990611954908890889088908890600401615800565b602060405180830381865af415801561196f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611993919061582e565b95945050505050565b6040517f572ae268000000000000000000000000000000000000000000000000000000008152600160048201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063572ae26890602401611168565b6040517fd21824e9000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff821660248201525f907310abe072ace566266e7e329ea040e35a3107377b9063d21824e990604401602060405180830381865af4158015611a70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c91906155ee565b5f611a9d6135f2565b611aa561362c565b6040517ffc9ad0dd00000000000000000000000000000000000000000000000000000000815273619c25f15edd45e4bcc9ad4be555000ac879ef559063fc9ad0dd90611afc90600190889088908890600401615849565b602060405180830381865af4158015611b17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3b91906155ee565b905061131f60015f55565b5f611b4f6135f2565b611b5761362c565b6040517f7e4c151200000000000000000000000000000000000000000000000000000000815273ea9d32e35d0c7f728d6ea54f471d07471763a79090637e4c151290610eac90600190899089908990899060040161523a565b6040517fb99fa9fd00000000000000000000000000000000000000000000000000000000815260016004820152600282900b60248201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063b99fa9fd90604401602060405180830381865af4158015611c23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c919061582e565b6040517fbd2c68b3000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff8084166024830152821660448201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063bd2c68b3906064016112e0565b5f6111a77feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fe289dab900000000000000000000000000000000000000000000000000000000815260016004820152600282900b60248201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063e289dab990604401602060405180830381865af4158015611d6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190615877565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015611dda5750825b90505f8267ffffffffffffffff166001148015611df65750303b155b905081158015611e04575080155b15611e3b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315611e9c5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b611ea65f33613811565b611eae5f8055565b611ef87f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe7fe066b764dbc472e706cbc2f8733ab0fcee541dd01136dc6512dca8f6dc61b692613823565b611f427f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d7fe7b4cf829186f8c4eae56184e8b39efd89f053da9890202c466f766239b5c06d613823565b611f8c7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba7f668144e07fd661d09cc13a56f823a5cecc9ddd81fac15e0f66a794e2048f7eeb613823565b611fd67f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e827f750ec48621e602bf6e87efd3f05aacefc0afaaf02ef76bf2316cd7d61322e136613823565b6120207f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd477f98de2855152060acaf991c6c67bcd523513322d493b38e46544cf92e3fee8334613823565b61204d7f112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe885f0151613864565b5061207c7f02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d8860200151613864565b506120ab7fa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba8860400151613864565b506120da7f2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e828860600151613864565b506121097f5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd478860800151613864565b506121166015600a6159e0565b6121259064e8d4a510006159ee565b6008556121346015600a6159e0565b61213f90600a615a01565b600955611518600a5560c8600b55600c80547fffffffffffffffffff00000000000000000000000000000000000000000000001669069780021f400320000117905561218d60026003615a18565b61219890600a6159e0565b6121a390600c615a01565b600d55670de0b6b3a7640000600e556101f4600f8190556102586010819055601191909155601290815561022660135560148054660f4240000400047fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000091821617909155601580549091166706f05b59d3b2000017905561222690600490615a18565b61223190600a6159e0565b61223c906003615a01565b6001602101819055508d73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b291906155ee565b15612301576040517ff701733000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f1660048201526024016114f3565b73ffffffffffffffffffffffffffffffffffffffff881661234e576040517fbddceb9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8d600180015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c60016002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff168e73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612421573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124459190615877565b60ff161415806124c85750601260ff168d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561249e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c29190615877565b60ff1614155b156124ff576040517f1d6ebfbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8d73ffffffffffffffffffffffffffffffffffffffff1663a79ebd606040518163ffffffff1660e01b8152600401602060405180830381865afa158015612548573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061256c91906155ee565b60049081556001805473ffffffffffffffffffffffffffffffffffffffff8f16630100000081027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90921691909117909155604080517f313ce56700000000000000000000000000000000000000000000000000000000815290515f9363313ce567928082019260209290918290030181865afa15801561260f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126339190615877565b600180547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000060ff841690810291909117909155909150600311156126c2576040517f1158dc9500000000000000000000000000000000000000000000000000000000815260ff821660048201526024016114f3565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16908117909155604080517ff0141d8400000000000000000000000000000000000000000000000000000000815290515f929163f0141d849160048083019260209291908290030181865afa158015612759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061277d9190615877565b90508060015f0160186101000a81548160ff021916908360ff1602179055508b60016005015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a60015f015f6101000a81548162ffffff021916908360020b62ffffff16021790555089600160130160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004816128539190615a18565b61285e90600a6159e0565b61286a90612767615a01565b601580546fffffffffffffffffffffffffffffffff9290921668010000000000000000027fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9092169190911790556128c3600382615a18565b6128ce90600a6159e0565b6128da906103f1615a01565b601680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905561292682600a6159e0565b612931906002615a01565b6018555050602d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905583156129d75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b6129ef613964565b6040517f73eaec2c00000000000000000000000000000000000000000000000000000000815273d07025f97504ea8dda1e8c40b04bbc11c3a96022906373eaec2c90612a4a9060019089908990899089908990600401615a31565b5f6040518083038186803b158015612a60575f80fd5b505af4158015612a72573d5f803e3d5ffd5b50505050505060015f55505050565b604080517fc4987f0a675d8f23f128d3f04e0a495717be95cd454dca16c1bd2651c50fd2f960208201527f53164fdfb50df659af58e58344f55561f97b8f44967c2fba01f04d9f2756faa033831b18918101919091527ff9af1bf5b29b9eb66a7160f74afebaa95b58f2edbb21ffa889896156dc47f6ab60608201525f906080016040516020818303038152906040528051906020012090507f6a76d3b58b2abccaa4b80531b11817c84920629ac6b3db184892c22c810c782a5f1b8114612b47575f80fd5b610de282612b6b73ffffffffffffffffffffffffffffffffffffffff86163061399d565b73ffffffffffffffffffffffffffffffffffffffff861691906139d0565b5f612b926135f2565b612b9a61362c565b5f60405180608001604052808a803603810190612bb79190614e98565b8152602001896fffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815250905073ea9d32e35d0c7f728d6ea54f471d07471763a7906336b200df6001838888886040518663ffffffff1660e01b8152600401612c4c959493929190615a92565b602060405180830381865af4158015612c67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c8b919061529c565b91505061126660015f55565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401545f907a010000000000000000000000000000000000000000000000000000900465ffffffffffff167feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984008115801590612d1957504265ffffffffffff831610155b612d24575f80612d4b565b600181015474010000000000000000000000000000000000000000900465ffffffffffff16825b92509250509091565b6040517f1d913c1f000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff8084166024830152821660448201525f907310abe072ace566266e7e329ea040e35a3107377b90631d913c1f906064016112e0565b6040517f89fa87580000000000000000000000000000000000000000000000000000000081525f9073ea6c2644d67546b2dad7645372e2355b18ac8d01906389fa875890612e2090600190889088908890600401615b41565b602060405180830381865af4158015612e3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef691906155ee565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040517f9fcd1a770000000000000000000000000000000000000000000000000000000081525f9073ea6c2644d67546b2dad7645372e2355b18ac8d0190639fcd1a7790612ede906001908790600401615b8e565b60c060405180830381865af4158015612ef9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111109190615bb9565b6040517f24a32ab8000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff8084166024830152821660448201525f907310abe072ace566266e7e329ea040e35a3107377b906324a32ab8906064016112e0565b5f612f996135f2565b612fa161362c565b6040517f0ff3fb8e00000000000000000000000000000000000000000000000000000000815273619c25f15edd45e4bcc9ad4be555000ac879ef5590630ff3fb8e90612ff69060019087908790600401615c47565b602060405180830381865af4158015613011573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061303591906155ee565b9050610e3c60015f55565b6040517fe86335e4000000000000000000000000000000000000000000000000000000008152600160048201526fffffffffffffffffffffffffffffffff8084166024830152821660448201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d019063e86335e4906064016112e0565b5f6130bc6135f2565b6130c461362c565b6040517f069d5da9000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b59063069d5da990610eac90600190899089908990899060040161523a565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526040517f690b11eb0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015273d07025f97504ea8dda1e8c40b04bbc11c3a960229063690b11eb9060440161018060405180830381865af4158015613201573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190615c6f565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401545f907feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400907a010000000000000000000000000000000000000000000000000000900465ffffffffffff1680158015906132a757504265ffffffffffff8216105b6132d85781547a010000000000000000000000000000000000000000000000000000900465ffffffffffff166132fe565b600182015474010000000000000000000000000000000000000000900465ffffffffffff165b9250505090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff16338114613378576040517fc22c80220000000000000000000000000000000000000000000000000000000081523360048201526024016114f3565b610f10613a19565b816133b7576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113678282613b48565b5f6133cb8161366d565b610f10613b8b565b6040517f85aeba290000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8616600482015260248101859052604481018490528251606482015260208301516084820152600282900b60a48201525f9073ea6c2644d67546b2dad7645372e2355b18ac8d01906385aeba299060c401602060405180830381865af4158015613476573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061349a9190615540565b9695505050505050565b5f6134ad6135f2565b6134b561362c565b6040517f53b4006b000000000000000000000000000000000000000000000000000000008152739e87120d47bd6beeee46cb90e187d09b5b5a20b5906353b4006b90613512906001908b908b908b908b908b908b90600401615c8a565b602060405180830381865af415801561352d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613551919061529c565b905061349a60015f55565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610e3c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610e3c565b5f5461362a576040517ff65383af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60025f5403613667576040517fdb2b9f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f55565b610f108133613b95565b61362a5f80613c3b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546136ba8161366d565b6136c48383613864565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314613719576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610de28282613dd3565b5f61372c613225565b61373542613e76565b61373f9190615d16565b905061374b8282613ec5565b60405165ffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff8316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f6137ac82613f7f565b6137b542613e76565b6137bf9190615d16565b90506137cb8282613c3b565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b613819613fc6565b611367828261402d565b8161385a576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136782826140f6565b5f7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984008361395a575f6138ca7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614613917576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b610ef68484614197565b5f541561362a576040517f40553a1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716613a10576390b8ec185f526004601cfd5b5f603452505050565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400805473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900465ffffffffffff16801580613a8957504265ffffffffffff821610155b15613aca576040517f19ca5ebb00000000000000000000000000000000000000000000000000000000815265ffffffffffff821660048201526024016114f3565b613b115f613b0c7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b613dd3565b50613b1c5f83613864565b505081547fffffffffffff00000000000000000000000000000000000000000000000000001690915550565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154613b818161366d565b6136c48383613dd3565b61362a5f80613ec5565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611367576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016114f3565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401547feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400907a010000000000000000000000000000000000000000000000000000900465ffffffffffff168015613d4d574265ffffffffffff82161015613d24576001820154825479ffffffffffffffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000090910465ffffffffffff167a01000000000000000000000000000000000000000000000000000002178255613d4d565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b50600101805473ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000065ffffffffffff9485160279ffffffffffffffffffffffffffffffffffffffffffffffffffff16177a0100000000000000000000000000000000000000000000000000009290931691909102919091179055565b5f7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840083158015613e3c57507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff8481169116145b15613e6c576001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b610ef684846142b5565b5f65ffffffffffff821115613ec1576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260306004820152602481018390526044016114f3565b5090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840080547401000000000000000000000000000000000000000065ffffffffffff84811682027fffffffffffff0000000000000000000000000000000000000000000000000000841673ffffffffffffffffffffffffffffffffffffffff88161717845591041680156136c4576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f80613f89613225565b90508065ffffffffffff168365ffffffffffff1611613fb157613fac8382615d34565b61131f565b61131f65ffffffffffff841662069780614391565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661362a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614035613fc6565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840073ffffffffffffffffffffffffffffffffffffffff82166140a5576040517fc22c80220000000000000000000000000000000000000000000000000000000081525f60048201526024016114f3565b805479ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000065ffffffffffff8516021781556136c45f83613864565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f61414f845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166142ac575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556142483390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e3c565b5f915050610e3c565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156142ac575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e3c565b5f81831061439f578161131f565b5090919050565b5f602082840312156143b6575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461131f575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610f10575f80fd5b5f8083601f840112614416575f80fd5b50813567ffffffffffffffff81111561442d575f80fd5b602083019150836020828501011115614444575f80fd5b9250929050565b5f6040828403121561445b575f80fd5b50919050565b5f805f8060608587031215614474575f80fd5b843561447f816143e5565b9350602085013567ffffffffffffffff81111561449a575f80fd5b6144a687828801614406565b909450925050604085013567ffffffffffffffff8111156144c5575f80fd5b6144d18782880161444b565b91505092959194509250565b5f602082840312156144ed575f80fd5b813561131f816143e5565b600b811061452d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b61453c8282516144f8565b6020810151614554602084018264ffffffffff169052565b50604081015161457c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608101516145a4606084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060808101516145c0608084018267ffffffffffffffff169052565b5060a08101516145d560a084018260020b9052565b5060c08101516145f960c08401826fffffffffffffffffffffffffffffffff169052565b5060e081015161461d60e08401826fffffffffffffffffffffffffffffffff169052565b506101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b604080825283519082018190525f9060208501906060840190835b8181101561469757614680838551614531565b60209390930192610180929092019160010161466d565b5050838103602080860191909152855180835291810192508501905f5b818110156146e45782516fffffffffffffffffffffffffffffffff168452602093840193909201916001016146b4565b50919695505050505050565b6fffffffffffffffffffffffffffffffff81168114610f10575f80fd5b60ff81168114610f10575f80fd5b5f805f805f805f60c0888a031215614731575f80fd5b873561473c816146f0565b9650602088013561474c816143e5565b9550604088013561475c816143e5565b9450606088013561476c8161470d565b9350608088013567ffffffffffffffff811115614787575f80fd5b6147938a828b01614406565b90945092505060a088013567ffffffffffffffff8111156147b2575f80fd5b6147be8a828b0161444b565b91505092959891949750929550565b5f80604083850312156147de575f80fd5b82356147e9816146f0565b915060208301356147f9816146f0565b809150509250929050565b5f60208284031215614814575f80fd5b5035919050565b5f806040838503121561482c575f80fd5b8235915060208301356147f9816143e5565b8060020b8114610f10575f80fd5b5f806040838503121561485d575f80fd5b82356148688161483e565b946020939093013593505050565b5f60208284031215614886575f80fd5b813561131f816146f0565b5f6060828403121561445b575f80fd5b5f80608083850312156148b2575f80fd5b6148bc8484614891565b915060608301356147f9816143e5565b5f602082840312156148dc575f80fd5b813565ffffffffffff8116811461131f575f80fd5b5f805f805f805f8060e0898b031215614908575f80fd5b8835614913816146f0565b97506020890135614923816146f0565b96506040890135614933816143e5565b95506060890135614943816143e5565b945060808901356149538161470d565b935060a089013567ffffffffffffffff81111561496e575f80fd5b61497a8b828c01614406565b90945092505060c089013567ffffffffffffffff811115614999575f80fd5b6149a58b828c0161444b565b9150509295985092959890939650565b82151581526080810161131f6020830184805160020b825260208082015190830152604090810151910152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715614a3257614a326149e2565b60405290565b6040516060810167ffffffffffffffff81118282101715614a3257614a326149e2565b604051610180810167ffffffffffffffff81118282101715614a3257614a326149e2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ac657614ac66149e2565b604052919050565b5f60408284031215614ade575f80fd5b6040805190810167ffffffffffffffff81118282101715614b0157614b016149e2565b604052823581526020928301359281019290925250919050565b5f805f8060a08587031215614b2e575f80fd5b8435614b398161483e565b93506020850135925060408501359150614b568660608701614ace565b905092959194509250565b5f805f60408486031215614b73575f80fd5b833567ffffffffffffffff811115614b89575f80fd5b614b9586828701614406565b909450925050602084013561ffff81168114614baf575f80fd5b809150509250925092565b5f60208284031215614bca575f80fd5b813561131f8161483e565b8035614be0816143e5565b919050565b5f805f805f805f805f898b036101a0811215614bff575f80fd5b8a35614c0a816143e5565b995060208b0135614c1a816143e5565b985060408b0135614c2a816143e5565b975060608b0135614c3a816143e5565b965060808b0135614c4a816143e5565b955060a08b0135614c5a8161483e565b945060c08b0135614c6a816143e5565b935060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2082011215614c9b575f80fd5b50614ca4614a0f565b60e08b0135614cb2816143e5565b81526101008b0135614cc3816143e5565b60208201526101208b0135614cd7816143e5565b60408201526101408b0135614ceb816143e5565b60608201526101608b0135614cff816143e5565b60808201529150614d136101808b01614bd5565b90509295985092959850929598565b5f805f805f60808688031215614d36575f80fd5b8535614d41816146f0565b94506020860135614d51816146f0565b93506040860135614d61816146f0565b9250606086013567ffffffffffffffff811115614d7c575f80fd5b614d8888828901614406565b969995985093965092949392505050565b5f8060408385031215614daa575f80fd5b8235614db5816143e5565b915060208301356147f9816143e5565b5f805f805f805f610100888a031215614ddc575f80fd5b614de68989614891565b96506060880135614df6816146f0565b95506080880135614e06816143e5565b945060a0880135614e16816143e5565b935060c088013567ffffffffffffffff811115614e31575f80fd5b614e3d8a828b01614406565b90945092505060e088013567ffffffffffffffff8111156147b2575f80fd5b5f805f60a08486031215614e6e575f80fd5b614e788585614891565b92506060840135614e88816146f0565b91506080840135614baf816146f0565b5f6060828403128015614ea9575f80fd5b50614eb2614a38565b8235614ebd8161483e565b8152602083810135908201526040928301359281019290925250919050565b5f8060408385031215614eed575f80fd5b823567ffffffffffffffff811115614f03575f80fd5b614f0f8582860161444b565b95602094909401359450505050565b6101808101610e3c8284614531565b5f805f805f60c08688031215614f41575f80fd5b8535614f4c816146f0565b94506020860135935060408601359250614f698760608801614ace565b915060a0860135614f798161483e565b809150509295509295909350565b5f805f805f8060a08789031215614f9c575f80fd5b863572ffffffffffffffffffffffffffffffffffffff81168114614fbe575f80fd5b95506020870135614fce816143e5565b94506040870135614fde816143e5565b9350606087013567ffffffffffffffff811115614ff9575f80fd5b61500589828a01614406565b909450925050608087013567ffffffffffffffff811115615024575f80fd5b61503089828a0161444b565b9150509295509295509295565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150b7575f80fd5b830160208101925035905067ffffffffffffffff8111156150d6575f80fd5b8060051b3603821315614444575f80fd5b8183526020830192505f815f5b8481101561512e578135615107816146f0565b6fffffffffffffffffffffffffffffffff16865260209586019591909101906001016150f4565b5093949350505050565b5f604083016151478384615084565b604086528281845260608701905060608260051b8801019350825f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603015b84821015615214577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a880301845282358181126151c4575f80fd5b860160208101903567ffffffffffffffff8111156151e0575f80fd5b8036038213156151ee575f80fd5b6151f989828461503d565b98505050602083019250602084019350600182019150615188565b5050505050506152276020840184615084565b858303602087015261349a8382846150e7565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201525f61526f60808301858761503d565b82810360608401526152818185615138565b98975050505050505050565b80518015158114614be0575f80fd5b5f602082840312156152ac575f80fd5b61131f8261528d565b5f67ffffffffffffffff8211156152ce576152ce6149e2565b5060051b60200190565b8051600b8110614be0575f80fd5b805164ffffffffff81168114614be0575f80fd5b8051614be0816143e5565b805167ffffffffffffffff81168114614be0575f80fd5b8051614be08161483e565b8051614be0816146f0565b5f6101808284031215615343575f80fd5b61534b614a5b565b9050615356826152d8565b8152615364602083016152e6565b6020820152615375604083016152fa565b6040820152615386606083016152fa565b606082015261539760808301615305565b60808201526153a860a0830161531c565b60a08201526153b960c08301615327565b60c08201526153ca60e08301615327565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101609182015191810191909152919050565b5f82601f830112615412575f80fd5b8151615425615420826152b5565b614a7f565b8082825260208201915060208360051b860101925085831115615446575f80fd5b602085015b8381101561546c57805161545e816146f0565b83526020928301920161544b565b5095945050505050565b5f8060408385031215615487575f80fd5b825167ffffffffffffffff81111561549d575f80fd5b8301601f810185136154ad575f80fd5b80516154bb615420826152b5565b80828252602082019150602061018084028501019250878311156154dd575f80fd5b6020840193505b8284101561550a576154f68885615332565b8252602082019150610180840193506154e4565b80955050505050602083015167ffffffffffffffff81111561552a575f80fd5b61553685828601615403565b9150509250929050565b5f60208284031215615550575f80fd5b815161131f8161483e565b8881526fffffffffffffffffffffffffffffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff8716604082015273ffffffffffffffffffffffffffffffffffffffff8616606082015260ff8516608082015260e060a08201525f6155cd60e08301858761503d565b82810360c08401526155df8185615138565b9b9a5050505050505050505050565b5f602082840312156155fe575f80fd5b5051919050565b80356156108161483e565b60020b825260208181013590830152604090810135910152565b83815260a0810161563e6020830185615605565b73ffffffffffffffffffffffffffffffffffffffff83166080830152949350505050565b5f805f60608486031215615674575f80fd5b5050815160208301516040909301519094929350919050565b85815273ffffffffffffffffffffffffffffffffffffffff855116602082015273ffffffffffffffffffffffffffffffffffffffff602086015116604082015273ffffffffffffffffffffffffffffffffffffffff60408601511660608201526fffffffffffffffffffffffffffffffff60608601511660808201526fffffffffffffffffffffffffffffffff60808601511660a08201525f60a086015161574160c084018267ffffffffffffffff169052565b5060c086015160ff811660e0840152506101406101008301526157696101408301858761503d565b8281036101208401526152818185615138565b5f80828403608081121561578e575f80fd5b6157978461528d565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156157c8575f80fd5b506157d1614a38565b60208401516157df8161483e565b81526040848101516020830152606090940151938101939093525092909150565b600285900b815260208082018590526040820184905282516060830152820151608082015260a08101611993565b5f6020828403121561583e575f80fd5b815161131f816146f0565b848152606060208201525f61586260608301858761503d565b905061ffff8316604083015295945050505050565b5f60208284031215615887575f80fd5b815161131f8161470d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001815b60018411156158fa578085048111156158de576158de615892565b60018416156158ec57908102905b60019390931c9280026158c3565b935093915050565b5f8261591057506001610e3c565b8161591c57505f610e3c565b8160018114615932576002811461593c57615958565b6001915050610e3c565b60ff84111561594d5761594d615892565b50506001821b610e3c565b5060208310610133831016604e8410600b841016171561597b575081810a610e3c565b6159a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846158bf565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d8576159d8615892565b029392505050565b5f61131f60ff841683615902565b80820180821115610e3c57610e3c615892565b8082028115828204841417610e3c57610e3c615892565b60ff8281168282160390811115610e3c57610e3c615892565b8681526fffffffffffffffffffffffffffffffff861660208201526fffffffffffffffffffffffffffffffff851660408201526fffffffffffffffffffffffffffffffff8416606082015260a060808201525f61528160a08301848661503d565b858152615aba602082018651805160020b825260208082015190830152604090810151910152565b6fffffffffffffffffffffffffffffffff602086015116608082015273ffffffffffffffffffffffffffffffffffffffff60408601511660a082015273ffffffffffffffffffffffffffffffffffffffff60608601511660c082015261012060e08201525f615b2e6101208301858761503d565b8281036101008401526152818185615138565b84815260c08101615b556020830186615605565b6fffffffffffffffffffffffffffffffff841660808301526fffffffffffffffffffffffffffffffff831660a083015295945050505050565b8281526080810161131f6020830184805160020b825260208082015190830152604090810151910152565b5f8082840360c0811215615bcb575f80fd5b60a0811215615bd8575f80fd5b50615be1614a0f565b615bea8461528d565b8152615bf8602085016152e6565b60208201526040840151615c0b816143e5565b60408201526060840151615c1e816146f0565b60608201526080840151615c31816146f0565b608082015260a08401519092506147f98161470d565b838152606060208201525f615c5f6060830185615138565b9050826040830152949350505050565b5f6101808284031215615c80575f80fd5b61131f8383615332565b87815272ffffffffffffffffffffffffffffffffffffff8716602082015273ffffffffffffffffffffffffffffffffffffffff8616604082015273ffffffffffffffffffffffffffffffffffffffff8516606082015260c060808201525f615cf660c08301858761503d565b82810360a0840152615d088185615138565b9a9950505050505050505050565b65ffffffffffff8181168382160190811115610e3c57610e3c615892565b65ffffffffffff8281168282160390811115610e3c57610e3c61589256fea26469706673582212201877f27bd888cbaa0b1b83631d56f1d1827e1848cc13a1c4165a92ee785cd24464736f6c634300081a0033", - "nonce": "0x3c", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "function": null, - "arguments": [ - "0x46C0aDb73cB5f167e577197294e285fD5a45f031", - "0x94323ce3000000000000000000000000cc689fa332c6faaa3b23365f6b55007b36e082a90000000000000000000000002cd340c58a31d96a1c6b0672c76a0c8a53b59f3200000000000000000000000040b8b38dd0dedca43fc7831d4494e8cbe843cc1b000000000000000000000000d43311651fdb0f6d4e2e11859196574d71a071ce0000000000000000000000002e9f3d7af026df648d7e9522f8f1508c2b57b62d0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c50000000000000000000000007c9d3ad12d34ef0b02d10fbc30bb7bc0f9c7f2a1" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x141583", - "value": "0x0", - "input": "0x60806040526040516103dd3803806103dd8339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b0381111561027e575f80fd5b8301601f8101851361028e575f80fd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156076573d5ff35b3d5ffdfea2646970667358221220f1ceb662e28c11dd3670ddb8844cc4674051e890b050c112f80d0042cdf7394f64736f6c634300081a003300000000000000000000000046c0adb73cb5f167e577197294e285fd5a45f031000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a494323ce3000000000000000000000000cc689fa332c6faaa3b23365f6b55007b36e082a90000000000000000000000002cd340c58a31d96a1c6b0672c76a0c8a53b59f3200000000000000000000000040b8b38dd0dedca43fc7831d4494e8cbe843cc1b000000000000000000000000d43311651fdb0f6d4e2e11859196574d71a071ce0000000000000000000000002e9f3d7af026df648d7e9522f8f1508c2b57b62d0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c50000000000000000000000007c9d3ad12d34ef0b02d10fbc30bb7bc0f9c7f2a100000000000000000000000000000000000000000000000000000000", - "nonce": "0x3d", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x022b26b4b2c95c2eb75d40c531ed35b4391df2f4ca106e45110ae9315b5eac37", - "transactionType": "CREATE", - "contractName": "Rebalancer", - "contractAddress": "0x4aa95a356dee077a7bb9b483dd573e9ac94a0be5", - "function": null, - "arguments": [ - "0x0D9FBCE3ea999551B9ACDA84898c6B04e1e176Ac" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "gas": "0x4af102", - "value": "0x0", - "input": "0x6101f4600555610140604052601860e0526104b06101005261384061012052600680546001600160f01b031916753840000000000000000004b000000000000000000018179055348015610051575f80fd5b506040516146d03803806146d083398101604081905261007091610637565b338061009657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61009f816102ba565b5060016002556001600160a01b03811660c081905260408051635c222bad60e01b815290515f9291635c222bad9160048083019260209291908290030181865afa1580156100ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101139190610637565b9050806001600160a01b03166080816001600160a01b031681525050816001600160a01b0316636f8cbb006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018f9190610652565b60ff1660a08181525050816001600160a01b0316630ea8b3bf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f99190610672565b600381905550816001600160a01b03166309df0a686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561023b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025f9190610672565b6004556102776001600160a01b038216835f196102d6565b50505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3805462ffffff60801b1916600160971b1790556106be565b600180546001600160a01b03191690556102d38161039a565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b1790915261032e90859083906103e916565b61039457604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b1790915261038a91869161048a16565b610394848261048a565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f805f846001600160a01b0316846040516104049190610689565b5f604051808303815f865af19150503d805f811461043d576040519150601f19603f3d011682016040523d82523d5f602084013e610442565b606091505b509150915081801561046c57508051158061046c57508080602001905181019061046c919061069f565b801561048157505f856001600160a01b03163b115b95945050505050565b5f61049e6001600160a01b038416836104f0565b905080515f141580156104c25750808060200190518101906104c0919061069f565b155b156104eb57604051635274afe760e01b81526001600160a01b038416600482015260240161008d565b505050565b60606104fd83835f610504565b9392505050565b6060814710156105295760405163cd78605960e01b815230600482015260240161008d565b5f80856001600160a01b031684866040516105449190610689565b5f6040518083038185875af1925050503d805f811461057e576040519150601f19603f3d011682016040523d82523d5f602084013e610583565b606091505b50909250905061059486838361059e565b9695505050505050565b6060826105b3576105ae826105fa565b6104fd565b81511580156105ca57506001600160a01b0384163b155b156105f357604051639996b31560e01b81526001600160a01b038516600482015260240161008d565b50806104fd565b80511561060a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146102d3575f80fd5b5f60208284031215610647575f80fd5b81516104fd81610623565b5f60208284031215610662575f80fd5b815160ff811681146104fd575f80fd5b5f60208284031215610682575f80fd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156106af575f80fd5b815180151581146104fd575f80fd5b60805160a05160c051613f896107475f395f8181610215015281816108b901528181610f5d01528181611037015281816110cc0152818161164101528181611adb01528181611b5a01528181611f1801528181612287015261237001525f50505f818161051801528181610ec50152818161159601528181611ef60152612a820152613f895ff3fe6080604052600436106101f8575f3560e01c806379ba509711610117578063bd3defe9116100ac578063e6781f0d1161007c578063f0e4ae0a11610062578063f0e4ae0a146108ab578063f2fde38b146108dd578063fefa8975146108fc575f80fd5b8063e6781f0d14610817578063efe4085714610836575f80fd5b8063bd3defe914610714578063dc72708b14610733578063dccf8b5b146107da578063e30c3978146107ed575f80fd5b806383fcdc0b116100e757806383fcdc0b146106a45780638da5cb5b146106c357806393be248b146106ec578063bc3925b814610700575f80fd5b806379ba5097146105a45780637bdc065d146105b857806380ca9bc5146105d757806382b9b525146105ed575f80fd5b806347313cc51161018d5780635c222bad1161015d5780635c222bad1461050a5780635c57f5ca1461055d5780636bf7022714610571578063715018a614610590575f80fd5b806347313cc51461047e57806352fe93a41461049d57806359194d57146104bc5780635a8b13a0146104d0575f80fd5b80632dbef6f7116101c85780632dbef6f7146103d75780633d57ec01146103f957806343a621b21461041c57806345ec7a4c1461043b575f80fd5b806301ffc9a71461027257806318cf2c57146102a65780632515ca7f146103a457806328cb4332146103b8575f80fd5b3661026e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461026c576040517fd2549b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b34801561027d575f80fd5b5061029161028c366004613656565b610922565b60405190151581526020015b60405180910390f35b3480156102b1575f80fd5b5061035c6102c03660046136b6565b60408051606080820183525f808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526009825292829020825193840183525464ffffffffff811684526501000000000081046affffffffffffffffffffff169184019190915270010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff169082015290565b60408051825164ffffffffff1681526020808401516affffffffffffffffffffff1690820152918101516fffffffffffffffffffffffffffffffff169082015260600161029d565b3480156103af575f80fd5b5061026c610a62565b3480156103c3575f80fd5b5061026c6103d23660046136f0565b610c09565b3480156103e2575f80fd5b506103eb610f54565b60405190815260200161029d565b348015610404575f80fd5b506103eb6f4b3b4ca85a86c47a098a22400000000081565b348015610427575f80fd5b5061026c61043636600461373b565b610ffb565b348015610446575f80fd5b506008546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff909116815260200161029d565b348015610489575f80fd5b5061026c61049836600461376f565b61102d565b3480156104a8575f80fd5b5061026c6104b736600461379f565b6111cd565b3480156104c7575f80fd5b506005546103eb565b3480156104db575f80fd5b5060075470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1661045d565b348015610515575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029d565b348015610568575f80fd5b5061026c611404565b34801561057c575f80fd5b5061026c61058b3660046137fc565b611629565b34801561059b575f80fd5b5061026c6119f7565b3480156105af575f80fd5b5061026c611a0a565b3480156105c3575f80fd5b5061026c6105d236600461376f565b611a86565b3480156105e2575f80fd5b506103eb6202a30081565b3480156105f8575f80fd5b5061066f604080516060810182525f8082526020820181905291810191909152506040805160608101825260065469ffffffffffffffffffff80821683526a010000000000000000000082048116602084015274010000000000000000000000000000000000000000909104169181019190915290565b60408051825169ffffffffffffffffffff9081168252602080850151821690830152928201519092169082015260600161029d565b3480156106af575f80fd5b5061026c6106be36600461376f565b611ac3565b3480156106ce575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610538565b3480156106f7575f80fd5b506004546103eb565b34801561070b575f80fd5b5061026c611c52565b34801561071f575f80fd5b5061026c61072e36600461376f565b611edc565b34801561073e575f80fd5b506107cb60408051606080820183525f80835260208084018290529284018190526007546fffffffffffffffffffffffffffffffff8082168352600a85529185902060035486519485018752815470010000000000000000000000000000000090819004600290810b87526001840154978701979097529590910154958401959095529290920490911692565b60405161029d93929190613827565b6102916107e8366004613883565b611f3d565b3480156107f8575f80fd5b5060015473ffffffffffffffffffffffffffffffffffffffff16610538565b348015610822575f80fd5b5061026c6108313660046136f0565b6126ec565b348015610841575f80fd5b5061085561085036600461393e565b612b1d565b60405161029d91905f60a0820190506fffffffffffffffffffffffffffffffff8351168252602083015160020b602083015260408301516040830152606083015160608301526080830151608083015292915050565b3480156108b6575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610538565b3480156108e8575f80fd5b5061026c6108f73660046136b6565b612bd5565b348015610907575f80fd5b506007546fffffffffffffffffffffffffffffffff1661045d565b5f7fbc59de4e000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083160161097457506001919050565b7f12ea606c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316016109c557506001919050565b7f40f75985000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610a1657506001919050565b7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f908152600960209081526040918290208251606081018452905464ffffffffff811682526affffffffffffffffffffff65010000000000820416928201929092526fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090920482169281018390526007549092911610610b11576040517f8f2b350a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805164ffffffffff1615801590610b6c57506006548151610b5d9174010000000000000000000000000000000000000000900469ffffffffffffffffffff169064ffffffffff16613986565b69ffffffffffffffffffff1642105b15610ba3576040517f878cc18700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f8181526009602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000164264ffffffffff16179055517f7217817608af11155cce8aa6315bcc7217475e6261076b5492df700b921aef0b9190a250565b73ffffffffffffffffffffffffffffffffffffffff8116610c56576040517f4822ab4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600454826affffffffffffffffffffff161015610c9f576040517f3aec2af300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f908152600960209081526040918290208251606081018452905464ffffffffff811682526affffffffffffffffffffff65010000000000820416928201929092526fffffffffffffffffffffffffffffffff7001000000000000000000000000000000009092048216928101839052600854909291161015610d65576040517f5b0b5fb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408101516fffffffffffffffffffffffffffffffff1615610da35750604080516060810182525f8082526020820181905291810191909152610e00565b805164ffffffffff16151580610dc957505f81602001516affffffffffffffffffffff16115b15610e00576040517f5b0b5fb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6affffffffffffffffffffff808416602080840182815264ffffffffff428116865273ffffffffffffffffffffffffffffffffffffffff8088165f9081526009909452604093849020875181549451958901516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029690981665010000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516931692909217929092179490941691909117909255610eef917f0000000000000000000000000000000000000000000000000000000000000000169033903090612c84565b604080516affffffffffffffffffffff8516815242602082015273ffffffffffffffffffffffffffffffffffffffff84169133917fbb7d442803472e2b8c980aa09ca8c58c59969333d838e551ddf1555d2cdde4ab91015b60405180910390a3505050565b5f60035490505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630ea8b3bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe891906139a8565b905081811015610ff757919050565b5090565b6040517fd2549b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611035612d13565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355b1ce616040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c291906139a8565b81108061115a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630ea8b3bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611133573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115791906139a8565b81115b15611191576040517f46dc6ef900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f55afb07b02475d7decdf2633e1b64d2a540eaed2993be5f062acc4de3d4e8dbe906020015b60405180910390a150565b6111d5612d13565b8169ffffffffffffffffffff168369ffffffffffffffffffff1610611226576040517fbb29109300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123183603c613986565b69ffffffffffffffffffff168269ffffffffffffffffffff161015611282576040517fbb29109300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8169ffffffffffffffffffff168169ffffffffffffffffffff1610156112d4576040517fbb29109300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6202a3008169ffffffffffffffffffff16111561131d576040517fbb29109300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060808201835269ffffffffffffffffffff8681168084528682166020808601829052928716948601859052600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001683176a01000000000000000000008302177fffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000008702179055855191825291810191909152928301919091527f7f75431cc130db7505b06094680f3c736a609c9ceeed68c84872f60108feb189910160405180910390a1505050565b335f9081526009602090815260408083208151606081018352905464ffffffffff81168083526501000000000082046affffffffffffffffffffff169483019490945270010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff169181019190915291036114ac576040517fa85592c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408101516fffffffffffffffffffffffffffffffff16156114fa576040517f4018354900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065481516115349174010000000000000000000000000000000000000000900469ffffffffffffffffffff169064ffffffffff16613986565b69ffffffffffffffffffff16421015611579576040517f878cc18700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f8181526009602090815260408220919091558201516115de917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16916affffffffffffffffffffff16612d65565b6020808201516040516affffffffffffffffffffff909116815233917f698270f63d8b673ed55a5ca00d14001bd808b390dbe11d5b1b16624863f71f7791015b60405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611698576040517fd2549b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007546fffffffffffffffffffffffffffffffff9081165f818152600a6020908152604091829020825160a0810184528154958616808252700100000000000000000000000000000000909604600290810b9382019390935260018201549381019390935290810154606083015260030154608082015290916f4b3b4ca85a86c47a098a22400000000090156117ba576fffffffffffffffffffffffffffffffff84161561177d57611776846fffffffffffffffffffffffffffffffff168360800151845f01516fffffffffffffffffffffffffffffffff16612da8565b90506117ba565b600880547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff85161790555b6117c3836139bf565b600780547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83811691909117918290559194505f9161182b918791700100000000000000000000000000000000909104166139fb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000061185b6020880188613a34565b60020b14611956576040805160a081019091526fffffffffffffffffffffffffffffffff8216815260208082019061189590890189613a34565b600290810b8252602089810135818401526040808b01358185015260609384018790526fffffffffffffffffffffffffffffffff808a165f908152600a8452829020865181549488015162ffffff16700100000000000000000000000000000000027fffffffffffffffffffffffffff000000000000000000000000000000000000009095169083161793909317835590850151600183015592840151918101919091556080909201516003909201919091556007805490911690556119b2565b6fffffffffffffffffffffffffffffffff84165f908152600a6020526040902080547fffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff1672800000000000000000000000000000000000001790555b7f3d5b6c447dae6c4467b156641d72b90ed8a72ab2ad6d560fd856134dde76f1ab848383896040516119e79493929190613a4d565b60405180910390a1505050505050565b6119ff612d13565b611a085f612e59565b565b600154339073ffffffffffffffffffffffffffffffffffffffff168114611a7a576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b611a8381612e59565b50565b611a8e612d13565b60058190556040518181527f411467eef2010d14b6143655654b91da0c2b7910288f447ee4c8a08245b1f025906020016111c2565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801590611b2057505f5473ffffffffffffffffffffffffffffffffffffffff163314155b15611b57576040517fd2549b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309df0a686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be591906139a8565b1115611c1d576040517fce024ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048190556040518181527f40d9a94c21cc99e8086053b33325fe14084ba5f7a19cd9955ad1a8c7d100e79f906020016111c2565b335f9081526009602090815260408083208151606081018352905464ffffffffff81168083526501000000000082046affffffffffffffffffffff169483019490945270010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16918101919091529103611cfa576040517fa85592c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408101516fffffffffffffffffffffffffffffffff1615611d48576040517f5b0b5fb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051611d5390612e8a565b600754611d73906fffffffffffffffffffffffffffffffff1660016139fb565b6fffffffffffffffffffffffffffffffff90811660408381019182525f808552338152600960209081529190208451815492860151935164ffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931692909217650100000000006affffffffffffffffffffff90941693840217841670010000000000000000000000000000000092851683021790556007805492939092601092611e2c92869291909104166139fb565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f6447ca94978c7147fc3fef488bc21ffe3cb88979dfdf803444b33deaa1bfb2fb8260200151836040015160405161161e9291906affffffffffffffffffffff9290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b611a8373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083612f94565b5f611f46613041565b856affffffffffffffffffffff165f03611f8c576040517fe51932e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f94613590565b335f908152600960209081526040918290208251606081018452905464ffffffffff811682526501000000000081046affffffffffffffffffffff9081169383019384527001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169382019390935283525181169088161115612046576040517fe51932e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160200151612057908890613aa3565b6affffffffffffffffffffff16602082018190521580159061208b575060045481602001516affffffffffffffffffffff16105b156120c2576040517fe51932e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051604001516fffffffffffffffffffffffffffffffff165f03612112576040517f9c6d9d6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007546fffffffffffffffffffffffffffffffff9081166040808401829052835101519091161115612170576040517f9c6d9d6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808201515f908152600a6020818152838320845160a08101865281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000909104600290810b83860152600184015483890152830154606080840191909152600393840154608084019081529089019290925290518751870151909116855292909152929091209091015461221b916affffffffffffffffffffff8a1691612da8565b60808201526040805160608082018352808401805160209081015160020b84528151850151908401525101518183015290517facea51be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163acea51be916122bb9190600401613ac6565b60c060405180830381865afa1580156122d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122fa9190613b33565b5060c082018190526060820151516080909101516fffffffffffffffffffffffffffffffff82169161232b91613bfb565b6fffffffffffffffffffffffffffffffff16826080015161234c9190613c23565b6123569190613c3a565b81608001516123659190613c72565b8160a00181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a08b58df34604051806060016040528085606001516020015160020b815260200185606001516040015181526020018560600151606001518152506123ee8560a00151613082565b8a338b8b8b6040518963ffffffff1660e01b81526004016124159796959493929190613d87565b60206040518083038185885af1158015612431573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124569190613f24565b915081156126d05780602001516affffffffffffffffffffff165f0361248a57335f908152600960205260408120556124e3565b602080820151335f9081526009909252604090912080546affffffffffffffffffffff90921665010000000000027fffffffffffffffffffffffffffffffff0000000000000000000000ffffffffff9092169190911790555b6080810151606082015180516124fa908390613bfb565b6fffffffffffffffffffffffffffffffff908116909152606083015151165f03905061261e576125626040518060a001604052805f6fffffffffffffffffffffffffffffffff1681526020015f60020b81526020015f81526020015f81526020015f81525090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000060208083019182526040808501515f908152600a9092529081902083518154935162ffffff16700100000000000000000000000000000000027fffffffffffffffffffffffffff000000000000000000000000000000000000009094166fffffffffffffffffffffffffffffffff90911617929092178255820151600182015560608201516002820155608090910151600390910155612673565b6060810151516040808301515f908152600a6020522080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b60a0810151602080830151604080516affffffffffffffffffffff808d1682529381019490945291169082015233907fce97e009011d6b6122adf76f2c8be87e41e2d6b707e0fe2a479f21a2c9f8a1bf9060600160405180910390a25b6126d86130d7565b506126e36001600255565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116612739576040517f4822ab4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816affffffffffffffffffffff165f0361277f576040517fe51932e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f908152600960209081526040918290208251606081018452905464ffffffffff811682526affffffffffffffffffffff65010000000000820416928201929092526fffffffffffffffffffffffffffffffff7001000000000000000000000000000000009092048216928101839052600754909291161061282e576040517f8f2b350a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805164ffffffffff165f0361286f576040517fa85592c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805161287a90612e8a565b80602001516affffffffffffffffffffff16836affffffffffffffffffffff1611156128d2576040517fe51932e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826affffffffffffffffffffff1681602001516affffffffffffffffffffff160361290b57335f908152600960205260408120556129fe565b6020810180518490036affffffffffffffffffffff16908190526004541115612960576040517f3aec2af300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8082523381526009602090815260409182902083518154928501519385015164ffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931692909217650100000000006affffffffffffffffffffff90941693909302929092176fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000091909216021790555b826affffffffffffffffffffff16600760108282829054906101000a90046fffffffffffffffffffffffffffffffff16612a389190613bfb565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550612ac682846affffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612d659092919063ffffffff16565b6040516affffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff83169033907fcee6f67ae73b6f0753c661f91f27f3440d79a4005bbcdd8afdde42932d32cc9a90602001610f47565b612b5f6040518060a001604052805f6fffffffffffffffffffffffffffffffff1681526020015f60020b81526020015f81526020015f81526020015f81525090565b506fffffffffffffffffffffffffffffffff9081165f908152600a6020908152604091829020825160a08101845281549485168152700100000000000000000000000000000000909404600290810b92850192909252600181015492840192909252810154606083015260030154608082015290565b612bdd612d13565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155612c3f5f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052612d0d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061315d565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611a08576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401611a71565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052612da391859182169063a9059cbb90606401612cc6565b505050565b82820281838583041485151702612e4e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8385098181108201900382848609835f038416828511612e015763ae47f7025f526004601cfd5b93849004938382119092035f839003839004600101029203041760026003830281188084028203028084028203028084028203028084028203028084028203028084029091030202612e52565b8190045b9392505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055611a83816131f1565b6040805160608101825260065469ffffffffffffffffffff8082168084526a010000000000000000000083048216602085015274010000000000000000000000000000000000000000909204169282019290925290612ef09064ffffffffff8416613986565b69ffffffffffffffffffff16421015612f35576040517f8b598e8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151612f4b9064ffffffffff8416613986565b69ffffffffffffffffffff16421115612f90576040517f878cc18700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015613007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302b91906139a8565b9050612d0d848461303c8585613c72565b613265565b600280540361307c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b5f6fffffffffffffffffffffffffffffffff821115610ff7576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526080600482015260248101839052604401611a71565b478015611a83576040515f90339083908381818185875af1925050503d805f811461311d576040519150601f19603f3d011682016040523d82523d5f602084013e613122565b606091505b5050905080612f90576040517f08a3645900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61317e73ffffffffffffffffffffffffffffffffffffffff84168361333c565b905080515f141580156131a25750808060200190518101906131a09190613f24565b155b15612da3576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401611a71565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526132f18482613349565b612d0d5760405173ffffffffffffffffffffffffffffffffffffffff84811660248301525f604483015261333291869182169063095ea7b390606401612cc6565b612d0d848261315d565b6060612e5283835f613400565b5f805f8473ffffffffffffffffffffffffffffffffffffffff16846040516133719190613f3d565b5f604051808303815f865af19150503d805f81146133aa576040519150601f19603f3d011682016040523d82523d5f602084013e6133af565b606091505b50915091508180156133d95750805115806133d95750808060200190518101906133d99190613f24565b80156126e357505050505073ffffffffffffffffffffffffffffffffffffffff163b151590565b60608147101561343e576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611a71565b5f808573ffffffffffffffffffffffffffffffffffffffff1684866040516134669190613f3d565b5f6040518083038185875af1925050503d805f81146134a0576040519150601f19603f3d011682016040523d82523d5f602084013e6134a5565b606091505b50915091506134b58683836134bf565b9695505050505050565b6060826134d4576134cf8261354e565b612e52565b81511580156134f8575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613547576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401611a71565b5080612e52565b80511561355e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805161014081019091525f60e082018181526101008301829052610120830191909152819081526020015f6affffffffffffffffffffff1681526020015f81526020016136176040518060a001604052805f6fffffffffffffffffffffffffffffffff1681526020015f60020b81526020015f81526020015f81526020015f81525090565b81525f60208083018290526040808401839052805160a08101825283815291820183905281018290526060818101839052608082019290925291015290565b5f60208284031215613666575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e52575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611a83575f80fd5b5f602082840312156136c6575f80fd5b8135612e5281613695565b80356affffffffffffffffffffff811681146136eb575f80fd5b919050565b5f8060408385031215613701575f80fd5b61370a836136d1565b9150602083013561371a81613695565b809150509250929050565b5f60608284031215613735575f80fd5b50919050565b5f806080838503121561374c575f80fd5b823561375781613695565b91506137668460208501613725565b90509250929050565b5f6020828403121561377f575f80fd5b5035919050565b803569ffffffffffffffffffff811681146136eb575f80fd5b5f805f606084860312156137b1575f80fd5b6137ba84613786565b92506137c860208501613786565b91506137d660408501613786565b90509250925092565b6fffffffffffffffffffffffffffffffff81168114611a83575f80fd5b5f806080838503121561380d575f80fd5b6138178484613725565b9150606083013561371a816137df565b6fffffffffffffffffffffffffffffffff841681526020810183905260a0810161386b6040830184805160020b825260208082015190830152604090810151910152565b949350505050565b5f60408284031215613735575f80fd5b5f805f805f60808688031215613897575f80fd5b6138a0866136d1565b945060208601356138b081613695565b9350604086013567ffffffffffffffff8111156138cb575f80fd5b8601601f810188136138db575f80fd5b803567ffffffffffffffff8111156138f1575f80fd5b886020828401011115613902575f80fd5b60209190910193509150606086013567ffffffffffffffff811115613925575f80fd5b61393188828901613873565b9150509295509295909350565b5f6020828403121561394e575f80fd5b8135612e52816137df565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b69ffffffffffffffffffff8181168382160190811115610a5c57610a5c613959565b5f602082840312156139b8575f80fd5b5051919050565b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff81036139f2576139f2613959565b60010192915050565b6fffffffffffffffffffffffffffffffff8181168382160190811115610a5c57610a5c613959565b8035600281900b81146136eb575f80fd5b5f60208284031215613a44575f80fd5b612e5282613a23565b6fffffffffffffffffffffffffffffffff8581168252602082018590528316604082015260c08101613a7e83613a23565b60020b60608301526020830135608083015260409092013560a0909101529392505050565b6affffffffffffffffffffff8281168282160390811115610a5c57610a5c613959565b815160020b8152602080830151908201526040808301519082015260608101610a5c565b805180151581146136eb575f80fd5b805164ffffffffff811681146136eb575f80fd5b80516136eb81613695565b80516136eb816137df565b805160ff811681146136eb575f80fd5b5f8082840360c0811215613b45575f80fd5b60a0811215613b52575f80fd5b5060405160a0810181811067ffffffffffffffff82111715613b9b577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052613ba784613aea565b8152613bb560208501613af9565b6020820152613bc660408501613b0d565b6040820152613bd760608501613b18565b6060820152613be860808501613b18565b6080820152915061376660a08401613b23565b6fffffffffffffffffffffffffffffffff8281168282160390811115610a5c57610a5c613959565b8082028115828204841417610a5c57610a5c613959565b5f82613c6d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b80820180821115610a5c57610a5c613959565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cff575f80fd5b830160208101925035905067ffffffffffffffff811115613d1e575f80fd5b8060051b3603821315613d2f575f80fd5b9250929050565b8183526020830192505f815f5b84811015613d7d578135613d56816137df565b6fffffffffffffffffffffffffffffffff1686526020958601959190910190600101613d43565b5093949350505050565b875160020b815260208089015190820152604080890151908201526fffffffffffffffffffffffffffffffff8716606082015273ffffffffffffffffffffffffffffffffffffffff8616608082015273ffffffffffffffffffffffffffffffffffffffff851660a082015261010060c08201525f613e0a61010083018587613c85565b82810360e084015260408101613e208586613ccc565b604084528281845260608501905060608260051b8601019350825f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603015b84821015613eed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08888030184528235818112613e9d575f80fd5b860160208101903567ffffffffffffffff811115613eb9575f80fd5b803603821315613ec7575f80fd5b613ed2898284613c85565b98505050602083019250602084019350600182019150613e61565b505050505050613f006020860186613ccc565b8383036020850152613f13838284613d36565b9d9c50505050505050505050505050565b5f60208284031215613f34575f80fd5b612e5282613aea565b5f82518060208501845e5f92019182525091905056fea264697066735822122091d96bd781a4dc154272664ca0bd9fdb471e4724859d6cc8022e416ea55b303464736f6c634300081a00330000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac", - "nonce": "0x3e", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x58f808f6121d83acce2a67c4e2d258c3785b133fecec99a5bbc98e08a21666e0", - "transactionType": "CALL", - "contractName": "ERC1967Proxy", - "contractAddress": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "gas": "0x13502", - "value": "0x0", - "input": "0x6cfd15530000000000000000000000004aa95a356dee077a7bb9b483dd573e9ac94a0be5", - "nonce": "0x3f", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0ae0ac4d0f2a6902a6dffb1d0eacada8f7d2940ba9059d067b20fc5a340018c6", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "function": "grantRole(bytes32,address)", - "arguments": [ - "0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", - "0x0D9FBCE3ea999551B9ACDA84898c6B04e1e176Ac" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "gas": "0x11538", - "value": "0x0", - "input": "0x2f2ff15d9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a60000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac", - "nonce": "0x40", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6e59aba6fb0b9cdf0509e7b238e8ce52830b30f8cf6a7895047b8896669460a9", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "function": "grantRole(bytes32,address)", - "arguments": [ - "0x5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b75", - "0x0D9FBCE3ea999551B9ACDA84898c6B04e1e176Ac" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "gas": "0x11538", - "value": "0x0", - "input": "0x2f2ff15d5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b750000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac", - "nonce": "0x41", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8f32ab3faa4041122656ca42daa372c67f9db8e3e8d1ba5c62f2e8ef96cdad67", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "function": "renounceRole(bytes32,address)", - "arguments": [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0xD8DEfcE74acCDd880091921D75a00D5B0f8B23c5" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "gas": "0x8c3b", - "value": "0x0", - "input": "0x36568abe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "nonce": "0x42", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x310bcaebbb8de01250476a22730b9329840415a3b25dc61bb1781abc32622f60", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "function": "approve(address,uint256)", - "arguments": [ - "0x0D9FBCE3ea999551B9ACDA84898c6B04e1e176Ac", - "400000000000000000000" - ], - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "gas": "0x108ad", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac000000000000000000000000000000000000000000000015af1d78b58c400000", - "nonce": "0x43", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionType": "CALL", - "contractName": "ERC1967Proxy", - "contractAddress": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "function": null, - "arguments": null, - "transaction": { - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "gas": "0xc2f71", - "value": "0x0", - "input": "0x9736661800000000000000000000000000000000000000000000000ad78ebc5ac620000000000000000000000000000000000000000000000000000ad78ebc5ac620000000000000000000000000000000000000000000000000004f4c119b5c81de2c2b00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x44", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0xd928e6", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc2ea4539de2d7464ced5cdafde6046a6560d1289dbbaeb0024af70cdc92fa8bc", - "transactionIndex": "0x2d", - "blockHash": "0xf51018f8247d6406a80b2864bfc3758aee4fbd80a4fa099a39b447250d8a1ccd", - "blockNumber": "0x629595", - "gasUsed": "0x17d427", - "effectiveGasPrice": "0x9887f0e78", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x27c897780f217d992af116a898acee8457d4493a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x550aa4", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5587d45fb48a7e4906fd2173f76854dce35de48a5d0d320480ebd93084786cbf", - "transactionIndex": "0x2a", - "blockHash": "0x91d1e3d97c192396f34a6ce3f8539ec52ed097675cdc4533d99bce6699153635", - "blockNumber": "0x629596", - "gasUsed": "0x92f05", - "effectiveGasPrice": "0xa51c6bf91", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x4c5ab10d25e152e039983380faa4011da0bce173" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x755252", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6052a61694fc973baead8d9585494d61d499f1b4f92362c106ad1e071678f608", - "transactionIndex": "0x3a", - "blockHash": "0xff811db84e8dd89a64df906d32c0c9ab6542a90f0da22138f3ce60f34ca33b35", - "blockNumber": "0x629597", - "gasUsed": "0xbdd8b", - "effectiveGasPrice": "0x9a6b630b1", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x9cb4861470341446619af06886e688c5785e5c83" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xdfc47d", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf6177d4930fb0004302c657bc7f564da3801281a0ee44b0a03e0380fb56259fa", - "transactionIndex": "0x32", - "blockHash": "0x0e9c671591f1c5569b66c648fcff64674bd1724472f75738d6b8ea27a0e293a4", - "blockNumber": "0x629598", - "gasUsed": "0x40a538", - "effectiveGasPrice": "0x9202e7f7b", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0xea9d32e35d0c7f728d6ea54f471d07471763a790" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd82ea1", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x346399619a32fae55a6a72eee8192fae0fe89b84fc9436ea51b1764a26700fa0", - "transactionIndex": "0x36", - "blockHash": "0x8d1a7b899cb6386536c092dcdca6f6c21206e87b28425a73165409ab1c82b754", - "blockNumber": "0x629599", - "gasUsed": "0x439dc1", - "effectiveGasPrice": "0x95c909f8e", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x619c25f15edd45e4bcc9ad4be555000ac879ef55" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xdfeba8", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6fbdcc878b4d23ac629dc7efe0be1a47275a02ba2212c5a8edc15129d0f6d73f", - "transactionIndex": "0x4c", - "blockHash": "0xe1cf48bdf46479fb63472cccdc26c9d442bb86e514abbffaeea952cf7a4a4e0d", - "blockNumber": "0x62959a", - "gasUsed": "0x472b25", - "effectiveGasPrice": "0x99ff98f86", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x9e87120d47bd6beeee46cb90e187d09b5b5a20b5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xe75f12", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xeac244d27b4e3aa145092eee80bc11afb683272bef35af5f37ea71903bcfedb7", - "transactionIndex": "0x35", - "blockHash": "0x0ff89cc20241998a9b17bc2dabd91ba1d22790b54ce32bd1d24584c09bf1d5d5", - "blockNumber": "0x62959b", - "gasUsed": "0x3bf04a", - "effectiveGasPrice": "0xa353d7949", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0xd07025f97504ea8dda1e8c40b04bbc11c3a96022" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x116374d", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x04fe99b6e0a9f72471690ba7446bd57647d1f13ec06b98c4f63c87061f08b707", - "transactionIndex": "0x2f", - "blockHash": "0xe19382562656cb84b212daa80db7729c1f3371db63d7fd4d92fe70eb9d13ab20", - "blockNumber": "0x62959c", - "gasUsed": "0x4e5911", - "effectiveGasPrice": "0xa6e2d1a26", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0xea6c2644d67546b2dad7645372e2355b18ac8d01" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x109d832", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8d489ed4058ea8d1153ce5e08e2cd6f6eddd36a1278b1df409f3d8917f02731d", - "transactionIndex": "0x3f", - "blockHash": "0x0680287e34cf237ca5005309c3060bf0ac0e1fd821be160244ea8a7ba714848d", - "blockNumber": "0x62959d", - "gasUsed": "0x1e3cea", - "effectiveGasPrice": "0xaf9bede4d", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x10abe072ace566266e7e329ea040e35a3107377b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x8f12fb", - "logs": [ - { - "address": "0xd43311651fdb0f6d4e2e11859196574d71a071ce", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x742ba84e75b005738aaac25e7492c635a4f06c9cf96b97dccb93ba51aa6d9f80", - "blockNumber": "0x62959e", - "transactionHash": "0x52243d561794d26108a877b4034edb8b4b1fe85c6c537600fdb384c59d8cde0b", - "transactionIndex": "0x30", - "logIndex": "0x5a", - "removed": false - } - ], - "logsBloom": "0x00000000000000020000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000800000000000022000000000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x52243d561794d26108a877b4034edb8b4b1fe85c6c537600fdb384c59d8cde0b", - "transactionIndex": "0x30", - "blockHash": "0x742ba84e75b005738aaac25e7492c635a4f06c9cf96b97dccb93ba51aa6d9f80", - "blockNumber": "0x62959e", - "gasUsed": "0x26c15f", - "effectiveGasPrice": "0xb873630e1", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0xd43311651fdb0f6d4e2e11859196574d71a071ce" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x1c32b74", - "logs": [ - { - "address": "0x2e9f3d7af026df648d7e9522f8f1508c2b57b62d", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0xd41cc695329fd3968f36fd1fb3b44cc93918d508e7b23e28c36db6e1bd24021c", - "blockNumber": "0x62959f", - "transactionHash": "0x284af2838a8e4ff40e256feff5aaede672d480560a8d871a4c9540c8ec29486f", - "transactionIndex": "0x33", - "logIndex": "0x66", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000022000000000000000000000000000000000000000800000000000081000000000000", - "type": "0x2", - "transactionHash": "0x284af2838a8e4ff40e256feff5aaede672d480560a8d871a4c9540c8ec29486f", - "transactionIndex": "0x33", - "blockHash": "0xd41cc695329fd3968f36fd1fb3b44cc93918d508e7b23e28c36db6e1bd24021c", - "blockNumber": "0x62959f", - "gasUsed": "0x10e784", - "effectiveGasPrice": "0xb01ffa442", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x2e9f3d7af026df648d7e9522f8f1508c2b57b62d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x8465c1", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x13c90235658bcdc3c912238da8d60dea19e809863073ae0adc56668254b49f36", - "transactionIndex": "0x32", - "blockHash": "0xe87db2e1b8673766887107482b26603ba24b63b279d3e4e41e13dc0b2a4bf881", - "blockNumber": "0x6295a0", - "gasUsed": "0x3b37ef", - "effectiveGasPrice": "0xc5abdceb5", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x7c9d3ad12d34ef0b02d10fbc30bb7bc0f9c7f2a1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x17f1084", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6c775a4620adb9ae2ce02b047313cbbd87a70694cb78b4ee294b455d4929e5d4", - "transactionIndex": "0x5e", - "blockHash": "0x6f99c94739e03fc53d5e534d182fb086ea28dc3acf4d2cc8177beb3a279d64ad", - "blockNumber": "0x6295a2", - "gasUsed": "0x4f67e0", - "effectiveGasPrice": "0xdc346b6ef", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x46c0adb73cb5f167e577197294e285fd5a45f031" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa34fe6", - "logs": [ - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000046c0adb73cb5f167e577197294e285fd5a45f031" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x53", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x54", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", - "0x112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0xe066b764dbc472e706cbc2f8733ab0fcee541dd01136dc6512dca8f6dc61b692" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x55", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", - "0x02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0xe7b4cf829186f8c4eae56184e8b39efd89f053da9890202c466f766239b5c06d" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x56", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", - "0xa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x668144e07fd661d09cc13a56f823a5cecc9ddd81fac15e0f66a794e2048f7eeb" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x57", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", - "0x2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e82", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x750ec48621e602bf6e87efd3f05aacefc0afaaf02ef76bf2316cd7d61322e136" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x58", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", - "0x5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd47", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x98de2855152060acaf991c6c67bcd523513322d493b38e46544cf92e3fee8334" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x59", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x112a81abbbc0a642a71c01ee707237745fdf9150a36cd6c341a77a82b042fcfe", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x5a", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x02f5b57e73f7374270c293a6c0f8f21b963fcb794517ca371178f1ebf3e0ea7d", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x5b", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0xa33d215b27d5ec861579769ea5343a0a14da1a34a49b09fa343facf13bf852ba", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x5c", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x2332b7708e4d211430c3d07e50a5483bc31f86f1a3c7c79e159a5bab63060e82", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x5d", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x5fdbe07c81484705bc90cbf005feb2ecc66822288a5ac5d3cf89e384fa6fdd47", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x5e", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "logIndex": "0x5f", - "removed": false - } - ], - "logsBloom": "0x00000004100000000c0000004000000048000000010000000010001000000000000000000020020000000000000000000080000000000000000880000000000000000100000040200000000000000204000000000000000000200000000000000000000002000042000000000000480000100000100000000400000000000000000000000000000001080000240000000000000000008000000000000000000000000001000000000000000000000100000000000004000000100000000000000000002000000000400000480000000000000000000c000900000000004022000000000000000000000000000000000010000840800100000000000000000000", - "type": "0x2", - "transactionHash": "0xed8808d1453f38efeeab2c2f6e952cc7170ae7438e0c0b97f43c70249ef1771e", - "transactionIndex": "0x40", - "blockHash": "0x0f13c7bcebfc18d5167eda55a5dee29710de54a1b617cfca7aac30f83da34b0b", - "blockNumber": "0x6295a3", - "gasUsed": "0xf7303", - "effectiveGasPrice": "0xf72b55366", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc098e0", - "logs": [ - { - "address": "0x4aa95a356dee077a7bb9b483dd573e9ac94a0be5", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x1dd119969ac947714db5c06efb128388ada2c03818a3b6c2b1d1f4b32e57c332", - "blockNumber": "0x6295a4", - "transactionHash": "0x022b26b4b2c95c2eb75d40c531ed35b4391df2f4ca106e45110ae9315b5eac37", - "transactionIndex": "0x2f", - "logIndex": "0x61", - "removed": false - }, - { - "address": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000004aa95a356dee077a7bb9b483dd573e9ac94a0be5", - "0x0000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac" - ], - "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x1dd119969ac947714db5c06efb128388ada2c03818a3b6c2b1d1f4b32e57c332", - "blockNumber": "0x6295a4", - "transactionHash": "0x022b26b4b2c95c2eb75d40c531ed35b4391df2f4ca106e45110ae9315b5eac37", - "transactionIndex": "0x2f", - "logIndex": "0x62", - "removed": false - } - ], - "logsBloom": "0x00100000000000000000000000000000000000000000000000800000002000000000100000000200000200000000000000000010000000000000000000200000000000000000000000000000000000000001000000000000010000000000000000000000020000000000000000000800000010000000000000000000000100400000000000000200000000000000000000000000000000000000000000000000020000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000800000000000022000010000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x022b26b4b2c95c2eb75d40c531ed35b4391df2f4ca106e45110ae9315b5eac37", - "transactionIndex": "0x2f", - "blockHash": "0x1dd119969ac947714db5c06efb128388ada2c03818a3b6c2b1d1f4b32e57c332", - "blockNumber": "0x6295a4", - "gasUsed": "0x39a5b3", - "effectiveGasPrice": "0xf06e6cb51", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": null, - "contractAddress": "0x4aa95a356dee077a7bb9b483dd573e9ac94a0be5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5cd029", - "logs": [ - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x82932c2bbe344307ce4c4d0134c032fd62927625f9603697984f4f2668bc1ddc" - ], - "data": "0x0000000000000000000000004aa95a356dee077a7bb9b483dd573e9ac94a0be5", - "blockHash": "0xc7ade769b4caf56d47160803577f223d352bac1a66cd2350001de7797886ec58", - "blockNumber": "0x6295a5", - "transactionHash": "0x58f808f6121d83acce2a67c4e2d258c3785b133fecec99a5bbc98e08a21666e0", - "transactionIndex": "0x2f", - "logIndex": "0x53", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x58f808f6121d83acce2a67c4e2d258c3785b133fecec99a5bbc98e08a21666e0", - "transactionIndex": "0x2f", - "blockHash": "0xc7ade769b4caf56d47160803577f223d352bac1a66cd2350001de7797886ec58", - "blockNumber": "0x6295a5", - "gasUsed": "0xdfb8", - "effectiveGasPrice": "0xf0c9f563c", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "contractAddress": null - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x15130fb", - "logs": [ - { - "address": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", - "0x0000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x5fb2b6a426bd7c93b14aa4a22c75c89535f87b40495d45296d8874c7db6129ff", - "blockNumber": "0x6295a6", - "transactionHash": "0x0ae0ac4d0f2a6902a6dffb1d0eacada8f7d2940ba9059d067b20fc5a340018c6", - "transactionIndex": "0x7b", - "logIndex": "0xc8", - "removed": false - } - ], - "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000010000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000201000000000000900000000000002000000000000000000000000000000010000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0ae0ac4d0f2a6902a6dffb1d0eacada8f7d2940ba9059d067b20fc5a340018c6", - "transactionIndex": "0x7b", - "blockHash": "0x5fb2b6a426bd7c93b14aa4a22c75c89535f87b40495d45296d8874c7db6129ff", - "blockNumber": "0x6295a6", - "gasUsed": "0xc8b4", - "effectiveGasPrice": "0xe3f8fe1ca", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "contractAddress": null - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x10f412c", - "logs": [ - { - "address": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "topics": [ - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", - "0x5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b75", - "0x0000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x01e74e50a5e2357dfefb51a305c84f4585271ba99d00e2fccfbf8296e4db932c", - "blockNumber": "0x6295a7", - "transactionHash": "0x6e59aba6fb0b9cdf0509e7b238e8ce52830b30f8cf6a7895047b8896669460a9", - "transactionIndex": "0x49", - "logIndex": "0x70", - "removed": false - } - ], - "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000040200000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000010000000000200000000000000900000000000002000000000000000000000000000000010000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6e59aba6fb0b9cdf0509e7b238e8ce52830b30f8cf6a7895047b8896669460a9", - "transactionIndex": "0x49", - "blockHash": "0x01e74e50a5e2357dfefb51a305c84f4585271ba99d00e2fccfbf8296e4db932c", - "blockNumber": "0x6295a7", - "gasUsed": "0xc8b4", - "effectiveGasPrice": "0xfbcee51b0", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "contractAddress": null - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x110175d", - "logs": [ - { - "address": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "topics": [ - "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x", - "blockHash": "0x7df9576334dbe5674bdf89cd1b3fa4510eec88ba6ab2b6469f593dbbcf8f6b51", - "blockNumber": "0x6295a8", - "transactionHash": "0x8f32ab3faa4041122656ca42daa372c67f9db8e3e8d1ba5c62f2e8ef96cdad67", - "transactionIndex": "0x28", - "logIndex": "0x86", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000040000000020000000000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000022000000000000000000000000000000010000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8f32ab3faa4041122656ca42daa372c67f9db8e3e8d1ba5c62f2e8ef96cdad67", - "transactionIndex": "0x28", - "blockHash": "0x7df9576334dbe5674bdf89cd1b3fa4510eec88ba6ab2b6469f593dbbcf8f6b51", - "blockNumber": "0x6295a8", - "gasUsed": "0x5fe3", - "effectiveGasPrice": "0x106d50f7ef", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "contractAddress": null - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x852672", - "logs": [ - { - "address": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x0000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac" - ], - "data": "0x000000000000000000000000000000000000000000000015af1d78b58c400000", - "blockHash": "0x6403834f4fc2270d75dd5d50583b9a9ebfd7b955eede312704cf5cba66e07d06", - "blockNumber": "0x6295a9", - "transactionHash": "0x310bcaebbb8de01250476a22730b9329840415a3b25dc61bb1781abc32622f60", - "transactionIndex": "0x3b", - "logIndex": "0x94", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000010000000000000000000200000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000200000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000800000000000002000010000000000000000000000000000000000800000000000000000000000000", - "type": "0x2", - "transactionHash": "0x310bcaebbb8de01250476a22730b9329840415a3b25dc61bb1781abc32622f60", - "transactionIndex": "0x3b", - "blockHash": "0x6403834f4fc2270d75dd5d50583b9a9ebfd7b955eede312704cf5cba66e07d06", - "blockNumber": "0x6295a9", - "gasUsed": "0xb4fa", - "effectiveGasPrice": "0x111cf53603", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "contractAddress": null - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x987f5d", - "logs": [ - { - "address": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x0000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac" - ], - "data": "0x00000000000000000000000000000000000000000000000ad78ebc5ac6200000", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x57", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x18ad3b5c323a8e1a3ee0f3acb7b2d0abf761ea555025c700fde4c72851df0fcc", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x00000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000000000066b4c7680000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x58", - "removed": false - }, - { - "address": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000000000000000000000000000000000dead" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000003e8", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x59", - "removed": false - }, - { - "address": "0xcc689fa332c6faaa3b23365f6b55007b36e082a9", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x000000000000000000000000000000000000000000007aa29ea41316996aa2e8", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x5a", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xc30aa039cdd6b3f3c49f47e33ccfed1e781075ad4c90a432176d68e661368065", - "0x000000000000000000000000000000000000000000000000000000000000dead", - "0x000000000000000000000000000000000000000000000000000000000000dead" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000066b4c768", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x5b", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xc30aa039cdd6b3f3c49f47e33ccfed1e781075ad4c90a432176d68e661368065", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x00000000000000000000000000000000000000000000000ad78ebc5ac6200000000000000000000000000000000000000000000000007aa29ea41316996aa2e80000000000000000000000000000000000000000000000000000000066b4c768", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x5c", - "removed": false - }, - { - "address": "0x40b8b38dd0dedca43fc7831d4494e8cbe843cc1b", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x0000000000000000000000000d9fbce3ea999551b9acda84898c6b04e1e176ac" - ], - "data": "0x00000000000000000000000000000000000000000000000ad78ebc5ac6200000", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x5d", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x2e41738f5de266cc443362a69d6d5ac37216649e1d0925323f2f9e4a2f393f1a" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000011d28", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x5e", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0xcd9785bfc039f6e3acd9e28c39bd0ccaf80b54c214cafd169a2fb9b5b798f31f", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000066b4c768000000000000000000000000000000000000000000000015b9402ef2100ab74f00000000000000000000000000000000000000000000000ad78ebc5ac620000000000000000000000000000000000000000000000000009cf91cfaf9b686eeea0000000000000000000000000000000000000000000000000000000000011d2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x5f", - "removed": false - }, - { - "address": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "topics": [ - "0x44c818c75b936d07e30545c1c628a229e0c77fb943fcb4f57ca84f0f47bcf554", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5", - "0x000000000000000000000000d8defce74accdd880091921d75a00d5b0f8b23c5" - ], - "data": "0x000000000000000000000000000000000000000000000015b9402ef2100ab74f00000000000000000000000000000000000000000000009cf91cfaf9b686eeea0000000000000000000000000000000000000000000000000000000000011d2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "logIndex": "0x60", - "removed": false - } - ], - "logsBloom": "0x00000000000010000000000000000000000100001000000000000010000802000000000000000200000000000000000000000010200000000008000000000000000000000000000040200008000000000000000000000000010000000000000000000000020000002000000000004800000000000000000000000010000100000000000000000200000004001800100001000000000000000000000808000000000000000000000000000000000000000000000010000000000000000000000000000402000000000000000000000000200000000000000800000000000022000000000000000000000000000000010002000800000000000000000000000010", - "type": "0x2", - "transactionHash": "0xf41ea296bcfa2ee70eb74e47f37d6e0084f8f0cf4b0c567a24b0eff866d048ef", - "transactionIndex": "0x36", - "blockHash": "0x6a7d6e6c678dee1c95e29d744e6dc27093679b738adc4bb313348cdd25c6b8ad", - "blockNumber": "0x6295aa", - "gasUsed": "0x8d26c", - "effectiveGasPrice": "0x106b89210d", - "from": "0xd8defce74accdd880091921d75a00d5b0f8b23c5", - "to": "0x0d9fbce3ea999551b9acda84898c6b04e1e176ac", - "contractAddress": null - } - ], - "libraries": [ - "src/UsdnProtocol/libraries/UsdnProtocolActionsLongLibrary.sol:UsdnProtocolActionsLongLibrary:0xEa9d32E35d0C7f728D6eA54f471D07471763A790", - "src/UsdnProtocol/libraries/UsdnProtocolActionsUtilsLibrary.sol:UsdnProtocolActionsUtilsLibrary:0x619C25f15eDd45E4bcC9Ad4Be555000Ac879Ef55", - "src/UsdnProtocol/libraries/UsdnProtocolActionsVaultLibrary.sol:UsdnProtocolActionsVaultLibrary:0x9e87120d47bD6BeEEE46cb90E187d09b5b5a20B5", - "src/UsdnProtocol/libraries/UsdnProtocolCoreLibrary.sol:UsdnProtocolCoreLibrary:0xD07025f97504Ea8dDa1e8c40B04Bbc11C3A96022", - "src/UsdnProtocol/libraries/UsdnProtocolLongLibrary.sol:UsdnProtocolLongLibrary:0xEa6C2644D67546B2dAD7645372E2355b18Ac8D01", - "src/UsdnProtocol/libraries/UsdnProtocolVaultLibrary.sol:UsdnProtocolVaultLibrary:0x10AbE072ACe566266E7e329ea040e35a3107377b", - "src/libraries/DoubleEndedQueue.sol:DoubleEndedQueue:0x27c897780F217D992Af116a898AceE8457D4493A", - "src/libraries/HugeUint.sol:HugeUint:0x4c5ab10D25E152e039983380faA4011dA0bce173", - "src/libraries/TickMath.sol:TickMath:0x9cb4861470341446619af06886E688C5785e5c83" - ], - "pending": [], - "returns": { - "WstETH_": { - "internal_type": "contract WstETH", - "value": "0x40b8b38dd0deDCa43fC7831D4494e8Cbe843CC1B" - }, - "LiquidationRewardsManager_": { - "internal_type": "contract LiquidationRewardsManager", - "value": "0x2E9f3D7af026Df648D7E9522f8f1508C2B57b62d" - }, - "Rebalancer_": { - "internal_type": "contract Rebalancer", - "value": "0x4aA95a356DEE077a7bB9B483Dd573E9ac94a0bE5" - }, - "Sdex_": { - "internal_type": "contract Sdex", - "value": "0x2Cd340C58A31D96A1c6B0672c76a0c8A53B59f32" - }, - "WstEthOracleMiddleware_": { - "internal_type": "contract WstEthOracleMiddleware", - "value": "0xD43311651Fdb0f6D4E2E11859196574d71A071CE" - }, - "Usdn_": { - "internal_type": "contract Usdn", - "value": "0xcc689fA332C6fAaA3b23365F6b55007B36e082A9" - }, - "UsdnProtocol_": { - "internal_type": "contract IUsdnProtocol", - "value": "0x0D9FBCE3ea999551B9ACDA84898c6B04e1e176Ac" - } - }, - "timestamp": 1723123564, - "chain": 11155111, - "commit": "dbf22e4" -} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 2b8ee2260..68d981f8e 100644 --- a/foundry.toml +++ b/foundry.toml @@ -34,7 +34,7 @@ remappings = [ "@pythnetwork/pyth-sdk-solidity/=dependencies/@pythnetwork-pyth-sdk-solidity-3.1.0/", "@redstone-finance/evm-connector/=dependencies/@redstone-finance-evm-connector-0.6.1/", "@uniswap/permit2/=dependencies/@uniswap-permit2-1.0.0/", - "forge-std/=dependencies/forge-std-1.9.1/src/", + "forge-std/=dependencies/forge-std-1.9.2/src/", "openzeppelin-foundry-upgrades/=dependencies/openzeppelin-foundry-upgrades-0.3.1/src/", "solady/src/=dependencies/solady-0.0.228/src/", ] @@ -139,6 +139,6 @@ mainnet = { key = "${ETHERSCAN_API_KEY}" } "@pythnetwork-pyth-sdk-solidity" = "3.1.0" "@redstone-finance-evm-connector" = "0.6.1" "@uniswap-permit2" = { version = "1.0.0", url = "https://github.com/Uniswap/permit2/archive/cc56ad0f3439c502c246fc5cfcc3db92bb8b7219.zip" } -forge-std = "1.9.1" +forge-std = "1.9.2" openzeppelin-foundry-upgrades = "0.3.1" solady = "0.0.228" diff --git a/remappings.txt b/remappings.txt index 807ed11ba..86ec39a2f 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,9 +1,9 @@ @chainlink-1.2.0=dependencies/@chainlink-1.2.0 -@openzeppelin-contracts-upgradeable-5.0.2=dependencies/@openzeppelin-contracts-upgradeable-5.0.2 +@forge-std-1.9.2=dependencies/forge-std-1.9.2 @openzeppelin-contracts-5.0.2=dependencies/@openzeppelin-contracts-5.0.2 +@openzeppelin-contracts-upgradeable-5.0.2=dependencies/@openzeppelin-contracts-upgradeable-5.0.2 +@openzeppelin-foundry-upgrades-0.3.1=dependencies/openzeppelin-foundry-upgrades-0.3.1 @pythnetwork-pyth-sdk-solidity-3.1.0=dependencies/@pythnetwork-pyth-sdk-solidity-3.1.0 @redstone-finance-evm-connector-0.6.1=dependencies/@redstone-finance-evm-connector-0.6.1 -@forge-std-1.9.1=dependencies/forge-std-1.9.1 -@openzeppelin-foundry-upgrades-0.3.1=dependencies/openzeppelin-foundry-upgrades-0.3.1 @solady-0.0.228=dependencies/solady-0.0.228 @uniswap-permit2-1.0.0=dependencies/@uniswap-permit2-1.0.0 \ No newline at end of file diff --git a/script/00_DeploySepoliaMocks.s.sol b/script/00_DeploySepoliaMocks.s.sol deleted file mode 100644 index 2b41d86cf..000000000 --- a/script/00_DeploySepoliaMocks.s.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.26; - -import { Script } from "forge-std/Script.sol"; - -import { MockFastGasGwei } from "../src/OracleMiddleware/mock/MockFastGasGwei.sol"; -import { Sdex } from "../src/utils/sepolia/tokens/Sdex.sol"; -import { WstETH } from "../src/utils/sepolia/tokens/WstETH.sol"; - -contract DeploySepoliaMocks is Script { - function run() external returns (Sdex Sdex_, WstETH WstETH_, MockFastGasGwei MockFastGasGwei_) { - address deployer = vm.envAddress("DEPLOYER_ADDRESS"); - vm.startBroadcast(deployer); - - Sdex_ = new Sdex(); - WstETH_ = new WstETH(); - MockFastGasGwei_ = new MockFastGasGwei(); - - // mint wstETH to deployer - uint256 depositAmount = vm.envUint("INIT_DEPOSIT_AMOUNT"); - uint256 longAmount = vm.envUint("INIT_LONG_AMOUNT"); - WstETH_.mint(deployer, depositAmount + longAmount); - - vm.stopBroadcast(); - } -} diff --git a/script/00_DeployUsdn.s.sol b/script/00_DeployUsdn.s.sol new file mode 100644 index 000000000..7493021fc --- /dev/null +++ b/script/00_DeployUsdn.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.26; + +import { Script } from "forge-std/Script.sol"; + +import { Usdn } from "../src/Usdn/Usdn.sol"; + +contract DeployUsdn is Script { + function run() external returns (Usdn Usdn_) { + address deployerAddress = vm.envAddress("DEPLOYER_ADDRESS"); + uint64 nonce = vm.getNonce(deployerAddress); + + require(block.chainid == 1, "DeployUsdn: not allowed in test environment, use 01_Deploy.s.sol instead"); + require(nonce == 0, "Nonce must be 0"); + + vm.broadcast(deployerAddress); + Usdn_ = new Usdn(address(0), address(0)); + } +} diff --git a/script/01_Deploy.s.sol b/script/01_Deploy.s.sol new file mode 100644 index 000000000..d96c39369 --- /dev/null +++ b/script/01_Deploy.s.sol @@ -0,0 +1,465 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.26; + +import { Script } from "forge-std/Script.sol"; + +import { Options, Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +import { Sdex } from "../test/utils/Sdex.sol"; +import { WstETH } from "../test/utils/WstEth.sol"; + +import { Utils } from "./Utils.s.sol"; + +import { LiquidationRewardsManager } from "../src/OracleMiddleware/LiquidationRewardsManager.sol"; +import { WstEthOracleMiddleware } from "../src/OracleMiddleware/WstEthOracleMiddleware.sol"; +import { MockFastGasGwei } from "../src/OracleMiddleware/mock/MockFastGasGwei.sol"; +import { MockLiquidationRewardsManager } from "../src/OracleMiddleware/mock/MockLiquidationRewardsManager.sol"; +import { MockWstEthOracleMiddleware } from "../src/OracleMiddleware/mock/MockWstEthOracleMiddleware.sol"; +import { Rebalancer } from "../src/Rebalancer/Rebalancer.sol"; +import { Usdn } from "../src/Usdn/Usdn.sol"; +import { Wusdn } from "../src/Usdn/Wusdn.sol"; +import { UsdnProtocolFallback } from "../src/UsdnProtocol/UsdnProtocolFallback.sol"; +import { UsdnProtocolImpl } from "../src/UsdnProtocol/UsdnProtocolImpl.sol"; +import { IWstETH } from "../src/interfaces/IWstETH.sol"; +import { IUsdnProtocol } from "../src/interfaces/UsdnProtocol/IUsdnProtocol.sol"; +import { IUsdnProtocolTypes as Types } from "../src/interfaces/UsdnProtocol/IUsdnProtocolTypes.sol"; +import { Sdex as SdexSepolia } from "../src/utils/sepolia/tokens/Sdex.sol"; +import { WstETH as WstETHSepolia } from "../src/utils/sepolia/tokens/WstETH.sol"; + +contract Deploy is Script { + address constant WSTETH_MAINNET = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0; + address constant SDEX_MAINNET = 0x5DE8ab7E27f6E7A1fFf3E5B337584Aa43961BEeF; + address constant PYTH_SEPOLIA = 0xDd24F84d36BF92C65F92307595335bdFab5Bbd21; + address constant PYTH_MAINNET = 0x4305FB66699C3B2702D4d05CF36551390A4c69C6; + bytes32 constant PYTH_ETH_FEED_ID = 0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace; + address constant CHAINLINK_ETH_PRICE_SEPOLIA = 0x694AA1769357215DE4FAC081bf1f309aDC325306; + address constant CHAINLINK_ETH_PRICE_MAINNET = 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419; + address constant CHAINLINK_GAS_MAINNET = 0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C; + uint256 constant CHAINLINK_PRICE_VALIDITY = 1 hours + 2 minutes; + uint256 constant CHAINLINK_GAS_PRICE_VALIDITY = 2 hours + 5 minutes; + + Utils _utils = new Utils(); + address _deployerAddress; + address _feeCollector; + ChainId _chainId; + + enum ChainId { + Mainnet, + Sepolia, + Fork + } + + /** + * @notice Deploy the USDN ecosystem + * @return WstETH_ The WstETH token + * @return Sdex_ The SDEX token + * @return WstEthOracleMiddleware_ The WstETH oracle middleware + * @return LiquidationRewardsManager_ The liquidation rewards manager + * @return Rebalancer_ The rebalancer + * @return Usdn_ The USDN token + * @return Wusdn_ The WUSDN token + * @return UsdnProtocol_ The USDN protocol with fallback + */ + function run() + external + returns ( + WstETH WstETH_, + Sdex Sdex_, + WstEthOracleMiddleware WstEthOracleMiddleware_, + LiquidationRewardsManager LiquidationRewardsManager_, + Rebalancer Rebalancer_, + Usdn Usdn_, + Wusdn Wusdn_, + IUsdnProtocol UsdnProtocol_ + ) + { + // validate the Usdn protocol before deploying it + _utils.validateProtocol(); + + if (block.chainid == 1) { + _chainId = ChainId.Mainnet; + } else if (block.chainid == 11_155_111) { + _chainId = ChainId.Sepolia; + } else { + _chainId = ChainId.Fork; + } + + _handleEnvVariables(); + + bool isProdEnv = _chainId != ChainId.Fork; + + (uint256 depositAmount, uint256 longAmount) = _getInitialAmounts(); + + vm.startBroadcast(_deployerAddress); + + if (_chainId == ChainId.Sepolia) { + (Usdn_, Wusdn_, Sdex_, WstETH_) = _handlePeripherySepoliaDeployment(depositAmount + longAmount); + } else { + (Usdn_, Wusdn_, Sdex_, WstETH_) = _handlePeripheryDeployment(depositAmount, longAmount); + } + + WstEthOracleMiddleware_ = _deployWstEthOracleMiddleware(isProdEnv, address(WstETH_)); + LiquidationRewardsManager_ = _deployLiquidationRewardsManager(isProdEnv, address(WstETH_)); + + // deploy the USDN protocol + UsdnProtocol_ = _deployProtocol(Usdn_, Sdex_, WstETH_, WstEthOracleMiddleware_, LiquidationRewardsManager_); + + // deploy the rebalancer + Rebalancer_ = _deployRebalancer(UsdnProtocol_); + + _handlePostDeployment(UsdnProtocol_, Usdn_, Rebalancer_); + + _initializeUsdnProtocol(UsdnProtocol_, WstETH_, WstEthOracleMiddleware_, depositAmount, longAmount); + vm.stopBroadcast(); + } + + /** + * @notice Deploy the USDN protocol + * @param usdn The USDN token + * @param sdex The SDEX token + * @param wstETH The WstETH token + * @param wstEthOracleMiddleware The WstETH oracle middleware + * @param liquidationRewardsManager The liquidation rewards manager + * @return usdnProtocol_ The deployed protocol + */ + function _deployProtocol( + Usdn usdn, + Sdex sdex, + WstETH wstETH, + WstEthOracleMiddleware wstEthOracleMiddleware, + LiquidationRewardsManager liquidationRewardsManager + ) internal returns (IUsdnProtocol usdnProtocol_) { + // clean and build contracts for openzeppelin module + _utils.cleanAndBuildContracts(); + + // we need to allow external library linking for the openzeppelin module + Options memory opts; + string memory contractName; + // we need to allow constructors for the UsdnProtocolSepolia safeguard mechanism + if (_chainId == ChainId.Sepolia) { + opts.unsafeAllow = "constructor,external-library-linking"; + contractName = "UsdnProtocolSepolia.sol"; + } else { + opts.unsafeAllow = "external-library-linking"; + contractName = "UsdnProtocolImpl.sol"; + } + + // deploy the protocol fallback + UsdnProtocolFallback protocolFallback = new UsdnProtocolFallback(); + + address proxy = Upgrades.deployUUPSProxy( + contractName, + abi.encodeCall( + UsdnProtocolImpl.initializeStorage, + ( + usdn, + sdex, + wstETH, + wstEthOracleMiddleware, + liquidationRewardsManager, + 100, // tick spacing 100 = 1% + _feeCollector, + Types.Roles({ + setExternalAdmin: _deployerAddress, + criticalFunctionsAdmin: _deployerAddress, + setProtocolParamsAdmin: _deployerAddress, + setUsdnParamsAdmin: _deployerAddress, + setOptionsAdmin: _deployerAddress + }), + protocolFallback + ) + ), + opts + ); + + usdnProtocol_ = IUsdnProtocol(proxy); + } + + /** + * @notice Deploy the WstETH oracle middleware if necessary + * @dev Will return the already deployed one if an address is in the env variables + * @param isProdEnv Env check + * @param wstETHAddress The address of the WstETH token + * @return wstEthOracleMiddleware_ The deployed contract + */ + function _deployWstEthOracleMiddleware(bool isProdEnv, address wstETHAddress) + internal + returns (WstEthOracleMiddleware wstEthOracleMiddleware_) + { + address middlewareAddress = vm.envOr("MIDDLEWARE_ADDRESS", address(0)); + if (middlewareAddress != address(0)) { + if (isProdEnv) { + wstEthOracleMiddleware_ = WstEthOracleMiddleware(middlewareAddress); + } else { + wstEthOracleMiddleware_ = MockWstEthOracleMiddleware(middlewareAddress); + } + } else { + address pythAddress = vm.envOr("PYTH_ADDRESS", PYTH_MAINNET); + bytes32 pythFeedId = vm.envOr("PYTH_ETH_FEED_ID", bytes32(PYTH_ETH_FEED_ID)); + address chainlinkPriceAddress = vm.envOr("CHAINLINK_ETH_PRICE_ADDRESS", CHAINLINK_ETH_PRICE_MAINNET); + uint256 chainlinkPriceValidity = vm.envOr("CHAINLINK_ETH_PRICE_VALIDITY", CHAINLINK_PRICE_VALIDITY); + + if (isProdEnv) { + wstEthOracleMiddleware_ = new WstEthOracleMiddleware( + pythAddress, pythFeedId, chainlinkPriceAddress, wstETHAddress, chainlinkPriceValidity + ); + } else { + wstEthOracleMiddleware_ = new MockWstEthOracleMiddleware( + pythAddress, pythFeedId, chainlinkPriceAddress, wstETHAddress, chainlinkPriceValidity + ); + } + } + } + + /** + * @notice Deploy the liquidation rewards manager if necessary + * @dev Will return the already deployed one if an address is in the env variables + * @param isProdEnv Env check + * @param wstETHAddress The address of the WstETH token + * @return liquidationRewardsManager_ The deployed contract + */ + function _deployLiquidationRewardsManager(bool isProdEnv, address wstETHAddress) + internal + returns (LiquidationRewardsManager liquidationRewardsManager_) + { + address liquidationRewardsManagerAddress = vm.envOr("LIQUIDATION_REWARDS_MANAGER_ADDRESS", address(0)); + if (liquidationRewardsManagerAddress != address(0)) { + if (isProdEnv) { + liquidationRewardsManager_ = LiquidationRewardsManager(liquidationRewardsManagerAddress); + } else { + liquidationRewardsManager_ = MockLiquidationRewardsManager(liquidationRewardsManagerAddress); + } + } else { + address chainlinkGasPriceFeed = vm.envOr("CHAINLINK_GAS_PRICE_ADDRESS", CHAINLINK_GAS_MAINNET); + uint256 chainlinkPriceValidity = vm.envOr("CHAINLINK_GAS_PRICE_VALIDITY", CHAINLINK_GAS_PRICE_VALIDITY); + + if (isProdEnv) { + liquidationRewardsManager_ = + new LiquidationRewardsManager(chainlinkGasPriceFeed, IWstETH(wstETHAddress), chainlinkPriceValidity); + } else { + liquidationRewardsManager_ = new MockLiquidationRewardsManager( + chainlinkGasPriceFeed, IWstETH(wstETHAddress), chainlinkPriceValidity + ); + } + } + } + + /** + * @notice Deploy the USDN token and the WUSDN token + * @dev Will return the already deployed ones if an address is in the env variables + * On mainnet the `USDN_ADDRESS` env variable is required + * @return usdn_ The deployed Usdn contract + * @return wusdn_ The deployed Wusdn contract + */ + function _deployUsdnAndWusdn() internal returns (Usdn usdn_, Wusdn wusdn_) { + if (_chainId == ChainId.Mainnet) { + try vm.envAddress("USDN_ADDRESS") { + usdn_ = Usdn(vm.envAddress("USDN_ADDRESS")); + } catch { + revert("USDN_ADDRESS is required on mainnet"); + } + } else { + usdn_ = new Usdn(address(0), address(0)); + } + + wusdn_ = new Wusdn(usdn_); + } + + /** + * @notice Deploy the SDEX token + * @dev Will return the already deployed one if an address is in the env variables + * Will use the mainnet address if the chain is mainnet + * @return sdex_ The deployed contract + */ + function _deploySdex() internal returns (Sdex sdex_) { + if (_chainId == ChainId.Mainnet) { + return Sdex(SDEX_MAINNET); + } + + address sdexAddress = payable(vm.envOr("SDEX_ADDRESS", address(0))); + if (sdexAddress != address(0)) { + sdex_ = Sdex(sdexAddress); + } else { + sdex_ = new Sdex(); + } + } + + /** + * @notice Deploy the WstETH token + * @dev Will return the already deployed one if an address is in the env variables + * Will return the mainnet address if the chain is mainnet + * @param depositAmount The amount to deposit during the protocol initialization + * @param longAmount The size of the long to open during the protocol initialization + * @return wstEth_ The deployed contract + */ + function _deployWstETH(uint256 depositAmount, uint256 longAmount) internal returns (WstETH wstEth_) { + address payable wstETHAddress; + if (_chainId == ChainId.Mainnet) { + wstETHAddress = payable(WSTETH_MAINNET); + } else { + wstETHAddress = payable(vm.envOr("WSTETH_ADDRESS", address(0))); + } + + if (wstETHAddress != address(0)) { + wstEth_ = WstETH(wstETHAddress); + if (vm.envOr("GET_WSTETH", false) && depositAmount > 0 && longAmount > 0) { + uint256 ethAmount = (depositAmount + longAmount + 10_000) * wstEth_.stEthPerToken() / 1 ether; + + (bool result,) = wstETHAddress.call{ value: ethAmount }(hex""); + + require(result, "Failed to mint wstETH"); + } + } else { + wstEth_ = new WstETH(); + } + } + + /** + * @notice Deploy the Rebalancer contract if necessary + * @dev Will return the already deployed one if an address is in the env variables + * @param usdnProtocol The USDN protocol + * @return rebalancer_ The deployed contract + */ + function _deployRebalancer(IUsdnProtocol usdnProtocol) internal returns (Rebalancer rebalancer_) { + address payable rebalancerAddress = payable(vm.envOr("REBALANCER_ADDRESS", address(0))); + if (rebalancerAddress != address(0)) { + rebalancer_ = Rebalancer(rebalancerAddress); + } else { + rebalancer_ = new Rebalancer(usdnProtocol); + } + } + + /** + * @notice Initialize the USDN Protocol + * @param usdnProtocol The USDN protocol + * @param wstETH The WstETH token + * @param wstEthOracleMiddleware The WstETH oracle middleware + * @param depositAmount The amount to deposit during the protocol initialization + * @param longAmount The size of the long to open during the protocol initialization + */ + function _initializeUsdnProtocol( + IUsdnProtocol usdnProtocol, + WstETH wstETH, + WstEthOracleMiddleware wstEthOracleMiddleware, + uint256 depositAmount, + uint256 longAmount + ) internal { + // for forks, we want a leverage of ~2x so we get the current + // price from the middleware and divide it by two + uint256 desiredLiqPrice = wstEthOracleMiddleware.parseAndValidatePrice( + "", uint128(block.timestamp), Types.ProtocolAction.Initialize, "" + ).price / 2; + + // approve wstETH spending for initialization + wstETH.approve(address(usdnProtocol), depositAmount + longAmount); + usdnProtocol.initialize(uint128(depositAmount), uint128(longAmount), uint128(desiredLiqPrice), ""); + } + + /** + * @notice Handle post-deployment tasks + * @param usdnProtocol The USDN protocol + * @param usdn The USDN token + * @param rebalancer The rebalancer + */ + function _handlePostDeployment(IUsdnProtocol usdnProtocol, Usdn usdn, Rebalancer rebalancer) internal { + // set the rebalancer on the USDN protocol + usdnProtocol.setRebalancer(rebalancer); + + // grant USDN minter and rebaser roles to protocol + usdn.grantRole(usdn.MINTER_ROLE(), address(usdnProtocol)); + usdn.grantRole(usdn.REBASER_ROLE(), address(usdnProtocol)); + // renounce admin role on the USDN token, no one can later change roles + usdn.renounceRole(usdn.DEFAULT_ADMIN_ROLE(), _deployerAddress); + } + + /** + * @notice Handle the deployment of the periphery contracts + * @param depositAmount The amount to deposit during the protocol initialization + * @param longAmount The size of the long to open during the protocol initialization + * @return usdn_ The USDN token + * @return wusdn_ The WUSDN token + * @return sdex_ The SDEX token + * @return wstETH_ The WstETH token + */ + function _handlePeripheryDeployment(uint256 depositAmount, uint256 longAmount) + internal + returns (Usdn usdn_, Wusdn wusdn_, Sdex sdex_, WstETH wstETH_) + { + (usdn_, wusdn_) = _deployUsdnAndWusdn(); + wstETH_ = _deployWstETH(depositAmount, longAmount); + sdex_ = _deploySdex(); + } + + /** + * @notice Handle the deployment of the periphery contracts for Sepolia + * @param wstEthNeeded The amount of WstETH needed for the initialization + * @return usdn_ The USDN token + * @return wusdn_ The WUSDN token + * @return sdex_ The SDEX token + * @return wstETH_ The WstETH token + */ + function _handlePeripherySepoliaDeployment(uint256 wstEthNeeded) + internal + returns (Usdn usdn_, Wusdn wusdn_, Sdex sdex_, WstETH wstETH_) + { + uint256 stEthPerToken = _utils.getStEthPerTokenMainnet(); + + SdexSepolia sdex = new SdexSepolia(); + WstETHSepolia wsteth = new WstETHSepolia(); + MockFastGasGwei mockFastGasGwei = new MockFastGasGwei(); + + // mint needed wstETH for the initialization to the deployer + wsteth.mint(_deployerAddress, wstEthNeeded); + + wsteth.setStEthPerToken(stEthPerToken); + + (usdn_, wusdn_) = _deployUsdnAndWusdn(); + + sdex_ = Sdex(address(sdex)); + wstETH_ = WstETH(payable(address(wsteth))); + + vm.setEnv("PYTH_ADDRESS", vm.toString(PYTH_SEPOLIA)); + vm.setEnv("PYTH_ETH_FEED_ID", vm.toString(PYTH_ETH_FEED_ID)); + vm.setEnv("CHAINLINK_ETH_PRICE_ADDRESS", vm.toString(CHAINLINK_ETH_PRICE_SEPOLIA)); + vm.setEnv("CHAINLINK_GAS_PRICE_ADDRESS", vm.toString(address(mockFastGasGwei))); + } + + /** + * @notice Handle the environment variables + */ + function _handleEnvVariables() internal { + try vm.envAddress("DEPLOYER_ADDRESS") { + _deployerAddress = vm.envAddress("DEPLOYER_ADDRESS"); + } catch { + revert("DEPLOYER_ADDRESS is required"); + } + + _feeCollector = vm.envOr("FEE_COLLECTOR", _deployerAddress); + + string memory etherscanApiKey = vm.envOr("ETHERSCAN_API_KEY", string("XXXXXXXXXXXXXXXXX")); + vm.setEnv("ETHERSCAN_API_KEY", etherscanApiKey); + } + + /** + * @notice Get the initial amounts for the protocol initialization + * @return depositAmount The amount to deposit + * @return longAmount The size of the long + */ + function _getInitialAmounts() internal view returns (uint256 depositAmount, uint256 longAmount) { + if (_chainId == ChainId.Sepolia) { + depositAmount = vm.envOr("INIT_DEPOSIT_AMOUNT", uint256(200 ether)); + longAmount = vm.envOr("INIT_LONG_AMOUNT", uint256(200 ether)); + } else { + try vm.envUint("INIT_DEPOSIT_AMOUNT") { + depositAmount = vm.envUint("INIT_DEPOSIT_AMOUNT"); + } catch { + revert("INIT_DEPOSIT_AMOUNT is required"); + } + try vm.envUint("INIT_LONG_AMOUNT") { + longAmount = vm.envUint("INIT_LONG_AMOUNT"); + } catch { + revert("INIT_DEPOSIT_AMOUNT is required"); + } + } + } +} diff --git a/script/01_DeployUsdn.s.sol b/script/01_DeployUsdn.s.sol deleted file mode 100644 index cbf909259..000000000 --- a/script/01_DeployUsdn.s.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.26; - -import { Script } from "forge-std/Script.sol"; - -import { Usdn } from "../src/Usdn/Usdn.sol"; - -contract DeployUsdn is Script { - function run() external returns (Usdn Usdn_) { - bool isProdEnv = block.chainid != vm.envOr("FORK_CHAIN_ID", uint256(31_337)); - require(isProdEnv, "DeployUsdn: not allowed in test environment, use 02_Deploy.s.sol instead"); - - vm.startBroadcast(vm.envAddress("DEPLOYER_ADDRESS")); - Usdn_ = new Usdn(address(0), address(0)); - vm.stopBroadcast(); - } -} diff --git a/script/02_Deploy.s.sol b/script/02_Deploy.s.sol deleted file mode 100644 index 1ffdf4a17..000000000 --- a/script/02_Deploy.s.sol +++ /dev/null @@ -1,299 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.26; - -import { Script } from "forge-std/Script.sol"; - -import { Options, Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; - -import { Sdex } from "../test/utils/Sdex.sol"; -import { WstETH } from "../test/utils/WstEth.sol"; - -import { Utils } from "./Utils.s.sol"; - -import { LiquidationRewardsManager } from "../src/OracleMiddleware/LiquidationRewardsManager.sol"; -import { WstEthOracleMiddleware } from "../src/OracleMiddleware/WstEthOracleMiddleware.sol"; -import { MockLiquidationRewardsManager } from "../src/OracleMiddleware/mock/MockLiquidationRewardsManager.sol"; -import { MockWstEthOracleMiddleware } from "../src/OracleMiddleware/mock/MockWstEthOracleMiddleware.sol"; -import { Rebalancer } from "../src/Rebalancer/Rebalancer.sol"; -import { Usdn } from "../src/Usdn/Usdn.sol"; -import { UsdnProtocolFallback } from "../src/UsdnProtocol/UsdnProtocolFallback.sol"; -import { UsdnProtocolImpl } from "../src/UsdnProtocol/UsdnProtocolImpl.sol"; -import { IWstETH } from "../src/interfaces/IWstETH.sol"; -import { IUsdnProtocol } from "../src/interfaces/UsdnProtocol/IUsdnProtocol.sol"; -import { IUsdnProtocolTypes as Types } from "../src/interfaces/UsdnProtocol/IUsdnProtocolTypes.sol"; - -contract Deploy is Script { - Utils utils = new Utils(); - address deployerAddress; - - /** - * @notice Deploy the USDN ecosystem - * @return WstETH_ The WstETH token - * @return Sdex_ The SDEX token - * @return WstEthOracleMiddleware_ The WstETH oracle middleware - * @return LiquidationRewardsManager_ The liquidation rewards manager - * @return Rebalancer_ The rebalancer - * @return Usdn_ The USDN token - * @return UsdnProtocol_ The USDN protocol with fallback - */ - function run() - external - returns ( - WstETH WstETH_, - Sdex Sdex_, - WstEthOracleMiddleware WstEthOracleMiddleware_, - LiquidationRewardsManager LiquidationRewardsManager_, - Rebalancer Rebalancer_, - Usdn Usdn_, - IUsdnProtocol UsdnProtocol_ - ) - { - // validate the Usdn protocol before deploying it - bool success = utils.validateProtocol(); - require(success, "Protocol validation failed"); - - deployerAddress = vm.envAddress("DEPLOYER_ADDRESS"); - bool isProdEnv = block.chainid != vm.envOr("FORK_CHAIN_ID", uint256(31_337)); - uint256 depositAmount = vm.envOr("INIT_DEPOSIT_AMOUNT", uint256(0)); - uint256 longAmount = vm.envOr("INIT_LONG_AMOUNT", uint256(0)); - - vm.startBroadcast(deployerAddress); - - // deploy contracts - WstETH_ = _deployWstETH(depositAmount, longAmount); - WstEthOracleMiddleware_ = _deployWstEthOracleMiddleware(isProdEnv, address(WstETH_)); - LiquidationRewardsManager_ = _deployLiquidationRewardsManager(isProdEnv, address(WstETH_)); - Usdn_ = _deployUsdn(isProdEnv); - Sdex_ = _deploySdex(); - - // deploy the USDN protocol - UsdnProtocol_ = _deployProtocol(Usdn_, Sdex_, WstETH_, WstEthOracleMiddleware_, LiquidationRewardsManager_); - - // deploy the rebalancer - Rebalancer_ = _deployRebalancer(UsdnProtocol_); - - // set the rebalancer on the USDN protocol - UsdnProtocol_.setRebalancer(Rebalancer_); - - // grant USDN minter and rebaser roles to protocol - Usdn_.grantRole(Usdn_.MINTER_ROLE(), address(UsdnProtocol_)); - Usdn_.grantRole(Usdn_.REBASER_ROLE(), address(UsdnProtocol_)); - // renounce admin role on the USDN token, no-one can later change roles - Usdn_.renounceRole(Usdn_.DEFAULT_ADMIN_ROLE(), deployerAddress); - - // approve wstETH spending for initialization - WstETH_.approve(address(UsdnProtocol_), depositAmount + longAmount); - - if (depositAmount > 0 && longAmount > 0) { - _initializeUsdnProtocol(isProdEnv, UsdnProtocol_, WstEthOracleMiddleware_, depositAmount, longAmount); - } - - vm.stopBroadcast(); - } - - function _deployProtocol( - Usdn usdn, - Sdex sdex, - WstETH wstETH, - WstEthOracleMiddleware wstEthOracleMiddleware, - LiquidationRewardsManager liquidationRewardsManager - ) internal returns (IUsdnProtocol usdnProtocol_) { - // we need to allow external library linking for the openzeppelin module - Options memory opts; - // we need to allow constructors for the UsdnProtocolSepolia safeguard mechanism - opts.unsafeAllow = "constructor,external-library-linking"; - - // deploy the protocol fallback - UsdnProtocolFallback protocolFallback = new UsdnProtocolFallback(); - - address proxy = Upgrades.deployUUPSProxy( - "UsdnProtocolImpl.sol", - abi.encodeCall( - UsdnProtocolImpl.initializeStorage, - ( - usdn, - sdex, - wstETH, - wstEthOracleMiddleware, - liquidationRewardsManager, - 100, // tick spacing 100 = 1% - vm.envAddress("FEE_COLLECTOR"), - Types.Roles({ - setExternalAdmin: deployerAddress, - criticalFunctionsAdmin: deployerAddress, - setProtocolParamsAdmin: deployerAddress, - setUsdnParamsAdmin: deployerAddress, - setOptionsAdmin: deployerAddress - }), - protocolFallback - ) - ), - opts - ); - - usdnProtocol_ = IUsdnProtocol(proxy); - } - - /** - * @notice Deploy the WstETH oracle middleware if necessary - * @dev Will return the already deployed one if an address is in the env variables - * @param isProdEnv Env check - * @param wstETHAddress The address of the WstETH token - * @return wstEthOracleMiddleware_ The deployed contract - */ - function _deployWstEthOracleMiddleware(bool isProdEnv, address wstETHAddress) - internal - returns (WstEthOracleMiddleware wstEthOracleMiddleware_) - { - address middlewareAddress = vm.envOr("MIDDLEWARE_ADDRESS", address(0)); - if (middlewareAddress != address(0)) { - if (isProdEnv) { - wstEthOracleMiddleware_ = WstEthOracleMiddleware(middlewareAddress); - } else { - wstEthOracleMiddleware_ = MockWstEthOracleMiddleware(middlewareAddress); - } - } else { - address pythAddress = vm.envAddress("PYTH_ADDRESS"); - bytes32 pythFeedId = vm.envBytes32("PYTH_ETH_FEED_ID"); - address chainlinkPriceAddress = vm.envAddress("CHAINLINK_ETH_PRICE_ADDRESS"); - uint256 chainlinkPriceValidity = vm.envOr("CHAINLINK_ETH_PRICE_VALIDITY", uint256(1 hours + 2 minutes)); - - if (isProdEnv) { - wstEthOracleMiddleware_ = new WstEthOracleMiddleware( - pythAddress, pythFeedId, chainlinkPriceAddress, wstETHAddress, chainlinkPriceValidity - ); - } else { - wstEthOracleMiddleware_ = new MockWstEthOracleMiddleware( - pythAddress, pythFeedId, chainlinkPriceAddress, wstETHAddress, chainlinkPriceValidity - ); - } - } - } - - /** - * @notice Deploy the liquidation rewards manager if necessary - * @dev Will return the already deployed one if an address is in the env variables - * @param isProdEnv Env check - * @param wstETHAddress The address of the WstETH token - * @return liquidationRewardsManager_ The deployed contract - */ - function _deployLiquidationRewardsManager(bool isProdEnv, address wstETHAddress) - internal - returns (LiquidationRewardsManager liquidationRewardsManager_) - { - address liquidationRewardsManagerAddress = vm.envOr("LIQUIDATION_REWARDS_MANAGER_ADDRESS", address(0)); - if (liquidationRewardsManagerAddress != address(0)) { - if (isProdEnv) { - liquidationRewardsManager_ = LiquidationRewardsManager(liquidationRewardsManagerAddress); - } else { - liquidationRewardsManager_ = MockLiquidationRewardsManager(liquidationRewardsManagerAddress); - } - } else { - address chainlinkGasPriceFeed = vm.envAddress("CHAINLINK_GAS_PRICE_ADDRESS"); - uint256 chainlinkPriceValidity = vm.envOr("CHAINLINK_GAS_PRICE_VALIDITY", uint256(2 hours + 5 minutes)); - if (isProdEnv) { - liquidationRewardsManager_ = - new LiquidationRewardsManager(chainlinkGasPriceFeed, IWstETH(wstETHAddress), chainlinkPriceValidity); - } else { - liquidationRewardsManager_ = new MockLiquidationRewardsManager( - chainlinkGasPriceFeed, IWstETH(wstETHAddress), chainlinkPriceValidity - ); - } - } - } - - /** - * @notice Deploy the USDN token - * @dev Will return the already deployed one if an address is in the env variables - * @return usdn_ The deployed contract - */ - function _deployUsdn(bool isProdEnv) internal returns (Usdn usdn_) { - if (isProdEnv) { - // in production environment, we want to deploy the USDN token separately via `01_DeployUsdn.s.sol` - address usdnAddress = vm.envAddress("USDN_ADDRESS"); - require(usdnAddress != address(0), "USDN_ADDRESS is required in prod mode"); - usdn_ = Usdn(usdnAddress); - } else { - usdn_ = new Usdn(address(0), address(0)); - } - } - - /** - * @notice Deploy the SDEX token - * @dev Will return the already deployed one if an address is in the env variables - * @return sdex_ The deployed contract - */ - function _deploySdex() internal returns (Sdex sdex_) { - address sdexAddress = payable(vm.envOr("SDEX_ADDRESS", address(0))); - if (sdexAddress != address(0)) { - sdex_ = Sdex(sdexAddress); - } else { - sdex_ = new Sdex(); - } - } - - /** - * @notice Deploy the WstETH token - * @dev Will return the already deployed one if an address is in the env variables - * @param depositAmount The amount to deposit during the protocol initialization - * @param longAmount The size of the long to open during the protocol initialization - * @return wstEth_ The deployed contract - */ - function _deployWstETH(uint256 depositAmount, uint256 longAmount) internal returns (WstETH wstEth_) { - address payable wstETHAddress = payable(vm.envOr("WSTETH_ADDRESS", address(0))); - if (wstETHAddress != address(0)) { - wstEth_ = WstETH(wstETHAddress); - if (vm.envOr("GET_WSTETH", false) && depositAmount > 0 && longAmount > 0) { - uint256 ethAmount = (depositAmount + longAmount + 10_000) * wstEth_.stEthPerToken() / 1 ether; - (bool result,) = wstETHAddress.call{ value: ethAmount }(hex""); - require(result, "Failed to mint wstETH"); - } - } else { - wstEth_ = new WstETH(); - } - } - - /** - * @notice Deploy the Rebalancer contract if necessary - * @dev Will return the already deployed one if an address is in the env variables - * @param usdnProtocol The USDN protocol - * @return rebalancer_ The deployed contract - */ - function _deployRebalancer(IUsdnProtocol usdnProtocol) internal returns (Rebalancer rebalancer_) { - address payable rebalancerAddress = payable(vm.envOr("REBALANCER_ADDRESS", address(0))); - if (rebalancerAddress != address(0)) { - rebalancer_ = Rebalancer(rebalancerAddress); - } else { - rebalancer_ = new Rebalancer(usdnProtocol); - } - } - - /** - * @notice Initialize the USDN Protocol - * @param isProdEnv Env check - * @param UsdnProtocol_ The USDN protocol - * @param WstEthOracleMiddleware_ The WstETH oracle middleware - * @param depositAmount The amount to deposit during the protocol initialization - * @param longAmount The size of the long to open during the protocol initialization - */ - function _initializeUsdnProtocol( - bool isProdEnv, - IUsdnProtocol UsdnProtocol_, - WstEthOracleMiddleware WstEthOracleMiddleware_, - uint256 depositAmount, - uint256 longAmount - ) internal { - uint256 desiredLiqPrice; - if (isProdEnv) { - desiredLiqPrice = vm.envUint("INIT_LONG_LIQPRICE"); - } else { - // for forks, we want a leverage of ~2x so we get the current - // price from the middleware and divide it by two - desiredLiqPrice = WstEthOracleMiddleware_.parseAndValidatePrice( - "", uint128(block.timestamp), Types.ProtocolAction.Initialize, "" - ).price / 2; - } - - UsdnProtocol_.initialize(uint128(depositAmount), uint128(longAmount), uint128(desiredLiqPrice), ""); - } -} diff --git a/script/03_DeployRedstoneMiddleware.s.sol b/script/02_DeployRedstoneMiddleware.s.sol similarity index 100% rename from script/03_DeployRedstoneMiddleware.s.sol rename to script/02_DeployRedstoneMiddleware.s.sol diff --git a/script/README.md b/script/README.md index 00275f543..f0788df09 100644 --- a/script/README.md +++ b/script/README.md @@ -4,59 +4,53 @@ Environment variables can be used to control the script execution: -- `FORK_CHAIN_ID`: the chain ID of the anvil fork. If deploying on mainnet (production), this variable can be omitted. -- `DEPLOYER_ADDRESS`: required, the address that is used for simulating the transactions on the network fork (needs to have a sufficient balance). -- `FEE_COLLECTOR` : required, the receiver of all protocol fees -- `SDEX_ADDRESS`: if provided, skips deployment of the mock SDEX token -- `WSTETH_ADDRESS`: if provided, skips deployment of the mock wstETH token +#### Required (for mainnet and fork) +- `INIT_DEPOSIT_AMOUNT`: amount to use for the `initialize` function call, default value is 200 ethers for sepolia +- `INIT_LONG_AMOUNT`: amount to use for the `initialize` function call, default value is 200 ethers for sepolia + +#### Optional +- `DEPLOYER_ADDRESS`: required only for fork deployment, the address of the deployer +- `FEE_COLLECTOR` : set to `DEPLOYER_ADDRESS` if not set, the receiver of all protocol fees +- `SDEX_ADDRESS`: if provided, skips deployment of the SDEX token +- `WSTETH_ADDRESS`: if provided, skips deployment of the wstETH token - `MIDDLEWARE_ADDRESS`: if provided, skips deployment of the oracle middleware -- `PYTH_ADDRESS`: required if middleware address not provided, the contract address of the pyth oracle -- `PYTH_ETH_FEED_ID`: required if middleware address not provided, the price ID of the ETH pyth oracle -- `REDSTONE_ETH_FEED_ID`: required if middleware address not provided, the feed ID of the ETH Redstone oracle -- `CHAINLINK_ETH_PRICE_ADDRESS`: required if middleware address not provided, the address of the ETH chainlink oracle +- `PYTH_ADDRESS`: the contract address of the pyth oracle +- `PYTH_ETH_FEED_ID`: the price ID of the ETH pyth oracle +- `REDSTONE_ETH_FEED_ID`: the feed ID of the ETH Redstone oracle +- `CHAINLINK_ETH_PRICE_ADDRESS`: the address of the ETH chainlink oracle - `CHAINLINK_ETH_PRICE_VALIDITY`: the amount of time (in seconds) we consider the price valid. A tolerance should be added to avoid reverting if chainlink misses the heartbeat by a few minutes - `LIQUIDATION_REWARDS_MANAGER_ADDRESS`: if provided, skips deployment of the liquidation rewards manager - `REBALANCER_ADDRESS`: if provided, skips deployment of the rebalancer - `CHAINLINK_GAS_PRICE_VALIDITY`: the amount of time (in seconds) we consider the price valid. A tolerance should be added to avoid reverting if chainlink misses the heartbeat by a few minutes -- `USDN_ADDRESS`: required if running `02_Deploy.s.sol` in a production environment (not fork) -- `INIT_DEPOSIT_AMOUNT`: amount to use for the `initialize` function call (if not provided, then initialization is skipped). -- `INIT_LONG_AMOUNT`: amount to use for the `initialize` function call (if not provided, then initialization is skipped). -- `INIT_LONG_LIQPRICE`: desired liquidation price for the initial long position. For fork deployment, this value is - ignored and the price is calculated to get a leverage of ~2x. +- `USDN_ADDRESS`: required if running `01_Deploy.s.sol` in a production environment (not fork) - `GET_WSTETH`: whether to get wstETH by sending ether to the wstETH contract or not. Only applicable if `WSTETH_ADDRESS` is given. -Example using the real wstETH and depositing 1 ETH for both vault side and long side (with liquidation +Example using the real wstETH and depositing 10 ETH for both vault side and long side for mainnet deployment (with liquidation at 1 USD so a leverage close to 1x): -Will also link oracles to mainnet instances: ``` -export FORK_CHAIN_ID=31337 -export DEPLOYER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -export FEE_COLLECTOR=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -export SDEX_ADDRESS=0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef -export WSTETH_ADDRESS=0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 -export INIT_DEPOSIT_AMOUNT=1000000000000000000 -export INIT_LONG_AMOUNT=1000000000000000000 -export INIT_LONG_LIQPRICE=1000000000000000000 -export PYTH_ADDRESS=0xDd24F84d36BF92C65F92307595335bdFab5Bbd21 -export PYTH_ETH_FEED_ID=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace -export REDSTONE_ETH_FEED_ID=0x4554480000000000000000000000000000000000000000000000000000000000 -export CHAINLINK_ETH_PRICE_ADDRESS=0x694AA1769357215DE4FAC081bf1f309aDC325306 -export CHAINLINK_ETH_PRICE_VALIDITY=3720 -export CHAINLINK_GAS_PRICE_VALIDITY=7500 +export INIT_DEPOSIT_AMOUNT=10000000000000000000 +export INIT_LONG_AMOUNT=10000000000000000000 export GET_WSTETH=true ``` ## Deploy protocol -Initializing the contract (when `INIT_DEPOSIT_AMOUNT` and `INIT_LONG_AMOUNT` are defined) requires enough wstETH to make -the deposit and open the long position. +Just run the bash script corresponding to the desired deployment (mainnet, fork or sepolia). -If `WSTETH_ADDRESS` is defined and `GET_WSTETH=true`, then the script will wrap some ether before initializing the +You will be prompted to enter the `RPC_URL` of the network you want to deploy to (mainnet and sepolia). If you are deploying with a Ledger, you will also be prompted for the deployer address. And without a Ledger, you will be prompted for the deployer private key. +The deployment script for the fork mode does not require any input. + +Only two env variables are required in mainnet or fork modes: `INIT_DEPOSIT_AMOUNT` and `INIT_LONG_AMOUNT`. +On sepolia, if no amounts are provided, the default value is used (200 ethers). + +If `GET_WSTETH=true`, then the script will wrap some ether before initializing the contract so that there is enough balance. ``` -forge script --non-interactive --private-key 0xac... -f http://localhost:8545 script/02_Deploy.s.sol:Deploy --broadcast +./script/deployMainnet.sh +./script/deploySepolia.sh +./script/deployFork.sh ``` ## Anvil fork configuration @@ -84,3 +78,14 @@ npx ts-node script/logsAnalysis.ts -r https://fork-rpc-url.com/ --protocol 0x24E ``` The parameters are the RPC URL and the deployed addresses of the 3 main contracts. + +## Functions clashes + +This utility checks that two contracts don't have common function selector. +We can specify a common base contract to filter wanted duplications. + +It can be used like so: + +``` +npx ts-node script/functionClashes.ts UsdnProtocolImpl.sol UsdnProtocolFallback.sol -s UsdnProtocolStorage.sol +``` diff --git a/script/Utils.s.sol b/script/Utils.s.sol index 3dc48a4bd..d3d214c6c 100644 --- a/script/Utils.s.sol +++ b/script/Utils.s.sol @@ -18,41 +18,97 @@ contract Utils is Script { * @notice Validate the Usdn protocol * @dev Call this function to validate the Usdn protocol before deploying it */ - function validateProtocol() public returns (bool success) { + function validateProtocol() public { string[] memory inputs = _buildCommandFunctionClashes(); - success = _runCommand(inputs); - if (!success) { + try this.runFfiCommand(inputs) { } + catch { revert("function clash detected, run the functionClashes.ts script to see the clashing functions"); } } /** - * @notice Build the command to run the functionClashes.ts script - * @return inputs The command to run the functionClashes.ts script + * @notice Get the amount of stEth for one wstEth on mainnet + * @return stEthPerToken_ The amount of stEth for 1 wstEth */ - function _buildCommandFunctionClashes() internal pure returns (string[] memory inputs) { - inputs = new string[](7); - uint8 i = 0; + function getStEthPerTokenMainnet() public returns (uint256 stEthPerToken_) { + string[] memory inputs = new string[](6); + inputs[0] = "cast"; + inputs[1] = "call"; + inputs[2] = "-r"; + inputs[3] = "https://ethereum-rpc.publicnode.com"; + inputs[4] = "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0"; + inputs[5] = "stEthPerToken()"; - // create the command to run the functionClashes.ts script - // npx ts-node UsdnProtocolImpl.sol UsdnProtocolFallback.sol -s UsdnProtocolStorage.sol - inputs[i++] = "npx"; - inputs[i++] = "ts-node"; - inputs[i++] = SCRIPT_PATH; - inputs[i++] = "UsdnProtocolImpl.sol"; - inputs[i++] = "UsdnProtocolFallback.sol"; - // we need to give the storage contract to remove common functions - inputs[i++] = "-s"; - inputs[i++] = "UsdnProtocolStorage.sol"; + bytes memory result = runFfiCommand(inputs); + stEthPerToken_ = abi.decode(result, (uint256)); + } + + /** + * @notice Clean the `out` directory and build the contracts + * @dev Call this function to clean the `out` directory and build the contracts + */ + function cleanAndBuildContracts() external { + _cleanOutDir(); + _buildContracts(); } /** * @notice Function to run an external command with ffi + * @dev This function reverts if the command fails * @param inputs The command to run - * @return success True if the command was successful, false otherwise + * @return The result of the command, printed to stdout + */ + function runFfiCommand(string[] memory inputs) public returns (bytes memory) { + Vm.FfiResult memory result = vm.tryFfi(inputs); + + if (result.exitCode != 0) { + revert(string(abi.encodePacked('Failed to run bash command with "', inputs[0], '": ', result.stderr))); + } else { + return (result.stdout); + } + } + + /** + * @notice Clean the `out` directory + * @dev Call this function to clean the `out` directory */ - function _runCommand(string[] memory inputs) internal returns (bool success) { - bytes memory result = vm.ffi(inputs); - return (result.length == 0); + function _cleanOutDir() internal { + string[] memory inputs = new string[](2); + inputs[0] = "forge"; + inputs[1] = "clean"; + runFfiCommand(inputs); + } + + /** + * @notice Build the contracts + * @dev Call this function to build the contracts + */ + function _buildContracts() internal { + string[] memory inputs = new string[](4); + inputs[0] = "forge"; + inputs[1] = "build"; + inputs[2] = "--skip"; + inputs[3] = "test"; + runFfiCommand(inputs); + } + + /** + * @notice Build the command to run the functionClashes.ts script + * @return inputs_ The command to run the functionClashes.ts script + */ + function _buildCommandFunctionClashes() internal pure returns (string[] memory inputs_) { + inputs_ = new string[](7); + uint8 i = 0; + + // create the command to run the functionClashes.ts script + // npx ts-node UsdnProtocolImpl.sol UsdnProtocolFallback.sol -s UsdnProtocolStorage.sol + inputs_[i++] = "npx"; + inputs_[i++] = "ts-node"; + inputs_[i++] = SCRIPT_PATH; + inputs_[i++] = "UsdnProtocolImpl.sol"; + inputs_[i++] = "UsdnProtocolFallback.sol"; + // we need to give the storage contract to remove common functions + inputs_[i++] = "-s"; + inputs_[i++] = "UsdnProtocolStorage.sol"; } } diff --git a/script/deployFork.sh b/script/deployFork.sh index 0a47bfbd5..ba5d345cc 100755 --- a/script/deployFork.sh +++ b/script/deployFork.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash # Path of the script folder (so that the script can be invoked from somewhere else than the project's root) SCRIPT_DIR=$(dirname -- "$(readlink -f -- "$BASH_SOURCE")") +# Execute in the context of the project's root +pushd $SCRIPT_DIR/.. >/dev/null # Anvil RPC URL RPC_URL=http://localhost:8545 @@ -8,26 +10,11 @@ RPC_URL=http://localhost:8545 DEPLOYER_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Setup deployment script environment variables -# FORK_CHAIN_ID should be set before running the script. If not specified, 31337 is assumed. -export ETHERSCAN_API_KEY=XXXXXXXXXXXXXXXXX # not needed but needs to exist export DEPLOYER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -export FEE_COLLECTOR=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -export SDEX_ADDRESS=0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef -export WSTETH_ADDRESS=0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 export INIT_DEPOSIT_AMOUNT=1000000000000000000000 export INIT_LONG_AMOUNT=1000000000000000000000 -export PYTH_ADDRESS=0x4305FB66699C3B2702D4d05CF36551390A4c69C6 -export PYTH_ETH_FEED_ID=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace -export REDSTONE_ETH_FEED_ID=0x4554480000000000000000000000000000000000000000000000000000000000 -export CHAINLINK_ETH_PRICE_ADDRESS=0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 -export CHAINLINK_ETH_PRICE_VALIDITY=3720 -export CHAINLINK_GAS_PRICE_ADDRESS=0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C -export CHAINLINK_GAS_PRICE_VALIDITY=7500 export GET_WSTETH=true -# Execute in the context of the project's root -pushd $SCRIPT_DIR/.. - -forge script --non-interactive --private-key $DEPLOYER_PRIVATE_KEY -f $RPC_URL script/02_Deploy.s.sol:Deploy --broadcast +forge script --non-interactive --private-key $DEPLOYER_PRIVATE_KEY -f $RPC_URL script/01_Deploy.s.sol:Deploy --broadcast -popd +popd >/dev/null diff --git a/script/deployMainnet.sh b/script/deployMainnet.sh new file mode 100755 index 000000000..591d0f7f5 --- /dev/null +++ b/script/deployMainnet.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# Path of the script folder (so that the script can be invoked from somewhere else than the project's root) +SCRIPT_DIR=$(dirname -- "$(readlink -f -- "$BASH_SOURCE")") +# Execute in the context of the project's root +pushd $SCRIPT_DIR/.. >/dev/null + +red='\033[0;31m' +green='\033[0;32m' +blue='\033[0;34m' +nc='\033[0m' + +ledger=false +rpcUrl="" +deployerPrivateKey="" +address="" + +read -p $'\n'"Enter rpc url : " userRpcUrl +rpcUrl=$userRpcUrl + +while true; do + read -p $'\n'"Do you wish to use a ledger? (Yy/Nn) : " yn + case $yn in + [Yy]*) + read -p $'\n'"Enter address : " userAddress + address=$userAddress + + printf "\n\n$green Running script in Ledger mode with :\n" + ledger=true + break + ;; + [Nn]*) + read -s -p $'\n'"Enter private key : " privateKey + deployerPrivateKey=$privateKey + + address="$(cast wallet address $deployerPrivateKey)" + if [[ -z $address ]]; then + printf "\n$red The private key is invalid$nc\n\n" + exit 1 + fi + + printf "\n\n$green Running script in Non-Ledger mode with :\n" + ledger=false + break + ;; + *) printf "\nPlease answer yes (Y/y) or no (N/n).\n" ;; + esac +done + +while true; do + printf "\n$blue Address :$nc $address" + printf "\n$blue RPC URL :$nc "$rpcUrl"\n" + read -p $'\n'"Do you wish to continue? (Yy/Nn) : " yn + case $yn in + [Yy]*) + export DEPLOYER_ADDRESS=$address + break + ;; + [Nn]*) + exit 1 + ;; + *) printf "\nPlease answer yes (Y/y) or no (N/n).\n" ;; + esac +done + +if [ $ledger = true ]; then + forge script -l -f "$rpcUrl" script/00_DeployUsdn.s.sol:DeployUsdn --broadcast +else + forge script --private-key $deployerPrivateKey -f "$rpcUrl" script/00_DeployUsdn.s.sol:DeployUsdn --broadcast +fi + +status=$? +if [ $status -ne 0 ]; then + echo "Failed to deploy USDN contract" + exit 1 +fi + +printf "$green Waiting for USDN contract to be deployed... (12s) $nc\n" +sleep 12s + +BROADCAST="broadcast/00_DeployUsdn.s.sol/1/run-latest.json" +export USDN_ADDRESS="$(cat "$BROADCAST" | jq -r '.returns.Usdn_.value')" + +if [ $ledger = true ]; then + forge script -l -f "$rpcUrl" script/01_Deploy.s.sol:Deploy --broadcast +else + forge script --private-key $deployerPrivateKey -f "$rpcUrl" script/01_Deploy.s.sol:Deploy --broadcast +fi + +popd >/dev/null diff --git a/script/deploySepolia.sh b/script/deploySepolia.sh index f5bd79760..ded21970a 100755 --- a/script/deploySepolia.sh +++ b/script/deploySepolia.sh @@ -1,61 +1,74 @@ #!/usr/bin/env bash - -# Ensure the deployer key is set -if [[ -z "$DEPLOYER_PRIVATE_KEY" ]]; then - echo "The DEPLOYER_PRIVATE_KEY environment variable must be set" - exit 1 -fi # Path of the script folder (so that the script can be invoked from somewhere else than the project's root) SCRIPT_DIR=$(dirname -- "$(readlink -f -- "$BASH_SOURCE")") -pushd $SCRIPT_DIR/.. -export ETHERSCAN_API_KEY=XXXXXXXXXXXXXXXXX # not needed but needs to exist - -# Deployer position -export INIT_DEPOSIT_AMOUNT="${INIT_DEPOSIT_AMOUNT:=200000000000000000000}" # 200 wstETH by default -export INIT_LONG_AMOUNT="${INIT_LONG_AMOUNT:=200000000000000000000}" # 200 wstETH by default - -# RPC URL, can be customized but defaults to localhost/anvil for testing -: "${RPC_URL:=http://localhost:8545}" - -CHAIN_ID=$(cast chain-id -r "$RPC_URL") - -# Deploy mocks -forge script --non-interactive --private-key "$DEPLOYER_PRIVATE_KEY" -f "$RPC_URL" script/00_DeploySepoliaMocks.s.sol:DeploySepoliaMocks --broadcast - -BROADCAST="broadcast/00_DeploySepoliaMocks.s.sol/$CHAIN_ID/run-latest.json" -export SDEX_ADDRESS=$(cat "$BROADCAST" | jq -r '.returns.Sdex_.value') -export WSTETH_ADDRESS=$(cat "$BROADCAST" | jq -r '.returns.WstETH_.value') -export CHAINLINK_GAS_PRICE_ADDRESS=$(cat "$BROADCAST" | jq -r '.returns.MockFastGasGwei_.value') - -# Set wstETH conversion rate -RATE=$(cast call -r https://ethereum-rpc.publicnode.com 0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 "stEthPerToken()" | tr -d '\n') -RATE_UINT=$(cast to-dec "$RATE" | tr -d '\n') -TXDATA=$(cast mktx --private-key "$DEPLOYER_PRIVATE_KEY" "$WSTETH_ADDRESS" "setStEthPerToken(uint256)" "$RATE_UINT" | tr -d '\n') -cast publish -r "$RPC_URL" "$TXDATA" - -# Deploy USDN token -forge script --non-interactive --private-key "$DEPLOYER_PRIVATE_KEY" -f "$RPC_URL" script/01_DeployUsdn.s.sol:DeployUsdn --broadcast - -BROADCAST="broadcast/01_DeployUsdn.s.sol/$CHAIN_ID/run-latest.json" -export USDN_ADDRESS=$(cat "$BROADCAST" | jq -r '.returns.Usdn_.value') - -# Calculate liquidation price for leverage 2x -export CHAINLINK_ETH_PRICE_ADDRESS=0x694AA1769357215DE4FAC081bf1f309aDC325306 -ETH_PRICE=$(cast call -r "$RPC_URL" "$CHAINLINK_ETH_PRICE_ADDRESS" "latestAnswer()" | tr -d '\n') -ETH_PRICE_UINT=$(cast to-dec "$ETH_PRICE" | tr -d '\n') -ETH_PRICE_NORM=$(expr $ETH_PRICE_UINT \* 10000000000) -export INIT_LONG_LIQPRICE=$(expr $ETH_PRICE_NORM \* $RATE_UINT / 2000000000000000000) - -# Deploy protocol -export DEPLOYER_ADDRESS=$(cast wallet address "$DEPLOYER_PRIVATE_KEY") -export FEE_COLLECTOR="$DEPLOYER_ADDRESS" -export PYTH_ADDRESS=0xDd24F84d36BF92C65F92307595335bdFab5Bbd21 -export PYTH_ETH_FEED_ID=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace -export REDSTONE_ETH_FEED_ID=0x4554480000000000000000000000000000000000000000000000000000000000 -export CHAINLINK_ETH_PRICE_VALIDITY=3720 -export CHAINLINK_GAS_PRICE_VALIDITY=7500 -export GET_WSTETH=false - -forge script --force --non-interactive --private-key "$DEPLOYER_PRIVATE_KEY" -f "$RPC_URL" script/02_Deploy.s.sol:Deploy --broadcast - -popd +# Execute in the context of the project's root +pushd $SCRIPT_DIR/.. >/dev/null + +red='\033[0;31m' +green='\033[0;32m' +blue='\033[0;34m' +nc='\033[0m' + +ledger=false +broadcastMode="" +rpcUrl="" +deployerPrivateKey="" +address="" + +read -p $'\n'"Enter rpc url : " userRpcUrl +rpcUrl=$userRpcUrl + +while true; do + read -p $'\n'"Do you wish to use a ledger? (Yy/Nn) : " yn + case $yn in + [Yy]*) + read -p $'\n'"Enter address : " userAddress + address=$userAddress + + printf "\n$green Running script in Ledger mode with :\n" + ledger=true + break + ;; + [Nn]*) + read -s -p $'\n'"Enter private key : " privateKey + deployerPrivateKey=$privateKey + + address="$(cast wallet address $deployerPrivateKey)" + if [[ -z $address ]]; then + printf "\n$red The private key is invalid$nc\n\n" + exit 1 + fi + + printf "\n$green Running script in Non-Ledger mode with :\n" + ledger=false + break + ;; + *) printf "\nPlease answer yes (Y/y) or no (N/n).\n" ;; + esac +done + +printf "\n$blue Address :$nc $address" +printf "\n$blue RPC URL :$nc "$rpcUrl"\n" +export DEPLOYER_ADDRESS=$address + +while true; do + read -p $'\n'"Do you wish to broadcast? (Yy/Nn) : " yn + case $yn in + [Yy]*) + broadcastMode="--broadcast" + break + ;; + [Nn]*) + break + ;; + *) printf "\nPlease answer yes (Y/y) or no (N/n).\n" ;; + esac +done + +if [ $ledger = true ]; then + forge script -l -f "$rpcUrl" script/01_Deploy.s.sol:Deploy $broadcastMode +else + forge script --private-key $deployerPrivateKey -f "$rpcUrl" script/01_Deploy.s.sol:Deploy $broadcastMode +fi + +popd >/dev/null diff --git a/soldeer.lock b/soldeer.lock index 105b6b3ab..d7d0ee4ee 100644 --- a/soldeer.lock +++ b/soldeer.lock @@ -37,9 +37,9 @@ checksum = "180e009e8abfc5ed43383418f2593ac790655b58ec18ae52a92a636d5f298ad4" [[dependencies]] name = "forge-std" -version = "1.9.1" -source = "https://soldeer-revisions.s3.amazonaws.com/forge-std/v1_9_1_03-07-2024_14:44:59_forge-std-v1.9.1.zip" -checksum = "110b35ad3604d91a919c521c71206c18cd07b29c750bd90b5cbbaf37288c9636" +version = "1.9.2" +source = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_9_2_06-08-2024_17:31:25_forge-std-1.9.2.zip" +checksum = "20fd008c7c69b6c737cc0284469d1c76497107bc3e004d8381f6d8781cb27980" [[dependencies]] name = "openzeppelin-foundry-upgrades" diff --git a/src/UsdnProtocol/UsdnProtocolImpl.sol b/src/UsdnProtocol/UsdnProtocolImpl.sol index 0612e48ad..54dfea3c8 100644 --- a/src/UsdnProtocol/UsdnProtocolImpl.sol +++ b/src/UsdnProtocol/UsdnProtocolImpl.sol @@ -13,7 +13,6 @@ import { IUsdnProtocolImpl } from "../interfaces/UsdnProtocol/IUsdnProtocolImpl. import { UsdnProtocolActions } from "./UsdnProtocolActions.sol"; import { UsdnProtocolCore } from "./UsdnProtocolCore.sol"; import { UsdnProtocolLong } from "./UsdnProtocolLong.sol"; -import { UsdnProtocolSepolia } from "./UsdnProtocolSepolia.sol"; import { UsdnProtocolVault } from "./UsdnProtocolVault.sol"; import { UsdnProtocolConstantsLibrary as Constants } from "./libraries/UsdnProtocolConstantsLibrary.sol"; @@ -22,8 +21,7 @@ contract UsdnProtocolImpl is UsdnProtocolLong, UsdnProtocolVault, UsdnProtocolCore, - UsdnProtocolActions, - UsdnProtocolSepolia + UsdnProtocolActions { /// @inheritdoc IUsdnProtocolImpl function initializeStorage( diff --git a/src/UsdnProtocol/UsdnProtocolSepolia.sol b/src/UsdnProtocol/UsdnProtocolSepolia.sol index d26f667b9..05e9ae749 100644 --- a/src/UsdnProtocol/UsdnProtocolSepolia.sol +++ b/src/UsdnProtocol/UsdnProtocolSepolia.sol @@ -3,7 +3,9 @@ pragma solidity ^0.8.25; import { SafeTransferLib } from "solady/src/utils/SafeTransferLib.sol"; -contract UsdnProtocolSepolia { +import { UsdnProtocolImpl } from "./UsdnProtocolImpl.sol"; + +contract UsdnProtocolSepolia is UsdnProtocolImpl { using SafeTransferLib for address; bytes32 private constant _sweepSalt = keccak256("sweep sweep baby"); diff --git a/test/unit/UsdnProtocol/Actions/Sepolia.t.sol b/test/unit/UsdnProtocol/Actions/Sepolia.t.sol index 521ca9d49..36af8b0ba 100644 --- a/test/unit/UsdnProtocol/Actions/Sepolia.t.sol +++ b/test/unit/UsdnProtocol/Actions/Sepolia.t.sol @@ -7,6 +7,7 @@ contract TestUsdnProtocolSepolia is UsdnProtocolBaseFixture { address constant SWEEP_ADMIN = 0xFB8A0f060CA1DB2f1D241a3b147aCDA1859901B0; function setUp() public { + sepolia = true; super._setUp(DEFAULT_PARAMS); vm.deal(address(protocol), 1 ether); } diff --git a/test/unit/UsdnProtocol/utils/Fixtures.sol b/test/unit/UsdnProtocol/utils/Fixtures.sol index e380dd0ed..cced52309 100644 --- a/test/unit/UsdnProtocol/utils/Fixtures.sol +++ b/test/unit/UsdnProtocol/utils/Fixtures.sol @@ -20,6 +20,7 @@ import { WstETH } from "../../../utils/WstEth.sol"; import { MockChainlinkOnChain } from "../../Middlewares/utils/MockChainlinkOnChain.sol"; import { RebalancerHandler } from "../../Rebalancer/utils/Handler.sol"; import { UsdnProtocolHandler } from "./Handler.sol"; +import { UsdnProtocolHandlerSepolia } from "./HandlerSepolia.sol"; import { MockOracleMiddleware } from "./MockOracleMiddleware.sol"; import { LiquidationRewardsManager } from "../../../../src/OracleMiddleware/LiquidationRewardsManager.sol"; @@ -101,6 +102,7 @@ contract UsdnProtocolBaseFixture is BaseFixture, IUsdnProtocolErrors, IEventsErr PositionId public initialPosition; uint256 public usdnInitialTotalSupply; address[] public users; + bool public sepolia; int24 internal _tickSpacing = 100; // tick spacing 100 = 1% PreviousActionsData internal EMPTY_PREVIOUS_DATA = @@ -140,10 +142,16 @@ contract UsdnProtocolBaseFixture is BaseFixture, IUsdnProtocolErrors, IEventsErr }); } - UsdnProtocolHandler test = new UsdnProtocolHandler(); + UsdnProtocolHandler implementation; + if (sepolia) { + implementation = UsdnProtocolHandler(address(new UsdnProtocolHandlerSepolia())); + } else { + implementation = new UsdnProtocolHandler(); + } + UsdnProtocolFallback protocolFallback = new UsdnProtocolFallback(); address proxy = UnsafeUpgrades.deployUUPSProxy( - address(test), + address(implementation), abi.encodeCall( UsdnProtocolHandler.initializeStorageHandler, ( diff --git a/test/unit/UsdnProtocol/utils/Handler.sol b/test/unit/UsdnProtocol/utils/Handler.sol index 854ce5340..8eec6f452 100644 --- a/test/unit/UsdnProtocol/utils/Handler.sol +++ b/test/unit/UsdnProtocol/utils/Handler.sol @@ -5,7 +5,6 @@ import { Test } from "forge-std/Test.sol"; import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol"; -import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import { LibBitmap } from "solady/src/utils/LibBitmap.sol"; import { UsdnProtocolImpl } from "../../../../src/UsdnProtocol/UsdnProtocolImpl.sol"; @@ -25,7 +24,6 @@ import { IUsdn } from "../../../../src/interfaces/Usdn/IUsdn.sol"; import { IUsdnProtocolFallback } from "../../../../src/interfaces/UsdnProtocol/IUsdnProtocolFallback.sol"; import { DoubleEndedQueue } from "../../../../src/libraries/DoubleEndedQueue.sol"; import { HugeUint } from "../../../../src/libraries/HugeUint.sol"; -import { HugeUint } from "../../../../src/libraries/HugeUint.sol"; import { SignedMath } from "../../../../src/libraries/SignedMath.sol"; /** diff --git a/test/unit/UsdnProtocol/utils/HandlerSepolia.sol b/test/unit/UsdnProtocol/utils/HandlerSepolia.sol new file mode 100644 index 000000000..a69b5e3b1 --- /dev/null +++ b/test/unit/UsdnProtocol/utils/HandlerSepolia.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.26; + +import { Test } from "forge-std/Test.sol"; + +import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; + +import { UsdnProtocolSepolia } from "../../../../src/UsdnProtocol/UsdnProtocolSepolia.sol"; +import { IBaseOracleMiddleware } from "../../../../src/interfaces/OracleMiddleware/IBaseOracleMiddleware.sol"; +import { ILiquidationRewardsManager } from "../../../../src/interfaces/OracleMiddleware/ILiquidationRewardsManager.sol"; +import { IUsdn } from "../../../../src/interfaces/Usdn/IUsdn.sol"; +import { IUsdnProtocolFallback } from "../../../../src/interfaces/UsdnProtocol/IUsdnProtocolFallback.sol"; + +/** + * @title UsdnProtocolHandlerSepolia + * @dev Wrapper to aid in testing the protocol on Sepolia + */ +contract UsdnProtocolHandlerSepolia is UsdnProtocolSepolia, Test { + function initializeStorageHandler( + IUsdn usdn, + IERC20Metadata sdex, + IERC20Metadata asset, + IBaseOracleMiddleware oracleMiddleware, + ILiquidationRewardsManager liquidationRewardsManager, + int24 tickSpacing, + address feeCollector, + Roles memory roles, + IUsdnProtocolFallback protocolFallback + ) public initializer { + initializeStorage( + usdn, + sdex, + asset, + oracleMiddleware, + liquidationRewardsManager, + tickSpacing, + feeCollector, + roles, + protocolFallback + ); + } + + /// @dev Useful to completely disable funding, which is normally initialized with a positive bias value + function resetEMA() external { + s._EMA = 0; + } +}