diff --git a/script/BuildPointers.sol b/script/BuildPointers.sol index 2054f901..a49f3006 100644 --- a/script/BuildPointers.sol +++ b/script/BuildPointers.sol @@ -322,7 +322,10 @@ contract BuildPointers is Script { vm.writeLine(GEN_V4_PATH, ""); vm.writeLine(GEN_V4_PATH, "library LibProdDeployV4 {"); vm.writeLine(GEN_V4_PATH, string.concat("address constant BEACON_INITIAL_OWNER = address(", GEN_OWNER, ");")); - vm.writeLine(GEN_V4_PATH, "address constant STOX_PROD_AUTHORISER_V4_CLONE = address(0);"); + vm.writeLine( + GEN_V4_PATH, + "address constant STOX_PROD_AUTHORISER_V4_CLONE =" " address(0x315b16faa6eE413faBCa877d3851B3818369f0cD);" + ); vm.writeLine( GEN_V4_PATH, "bytes32 constant STOX_PROD_AUTHORISER_V4_CLONE_CODEHASH =" diff --git a/src/generated/0_1_8/ST0xOrchestrator.pointers.sol b/src/generated/0_1_8/ST0xOrchestrator.pointers.sol new file mode 100644 index 00000000..9fe30271 --- /dev/null +++ b/src/generated/0_1_8/ST0xOrchestrator.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x7537448e8cbb200d25651a941a39e465e2ef7a549fe8245d83774bef485629e6); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x0099FcB947Cc31E21C631478A2a9E2E591cd4010); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6131c0806100d65f395ff3fe608060405260043610610191575f3560e01c8063742fabb3116100dc578063b930908f11610087578063d547741f11610062578063d547741f14610594578063e9a9c850146105b3578063f14893a7146105e6578063f23a6e6114610605575f80fd5b8063b930908f146104f2578063bc197c8114610525578063c4d66de814610575575f80fd5b806391d14854116100b757806391d148541461045d5780639cb887f8146104c0578063a217fddf146104df575f80fd5b8063742fabb3146103cf578063752c9cf51461042257806384b0196e14610436575f80fd5b80633b94a0dd1161013c57806344d171871161011757806344d1718714610372578063584f418e14610391578063671d083f146103b0575f80fd5b80633b94a0dd146103015780633e81e40d146103345780633f6fc76f14610353575f80fd5b8063248a9ca31161016c578063248a9ca3146102745780632f2ff15d146102c157806336568abe146102e2575f80fd5b806301ffc9a71461019c5780630e230f97146101d057806320df435914610233575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b506101bb6101b6366004612944565b610624565b60405190151581526020015b60405180910390f35b3480156101db575f80fd5b506101bb6101ea366004612973565b6001600160a01b03919091165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320938352929052205460ff1690565b34801561023e575f80fd5b506102667f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de81565b6040519081526020016101c7565b34801561027f575f80fd5b5061026661028e36600461299d565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156102cc575f80fd5b506102e06102db3660046129b4565b6106cb565b005b3480156102ed575f80fd5b506102e06102fc3660046129b4565b610714565b34801561030c575f80fd5b506102667f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413381565b34801561033f575f80fd5b5061026661034e3660046129e2565b610765565b34801561035e575f80fd5b506102e061036d366004612a25565b61077b565b34801561037d575f80fd5b506102e061038c366004612aa9565b610816565b34801561039c575f80fd5b506102e06103ab366004612b01565b610979565b3480156103bb575f80fd5b506102e06103ca366004612b48565b610af3565b3480156103da575f80fd5b506102666103e9366004612be2565b6001600160a01b03165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090205490565b34801561042d575f80fd5b506101bb610cbc565b348015610441575f80fd5b5061044a610eb1565b6040516101c79796959493929190612c2b565b348015610468575f80fd5b506101bb6104773660046129b4565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb575f80fd5b506102e06104da366004612973565b610f0f565b3480156104ea575f80fd5b506102665f81565b3480156104fd575f80fd5b506102667f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a381565b348015610530575f80fd5b5061054461053f366004612d1f565b610fc5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101c7565b348015610580575f80fd5b506102e061058f366004612be2565b611054565b34801561059f575f80fd5b506102e06105ae3660046129b4565b611283565b3480156105be575f80fd5b506102667ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba81565b3480156105f1575f80fd5b506102e0610600366004612b01565b6112c6565b348015610610575f80fd5b5061054461061f366004612dd6565b6113ce565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806106b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f18bd37da00000000000000000000000000000000000000000000000000000000145b806106c557506106c58261140b565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610704816114a1565b61070e83836114ae565b50505050565b6001600160a01b0381163314610756576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610760828261157a565b505050565b5f6107728585858561161e565b95945050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de6107a5816114a1565b6107ad611694565b6107c16001600160a01b03851683856116cb565b816001600160a01b0316846001600160a01b03167f4810d2f105dcba10d740b4ac1d8fa8454dd37014b2051bace1edb1d903c440c48560405161080691815260200190565b60405180910390a361070e611719565b7f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a3610840816114a1565b610848611743565b610850611694565b835f03610889576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61089e6001600160a01b0386163330876119d5565b6001600160a01b0385165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70060209081526040808320548151601f8701849004840281018401909252858252929161091791899189919089908990819084018382808284375f92019190915250611a2492505050565b60408051888152602081018590529081018290529091506001600160a01b0388169033907f112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc9060600160405180910390a35050610972611719565b5050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de6109a3816114a1565b6109ab611694565b846001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b9190612e3b565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018790526064820186905260a060848301525f60a4830152919091169063f242432a9060c4015f604051808303815f87803b158015610a87575f80fd5b505af1158015610a99573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167fc9e640d2eb1b8469e42f60a66fef6a05cfd27ee3757e48f3f8ba04ecbc8a51b086604051610ae391815260200190565b60405180910390a4610972611719565b7ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba610b1d816114a1565b610b25611743565b610b2d611694565b845f03610b66576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7287878787611d57565b6040517fc77b66c20000000000000000000000000000000000000000000000000000000081525f906001600160a01b0389169063c77b66c290610bc1908990309086908a908a90600401612e56565b6020604051808303815f875af1158015610bdd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c019190612ea2565b9050858114610c4b576040517fbe40f1fc00000000000000000000000000000000000000000000000000000000815260048101879052602481018290526044015b60405180910390fd5b610c5f6001600160a01b03891688886116cb565b60408051878152863560208201526001600160a01b03808a1692908b169133917f7c0eac1a8d30fbe7a577affc3b588a0b7d965a6133d12097cfac0760f2f2b617910160405180910390a450610cb3611719565b50505050505050565b5f8073679ab223dab158ea93e1a4f49104de436c58eab8905073d7f91c1c6e6e651ec3f1fd707af7cbb7526206e16001600160a01b0316816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d539190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db29190612e3b565b6001600160a01b0316148015610eab5750732df5cfe6d688ef9ff1b7c59a499d254b1527b2866001600160a01b0316816001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e419190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea09190612e3b565b6001600160a01b0316145b91505090565b5f6060805f805f6060610ec2611e95565b610eca611f68565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de610f39816114a1565b610f41611694565b5f7f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7006001600160a01b0385165f818152602083815260409182902080549088905582518181529182018890529394507fc6ce8282d3b57b159503fa5566e612aeb9f30c8e20c882398c9cb293c1ba6d68910160405180910390a25050610760611719565b5f805b86811015611025578481108015610ff657505f868683818110610fed57610fed612ee6565b90506020020135115b1561101d5761101d3389898481811061101157611011612ee6565b90506020020135611fb9565b600101610fc8565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b5f61105d612222565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110895750825b90505f8267ffffffffffffffff1660011480156110a55750303b155b9050811580156110b3575080155b156110ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561114b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b03861661118b576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611193611743565b61119b61224a565b61120f6040518060400160405280601081526020017f535430784f7263686573747261746f72000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612252565b6112195f876114ae565b50831561127b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546112bc816114a1565b61070e838361157a565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de6112f0816114a1565b6112f8611694565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018690526064820185905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b158015611372575f80fd5b505af1158015611384573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167f78b19b4b6e69e380c3c303d1e889d510ee3ee409219c1c014d97a0a607b6c6a686604051610ae391815260200190565b5f83156113df576113df3386611fb9565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106c5565b6114ab8133612268565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611571575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556115273390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106c5565b5f9150506106c5565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611571575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106c5565b604080517f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413360208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f906107729060c001604051602081830303815290604052805190602001206122f4565b61169c61233b565b6116c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90612394565b565b6116d8838383600161239b565b610760576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610c42565b6116c95f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006116c3565b5f73679ab223dab158ea93e1a4f49104de436c58eab890505f816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611798573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bc9190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181b9190612e3b565b90506001600160a01b03811673d7f91c1c6e6e651ec3f1fd707af7cbb7526206e114611898576040517fdfdb61b700000000000000000000000000000000000000000000000000000000815273d7f91c1c6e6e651ec3f1fd707af7cbb7526206e160048201526001600160a01b0382166024820152604401610c42565b5f826001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f99190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611934573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119589190612e3b565b90506001600160a01b038116732df5cfe6d688ef9ff1b7c59a499d254b1527b28614610760576040517f3e4077b3000000000000000000000000000000000000000000000000000000008152732df5cfe6d688ef9ff1b7c59a499d254b1527b28660048201526001600160a01b0382166024820152604401610c42565b6119e3848484846001612416565b61070e576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610c42565b5f808490505f816001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8a9190612e3b565b90507f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7005f015f876001600160a01b03166001600160a01b031681526020019081526020015f205492505f826001600160a01b031663f5d214f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b349190612ea2565b90505b8515611d125780841115611b89576040517f66a21a2d0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101879052604401610c42565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611beb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0f9190612ea2565b9050805f03611c245750600190930192611b37565b5f818810611c325781611c34565b875b90505f856001600160a01b031663921a4c428330308b8d6040518663ffffffff1660e01b8152600401611c6b959493929190612f13565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cab9190612ea2565b9050818114611cf0576040517fbe40f1fc0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610c42565b611cfa828a612f55565b9850828203611d0a576001909601955b505050611b37565b5050506001600160a01b03939093165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090208390555090919050565b6001600160a01b0383165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320843584529091529020547f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7009060ff1615611e08576040517f59c210430000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015282356024820152604401610c42565b6001600160a01b0384165f90815260018281016020908152604080842086358086529252909220805460ff19169091179055610972908590611e4f9088908390889061161e565b611e5c6020860186612f8d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061249c92505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611ee690612fee565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1290612fee565b8015611f5d5780601f10611f3457610100808354040283529160200191611f5d565b820191905f5260205f20905b815481529060010190602001808311611f4057829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611ee690612fee565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f481c6a750000000000000000000000000000000000000000000000000000000017905290515f9182916001600160a01b038616916120299161303f565b5f60405180830381855afa9150503d805f8114612061576040519150601f19603f3d011682016040523d82523d5f602084013e612066565b606091505b509150915081158061207a57508051602014155b156120855750505050565b5f61208f82613055565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1e6b8980000000000000000000000000000000000000000000000000000000017905290519192506001600160a01b038316916120ff919061303f565b5f60405180830381855afa9150503d805f8114612137576040519150601f19603f3d011682016040523d82523d5f602084013e61213c565b606091505b50909350915082158061215157508151602014155b1561215d575050505050565b6001600160a01b03851661217083613055565b6001600160a01b031614612185575050505050565b6001600160a01b0381165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602081905260409091205480861015610cb3576001600160a01b0383165f818152602084815260409182902089905581518481529081018990527f2008c207f65bedc2bb65dc8ac34aee36a37cd43a50152d574107c63ace7e07c6910160405180910390a250505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006106c5565b6116c96125cb565b61225a6125cb565b6122648282612609565b5050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16612264576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610c42565b5f6106c561230061266c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156116c9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825d5050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661240a5783831516156123fe573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661248b57838315161561247f573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b8051156124e4576124ae83838361267a565b610760576040517f19ab93cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f642ddf3a0000000000000000000000000000000000000000000000000000000080825260048201849052906001600160a01b0385169063642ddf3a906024016020604051808303815f875af1158015612543573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125679190613078565b7fffffffff000000000000000000000000000000000000000000000000000000001614610760576040517f22b89c080000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610c42565b6125d36126ed565b6116c9576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126116125cb565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10261265d84826130d7565b506003810161070e83826130d7565b5f61267561270b565b905090565b5f836001600160a01b03163b5f036126d8575f80612698858561277e565b5090925090505f8160038111156126b1576126b1613193565b1480156126cf5750856001600160a01b0316826001600160a01b0316145b925050506126e6565b6126e38484846127c7565b90505b9392505050565b5f6126f6612222565b5468010000000000000000900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612735612831565b61273d612846565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f805f83516041036127b5576020840151604085015160608601515f1a6127a78882858561284f565b9550955095505050506127c0565b505081515f91506002905b9250925092565b8051604080517f1626ba7e000000000000000000000000000000000000000000000000000000008082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f61283a611e95565b80519060200120905090565b5f61283a611f68565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561288857505f9150600390508261290d565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156128d9573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661290457505f92506001915082905061290d565b92505f91508190505b9450945094915050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146114ab575f80fd5b5f60208284031215612954575f80fd5b81356126e681612917565b6001600160a01b03811681146114ab575f80fd5b5f8060408385031215612984575f80fd5b823561298f8161295f565b946020939093013593505050565b5f602082840312156129ad575f80fd5b5035919050565b5f80604083850312156129c5575f80fd5b8235915060208301356129d78161295f565b809150509250929050565b5f805f80608085870312156129f5575f80fd5b8435612a008161295f565b93506020850135612a108161295f565b93969395505050506040820135916060013590565b5f805f60608486031215612a37575f80fd5b8335612a428161295f565b9250602084013591506040840135612a598161295f565b809150509250925092565b5f8083601f840112612a74575f80fd5b50813567ffffffffffffffff811115612a8b575f80fd5b602083019150836020828501011115612aa2575f80fd5b9250929050565b5f805f8060608587031215612abc575f80fd5b8435612ac78161295f565b935060208501359250604085013567ffffffffffffffff811115612ae9575f80fd5b612af587828801612a64565b95989497509550505050565b5f805f8060808587031215612b14575f80fd5b8435612b1f8161295f565b935060208501359250604085013591506060850135612b3d8161295f565b939692955090935050565b5f805f805f8060a08789031215612b5d575f80fd5b8635612b688161295f565b95506020870135612b788161295f565b945060408701359350606087013567ffffffffffffffff80821115612b9b575f80fd5b908801906040828b031215612bae575f80fd5b90935060808801359080821115612bc3575f80fd5b50612bd089828a01612a64565b979a9699509497509295939492505050565b5f60208284031215612bf2575f80fd5b81356126e68161295f565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152612c6760e084018a612bfd565b8381036040850152612c79818a612bfd565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612ccc57835183529284019291840191600101612cb0565b50909c9b505050505050505050505050565b5f8083601f840112612cee575f80fd5b50813567ffffffffffffffff811115612d05575f80fd5b6020830191508360208260051b8501011115612aa2575f80fd5b5f805f805f805f8060a0898b031215612d36575f80fd5b8835612d418161295f565b97506020890135612d518161295f565b9650604089013567ffffffffffffffff80821115612d6d575f80fd5b612d798c838d01612cde565b909850965060608b0135915080821115612d91575f80fd5b612d9d8c838d01612cde565b909650945060808b0135915080821115612db5575f80fd5b50612dc28b828c01612a64565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612deb575f80fd5b8635612df68161295f565b95506020870135612e068161295f565b94506040870135935060608701359250608087013567ffffffffffffffff811115612e2f575f80fd5b612bd089828a01612a64565b5f60208284031215612e4b575f80fd5b81516126e68161295f565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612eb2575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8581525f6001600160a01b03808716602084015280861660408401525083606083015260a06080830152612f4a60a0830184612bfd565b979650505050505050565b818103818111156106c5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612fc0575f80fd5b83018035915067ffffffffffffffff821115612fda575f80fd5b602001915036819003821315612aa2575f80fd5b600181811c9082168061300257607f821691505b602082108103613039577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b80516020808301519190811015613039575f1960209190910360031b1b16919050565b5f60208284031215613088575f80fd5b81516126e681612917565b601f82111561076057805f5260205f20601f840160051c810160208510156130b85750805b601f840160051c820191505b81811015610972575f81556001016130c4565b815167ffffffffffffffff8111156130f1576130f1612eb9565b613105816130ff8454612fee565b84613093565b602080601f831160018114613138575f84156131215750858301515b5f19600386901b1c1916600185901b17855561127b565b5f85815260208120601f198616915b8281101561316657888601518255948401946001909101908401613147565b508582101561318357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405260043610610191575f3560e01c8063742fabb3116100dc578063b930908f11610087578063d547741f11610062578063d547741f14610594578063e9a9c850146105b3578063f14893a7146105e6578063f23a6e6114610605575f80fd5b8063b930908f146104f2578063bc197c8114610525578063c4d66de814610575575f80fd5b806391d14854116100b757806391d148541461045d5780639cb887f8146104c0578063a217fddf146104df575f80fd5b8063742fabb3146103cf578063752c9cf51461042257806384b0196e14610436575f80fd5b80633b94a0dd1161013c57806344d171871161011757806344d1718714610372578063584f418e14610391578063671d083f146103b0575f80fd5b80633b94a0dd146103015780633e81e40d146103345780633f6fc76f14610353575f80fd5b8063248a9ca31161016c578063248a9ca3146102745780632f2ff15d146102c157806336568abe146102e2575f80fd5b806301ffc9a71461019c5780630e230f97146101d057806320df435914610233575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b506101bb6101b6366004612944565b610624565b60405190151581526020015b60405180910390f35b3480156101db575f80fd5b506101bb6101ea366004612973565b6001600160a01b03919091165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320938352929052205460ff1690565b34801561023e575f80fd5b506102667f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de81565b6040519081526020016101c7565b34801561027f575f80fd5b5061026661028e36600461299d565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156102cc575f80fd5b506102e06102db3660046129b4565b6106cb565b005b3480156102ed575f80fd5b506102e06102fc3660046129b4565b610714565b34801561030c575f80fd5b506102667f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413381565b34801561033f575f80fd5b5061026661034e3660046129e2565b610765565b34801561035e575f80fd5b506102e061036d366004612a25565b61077b565b34801561037d575f80fd5b506102e061038c366004612aa9565b610816565b34801561039c575f80fd5b506102e06103ab366004612b01565b610979565b3480156103bb575f80fd5b506102e06103ca366004612b48565b610af3565b3480156103da575f80fd5b506102666103e9366004612be2565b6001600160a01b03165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090205490565b34801561042d575f80fd5b506101bb610cbc565b348015610441575f80fd5b5061044a610eb1565b6040516101c79796959493929190612c2b565b348015610468575f80fd5b506101bb6104773660046129b4565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb575f80fd5b506102e06104da366004612973565b610f0f565b3480156104ea575f80fd5b506102665f81565b3480156104fd575f80fd5b506102667f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a381565b348015610530575f80fd5b5061054461053f366004612d1f565b610fc5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101c7565b348015610580575f80fd5b506102e061058f366004612be2565b611054565b34801561059f575f80fd5b506102e06105ae3660046129b4565b611283565b3480156105be575f80fd5b506102667ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba81565b3480156105f1575f80fd5b506102e0610600366004612b01565b6112c6565b348015610610575f80fd5b5061054461061f366004612dd6565b6113ce565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806106b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f18bd37da00000000000000000000000000000000000000000000000000000000145b806106c557506106c58261140b565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610704816114a1565b61070e83836114ae565b50505050565b6001600160a01b0381163314610756576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610760828261157a565b505050565b5f6107728585858561161e565b95945050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de6107a5816114a1565b6107ad611694565b6107c16001600160a01b03851683856116cb565b816001600160a01b0316846001600160a01b03167f4810d2f105dcba10d740b4ac1d8fa8454dd37014b2051bace1edb1d903c440c48560405161080691815260200190565b60405180910390a361070e611719565b7f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a3610840816114a1565b610848611743565b610850611694565b835f03610889576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61089e6001600160a01b0386163330876119d5565b6001600160a01b0385165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70060209081526040808320548151601f8701849004840281018401909252858252929161091791899189919089908990819084018382808284375f92019190915250611a2492505050565b60408051888152602081018590529081018290529091506001600160a01b0388169033907f112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc9060600160405180910390a35050610972611719565b5050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de6109a3816114a1565b6109ab611694565b846001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b9190612e3b565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018790526064820186905260a060848301525f60a4830152919091169063f242432a9060c4015f604051808303815f87803b158015610a87575f80fd5b505af1158015610a99573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167fc9e640d2eb1b8469e42f60a66fef6a05cfd27ee3757e48f3f8ba04ecbc8a51b086604051610ae391815260200190565b60405180910390a4610972611719565b7ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba610b1d816114a1565b610b25611743565b610b2d611694565b845f03610b66576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7287878787611d57565b6040517fc77b66c20000000000000000000000000000000000000000000000000000000081525f906001600160a01b0389169063c77b66c290610bc1908990309086908a908a90600401612e56565b6020604051808303815f875af1158015610bdd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c019190612ea2565b9050858114610c4b576040517fbe40f1fc00000000000000000000000000000000000000000000000000000000815260048101879052602481018290526044015b60405180910390fd5b610c5f6001600160a01b03891688886116cb565b60408051878152863560208201526001600160a01b03808a1692908b169133917f7c0eac1a8d30fbe7a577affc3b588a0b7d965a6133d12097cfac0760f2f2b617910160405180910390a450610cb3611719565b50505050505050565b5f8073679ab223dab158ea93e1a4f49104de436c58eab8905073d7f91c1c6e6e651ec3f1fd707af7cbb7526206e16001600160a01b0316816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d539190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db29190612e3b565b6001600160a01b0316148015610eab5750732df5cfe6d688ef9ff1b7c59a499d254b1527b2866001600160a01b0316816001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e419190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea09190612e3b565b6001600160a01b0316145b91505090565b5f6060805f805f6060610ec2611e95565b610eca611f68565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de610f39816114a1565b610f41611694565b5f7f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7006001600160a01b0385165f818152602083815260409182902080549088905582518181529182018890529394507fc6ce8282d3b57b159503fa5566e612aeb9f30c8e20c882398c9cb293c1ba6d68910160405180910390a25050610760611719565b5f805b86811015611025578481108015610ff657505f868683818110610fed57610fed612ee6565b90506020020135115b1561101d5761101d3389898481811061101157611011612ee6565b90506020020135611fb9565b600101610fc8565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b5f61105d612222565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110895750825b90505f8267ffffffffffffffff1660011480156110a55750303b155b9050811580156110b3575080155b156110ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561114b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b03861661118b576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611193611743565b61119b61224a565b61120f6040518060400160405280601081526020017f535430784f7263686573747261746f72000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612252565b6112195f876114ae565b50831561127b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546112bc816114a1565b61070e838361157a565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de6112f0816114a1565b6112f8611694565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018690526064820185905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b158015611372575f80fd5b505af1158015611384573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167f78b19b4b6e69e380c3c303d1e889d510ee3ee409219c1c014d97a0a607b6c6a686604051610ae391815260200190565b5f83156113df576113df3386611fb9565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106c5565b6114ab8133612268565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611571575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556115273390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106c5565b5f9150506106c5565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611571575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106c5565b604080517f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413360208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f906107729060c001604051602081830303815290604052805190602001206122f4565b61169c61233b565b6116c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90612394565b565b6116d8838383600161239b565b610760576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610c42565b6116c95f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006116c3565b5f73679ab223dab158ea93e1a4f49104de436c58eab890505f816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611798573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bc9190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181b9190612e3b565b90506001600160a01b03811673d7f91c1c6e6e651ec3f1fd707af7cbb7526206e114611898576040517fdfdb61b700000000000000000000000000000000000000000000000000000000815273d7f91c1c6e6e651ec3f1fd707af7cbb7526206e160048201526001600160a01b0382166024820152604401610c42565b5f826001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f99190612e3b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611934573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119589190612e3b565b90506001600160a01b038116732df5cfe6d688ef9ff1b7c59a499d254b1527b28614610760576040517f3e4077b3000000000000000000000000000000000000000000000000000000008152732df5cfe6d688ef9ff1b7c59a499d254b1527b28660048201526001600160a01b0382166024820152604401610c42565b6119e3848484846001612416565b61070e576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610c42565b5f808490505f816001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8a9190612e3b565b90507f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7005f015f876001600160a01b03166001600160a01b031681526020019081526020015f205492505f826001600160a01b031663f5d214f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b349190612ea2565b90505b8515611d125780841115611b89576040517f66a21a2d0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101879052604401610c42565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611beb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0f9190612ea2565b9050805f03611c245750600190930192611b37565b5f818810611c325781611c34565b875b90505f856001600160a01b031663921a4c428330308b8d6040518663ffffffff1660e01b8152600401611c6b959493929190612f13565b6020604051808303815f875af1158015611c87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cab9190612ea2565b9050818114611cf0576040517fbe40f1fc0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610c42565b611cfa828a612f55565b9850828203611d0a576001909601955b505050611b37565b5050506001600160a01b03939093165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090208390555090919050565b6001600160a01b0383165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320843584529091529020547f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7009060ff1615611e08576040517f59c210430000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015282356024820152604401610c42565b6001600160a01b0384165f90815260018281016020908152604080842086358086529252909220805460ff19169091179055610972908590611e4f9088908390889061161e565b611e5c6020860186612f8d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061249c92505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611ee690612fee565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1290612fee565b8015611f5d5780601f10611f3457610100808354040283529160200191611f5d565b820191905f5260205f20905b815481529060010190602001808311611f4057829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611ee690612fee565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f481c6a750000000000000000000000000000000000000000000000000000000017905290515f9182916001600160a01b038616916120299161303f565b5f60405180830381855afa9150503d805f8114612061576040519150601f19603f3d011682016040523d82523d5f602084013e612066565b606091505b509150915081158061207a57508051602014155b156120855750505050565b5f61208f82613055565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1e6b8980000000000000000000000000000000000000000000000000000000017905290519192506001600160a01b038316916120ff919061303f565b5f60405180830381855afa9150503d805f8114612137576040519150601f19603f3d011682016040523d82523d5f602084013e61213c565b606091505b50909350915082158061215157508151602014155b1561215d575050505050565b6001600160a01b03851661217083613055565b6001600160a01b031614612185575050505050565b6001600160a01b0381165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602081905260409091205480861015610cb3576001600160a01b0383165f818152602084815260409182902089905581518481529081018990527f2008c207f65bedc2bb65dc8ac34aee36a37cd43a50152d574107c63ace7e07c6910160405180910390a250505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006106c5565b6116c96125cb565b61225a6125cb565b6122648282612609565b5050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16612264576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610c42565b5f6106c561230061266c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156116c9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825d5050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661240a5783831516156123fe573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661248b57838315161561247f573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b8051156124e4576124ae83838361267a565b610760576040517f19ab93cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f642ddf3a0000000000000000000000000000000000000000000000000000000080825260048201849052906001600160a01b0385169063642ddf3a906024016020604051808303815f875af1158015612543573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125679190613078565b7fffffffff000000000000000000000000000000000000000000000000000000001614610760576040517f22b89c080000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610c42565b6125d36126ed565b6116c9576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126116125cb565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10261265d84826130d7565b506003810161070e83826130d7565b5f61267561270b565b905090565b5f836001600160a01b03163b5f036126d8575f80612698858561277e565b5090925090505f8160038111156126b1576126b1613193565b1480156126cf5750856001600160a01b0316826001600160a01b0316145b925050506126e6565b6126e38484846127c7565b90505b9392505050565b5f6126f6612222565b5468010000000000000000900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612735612831565b61273d612846565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f805f83516041036127b5576020840151604085015160608601515f1a6127a78882858561284f565b9550955095505050506127c0565b505081515f91506002905b9250925092565b8051604080517f1626ba7e000000000000000000000000000000000000000000000000000000008082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f61283a611e95565b80519060200120905090565b5f61283a611f68565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561288857505f9150600390508261290d565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156128d9573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661290457505f92506001915082905061290d565b92505f91508190505b9450945094915050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146114ab575f80fd5b5f60208284031215612954575f80fd5b81356126e681612917565b6001600160a01b03811681146114ab575f80fd5b5f8060408385031215612984575f80fd5b823561298f8161295f565b946020939093013593505050565b5f602082840312156129ad575f80fd5b5035919050565b5f80604083850312156129c5575f80fd5b8235915060208301356129d78161295f565b809150509250929050565b5f805f80608085870312156129f5575f80fd5b8435612a008161295f565b93506020850135612a108161295f565b93969395505050506040820135916060013590565b5f805f60608486031215612a37575f80fd5b8335612a428161295f565b9250602084013591506040840135612a598161295f565b809150509250925092565b5f8083601f840112612a74575f80fd5b50813567ffffffffffffffff811115612a8b575f80fd5b602083019150836020828501011115612aa2575f80fd5b9250929050565b5f805f8060608587031215612abc575f80fd5b8435612ac78161295f565b935060208501359250604085013567ffffffffffffffff811115612ae9575f80fd5b612af587828801612a64565b95989497509550505050565b5f805f8060808587031215612b14575f80fd5b8435612b1f8161295f565b935060208501359250604085013591506060850135612b3d8161295f565b939692955090935050565b5f805f805f8060a08789031215612b5d575f80fd5b8635612b688161295f565b95506020870135612b788161295f565b945060408701359350606087013567ffffffffffffffff80821115612b9b575f80fd5b908801906040828b031215612bae575f80fd5b90935060808801359080821115612bc3575f80fd5b50612bd089828a01612a64565b979a9699509497509295939492505050565b5f60208284031215612bf2575f80fd5b81356126e68161295f565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152612c6760e084018a612bfd565b8381036040850152612c79818a612bfd565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612ccc57835183529284019291840191600101612cb0565b50909c9b505050505050505050505050565b5f8083601f840112612cee575f80fd5b50813567ffffffffffffffff811115612d05575f80fd5b6020830191508360208260051b8501011115612aa2575f80fd5b5f805f805f805f8060a0898b031215612d36575f80fd5b8835612d418161295f565b97506020890135612d518161295f565b9650604089013567ffffffffffffffff80821115612d6d575f80fd5b612d798c838d01612cde565b909850965060608b0135915080821115612d91575f80fd5b612d9d8c838d01612cde565b909650945060808b0135915080821115612db5575f80fd5b50612dc28b828c01612a64565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612deb575f80fd5b8635612df68161295f565b95506020870135612e068161295f565b94506040870135935060608701359250608087013567ffffffffffffffff811115612e2f575f80fd5b612bd089828a01612a64565b5f60208284031215612e4b575f80fd5b81516126e68161295f565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612eb2575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8581525f6001600160a01b03808716602084015280861660408401525083606083015260a06080830152612f4a60a0830184612bfd565b979650505050505050565b818103818111156106c5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612fc0575f80fd5b83018035915067ffffffffffffffff821115612fda575f80fd5b602001915036819003821315612aa2575f80fd5b600181811c9082168061300257607f821691505b602082108103613039577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b80516020808301519190811015613039575f1960209190910360031b1b16919050565b5f60208284031215613088575f80fd5b81516126e681612917565b601f82111561076057805f5260205f20601f840160051c810160208510156130b85750805b601f840160051c820191505b81811015610972575f81556001016130c4565b815167ffffffffffffffff8111156130f1576130f1612eb9565b613105816130ff8454612fee565b84613093565b602080601f831160018114613138575f84156131215750858301515b5f19600386901b1c1916600185901b17855561127b565b5f85815260208120601f198616915b8281101561316657888601518255948401946001909101908401613147565b508582101561318357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd"; diff --git a/src/generated/0_1_8/ST0xOrchestratorBeaconSetDeployer.pointers.sol b/src/generated/0_1_8/ST0xOrchestratorBeaconSetDeployer.pointers.sol new file mode 100644 index 00000000..53ee4a14 --- /dev/null +++ b/src/generated/0_1_8/ST0xOrchestratorBeaconSetDeployer.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x2149474f3f4539b44296101ca3ffafb1ebd7f212b90b5fc9d8d28a4d010ca4eb); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0xBff92564aeffe44C85A9153B9f2dB13e47A22435); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"60a0604052348015600e575f80fd5b507299fcb947cc31e21c631478a2a9e2e591cd4010738e4bdeec7ceb9570d440676345da1dce10329f5b6040516042906082565b6001600160a01b03928316815291166020820152604001604051809103905ff0801580156071573d5f803e3d5ffd5b506001600160a01b0316608052608f565b6104f7806109cf83390190565b6080516109226100ad5f395f81816070015261025201526109225ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806301ffc9a714610043578063429b15441461006b5780634c96a389146100b7575b5f80fd5b610056610051366004610309565b6100ca565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100926100c536600461034f565b610162565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4c96a38900000000000000000000000000000000000000000000000000000000148061015c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82166101b0576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff831660248201525f90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052519091505f907f000000000000000000000000000000000000000000000000000000000000000090839061027d906102fc565b610288929190610382565b604051809103905ff0801580156102a1573d5f803e3d5ffd5b5060405173ffffffffffffffffffffffffffffffffffffffff86811682529192509082169033907fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9060200160405180910390a39392505050565b61052f806103f383390190565b5f60208284031215610319575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610348575f80fd5b9392505050565b5f6020828403121561035f575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610348575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050939250505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056608060405234801561000f575f80fd5b506040516104f73803806104f783398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f80fd5b919050565b5f8060408385031215610170575f80fd5b61017983610144565b915061018760208401610144565b90509250929050565b61035a8061019d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100c05780638da5cb5b146100c8578063f2fde38b146100e5575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b610076366004610320565b6100f8565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007b61010c565b5f5473ffffffffffffffffffffffffffffffffffffffff16610097565b61007b6100f3366004610320565b61011f565b610100610184565b610109816101d6565b50565b610114610184565b61011d5f6102ac565b565b610127610184565b73ffffffffffffffffffffffffffffffffffffffff811661017b576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610109816102ac565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461011d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610172565b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361023e576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610172565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610330575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610353575f80fd5b939250505056"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b506004361061003f575f3560e01c806301ffc9a714610043578063429b15441461006b5780634c96a389146100b7575b5f80fd5b610056610051366004610309565b6100ca565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000ba0d89f6e84a201cd2c720a91911fdadbbb2ad4881565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100926100c536600461034f565b610162565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4c96a38900000000000000000000000000000000000000000000000000000000148061015c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82166101b0576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff831660248201525f90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052519091505f907f000000000000000000000000ba0d89f6e84a201cd2c720a91911fdadbbb2ad4890839061027d906102fc565b610288929190610382565b604051809103905ff0801580156102a1573d5f803e3d5ffd5b5060405173ffffffffffffffffffffffffffffffffffffffff86811682529192509082169033907fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9060200160405180910390a39392505050565b61052f806103f383390190565b5f60208284031215610319575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610348575f80fd5b9392505050565b5f6020828403121561035f575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610348575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050939250505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; diff --git a/src/generated/0_1_8/StoxCorporateActionsFacet.pointers.sol b/src/generated/0_1_8/StoxCorporateActionsFacet.pointers.sol new file mode 100644 index 00000000..aef0d95d --- /dev/null +++ b/src/generated/0_1_8/StoxCorporateActionsFacet.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0xd91520075de1eb2e8fdf042fde3475ee89feb3942306e5d6d5c710273fefc080); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0xB7e24412126ad6A2Ce19cbd79FD11B68e7F30cf6); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"60a0604052348015600e575f80fd5b503060805260805161268d6100635f395f81816101970152818161031b0152818161038901528181610466015281816104c90152818161053b0152818161070301528181610767015261089e015261268d5ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c806379ba430511610072578063bb7bb45a11610058578063bb7bb45a14610151578063dad601be14610159578063e388df491461016c575f80fd5b806379ba43051461011e578063b21a249414610131575f80fd5b80630d1e0432146100a35780631cb5642f146100be578063358116b9146100f65780634e6c280e1461010b575b5f80fd5b6100ab61017f565b6040519081526020015b60405180910390f35b6100d16100cc366004612126565b610301565b60408051938452602084019290925267ffffffffffffffff16908201526060016100b5565b610109610104366004612150565b610372565b005b6100d1610119366004612126565b61044c565b6100d161012c366004612167565b6104af565b61014461013f366004612150565b610522565b6040516100b591906121c7565b6100ab6106eb565b6100ab6101673660046121d9565b61074f565b6100d161017a366004612167565b610884565b5f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036101d6576040516309e815f560e01b815260040160405180910390fd5b5f6101df6108e8565b905060015f6101f15f19600384610967565b90505b5f1981146102fa57600283600201828154811061021357610213612261565b905f5260205f2090600502015f0154036102e6576102e3826102de85600201848154811061024357610243612261565b905f5260205f209060050201600401805461025d90612275565b80601f016020809104026020016040519081016040528092919081815260200182805461028990612275565b80156102d45780601f106102ab576101008083540402835291602001916102d4565b820191905f5260205f20905b8154815290600101906020018083116102b757829003601f168201915b5050505050610a6e565b610a89565b91505b6102f38160036001610967565b90506101f4565b5091505090565b5f808073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361035a576040516309e815f560e01b815260040160405180910390fd5b6103648585610aeb565b9250925092505b9250925092565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036103c8576040516309e815f560e01b815260040160405180910390fd5b610414337f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e78360405160200161040091815260200190565b604051602081830303815290604052610b19565b61041d81610c13565b604051819033907f94041431cee1a4c20be97117d396e73eb1e601e124b48fbc5dc07397c31d5f8a905f90a350565b5f808073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036104a5576040516309e815f560e01b815260040160405180910390fd5b6103648585610df0565b5f808073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610508576040516309e815f560e01b815260040160405180910390fd5b610513868686610e00565b92509250925093509350939050565b606073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361057a576040516309e815f560e01b815260040160405180910390fd5b5f6105836108e8565b600281015490915083106105cb576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b8060020183815481106105e0576105e0612261565b5f918252602082206001600590920201015467ffffffffffffffff169003610637576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b80600201838154811061064c5761064c612261565b905f5260205f209060050201600401805461066690612275565b80601f016020809104026020016040519081016040528092919081815260200182805461069290612275565b80156106dd5780601f106106b4576101008083540402835291602001916106dd565b820191905f5260205f20905b8154815290600101906020018083116106c057829003601f168201915b50505050509150505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610742576040516309e815f560e01b815260040160405180910390fd5b61074a610e2e565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036107a6576040516309e815f560e01b815260040160405180910390fd5b6107e2337ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f898787878760405160200161040094939291906122a7565b5f6107ee868585610e82565b90505f610831828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610f2d92505050565b6040805184815267ffffffffffffffff89166020820152919250829133917fa9c7784142e419f4660627c0c145b3873c2a415ce062f5c81bc19e6850f873d8910160405180910390a39695505050505050565b5f808073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036108dd576040516309e815f560e01b815260040160405180910390fd5b610513868686611047565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061093660017f2f8f8ecf1b7a1a3ceda8d15a9a2247a2377b3434535a87f1728021c13fec2e71612301565b60405160200161094891815260200190565b60408051601f1981840301815291905280516020909101201692915050565b5f6007831681036109a4576040517fbf3cad0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ad6108e8565b60028101549091505f036109c5575f19915050610a67565b5f5f1986146109f8578160020186815481106109e3576109e3612261565b905f5260205f209060050201600301546109fb565b81545b90506002846002811115610a1157610a11612314565b03610a3357610a2a82610a248484611056565b876110d1565b92505050610a67565b6001846002811115610a4757610a47612314565b03610a5757610a2a828287611129565b610a628282876110d1565b925050505b9392505050565b5f81806020019051810190610a839190612328565b92915050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d8480610ace86868686611196565b915091505f610add83836112b5565b9a9950505050505050505050565b5f805f80610afb5f19878761131b565b90505f80610b0883611410565b939650945091925050509250925092565b5f3073ffffffffffffffffffffffffffffffffffffffff1663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b87919061233f565b6040517f59f89dda00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906359f89dda90610be090879087908790600401612372565b5f604051808303815f87803b158015610bf7575f80fd5b505af1158015610c09573d5f803e3d5ffd5b5050505050505050565b5f610c1c6108e8565b60028101549091508210610c5f576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018390526024016105c2565b5f816002018381548110610c7557610c75612261565b5f9182526020822060016005909202019081015490925067ffffffffffffffff169003610cd1576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b60018101544267ffffffffffffffff90911611610d1d576040517f99fa8c69000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b600281015460038201545f198214610d5d5780846002018381548110610d4557610d45612261565b905f5260205f20906005020160030181905550610d61565b8084555b5f198114610d975781846002018281548110610d7f57610d7f612261565b905f5260205f20906005020160020181905550610d9f565b600184018290555b5f196002840181905560038401556001830180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001690555f808455610de99060048501906120ca565b5050505050565b5f805f80610afb5f198787610967565b5f805f80610e0f878787610967565b90505f80610e1c83611410565b939a9099509297509195505050505050565b5f610e376108e8565b600201545f03610e4657505f90565b60065f80610e575f19846001610967565b90505b5f1981146102fa5781610e6c816123a6565b925050610e7b81846001610967565b9050610e5a565b5f7f4548e57ae2f1604df75a3d17fecaff7dd11ad7a93d9f8a0dc05e7144f46f3f7c8403610ef857610ef0610eeb84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610a6e92505050565b61146e565b506002610a67565b6040517ff17c1d46000000000000000000000000000000000000000000000000000000008152600481018590526024016105c2565b5f428367ffffffffffffffff1611610f83576040517fc0851c8a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201524260248201526044016105c2565b5f610f8c6108e8565b9050610f978161156e565b60028101805460019081018083555f928352610fb39190612301565b90505f826002018281548110610fcb57610fcb612261565b5f91825260209091206005909102018781556001810180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8916179055905060048101611023868261241b565b505f1960028201819055600382015561103d838388611617565b5095945050505050565b5f805f80610e0f87878761131b565b5f5b5f19821415801561109a57504283600201838154811061107a5761107a612261565b5f91825260209091206001600590920201015467ffffffffffffffff1611155b156110cb578260020182815481106110b4576110b4612261565b905f5260205f209060050201600301549150611058565b50919050565b5f5b5f19831461111f575f8460020184815481106110f1576110f1612261565b905f5260205f209060050201905082815f0154165f146111145783915050610a67565b6003015492506110d3565b505f199392505050565b5f5b5f19831461111f575f84600201848154811061114957611149612261565b5f918252602090912060059091020160018101549091504267ffffffffffffffff9091161115611179575061111f565b805483161561118b5783915050610a67565b60030154925061112b565b5f80851584151780156111ae575f92505f91506112ab565b6111b884876124d7565b91505f6111c488611761565b90505f6111d087611761565b90505f6111dd83836117c2565b5090505f6f0785ee10d5da46d900f436a000000000821115611212576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561123357670de0b6b3a7640000820491506012015b633b9aca0082111561124c57633b9aca00820491506009015b61271082111561126157612710820491506004015b811561127557600a82049150600101611261565b61127f81876124d7565b95506112a18b8a61129b878761129687600a6125f2565b6117de565b896118c3565b9097509550505050505b5094509492505050565b5f805f6112c285856119cf565b91509150801580156112d2575081155b15611313576040517f8eba4d0700000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016105c2565b509392505050565b5f600783168103611358576040517fbf3cad0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113616108e8565b60028101549091505f03611379575f19915050610a67565b5f5f1986146113ac5781600201868154811061139757611397612261565b905f5260205f209060050201600201546113b2565b81600101545b905060018460028111156113c8576113c8612314565b036113e157610a2a826113db8484611ad6565b87611b4a565b60028460028111156113f5576113f5612314565b0361140557610a2a828287611b98565b610a62828287611b4a565b5f805f19830361142457505f928392509050565b5f61142d6108e8565b600201848154811061144157611441612261565b5f91825260209091206005909102018054600190910154909567ffffffffffffffff909116945092505050565b611478815f611c04565b156114af576040517f018d151200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114b930611c54565b90505f6114c7600183611cfe565b90506114d38382611d22565b1561150d576040517f06c32712000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b5f61152261151c84600a6125fd565b5f611cfe565b905061152e8482611d71565b15611568576040517fd24a8af1000000000000000000000000000000000000000000000000000000008152600481018590526024016105c2565b50505050565b60028101541561157b5750565b6002810180546001018082555f8281529190829061159b5761159b612261565b5f9182526020909120600160059092020181815590810180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161790555f1960028201819055600382015590506115fc611dc0565b5f808052600484016020526040902055505f19600590910155565b5f83600201838154811061162d5761162d612261565b905f5260205f20906005020190505f846001015490505b5f198114610de9578267ffffffffffffffff1685600201828154811061166c5761166c612261565b5f91825260209091206001600590920201015467ffffffffffffffff1611611735575f8560020182815481106116a4576116a4612261565b905f5260205f209060050201600301549050848660020183815481106116cc576116cc612261565b5f918252602090912060036005909202018101919091556002840183905583018190555f198114611725578486600201828154811061170d5761170d612261565b905f5260205f2090600502016002018190555061172d565b600186018590555b505050505050565b84600201818154811061174a5761174a612261565b905f5260205f209060050201600201549050611644565b5f808212156117be577f800000000000000000000000000000000000000000000000000000000000000082036117b857507f8000000000000000000000000000000000000000000000000000000000000000919050565b505f0390565b5090565b5f805f1983850993909202808410938190039390930393915050565b5f805f6117eb86866117c2565b91509150815f0361180f57838181611805576118056124fe565b0492505050610a67565b838210611859576040517f6c59da120000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064016105c2565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f858718121561198d577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84111561197a576119227f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600161260b565b840361195257507f80000000000000000000000000000000000000000000000000000000000000009050816119c6565b61195d600a8561261e565b6119669061263d565b6119718460016124d7565b915091506119c6565b6119838461263d565b83915091506119c6565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156119c057611966600a8561261e565b50829050815b94509492505050565b5f601b83900b8314838382611a33577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515611a1357620186a0860595506005850194505b8586601b0b14611a2e57600a86059550846001019450611a13565b611a49565b855f03611a4957505f925060019150611acf9050565b848560030b14611aa5575f851215611a6957505f9250829150611acf9050565b6040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016105c2565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791505b9250929050565b5f5b5f198214158015611b19575042836002018381548110611afa57611afa612261565b5f91825260209091206001600590920201015467ffffffffffffffff16115b156110cb57826002018281548110611b3357611b33612261565b905f5260205f209060050201600201549150611ad8565b5f5b5f19831461111f575f846002018481548110611b6a57611b6a612261565b905f5260205f209060050201905082815f0154165f14611b8d5783915050610a67565b600201549250611b4c565b5f5b5f19831461111f575f846002018481548110611bb857611bb8612261565b5f918252602090912060059091020160018101549091504267ffffffffffffffff90911611611be7575061111f565b8054831615611bf95783915050610a67565b600201549250611b9a565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d611c4784848484611e43565b1215979650505050505050565b5f611c5d611f17565b6040517f54636d2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015273200e12d10bb0c5e4a17e7018f0f1161919bb9389906354636d2b906024016020604051808303815f875af1158015611cda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a83919061266d565b5f805f611d0b8585611fbd565b91509150611d19828261201f565b95945050505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d611d6584848484611e43565b13979650505050505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d611db484848484611e43565b12979650505050505050565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00611e0e60017fb750591399365444a618527b69a54ce09476c8bde1ecff60f5aa1fe2b52605ff612301565b604051602001611e2091815260200190565b60408051808303601f190181529190528051602090910120166002015492915050565b5f8085158415178187128286121817858414178015611e6857868592509250506119c6565b505f85841315611e7c575092949193919260015b8386035f8112604c8213178015611eaf578215611ea1575f89945094505050506119c6565b885f945094505050506119c6565b600a82900a8981028a828281611ec757611ec76124fe565b0514611ef3578415611ee3575f8b9650965050505050506119c6565b8a5f9650965050505050506119c6565b8415611f085788965094506119c69350505050565b95508794506119c69350505050565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580611f6e575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15611fbb576040517f73e6d7b300000000000000000000000000000000000000000000000000000000815273200e12d10bb0c5e4a17e7018f0f1161919bb938960048201526024016105c2565b565b5f805f805f611fcc8787612071565b92509250925080612013576040517fc471796600000000000000000000000000000000000000000000000000000000815260048101849052602481018390526044016105c2565b50909590945092505050565b5f805f61202c85856119cf565b9150915080611313576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016105c2565b5f808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8611156120bc57600a860460018201600a88065f149350935093505061036b565b85935091506001905061036b565b5080546120d690612275565b5f825580601f106120e5575050565b601f0160209004905f5260205f20908101906121019190612104565b50565b5b808211156117be575f8155600101612105565b8035600381106106e6575f80fd5b5f8060408385031215612137575f80fd5b8235915061214760208401612118565b90509250929050565b5f60208284031215612160575f80fd5b5035919050565b5f805f60608486031215612179575f80fd5b833592506020840135915061219060408501612118565b90509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a676020830184612199565b5f805f80606085870312156121ec575f80fd5b84359350602085013567ffffffffffffffff808216821461220b575f80fd5b90935060408601359080821115612220575f80fd5b818701915087601f830112612233575f80fd5b813581811115612241575f80fd5b886020828501011115612252575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061228957607f821691505b6020821081036110cb57634e487b7160e01b5f52602260045260245ffd5b84815267ffffffffffffffff8416602082015260606040820152816060820152818360808301375f818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a8357610a836122ed565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215612338575f80fd5b5051919050565b5f6020828403121561234f575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610a67575f80fd5b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f611d196060830184612199565b5f5f1982036123b7576123b76122ed565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b601f82111561241657805f5260205f20601f840160051c810160208510156123f75750805b601f840160051c820191505b81811015610de9575f8155600101612403565b505050565b815167ffffffffffffffff811115612435576124356123be565b612449816124438454612275565b846123d2565b602080601f83116001811461247c575f84156124655750858301515b5f19600386901b1c1916600185901b17855561172d565b5f85815260208120601f198616915b828110156124aa5788860151825594840194600190910190840161248b565b50858210156124c757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8082018281125f8312801582168215821617156124f6576124f66122ed565b505092915050565b634e487b7160e01b5f52601260045260245ffd5b600181815b8085111561254c57815f1904821115612532576125326122ed565b8085161561253f57918102915b93841c9390800290612517565b509250929050565b5f8261256257506001610a83565b8161256e57505f610a83565b8160018114612584576002811461258e576125aa565b6001915050610a83565b60ff84111561259f5761259f6122ed565b50506001821b610a83565b5060208310610133831016604e8410600b84101617156125cd575081810a610a83565b6125d78383612512565b805f19048211156125ea576125ea6122ed565b029392505050565b5f610a678383612554565b5f610a6760ff841683612554565b80820180821115610a8357610a836122ed565b5f8261263857634e487b7160e01b5f52601260045260245ffd5b500490565b5f7f800000000000000000000000000000000000000000000000000000000000000082036117b8576117b86122ed565b5f6020828403121561267d575f80fd5b815160ff81168114610a67575f80fd"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b506004361061009f575f3560e01c806379ba430511610072578063bb7bb45a11610058578063bb7bb45a14610151578063dad601be14610159578063e388df491461016c575f80fd5b806379ba43051461011e578063b21a249414610131575f80fd5b80630d1e0432146100a35780631cb5642f146100be578063358116b9146100f65780634e6c280e1461010b575b5f80fd5b6100ab61017f565b6040519081526020015b60405180910390f35b6100d16100cc366004612126565b610301565b60408051938452602084019290925267ffffffffffffffff16908201526060016100b5565b610109610104366004612150565b610372565b005b6100d1610119366004612126565b61044c565b6100d161012c366004612167565b6104af565b61014461013f366004612150565b610522565b6040516100b591906121c7565b6100ab6106eb565b6100ab6101673660046121d9565b61074f565b6100d161017a366004612167565b610884565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf61630036101d6576040516309e815f560e01b815260040160405180910390fd5b5f6101df6108e8565b905060015f6101f15f19600384610967565b90505b5f1981146102fa57600283600201828154811061021357610213612261565b905f5260205f2090600502015f0154036102e6576102e3826102de85600201848154811061024357610243612261565b905f5260205f209060050201600401805461025d90612275565b80601f016020809104026020016040519081016040528092919081815260200182805461028990612275565b80156102d45780601f106102ab576101008083540402835291602001916102d4565b820191905f5260205f20905b8154815290600101906020018083116102b757829003601f168201915b5050505050610a6e565b610a89565b91505b6102f38160036001610967565b90506101f4565b5091505090565b5f808073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf616300361035a576040516309e815f560e01b815260040160405180910390fd5b6103648585610aeb565b9250925092505b9250925092565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf61630036103c8576040516309e815f560e01b815260040160405180910390fd5b610414337f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e78360405160200161040091815260200190565b604051602081830303815290604052610b19565b61041d81610c13565b604051819033907f94041431cee1a4c20be97117d396e73eb1e601e124b48fbc5dc07397c31d5f8a905f90a350565b5f808073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf61630036104a5576040516309e815f560e01b815260040160405180910390fd5b6103648585610df0565b5f808073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf6163003610508576040516309e815f560e01b815260040160405180910390fd5b610513868686610e00565b92509250925093509350939050565b606073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf616300361057a576040516309e815f560e01b815260040160405180910390fd5b5f6105836108e8565b600281015490915083106105cb576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b8060020183815481106105e0576105e0612261565b5f918252602082206001600590920201015467ffffffffffffffff169003610637576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b80600201838154811061064c5761064c612261565b905f5260205f209060050201600401805461066690612275565b80601f016020809104026020016040519081016040528092919081815260200182805461069290612275565b80156106dd5780601f106106b4576101008083540402835291602001916106dd565b820191905f5260205f20905b8154815290600101906020018083116106c057829003601f168201915b50505050509150505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf6163003610742576040516309e815f560e01b815260040160405180910390fd5b61074a610e2e565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf61630036107a6576040516309e815f560e01b815260040160405180910390fd5b6107e2337ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f898787878760405160200161040094939291906122a7565b5f6107ee868585610e82565b90505f610831828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610f2d92505050565b6040805184815267ffffffffffffffff89166020820152919250829133917fa9c7784142e419f4660627c0c145b3873c2a415ce062f5c81bc19e6850f873d8910160405180910390a39695505050505050565b5f808073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7e24412126ad6a2ce19cbd79fd11b68e7f30cf61630036108dd576040516309e815f560e01b815260040160405180910390fd5b610513868686611047565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061093660017f2f8f8ecf1b7a1a3ceda8d15a9a2247a2377b3434535a87f1728021c13fec2e71612301565b60405160200161094891815260200190565b60408051601f1981840301815291905280516020909101201692915050565b5f6007831681036109a4576040517fbf3cad0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ad6108e8565b60028101549091505f036109c5575f19915050610a67565b5f5f1986146109f8578160020186815481106109e3576109e3612261565b905f5260205f209060050201600301546109fb565b81545b90506002846002811115610a1157610a11612314565b03610a3357610a2a82610a248484611056565b876110d1565b92505050610a67565b6001846002811115610a4757610a47612314565b03610a5757610a2a828287611129565b610a628282876110d1565b925050505b9392505050565b5f81806020019051810190610a839190612328565b92915050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d8480610ace86868686611196565b915091505f610add83836112b5565b9a9950505050505050505050565b5f805f80610afb5f19878761131b565b90505f80610b0883611410565b939650945091925050509250925092565b5f3073ffffffffffffffffffffffffffffffffffffffff1663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b87919061233f565b6040517f59f89dda00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906359f89dda90610be090879087908790600401612372565b5f604051808303815f87803b158015610bf7575f80fd5b505af1158015610c09573d5f803e3d5ffd5b5050505050505050565b5f610c1c6108e8565b60028101549091508210610c5f576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018390526024016105c2565b5f816002018381548110610c7557610c75612261565b5f9182526020822060016005909202019081015490925067ffffffffffffffff169003610cd1576040517f029c6c35000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b60018101544267ffffffffffffffff90911611610d1d576040517f99fa8c69000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b600281015460038201545f198214610d5d5780846002018381548110610d4557610d45612261565b905f5260205f20906005020160030181905550610d61565b8084555b5f198114610d975781846002018281548110610d7f57610d7f612261565b905f5260205f20906005020160020181905550610d9f565b600184018290555b5f196002840181905560038401556001830180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001690555f808455610de99060048501906120ca565b5050505050565b5f805f80610afb5f198787610967565b5f805f80610e0f878787610967565b90505f80610e1c83611410565b939a9099509297509195505050505050565b5f610e376108e8565b600201545f03610e4657505f90565b60065f80610e575f19846001610967565b90505b5f1981146102fa5781610e6c816123a6565b925050610e7b81846001610967565b9050610e5a565b5f7f4548e57ae2f1604df75a3d17fecaff7dd11ad7a93d9f8a0dc05e7144f46f3f7c8403610ef857610ef0610eeb84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610a6e92505050565b61146e565b506002610a67565b6040517ff17c1d46000000000000000000000000000000000000000000000000000000008152600481018590526024016105c2565b5f428367ffffffffffffffff1611610f83576040517fc0851c8a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201524260248201526044016105c2565b5f610f8c6108e8565b9050610f978161156e565b60028101805460019081018083555f928352610fb39190612301565b90505f826002018281548110610fcb57610fcb612261565b5f91825260209091206005909102018781556001810180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8916179055905060048101611023868261241b565b505f1960028201819055600382015561103d838388611617565b5095945050505050565b5f805f80610e0f87878761131b565b5f5b5f19821415801561109a57504283600201838154811061107a5761107a612261565b5f91825260209091206001600590920201015467ffffffffffffffff1611155b156110cb578260020182815481106110b4576110b4612261565b905f5260205f209060050201600301549150611058565b50919050565b5f5b5f19831461111f575f8460020184815481106110f1576110f1612261565b905f5260205f209060050201905082815f0154165f146111145783915050610a67565b6003015492506110d3565b505f199392505050565b5f5b5f19831461111f575f84600201848154811061114957611149612261565b5f918252602090912060059091020160018101549091504267ffffffffffffffff9091161115611179575061111f565b805483161561118b5783915050610a67565b60030154925061112b565b5f80851584151780156111ae575f92505f91506112ab565b6111b884876124d7565b91505f6111c488611761565b90505f6111d087611761565b90505f6111dd83836117c2565b5090505f6f0785ee10d5da46d900f436a000000000821115611212576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561123357670de0b6b3a7640000820491506012015b633b9aca0082111561124c57633b9aca00820491506009015b61271082111561126157612710820491506004015b811561127557600a82049150600101611261565b61127f81876124d7565b95506112a18b8a61129b878761129687600a6125f2565b6117de565b896118c3565b9097509550505050505b5094509492505050565b5f805f6112c285856119cf565b91509150801580156112d2575081155b15611313576040517f8eba4d0700000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016105c2565b509392505050565b5f600783168103611358576040517fbf3cad0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113616108e8565b60028101549091505f03611379575f19915050610a67565b5f5f1986146113ac5781600201868154811061139757611397612261565b905f5260205f209060050201600201546113b2565b81600101545b905060018460028111156113c8576113c8612314565b036113e157610a2a826113db8484611ad6565b87611b4a565b60028460028111156113f5576113f5612314565b0361140557610a2a828287611b98565b610a62828287611b4a565b5f805f19830361142457505f928392509050565b5f61142d6108e8565b600201848154811061144157611441612261565b5f91825260209091206005909102018054600190910154909567ffffffffffffffff909116945092505050565b611478815f611c04565b156114af576040517f018d151200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114b930611c54565b90505f6114c7600183611cfe565b90506114d38382611d22565b1561150d576040517f06c32712000000000000000000000000000000000000000000000000000000008152600481018490526024016105c2565b5f61152261151c84600a6125fd565b5f611cfe565b905061152e8482611d71565b15611568576040517fd24a8af1000000000000000000000000000000000000000000000000000000008152600481018590526024016105c2565b50505050565b60028101541561157b5750565b6002810180546001018082555f8281529190829061159b5761159b612261565b5f9182526020909120600160059092020181815590810180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161790555f1960028201819055600382015590506115fc611dc0565b5f808052600484016020526040902055505f19600590910155565b5f83600201838154811061162d5761162d612261565b905f5260205f20906005020190505f846001015490505b5f198114610de9578267ffffffffffffffff1685600201828154811061166c5761166c612261565b5f91825260209091206001600590920201015467ffffffffffffffff1611611735575f8560020182815481106116a4576116a4612261565b905f5260205f209060050201600301549050848660020183815481106116cc576116cc612261565b5f918252602090912060036005909202018101919091556002840183905583018190555f198114611725578486600201828154811061170d5761170d612261565b905f5260205f2090600502016002018190555061172d565b600186018590555b505050505050565b84600201818154811061174a5761174a612261565b905f5260205f209060050201600201549050611644565b5f808212156117be577f800000000000000000000000000000000000000000000000000000000000000082036117b857507f8000000000000000000000000000000000000000000000000000000000000000919050565b505f0390565b5090565b5f805f1983850993909202808410938190039390930393915050565b5f805f6117eb86866117c2565b91509150815f0361180f57838181611805576118056124fe565b0492505050610a67565b838210611859576040517f6c59da120000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064016105c2565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f858718121561198d577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84111561197a576119227f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600161260b565b840361195257507f80000000000000000000000000000000000000000000000000000000000000009050816119c6565b61195d600a8561261e565b6119669061263d565b6119718460016124d7565b915091506119c6565b6119838461263d565b83915091506119c6565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156119c057611966600a8561261e565b50829050815b94509492505050565b5f601b83900b8314838382611a33577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515611a1357620186a0860595506005850194505b8586601b0b14611a2e57600a86059550846001019450611a13565b611a49565b855f03611a4957505f925060019150611acf9050565b848560030b14611aa5575f851215611a6957505f9250829150611acf9050565b6040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016105c2565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791505b9250929050565b5f5b5f198214158015611b19575042836002018381548110611afa57611afa612261565b5f91825260209091206001600590920201015467ffffffffffffffff16115b156110cb57826002018281548110611b3357611b33612261565b905f5260205f209060050201600201549150611ad8565b5f5b5f19831461111f575f846002018481548110611b6a57611b6a612261565b905f5260205f209060050201905082815f0154165f14611b8d5783915050610a67565b600201549250611b4c565b5f5b5f19831461111f575f846002018481548110611bb857611bb8612261565b5f918252602090912060059091020160018101549091504267ffffffffffffffff90911611611be7575061111f565b8054831615611bf95783915050610a67565b600201549250611b9a565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d611c4784848484611e43565b1215979650505050505050565b5f611c5d611f17565b6040517f54636d2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015273200e12d10bb0c5e4a17e7018f0f1161919bb9389906354636d2b906024016020604051808303815f875af1158015611cda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a83919061266d565b5f805f611d0b8585611fbd565b91509150611d19828261201f565b95945050505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d611d6584848484611e43565b13979650505050505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d611db484848484611e43565b12979650505050505050565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00611e0e60017fb750591399365444a618527b69a54ce09476c8bde1ecff60f5aa1fe2b52605ff612301565b604051602001611e2091815260200190565b60408051808303601f190181529190528051602090910120166002015492915050565b5f8085158415178187128286121817858414178015611e6857868592509250506119c6565b505f85841315611e7c575092949193919260015b8386035f8112604c8213178015611eaf578215611ea1575f89945094505050506119c6565b885f945094505050506119c6565b600a82900a8981028a828281611ec757611ec76124fe565b0514611ef3578415611ee3575f8b9650965050505050506119c6565b8a5f9650965050505050506119c6565b8415611f085788965094506119c69350505050565b95508794506119c69350505050565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580611f6e575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15611fbb576040517f73e6d7b300000000000000000000000000000000000000000000000000000000815273200e12d10bb0c5e4a17e7018f0f1161919bb938960048201526024016105c2565b565b5f805f805f611fcc8787612071565b92509250925080612013576040517fc471796600000000000000000000000000000000000000000000000000000000815260048101849052602481018390526044016105c2565b50909590945092505050565b5f805f61202c85856119cf565b9150915080611313576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016105c2565b5f808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8611156120bc57600a860460018201600a88065f149350935093505061036b565b85935091506001905061036b565b5080546120d690612275565b5f825580601f106120e5575050565b601f0160209004905f5260205f20908101906121019190612104565b50565b5b808211156117be575f8155600101612105565b8035600381106106e6575f80fd5b5f8060408385031215612137575f80fd5b8235915061214760208401612118565b90509250929050565b5f60208284031215612160575f80fd5b5035919050565b5f805f60608486031215612179575f80fd5b833592506020840135915061219060408501612118565b90509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a676020830184612199565b5f805f80606085870312156121ec575f80fd5b84359350602085013567ffffffffffffffff808216821461220b575f80fd5b90935060408601359080821115612220575f80fd5b818701915087601f830112612233575f80fd5b813581811115612241575f80fd5b886020828501011115612252575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061228957607f821691505b6020821081036110cb57634e487b7160e01b5f52602260045260245ffd5b84815267ffffffffffffffff8416602082015260606040820152816060820152818360808301375f818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a8357610a836122ed565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215612338575f80fd5b5051919050565b5f6020828403121561234f575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610a67575f80fd5b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f611d196060830184612199565b5f5f1982036123b7576123b76122ed565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b601f82111561241657805f5260205f20601f840160051c810160208510156123f75750805b601f840160051c820191505b81811015610de9575f8155600101612403565b505050565b815167ffffffffffffffff811115612435576124356123be565b612449816124438454612275565b846123d2565b602080601f83116001811461247c575f84156124655750858301515b5f19600386901b1c1916600185901b17855561172d565b5f85815260208120601f198616915b828110156124aa5788860151825594840194600190910190840161248b565b50858210156124c757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8082018281125f8312801582168215821617156124f6576124f66122ed565b505092915050565b634e487b7160e01b5f52601260045260245ffd5b600181815b8085111561254c57815f1904821115612532576125326122ed565b8085161561253f57918102915b93841c9390800290612517565b509250929050565b5f8261256257506001610a83565b8161256e57505f610a83565b8160018114612584576002811461258e576125aa565b6001915050610a83565b60ff84111561259f5761259f6122ed565b50506001821b610a83565b5060208310610133831016604e8410600b84101617156125cd575081810a610a83565b6125d78383612512565b805f19048211156125ea576125ea6122ed565b029392505050565b5f610a678383612554565b5f610a6760ff841683612554565b80820180821115610a8357610a836122ed565b5f8261263857634e487b7160e01b5f52601260045260245ffd5b500490565b5f7f800000000000000000000000000000000000000000000000000000000000000082036117b8576117b86122ed565b5f6020828403121561267d575f80fd5b815160ff81168114610a67575f80fd"; diff --git a/src/generated/0_1_8/StoxOffchainAssetReceiptVaultAuthorizerV1.pointers.sol b/src/generated/0_1_8/StoxOffchainAssetReceiptVaultAuthorizerV1.pointers.sol new file mode 100644 index 00000000..e161c73a --- /dev/null +++ b/src/generated/0_1_8/StoxOffchainAssetReceiptVaultAuthorizerV1.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0xf8a1d9b2fa068bae3c1a607434db48364a5cdab3020bd7e315ed2662a3b35b5f); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x2EA0d35d0B1F57C42e6130f298930228bCbFDe9b); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611746806100d65f395ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063439fab911161007257806391d148541161005857806391d1485414610168578063a217fddf146101cc578063d547741f146101d3575f80fd5b8063439fab911461014257806359f89dda14610155575f80fd5b806301ffc9a7146100a3578063248a9ca3146100cb5780632f2ff15d1461011a57806336568abe1461012f575b5f80fd5b6100b66100b13660046112aa565b6101e6565b60405190151581526020015b60405180910390f35b61010c6100d93660046112f0565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016100c2565b61012d610128366004611328565b6102d9565b005b61012d61013d366004611328565b610322565b61010c610150366004611449565b610380565b61012d610163366004611483565b6106a0565b6100b6610176366004611328565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61010c5f81565b61012d6101e1366004611328565b610a49565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f59f89dda00000000000000000000000000000000000000000000000000000000148061027857507fffffffff0000000000000000000000000000000000000000000000000000000082167f439fab9100000000000000000000000000000000000000000000000000000000145b806102c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806102d357506102d382610a8c565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461031281610b22565b61031c8383610b2f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610371576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61037b8282610c4d565b505050565b5f8061038a610d29565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156103b65750825b90505f8267ffffffffffffffff1660011480156103d25750303b155b9050811580156103e0575080155b15610417576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156104785784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b5f8780602001905181019061048d91906114d8565b90505f61049982610d51565b90507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc381146104cb5796506106359050565b6105157ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f897fd6075ca92e18a15ce0e8ecaaae57a112072844045d11beeb264aac5f85e0daf26110f9565b61053f7fd6075ca92e18a15ce0e8ecaaae57a112072844045d11beeb264aac5f85e0daf2806110f9565b6105897f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e77fe25ff801c3c463dad5f8999289b7b43090e0f6f5039ae7c220cbb762fe8ff3736110f9565b6105b37fe25ff801c3c463dad5f8999289b7b43090e0f6f5039ae7c220cbb762fe8ff373806110f9565b6105e07fd6075ca92e18a15ce0e8ecaaae57a112072844045d11beeb264aac5f85e0daf2835f0151610b2f565b5061060e7fe25ff801c3c463dad5f8999289b7b43090e0f6f5039ae7c220cbb762fe8ff373835f0151610b2f565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3975050505b83156106965784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a8214806106ed57507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a4882145b156109b6575f805f7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a850361074d575f848060200190518101906107319190611536565b9050805f01519350806020015192508060600151915050610779565b5f84806020019051810190610762919061162b565b805160208201516080909201519095509093509150505b80156109ae5773ffffffffffffffffffffffffffffffffffffffff83161580156107e6575073ffffffffffffffffffffffffffffffffffffffff82165f9081527f96f78a99f93d631b75bc050854c9b764642c10564e41ed27c197a36ddabb1df9602052604090205460ff165b80610853575073ffffffffffffffffffffffffffffffffffffffff8216158015610853575073ffffffffffffffffffffffffffffffffffffffff83165f9081527f3907f76fa0fb1e5d0f263c5c4fe4316026052cf960c55a1c768106d8b9701c10602052604090205460ff165b1561086057505050505050565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a851480156108d2575073ffffffffffffffffffffffffffffffffffffffff86165f9081527f6ba48721fcbb2613af13d8285fe9ee4a081f7995464037bb5ea27397912881d2602052604090205460ff165b8061094a57507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a488514801561094a575073ffffffffffffffffffffffffffffffffffffffff86165f9081527f29e42896fa6edf5a5d7ff0bcd00acffbece6eb6cc7b44d0807bfd84929cc6e1b602052604090205460ff165b1561095757505050505050565b6040517ffe720f7800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8085166004830152831660248201526044015b60405180910390fd5b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff1615610a1157505050565b8282826040517f3ae4063b0000000000000000000000000000000000000000000000000000000081526004016109a5939291906116ed565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a8281610b22565b61031c8383610c4d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102d3565b610b2c813361119a565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16610c44575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610be03390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506102d3565b5f9150506102d3565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615610c44575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506102d3565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006102d3565b5f610d5a611244565b815173ffffffffffffffffffffffffffffffffffffffff16610da8576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df27f50a07cb25d0d864370863300b20987dfdae089abad71b607faf639d09d0533917f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b6110f9565b610e1c7f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b806110f9565b610e667f3dd35eca0ca8a128757fa464a5dfa4ad6cc4853cad96dce4e90fdbea4f0a52e37f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d6110f9565b610e907f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d806110f9565b610eda7f54f0af3716c79b30b8c228679d31d77a1a5f526c16af3262730e0a8de4363fed7fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c6110f9565b610f047fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c806110f9565b610f4e7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8217f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc026110f9565b610f787f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02806110f9565b610fc27f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828697fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d36110f9565b610fec7fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3806110f9565b6110197f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b835f0151610b2f565b506110477f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d835f0151610b2f565b506110757fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c835f0151610b2f565b506110a37f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02835f0151610b2f565b506110d17fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3835f0151610b2f565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc392915050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f611152845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611240576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016109a5565b5050565b61124c61124e565b565b61125661128c565b61124c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611295610d29565b5468010000000000000000900460ff16919050565b5f602082840312156112ba575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112e9575f80fd5b9392505050565b5f60208284031215611300575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b2c575f80fd5b5f8060408385031215611339575f80fd5b82359150602083013561134b81611307565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156113a6576113a6611356565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156113d5576113d5611356565b604052919050565b5f82601f8301126113ec575f80fd5b813567ffffffffffffffff81111561140657611406611356565b6114196020601f19601f840116016113ac565b81815284602083860101111561142d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611459575f80fd5b813567ffffffffffffffff81111561146f575f80fd5b61147b848285016113dd565b949350505050565b5f805f60608486031215611495575f80fd5b83356114a081611307565b925060208401359150604084013567ffffffffffffffff8111156114c2575f80fd5b6114ce868287016113dd565b9150509250925092565b5f602082840312156114e8575f80fd5b6040516020810181811067ffffffffffffffff8211171561150b5761150b611356565b604052825161151981611307565b81529392505050565b80518015158114611531575f80fd5b919050565b5f60808284031215611546575f80fd5b6040516080810181811067ffffffffffffffff8211171561156957611569611356565b604052825161157781611307565b8152602083015161158781611307565b6020820152604083810151908201526115a260608401611522565b60608201529392505050565b5f82601f8301126115bd575f80fd5b8151602067ffffffffffffffff8211156115d9576115d9611356565b8160051b6115e88282016113ac565b9283528481018201928281019087851115611601575f80fd5b83870192505b8483101561162057825182529183019190830190611607565b979650505050505050565b5f6020828403121561163b575f80fd5b815167ffffffffffffffff80821115611652575f80fd5b9083019060a08286031215611665575f80fd5b61166d611383565b825161167881611307565b8152602083015161168881611307565b602082015260408301518281111561169e575f80fd5b6116aa878286016115ae565b6040830152506060830151828111156116c1575f80fd5b6116cd878286016115ae565b6060830152506116df60808401611522565b608082015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f83011684010191505094935050505056"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063439fab911161007257806391d148541161005857806391d1485414610168578063a217fddf146101cc578063d547741f146101d3575f80fd5b8063439fab911461014257806359f89dda14610155575f80fd5b806301ffc9a7146100a3578063248a9ca3146100cb5780632f2ff15d1461011a57806336568abe1461012f575b5f80fd5b6100b66100b13660046112aa565b6101e6565b60405190151581526020015b60405180910390f35b61010c6100d93660046112f0565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016100c2565b61012d610128366004611328565b6102d9565b005b61012d61013d366004611328565b610322565b61010c610150366004611449565b610380565b61012d610163366004611483565b6106a0565b6100b6610176366004611328565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61010c5f81565b61012d6101e1366004611328565b610a49565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f59f89dda00000000000000000000000000000000000000000000000000000000148061027857507fffffffff0000000000000000000000000000000000000000000000000000000082167f439fab9100000000000000000000000000000000000000000000000000000000145b806102c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806102d357506102d382610a8c565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461031281610b22565b61031c8383610b2f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610371576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61037b8282610c4d565b505050565b5f8061038a610d29565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156103b65750825b90505f8267ffffffffffffffff1660011480156103d25750303b155b9050811580156103e0575080155b15610417576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156104785784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b5f8780602001905181019061048d91906114d8565b90505f61049982610d51565b90507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc381146104cb5796506106359050565b6105157ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f897fd6075ca92e18a15ce0e8ecaaae57a112072844045d11beeb264aac5f85e0daf26110f9565b61053f7fd6075ca92e18a15ce0e8ecaaae57a112072844045d11beeb264aac5f85e0daf2806110f9565b6105897f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e77fe25ff801c3c463dad5f8999289b7b43090e0f6f5039ae7c220cbb762fe8ff3736110f9565b6105b37fe25ff801c3c463dad5f8999289b7b43090e0f6f5039ae7c220cbb762fe8ff373806110f9565b6105e07fd6075ca92e18a15ce0e8ecaaae57a112072844045d11beeb264aac5f85e0daf2835f0151610b2f565b5061060e7fe25ff801c3c463dad5f8999289b7b43090e0f6f5039ae7c220cbb762fe8ff373835f0151610b2f565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3975050505b83156106965784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a8214806106ed57507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a4882145b156109b6575f805f7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a850361074d575f848060200190518101906107319190611536565b9050805f01519350806020015192508060600151915050610779565b5f84806020019051810190610762919061162b565b805160208201516080909201519095509093509150505b80156109ae5773ffffffffffffffffffffffffffffffffffffffff83161580156107e6575073ffffffffffffffffffffffffffffffffffffffff82165f9081527f96f78a99f93d631b75bc050854c9b764642c10564e41ed27c197a36ddabb1df9602052604090205460ff165b80610853575073ffffffffffffffffffffffffffffffffffffffff8216158015610853575073ffffffffffffffffffffffffffffffffffffffff83165f9081527f3907f76fa0fb1e5d0f263c5c4fe4316026052cf960c55a1c768106d8b9701c10602052604090205460ff165b1561086057505050505050565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a851480156108d2575073ffffffffffffffffffffffffffffffffffffffff86165f9081527f6ba48721fcbb2613af13d8285fe9ee4a081f7995464037bb5ea27397912881d2602052604090205460ff165b8061094a57507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a488514801561094a575073ffffffffffffffffffffffffffffffffffffffff86165f9081527f29e42896fa6edf5a5d7ff0bcd00acffbece6eb6cc7b44d0807bfd84929cc6e1b602052604090205460ff165b1561095757505050505050565b6040517ffe720f7800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8085166004830152831660248201526044015b60405180910390fd5b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff1615610a1157505050565b8282826040517f3ae4063b0000000000000000000000000000000000000000000000000000000081526004016109a5939291906116ed565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a8281610b22565b61031c8383610c4d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102d3565b610b2c813361119a565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16610c44575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610be03390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506102d3565b5f9150506102d3565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615610c44575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506102d3565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006102d3565b5f610d5a611244565b815173ffffffffffffffffffffffffffffffffffffffff16610da8576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df27f50a07cb25d0d864370863300b20987dfdae089abad71b607faf639d09d0533917f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b6110f9565b610e1c7f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b806110f9565b610e667f3dd35eca0ca8a128757fa464a5dfa4ad6cc4853cad96dce4e90fdbea4f0a52e37f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d6110f9565b610e907f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d806110f9565b610eda7f54f0af3716c79b30b8c228679d31d77a1a5f526c16af3262730e0a8de4363fed7fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c6110f9565b610f047fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c806110f9565b610f4e7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8217f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc026110f9565b610f787f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02806110f9565b610fc27f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828697fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d36110f9565b610fec7fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3806110f9565b6110197f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b835f0151610b2f565b506110477f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d835f0151610b2f565b506110757fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c835f0151610b2f565b506110a37f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02835f0151610b2f565b506110d17fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3835f0151610b2f565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc392915050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f611152845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611240576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016109a5565b5050565b61124c61124e565b565b61125661128c565b61124c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611295610d29565b5468010000000000000000900460ff16919050565b5f602082840312156112ba575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112e9575f80fd5b9392505050565b5f60208284031215611300575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b2c575f80fd5b5f8060408385031215611339575f80fd5b82359150602083013561134b81611307565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156113a6576113a6611356565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156113d5576113d5611356565b604052919050565b5f82601f8301126113ec575f80fd5b813567ffffffffffffffff81111561140657611406611356565b6114196020601f19601f840116016113ac565b81815284602083860101111561142d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611459575f80fd5b813567ffffffffffffffff81111561146f575f80fd5b61147b848285016113dd565b949350505050565b5f805f60608486031215611495575f80fd5b83356114a081611307565b925060208401359150604084013567ffffffffffffffff8111156114c2575f80fd5b6114ce868287016113dd565b9150509250925092565b5f602082840312156114e8575f80fd5b6040516020810181811067ffffffffffffffff8211171561150b5761150b611356565b604052825161151981611307565b81529392505050565b80518015158114611531575f80fd5b919050565b5f60808284031215611546575f80fd5b6040516080810181811067ffffffffffffffff8211171561156957611569611356565b604052825161157781611307565b8152602083015161158781611307565b6020820152604083810151908201526115a260608401611522565b60608201529392505050565b5f82601f8301126115bd575f80fd5b8151602067ffffffffffffffff8211156115d9576115d9611356565b8160051b6115e88282016113ac565b9283528481018201928281019087851115611601575f80fd5b83870192505b8483101561162057825182529183019190830190611607565b979650505050505050565b5f6020828403121561163b575f80fd5b815167ffffffffffffffff80821115611652575f80fd5b9083019060a08286031215611665575f80fd5b61166d611383565b825161167881611307565b8152602083015161168881611307565b602082015260408301518281111561169e575f80fd5b6116aa878286016115ae565b6040830152506060830151828111156116c1575f80fd5b6116cd878286016115ae565b6060830152506116df60808401611522565b608082015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f83011684010191505094935050505056"; diff --git a/src/generated/0_1_8/StoxOffchainAssetReceiptVaultBeaconSetDeployer.pointers.sol b/src/generated/0_1_8/StoxOffchainAssetReceiptVaultBeaconSetDeployer.pointers.sol new file mode 100644 index 00000000..31a0f1ac --- /dev/null +++ b/src/generated/0_1_8/StoxOffchainAssetReceiptVaultBeaconSetDeployer.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x4637b099fe9279a8d4d88d9176ccadf92b20970eaf0b57b51997756d479ef43b); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x679ab223dAb158Ea93e1a4F49104DE436C58eAb8); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"60c060405234801561000f575f80fd5b5060408051606081018252738e4bdeec7ceb9570d440676345da1dce10329f5b808252732df5cfe6d688ef9ff1b7c59a499d254b1527b2866020830181905273d7f91c1c6e6e651ec3f1fd707af7cbb7526206e18385015292519192916100759061010b565b6001600160a01b03928316815291166020820152604001604051809103905ff0801580156100a5573d5f803e3d5ffd5b506001600160a01b0316608052604080820151825191519091906100c89061010b565b6001600160a01b03928316815291166020820152604001604051809103905ff0801580156100f8573d5f803e3d5ffd5b506001600160a01b031660a05250610118565b6104f780610fd783390190565b60805160a051610e926101455f395f818160c701526102d801525f8181607b01526102630152610e925ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c806301ffc9a71461004e5780632c9b7f40146100765780632f77a1c1146100c25780634904fab3146100e9575b5f80fd5b61006161005c3660046105d0565b6100fc565b60405190151581526020015b60405180910390f35b61009d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161006d565b61009d7f000000000000000000000000000000000000000000000000000000000000000081565b61009d6100f736600461075e565b610194565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4ae8243200000000000000000000000000000000000000000000000000000000148061018e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6020810151606001515f9073ffffffffffffffffffffffffffffffffffffffff1615610212576020820151606001516040517ffc47d97600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff16610260576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000060405161028e906105c3565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156102d2573d5f803e3d5ffd5b5090505f7f0000000000000000000000000000000000000000000000000000000000000000604051610303906105c3565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff080158015610347573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff80841660208301529293507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc39285169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016103c39190610894565b6020604051808303815f875af11580156103df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040391906108a6565b1461043a576040517f0219069c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8184602001516060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc38173ffffffffffffffffffffffffffffffffffffffff1663439fab91866040516020016104c491906108bd565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016104ef9190610894565b6020604051808303815f875af115801561050b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052f91906108a6565b14610566576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133815273ffffffffffffffffffffffffffffffffffffffff838116602083015284168183015290517fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9181900360600190a19392505050565b61052f8061096383390190565b5f602082840312156105e0575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461060f575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561066657610666610616565b60405290565b6040516080810167ffffffffffffffff8111828210171561066657610666610616565b803573ffffffffffffffffffffffffffffffffffffffff811681146106b2575f80fd5b919050565b5f82601f8301126106c6575f80fd5b813567ffffffffffffffff808211156106e1576106e1610616565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561072757610727610616565b8160405283815286602085880101111561073f575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561076e575f80fd5b813567ffffffffffffffff80821115610785575f80fd5b9083019060408286031215610798575f80fd5b6107a0610643565b6107a98361068f565b81526020830135828111156107bc575f80fd5b9290920191608083870312156107d0575f80fd5b6107d861066c565b6107e18461068f565b81526020840135838111156107f4575f80fd5b610800888287016106b7565b602083015250604084013583811115610817575f80fd5b610823888287016106b7565b6040830152506108356060850161068f565b6060820152602082015295945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61060f6020830184610848565b5f602082840312156108b6575f80fd5b5051919050565b602081525f73ffffffffffffffffffffffffffffffffffffffff8084511660208401526020840151604080850152818151166060850152602081015160808086015261090c60e0860182610848565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526109478282610848565b9150508260608301511660c08601528093505050509291505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056608060405234801561000f575f80fd5b506040516104f73803806104f783398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f80fd5b919050565b5f8060408385031215610170575f80fd5b61017983610144565b915061018760208401610144565b90509250929050565b61035a8061019d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100c05780638da5cb5b146100c8578063f2fde38b146100e5575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b610076366004610320565b6100f8565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007b61010c565b5f5473ffffffffffffffffffffffffffffffffffffffff16610097565b61007b6100f3366004610320565b61011f565b610100610184565b610109816101d6565b50565b610114610184565b61011d5f6102ac565b565b610127610184565b73ffffffffffffffffffffffffffffffffffffffff811661017b576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610109816102ac565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461011d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610172565b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361023e576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610172565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610330575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610353575f80fd5b939250505056"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b506004361061004a575f3560e01c806301ffc9a71461004e5780632c9b7f40146100765780632f77a1c1146100c25780634904fab3146100e9575b5f80fd5b61006161005c3660046105d0565b6100fc565b60405190151581526020015b60405180910390f35b61009d7f000000000000000000000000913f9edb29dd88314ee1559c18495b5332464d3b81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161006d565b61009d7f000000000000000000000000bc924b1c3d3f3e038d5bf85710f695bcb22e715281565b61009d6100f736600461075e565b610194565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4ae8243200000000000000000000000000000000000000000000000000000000148061018e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6020810151606001515f9073ffffffffffffffffffffffffffffffffffffffff1615610212576020820151606001516040517ffc47d97600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff16610260576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f000000000000000000000000913f9edb29dd88314ee1559c18495b5332464d3b60405161028e906105c3565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156102d2573d5f803e3d5ffd5b5090505f7f000000000000000000000000bc924b1c3d3f3e038d5bf85710f695bcb22e7152604051610303906105c3565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff080158015610347573d5f803e3d5ffd5b506040805173ffffffffffffffffffffffffffffffffffffffff80841660208301529293507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc39285169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016103c39190610894565b6020604051808303815f875af11580156103df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040391906108a6565b1461043a576040517f0219069c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8184602001516060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc38173ffffffffffffffffffffffffffffffffffffffff1663439fab91866040516020016104c491906108bd565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016104ef9190610894565b6020604051808303815f875af115801561050b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052f91906108a6565b14610566576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133815273ffffffffffffffffffffffffffffffffffffffff838116602083015284168183015290517fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9181900360600190a19392505050565b61052f8061096383390190565b5f602082840312156105e0575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461060f575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561066657610666610616565b60405290565b6040516080810167ffffffffffffffff8111828210171561066657610666610616565b803573ffffffffffffffffffffffffffffffffffffffff811681146106b2575f80fd5b919050565b5f82601f8301126106c6575f80fd5b813567ffffffffffffffff808211156106e1576106e1610616565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561072757610727610616565b8160405283815286602085880101111561073f575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561076e575f80fd5b813567ffffffffffffffff80821115610785575f80fd5b9083019060408286031215610798575f80fd5b6107a0610643565b6107a98361068f565b81526020830135828111156107bc575f80fd5b9290920191608083870312156107d0575f80fd5b6107d861066c565b6107e18461068f565b81526020840135838111156107f4575f80fd5b610800888287016106b7565b602083015250604084013583811115610817575f80fd5b610823888287016106b7565b6040830152506108356060850161068f565b6060820152602082015295945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61060f6020830184610848565b5f602082840312156108b6575f80fd5b5051919050565b602081525f73ffffffffffffffffffffffffffffffffffffffff8084511660208401526020840151604080850152818151166060850152602081015160808086015261090c60e0860182610848565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526109478282610848565b9150508260608301511660c08601528093505050509291505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; diff --git a/src/generated/0_1_8/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.pointers.sol b/src/generated/0_1_8/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.pointers.sol new file mode 100644 index 00000000..f343350f --- /dev/null +++ b/src/generated/0_1_8/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x4d94318cde48f1bc20f97e00aefad84bfb7c9db15c81b882862e127b05e06e15); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0xeaD68E489Cb19453b294dc46a3A5710b0d46d17F); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b506015601f565b601b601f565b60cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615606e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460cc5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612650806100dc5f395ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c806359f89dda116100ad578063a086e1751161007d578063a4c9d30011610063578063a4c9d3001461030a578063d547741f14610312578063f2fde38b14610325575f80fd5b8063a086e175146102fb578063a217fddf14610303575f80fd5b806359f89dda14610281578063715018a6146102945780638da5cb5b1461029c57806391d14854146102a4575f80fd5b80633013ce29116100e85780633013ce29146101c8578063325cd7961461020c57806336568abe1461025b578063439fab911461026e575f80fd5b806301ffc9a71461011957806304a0db2014610141578063248a9ca3146101725780632f2ff15d146101b3575b5f80fd5b61012c610127366004611eec565b610338565b60405190151581526020015b60405180910390f35b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3202545b604051908152602001610138565b610164610180366004611f2b565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6101c66101c1366004611f56565b61042b565b005b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3201546001600160a01b03165b6040516001600160a01b039091168152602001610138565b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b32015474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610138565b6101c6610269366004611f56565b610474565b61016461027c3660046120a7565b6104c5565b6101c661028f3660046120d9565b610a55565b6101c6610e31565b6101f4610e44565b61012c6102b2366004611f56565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101f4610e78565b6101645f81565b6101c6610ea0565b6101c6610320366004611f56565b610f69565b6101c661033336600461212e565b610fac565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f59f89dda0000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167f439fab9100000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b80610425575061042582610fff565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461046481611095565b61046e838361109f565b50505050565b6001600160a01b03811633146104b6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104c08282611190565b505050565b5f806104cf611252565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156104fb5750825b90505f8267ffffffffffffffff1660011480156105175750303b155b905081158015610525575080155b1561055c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156105bd5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b5f878060200190518101906105d29190612149565b80519091506001600160a01b0316610616576040517fa7d26c7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516001600160a01b031661065a576040517f364467d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408101516001600160a01b031661069e576040517f3731597600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516001600160a01b03166106e2576040517ff10d418200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001515f0361071f576040517f7e0eb2bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80517f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b320080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161782556020808501517f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b32038054841691861691909117905560608501517f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b320180549093169416938417909155604080517f313ce567000000000000000000000000000000000000000000000000000000008152905192935f93909263313ce56792600480820193918290030181865afa158015610830573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085491906121ba565b6001830180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000060ff8416021790556080840151600284015560408401519091506108b59061127a565b7fbf322f47f534976d35baa3292f4fd04bf379264783a734383401b0e6e51cb16d835f0151846020015185604001518660600151858860800151604051610939969594939291906001600160a01b039687168152948616602086015292851660408501529316606083015260ff92909216608082015260a081019190915260c00190565b60405180910390a1610965604051806020016040528085604001516001600160a01b031681525061128b565b506109947f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc028460400151611190565b506109c37fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d38460400151611190565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc398505050508315610a4b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b320080546001600160a01b0316338114610ac9578484846040517f3ae4063b000000000000000000000000000000000000000000000000000000008152600401610ac0939291906121da565b60405180910390fd5b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8218403610e1f575f83806020019051810190610b059190612226565b60018481015460808301519293506001600160a01b038116927401000000000000000000000000000000000000000090910460ff16915f91610b48918490611626565b90505f836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bab91906121ba565b60ff169050828114610bf3576040517fe420d7af0000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610ac0565b5f866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c549190612312565b90508760020154811115610ca45760028801546040517f86529caa000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610ac0565b825f03610d045785516040517f3ae4063b000000000000000000000000000000000000000000000000000000008152610ac091907f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821908c906004016121da565b8551610d1c906001600160a01b0387169030866116ad565b600388015486516040517fdb8554fc0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201524260248201525f92919091169063db8554fc90604401602060405180830381865afa158015610d8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dae9190612312565b905060028114610e115786516040517f3ae4063b000000000000000000000000000000000000000000000000000000008152610ac091907f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821908d906004016121da565b505050505050505050505050565b610e2a8585856116fc565b5050505050565b610e39611a38565b610e425f611a83565b565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f807f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3200610e68565b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3200610f66610ecc610e44565b60018301546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f519190612312565b60018401546001600160a01b03169190611b0b565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610fa281611095565b61046e8383611190565b610fb4611a38565b6001600160a01b038116610ff6576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610ac0565b610f6681611a83565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610425565b610f668133611b59565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611180575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111363390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610425565b5f915050610425565b5092915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611180575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610425565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610425565b611282611be9565b610f6681611c27565b5f611294611c2f565b81516001600160a01b03166112d5576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131f7f50a07cb25d0d864370863300b20987dfdae089abad71b607faf639d09d0533917f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b611c37565b6113497f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b80611c37565b6113937f3dd35eca0ca8a128757fa464a5dfa4ad6cc4853cad96dce4e90fdbea4f0a52e37f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d611c37565b6113bd7f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d80611c37565b6114077f54f0af3716c79b30b8c228679d31d77a1a5f526c16af3262730e0a8de4363fed7fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c611c37565b6114317fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c80611c37565b61147b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8217f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02611c37565b6114a57f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc0280611c37565b6114ef7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828697fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3611c37565b6115197fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d380611c37565b6115467f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b835f015161109f565b506115747f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d835f015161109f565b506115a27fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c835f015161109f565b506115d07f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02835f015161109f565b506115fe7fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3835f015161109f565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc392915050565b5f826012111561165a5760128390036001831615611650576116488582611cd8565b9150506116a6565b6116488582611d24565b60128311156116a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee83016002831615611699576116488582611d4e565b6116488582611d9e565b50825b9392505050565b6116bb848484846001611dcd565b61046e576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610ac0565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a82148061174957507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a4882145b156119b2575f805f7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a85036117a9575f8480602001905181019061178d919061233d565b9050805f015193508060200151925080606001519150506117d5565b5f848060200190518101906117be9190612432565b805160208201516080909201519095509093509150505b80156119aa576001600160a01b03831615801561182857506001600160a01b0382165f9081527f96f78a99f93d631b75bc050854c9b764642c10564e41ed27c197a36ddabb1df9602052604090205460ff165b8061187b57506001600160a01b03821615801561187b57506001600160a01b0383165f9081527f3907f76fa0fb1e5d0f263c5c4fe4316026052cf960c55a1c768106d8b9701c10602052604090205460ff165b1561188857505050505050565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a851480156118ed57506001600160a01b0386165f9081527f6ba48721fcbb2613af13d8285fe9ee4a081f7995464037bb5ea27397912881d2602052604090205460ff165b8061195857507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a488514801561195857506001600160a01b0386165f9081527f29e42896fa6edf5a5d7ff0bcd00acffbece6eb6cc7b44d0807bfd84929cc6e1b602052604090205460ff165b1561196557505050505050565b6040517ffe720f780000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610ac0565b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038716845290915290205460ff1615611a0057505050565b8282826040517f3ae4063b000000000000000000000000000000000000000000000000000000008152600401610ac0939291906121da565b33611a41610e44565b6001600160a01b031614610e42576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610ac0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611b188383836001611e53565b6104c0576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610ac0565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16611be5576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610ac0565b5050565b611bf1611ece565b610e42576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb4611be9565b610e42611be9565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f611c90845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f604e8210611cfa578215611cee576001611cf0565b5f5b60ff169050610425565b600a82900a808481611d0e57611d0e6124f4565b0491508082028414611189575060010192915050565b5f604e821015611d465781600a0a8381611d4057611d406124f4565b046116a6565b5f9392505050565b5f604e8210611d6d578215611d64575f19611d66565b5f5b9050610425565b50600a81900a8281029083818381611d8757611d876124f4565b0414611d94575f19611d96565b815b949350505050565b600a81900a611dad818461254e565b9050604e8210610425578215611d4657611dc882600a612645565b6116a6565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611e42578383151615611e36573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611ec2578383151615611eb6573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f611ed7611252565b5468010000000000000000900460ff16919050565b5f60208284031215611efc575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146116a6575f80fd5b5f60208284031215611f3b575f80fd5b5035919050565b6001600160a01b0381168114610f66575f80fd5b5f8060408385031215611f67575f80fd5b823591506020830135611f7981611f42565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611fd457611fd4611f84565b60405290565b60405160c0810167ffffffffffffffff81118282101715611fd457611fd4611f84565b604051601f8201601f1916810167ffffffffffffffff8111828210171561202657612026611f84565b604052919050565b5f67ffffffffffffffff82111561204757612047611f84565b50601f01601f191660200190565b5f82601f830112612064575f80fd5b81356120776120728261202e565b611ffd565b81815284602083860101111561208b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156120b7575f80fd5b813567ffffffffffffffff8111156120cd575f80fd5b611d9684828501612055565b5f805f606084860312156120eb575f80fd5b83356120f681611f42565b925060208401359150604084013567ffffffffffffffff811115612118575f80fd5b61212486828701612055565b9150509250925092565b5f6020828403121561213e575f80fd5b81356116a681611f42565b5f60a08284031215612159575f80fd5b612161611fb1565b825161216c81611f42565b8152602083015161217c81611f42565b6020820152604083015161218f81611f42565b604082015260608301516121a281611f42565b60608201526080928301519281019290925250919050565b5f602082840312156121ca575f80fd5b815160ff811681146116a6575f80fd5b6001600160a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b5f6020808385031215612237575f80fd5b825167ffffffffffffffff8082111561224e575f80fd5b9084019060c08287031215612261575f80fd5b612269611fda565b825161227481611f42565b81528284015161228381611f42565b80858301525060408301516040820152606083015160608201526080830151608082015260a0830151828111156122b8575f80fd5b80840193505086601f8401126122cc575f80fd5b825191506122dc6120728361202e565b82815287858486010111156122ef575f80fd5b828585018683015e5f8584830101528060a0830152508094505050505092915050565b5f60208284031215612322575f80fd5b5051919050565b80518015158114612338575f80fd5b919050565b5f6080828403121561234d575f80fd5b6040516080810181811067ffffffffffffffff8211171561237057612370611f84565b604052825161237e81611f42565b8152602083015161238e81611f42565b6020820152604083810151908201526123a960608401612329565b60608201529392505050565b5f82601f8301126123c4575f80fd5b8151602067ffffffffffffffff8211156123e0576123e0611f84565b8160051b6123ef828201611ffd565b9283528481018201928281019087851115612408575f80fd5b83870192505b848310156124275782518252918301919083019061240e565b979650505050505050565b5f60208284031215612442575f80fd5b815167ffffffffffffffff80821115612459575f80fd5b9083019060a0828603121561246c575f80fd5b612474611fb1565b825161247f81611f42565b8152602083015161248f81611f42565b60208201526040830151828111156124a5575f80fd5b6124b1878286016123b5565b6040830152506060830151828111156124c8575f80fd5b6124d4878286016123b5565b6060830152506124e660808401612329565b608082015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761042557610425612521565b600181815b8085111561259f57815f190482111561258557612585612521565b8085161561259257918102915b93841c939080029061256a565b509250929050565b5f826125b557506001610425565b816125c157505f610425565b81600181146125d757600281146125e1576125fd565b6001915050610425565b60ff8411156125f2576125f2612521565b50506001821b610425565b5060208310610133831016604e8410600b8410161715612620575081810a610425565b61262a8383612565565b805f190482111561263d5761263d612521565b029392505050565b5f6116a683836125a756"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b5060043610610115575f3560e01c806359f89dda116100ad578063a086e1751161007d578063a4c9d30011610063578063a4c9d3001461030a578063d547741f14610312578063f2fde38b14610325575f80fd5b8063a086e175146102fb578063a217fddf14610303575f80fd5b806359f89dda14610281578063715018a6146102945780638da5cb5b1461029c57806391d14854146102a4575f80fd5b80633013ce29116100e85780633013ce29146101c8578063325cd7961461020c57806336568abe1461025b578063439fab911461026e575f80fd5b806301ffc9a71461011957806304a0db2014610141578063248a9ca3146101725780632f2ff15d146101b3575b5f80fd5b61012c610127366004611eec565b610338565b60405190151581526020015b60405180910390f35b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3202545b604051908152602001610138565b610164610180366004611f2b565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6101c66101c1366004611f56565b61042b565b005b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3201546001600160a01b03165b6040516001600160a01b039091168152602001610138565b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b32015474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610138565b6101c6610269366004611f56565b610474565b61016461027c3660046120a7565b6104c5565b6101c661028f3660046120d9565b610a55565b6101c6610e31565b6101f4610e44565b61012c6102b2366004611f56565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101f4610e78565b6101645f81565b6101c6610ea0565b6101c6610320366004611f56565b610f69565b6101c661033336600461212e565b610fac565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f59f89dda0000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167f439fab9100000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b80610425575061042582610fff565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461046481611095565b61046e838361109f565b50505050565b6001600160a01b03811633146104b6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104c08282611190565b505050565b5f806104cf611252565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156104fb5750825b90505f8267ffffffffffffffff1660011480156105175750303b155b905081158015610525575080155b1561055c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156105bd5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b5f878060200190518101906105d29190612149565b80519091506001600160a01b0316610616576040517fa7d26c7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516001600160a01b031661065a576040517f364467d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408101516001600160a01b031661069e576040517f3731597600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516001600160a01b03166106e2576040517ff10d418200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80608001515f0361071f576040517f7e0eb2bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80517f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b320080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161782556020808501517f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b32038054841691861691909117905560608501517f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b320180549093169416938417909155604080517f313ce567000000000000000000000000000000000000000000000000000000008152905192935f93909263313ce56792600480820193918290030181865afa158015610830573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085491906121ba565b6001830180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000060ff8416021790556080840151600284015560408401519091506108b59061127a565b7fbf322f47f534976d35baa3292f4fd04bf379264783a734383401b0e6e51cb16d835f0151846020015185604001518660600151858860800151604051610939969594939291906001600160a01b039687168152948616602086015292851660408501529316606083015260ff92909216608082015260a081019190915260c00190565b60405180910390a1610965604051806020016040528085604001516001600160a01b031681525061128b565b506109947f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc028460400151611190565b506109c37fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d38460400151611190565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc398505050508315610a4b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b320080546001600160a01b0316338114610ac9578484846040517f3ae4063b000000000000000000000000000000000000000000000000000000008152600401610ac0939291906121da565b60405180910390fd5b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8218403610e1f575f83806020019051810190610b059190612226565b60018481015460808301519293506001600160a01b038116927401000000000000000000000000000000000000000090910460ff16915f91610b48918490611626565b90505f836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bab91906121ba565b60ff169050828114610bf3576040517fe420d7af0000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610ac0565b5f866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c549190612312565b90508760020154811115610ca45760028801546040517f86529caa000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610ac0565b825f03610d045785516040517f3ae4063b000000000000000000000000000000000000000000000000000000008152610ac091907f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821908c906004016121da565b8551610d1c906001600160a01b0387169030866116ad565b600388015486516040517fdb8554fc0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201524260248201525f92919091169063db8554fc90604401602060405180830381865afa158015610d8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dae9190612312565b905060028114610e115786516040517f3ae4063b000000000000000000000000000000000000000000000000000000008152610ac091907f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821908d906004016121da565b505050505050505050505050565b610e2a8585856116fc565b5050505050565b610e39611a38565b610e425f611a83565b565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f807f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3200610e68565b7f8fe11d932915502a5df2182ac99faeb149787a3fda1afc79ff772fdaf26b3200610f66610ecc610e44565b60018301546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f519190612312565b60018401546001600160a01b03169190611b0b565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610fa281611095565b61046e8383611190565b610fb4611a38565b6001600160a01b038116610ff6576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610ac0565b610f6681611a83565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610425565b610f668133611b59565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611180575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111363390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610425565b5f915050610425565b5092915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611180575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610425565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610425565b611282611be9565b610f6681611c27565b5f611294611c2f565b81516001600160a01b03166112d5576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131f7f50a07cb25d0d864370863300b20987dfdae089abad71b607faf639d09d0533917f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b611c37565b6113497f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b80611c37565b6113937f3dd35eca0ca8a128757fa464a5dfa4ad6cc4853cad96dce4e90fdbea4f0a52e37f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d611c37565b6113bd7f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d80611c37565b6114077f54f0af3716c79b30b8c228679d31d77a1a5f526c16af3262730e0a8de4363fed7fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c611c37565b6114317fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c80611c37565b61147b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8217f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02611c37565b6114a57f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc0280611c37565b6114ef7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828697fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3611c37565b6115197fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d380611c37565b6115467f48ece560b6811ee496fa3dedc7d5be3dfce8c5eb8f1cc18626507e158a23169b835f015161109f565b506115747f4fa4167c411e3d3edd62f8bf767cb8c66f94f891502ddab57e7c55ca1d7d891d835f015161109f565b506115a27fe5c740c26fb65f0a8de546defe3fe0011d5f2292abe6c4e6c3833916f4d8f76c835f015161109f565b506115d07f1ae915b310cb86de75afe5db1721d474dd0a8617151f7524866025476454bc02835f015161109f565b506115fe7fa0f4a7675effb97b81a0c9d5b53b44a73019f25c5ec8fda76d7c1ad3920851d3835f015161109f565b507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc392915050565b5f826012111561165a5760128390036001831615611650576116488582611cd8565b9150506116a6565b6116488582611d24565b60128311156116a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee83016002831615611699576116488582611d4e565b6116488582611d9e565b50825b9392505050565b6116bb848484846001611dcd565b61046e576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610ac0565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a82148061174957507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a4882145b156119b2575f805f7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a85036117a9575f8480602001905181019061178d919061233d565b9050805f015193508060200151925080606001519150506117d5565b5f848060200190518101906117be9190612432565b805160208201516080909201519095509093509150505b80156119aa576001600160a01b03831615801561182857506001600160a01b0382165f9081527f96f78a99f93d631b75bc050854c9b764642c10564e41ed27c197a36ddabb1df9602052604090205460ff165b8061187b57506001600160a01b03821615801561187b57506001600160a01b0383165f9081527f3907f76fa0fb1e5d0f263c5c4fe4316026052cf960c55a1c768106d8b9701c10602052604090205460ff165b1561188857505050505050565b7f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a851480156118ed57506001600160a01b0386165f9081527f6ba48721fcbb2613af13d8285fe9ee4a081f7995464037bb5ea27397912881d2602052604090205460ff165b8061195857507f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a488514801561195857506001600160a01b0386165f9081527f29e42896fa6edf5a5d7ff0bcd00acffbece6eb6cc7b44d0807bfd84929cc6e1b602052604090205460ff165b1561196557505050505050565b6040517ffe720f780000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610ac0565b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038716845290915290205460ff1615611a0057505050565b8282826040517f3ae4063b000000000000000000000000000000000000000000000000000000008152600401610ac0939291906121da565b33611a41610e44565b6001600160a01b031614610e42576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610ac0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611b188383836001611e53565b6104c0576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610ac0565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16611be5576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610ac0565b5050565b611bf1611ece565b610e42576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb4611be9565b610e42611be9565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f611c90845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f604e8210611cfa578215611cee576001611cf0565b5f5b60ff169050610425565b600a82900a808481611d0e57611d0e6124f4565b0491508082028414611189575060010192915050565b5f604e821015611d465781600a0a8381611d4057611d406124f4565b046116a6565b5f9392505050565b5f604e8210611d6d578215611d64575f19611d66565b5f5b9050610425565b50600a81900a8281029083818381611d8757611d876124f4565b0414611d94575f19611d96565b815b949350505050565b600a81900a611dad818461254e565b9050604e8210610425578215611d4657611dc882600a612645565b6116a6565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611e42578383151615611e36573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611ec2578383151615611eb6573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f611ed7611252565b5468010000000000000000900460ff16919050565b5f60208284031215611efc575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146116a6575f80fd5b5f60208284031215611f3b575f80fd5b5035919050565b6001600160a01b0381168114610f66575f80fd5b5f8060408385031215611f67575f80fd5b823591506020830135611f7981611f42565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611fd457611fd4611f84565b60405290565b60405160c0810167ffffffffffffffff81118282101715611fd457611fd4611f84565b604051601f8201601f1916810167ffffffffffffffff8111828210171561202657612026611f84565b604052919050565b5f67ffffffffffffffff82111561204757612047611f84565b50601f01601f191660200190565b5f82601f830112612064575f80fd5b81356120776120728261202e565b611ffd565b81815284602083860101111561208b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156120b7575f80fd5b813567ffffffffffffffff8111156120cd575f80fd5b611d9684828501612055565b5f805f606084860312156120eb575f80fd5b83356120f681611f42565b925060208401359150604084013567ffffffffffffffff811115612118575f80fd5b61212486828701612055565b9150509250925092565b5f6020828403121561213e575f80fd5b81356116a681611f42565b5f60a08284031215612159575f80fd5b612161611fb1565b825161216c81611f42565b8152602083015161217c81611f42565b6020820152604083015161218f81611f42565b604082015260608301516121a281611f42565b60608201526080928301519281019290925250919050565b5f602082840312156121ca575f80fd5b815160ff811681146116a6575f80fd5b6001600160a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b5f6020808385031215612237575f80fd5b825167ffffffffffffffff8082111561224e575f80fd5b9084019060c08287031215612261575f80fd5b612269611fda565b825161227481611f42565b81528284015161228381611f42565b80858301525060408301516040820152606083015160608201526080830151608082015260a0830151828111156122b8575f80fd5b80840193505086601f8401126122cc575f80fd5b825191506122dc6120728361202e565b82815287858486010111156122ef575f80fd5b828585018683015e5f8584830101528060a0830152508094505050505092915050565b5f60208284031215612322575f80fd5b5051919050565b80518015158114612338575f80fd5b919050565b5f6080828403121561234d575f80fd5b6040516080810181811067ffffffffffffffff8211171561237057612370611f84565b604052825161237e81611f42565b8152602083015161238e81611f42565b6020820152604083810151908201526123a960608401612329565b60608201529392505050565b5f82601f8301126123c4575f80fd5b8151602067ffffffffffffffff8211156123e0576123e0611f84565b8160051b6123ef828201611ffd565b9283528481018201928281019087851115612408575f80fd5b83870192505b848310156124275782518252918301919083019061240e565b979650505050505050565b5f60208284031215612442575f80fd5b815167ffffffffffffffff80821115612459575f80fd5b9083019060a0828603121561246c575f80fd5b612474611fb1565b825161247f81611f42565b8152602083015161248f81611f42565b60208201526040830151828111156124a5575f80fd5b6124b1878286016123b5565b6040830152506060830151828111156124c8575f80fd5b6124d4878286016123b5565b6060830152506124e660808401612329565b608082015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761042557610425612521565b600181815b8085111561259f57815f190482111561258557612585612521565b8085161561259257918102915b93841c939080029061256a565b509250929050565b5f826125b557506001610425565b816125c157505f610425565b81600181146125d757600281146125e1576125fd565b6001915050610425565b60ff8411156125f2576125f2612521565b50506001821b610425565b5060208310610133831016604e8410600b8410161715612620575081810a610425565b61262a8383612565565b805f190482111561263d5761263d612521565b029392505050565b5f6116a683836125a756"; diff --git a/src/generated/0_1_8/StoxReceipt.pointers.sol b/src/generated/0_1_8/StoxReceipt.pointers.sol new file mode 100644 index 00000000..ff38583a --- /dev/null +++ b/src/generated/0_1_8/StoxReceipt.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x06fffbad12ea80897d55aab5d4f1cd3f34f674237db44a148cc133334a0cca54); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x2dF5cFE6d688EF9fF1B7c59A499D254b1527b286); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6136e3806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106100fa575f3560e01c8063481c6a7511610093578063a22cb46511610063578063a22cb46514610232578063c2530e3914610245578063e985e9c514610258578063f242432a146102b2575f80fd5b8063481c6a75146101bd5780634e1273f4146101f75780636d5b3f781461021757806395d89b411461022a575f80fd5b80630e89341c116100ce5780630e89341c14610171578063177769cb146101845780632eb2c2d614610197578063439fab91146101aa575f80fd5b8062fdd58e146100fe57806301ffc9a714610124578063043fa9871461014757806306fdde031461015c575b5f80fd5b61011161010c366004612a49565b6102c5565b6040519081526020015b60405180910390f35b610137610132366004612aa0565b6102e1565b604051901515815260200161011b565b61015a610155366004612b79565b6103c3565b005b61016461046a565b60405161011b9190612c29565b61016461017f366004612c3b565b6104cf565b61015a610192366004612c52565b610580565b61015a6101a5366004612d20565b61058f565b6101116101b8366004612dc7565b6105ae565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc200546040516001600160a01b03909116815260200161011b565b61020a610205366004612e01565b6107ae565b60405161011b9190612eed565b61015a610225366004612eff565b6108c5565b610164610975565b61015a610240366004612f63565b6109c6565b61015a610253366004612eff565b6109d1565b610137610266366004612f9e565b6001600160a01b039182165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b61015a6102c0366004612eff565b610a37565b5f6102d883836102d3610a4d565b610ab3565b90505b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b806102db57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102db565b6103cb610b07565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055856104208686868686610b6e565b6104617fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19169055565b50505050505050565b6060610474610c25565b6040518060400160405280600881526020017f20526563656970740000000000000000000000000000000000000000000000008152506040516020016104bb929190612fe1565b604051602081830303815290604052905090565b60605f6104e56104dd610cd3565b60ff16610d78565b6104ed610c25565b6104f5610e15565b6104fd61046a565b6040516020016105109493929190612ff5565b60408051601f19818403018152828201909152601d82527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020830152915061055882610ef5565b604051602001610569929190612fe1565b604051602081830303815290604052915050919050565b61058b338383610f01565b5050565b61059a335b86610f49565b6105a78585858585610ff9565b5050505050565b5f806105b861108c565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156105e45750825b90505f8267ffffffffffffffff1660011480156106005750303b155b90508115801561060e575080155b15610645576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156106a65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6106bd60405180602001604052805f8152506110b4565b5f7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc20090505f888060200190518101906106f69190613137565b825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039190911617909155507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3955083156107a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b606081518351146107fd57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044015b60405180910390fd5b5f610806610a4d565b90505f845167ffffffffffffffff81111561082357610823612abb565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b5090505f5b85518110156108bc5761089786828151811061086f5761086f613152565b602002602001015186838151811061088957610889613152565b602002602001015185610ab3565b8282815181106108a9576108a9613152565b6020908102919091010152600101610851565b50949350505050565b6108cd610b07565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03871617905584610920868584610f01565b61092c858585856110c5565b61096d7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19169055565b505050505050565b606061097f610c25565b6040518060400160405280600581526020017f20524350540000000000000000000000000000000000000000000000000000008152506040516020016104bb929190612fe1565b61058b33838361113a565b6109d9610b07565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03871617905584610a2c868584610f01565b61092c85858561124e565b610a4033610594565b6105a78585858585610b6e565b5f306001600160a01b031663481c6a756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aae9190613137565b905090565b5f80610abf85856112cf565b90505f610aca6112e4565b6001600160a01b0387165f90815260209182526040808220888352909252908120549150610af9838387611345565b5093505050505b9392505050565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc20080546001600160a01b03163314610b6b576040517fc0b2335a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6001600160a01b038416610bb0576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b038516610bf2576040517f01a835140000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6040805160018082526020820186905281830190815260608201859052608082019092529061046187878484875f6115ed565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc2008054604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051606093926001600160a01b0316916395d89b41916004808301925f9291908290030181865afa158015610ca6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ccd919081019061319c565b91505090565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc2008054604080517f313ce56700000000000000000000000000000000000000000000000000000000815290515f93926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccd91906131e1565b60605f610d8483611645565b60010190505f8167ffffffffffffffff811115610da357610da3612abb565b6040519080825280601f01601f191660200182016040528015610dcd576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610dd757509392505050565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc2008054604080517f38d52e0f0000000000000000000000000000000000000000000000000000000081529051606093926001600160a01b0316916338d52e0f9160048083019260209291908290030181865afa158015610e97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebb9190613137565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ca6573d5f803e3d5ffd5b60606102db825f611726565b805115610f44577fd66d6a9810a5cef78b704e7e04334961e997c81d337f029f74637f060f3d8d65838383604051610f3b93929190613215565b60405180910390a15b505050565b816001600160a01b0316816001600160a01b031614158015610faf57506001600160a01b038082165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209386168352929052205460ff16155b1561058b576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b038084166004830152821660248201526044016107f4565b6001600160a01b03841661103b576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b03851661107d576040517f01a835140000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6105a7858585858560016115ed565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006102db565b6110bc6118a5565b610b6b816118e5565b6001600160a01b038416611107576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6040805160018082526020820186905281830190815260608201859052608082019092529061096d5f87848487846115ed565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45006001600160a01b03841661119d576040517f3e31884e0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b0383166111df576040517fced3e1000000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b038481165f818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038316611290576040517f01a835140000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b604080516001808252602082018590528183019081526060820184905260a082019092525f608082018181529192916105a791879185908590836115ed565b5f806112db84846118f6565b54949350505050565b5f8060ff1961131460017fedb99b3af8e1c50d494d6f1b4c75245a0b733cb90baa42bfe0e2f5bc8b000f82613259565b60405160200161132691815260200190565b60408051601f1981840301815291905280516020909101201692915050565b6040517f79ba43050000000000000000000000000000000000000000000000000000000081525f9081908490829081906001600160a01b038716906379ba43059061139a90869060039060019060040161326c565b606060405180830381865afa1580156113b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d991906132a4565b5091509150875f03611496575b5f198214611488576040517f79ba430500000000000000000000000000000000000000000000000000000000815291925082916001600160a01b038716906379ba43059061143e90859060039060019060040161326c565b606060405180830381865afa158015611459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147d91906132a4565b5090925090506113e6565b5f83945094505050506115e5565b875b5f1983146115dd5782935060028203611548576040517fb21a2494000000000000000000000000000000000000000000000000000000008152600481018490525f90611538906001600160a01b038a169063b21a2494906024015f60405180830381865afa15801561150c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611533919081019061319c565b61196a565b9050611544828261197f565b9150505b6040517f79ba43050000000000000000000000000000000000000000000000000000000081526001600160a01b038816906379ba43059061159390869060039060019060040161326c565b606060405180830381865afa1580156115ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d291906132a4565b509093509150611498565b945091925050505b935093915050565b6115f9868686866119fa565b6001600160a01b0385161561096d573381156116225761161d818888888888611a5f565b610461565b6020858101519085015161163a838a8a85858a611bfc565b505050505050505050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061168d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106116b9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106116d757662386f26fc10000830492506010015b6305f5e10083106116ef576305f5e100830492506008015b612710831061170357612710830492506004015b60648310611715576064830492506002015b600a83106102db5760010192915050565b606082515f03611744575060408051602081019091525f81526102db565b5f826117745760038451600261175a91906132e6565b61176491906132f9565b61176f906004613318565b611799565b6003845160046117849190613318565b61178f9060026132e6565b61179991906132f9565b905060405191507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f5261067083027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f18603f526020820181810185865187016020810180515f82525b82841015611857576003840193508351603f8160121c16518753600187019650603f81600c1c16518753600187019650603f8160061c16518753600187019650603f811651875350600186019550611804565b9052508590506118985760038651066001811461187b576002811461188e57611896565b603d6001840353603d6002840353611896565b603d60018403535b505b9183525060405292915050565b6118ad611d46565b6118e3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6118ed6118a5565b610b6b81611d64565b5f8060ff1961192660017f3a8e79826d53842322cdcc810d4a989eb01ac46cfabfd48dcc021625ce13c2d7613259565b60405160200161193891815260200190565b60408051808303601f1901815291815281516020928301205f9687529290921681528185209585529490945250502090565b5f818060200190518101906102db919061332f565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156119dd576040517fbf463fe9000000000000000000000000000000000000000000000000000000008152600481018490526024016107f4565b5f6108bc6119f46119ee865f611db0565b85611e0a565b5f611e6c565b5f611a03610a4d565b90505f5b8351811015611a5257611a3486858381518110611a2657611a26613152565b602002602001015184611eae565b611a4a85858381518110611a2657611a26613152565b600101611a07565b506105a785858585611fb0565b6001600160a01b0384163b1561096d576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c8190611abc9089908990889088908890600401613346565b6020604051808303815f875af1925050508015611af6575060408051601f3d908101601f19168201909252611af3918101906133a3565b60015b611b76573d808015611b23576040519150601f19603f3d011682016040523d82523d5f602084013e611b28565b606091505b5080515f03611b6e576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024016107f4565b805160208201fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610461576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024016107f4565b6001600160a01b0384163b1561096d576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e6190611c5990899089908890889088906004016133be565b6020604051808303815f875af1925050508015611c93575060408051601f3d908101601f19168201909252611c90918101906133a3565b60015b611cc0573d808015611b23576040519150601f19603f3d011682016040523d82523d5f602084013e611b28565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610461576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024016107f4565b5f611d4f61108c565b5468010000000000000000900460ff16919050565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45007f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502610f44838261347c565b5f805f611dbd8585612063565b9150915080611e02576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107f4565b509392505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d8480611e4f86868686612169565b915091505f611e5e8383612288565b9a9950505050505050505050565b5f807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416601b0b60e085901d611ea08282876122e6565b9350935050505b9250929050565b6001600160a01b038316611ec157505050565b5f611eca6112e4565b6001600160a01b0385165f90815260208281526040808320878452909152812054919250611ef886866112cf565b90505f80611f07838588611345565b91509150838103611f1c575050505050505050565b6001600160a01b0388165f908152602086815260408083208a84529091529020819055818314611f5157611f518888846124ce565b60408051858152602081018390529081018490526060810183905287906001600160a01b038a16907f956b049289f8dbe8716375414d9fa6bf32cde65ec1b7e102623775cacc66a6999060800160405180910390a35050505050505050565b5f611fb96124e2565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc200546040517fe5be7d900000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063e5be7d909061202a9084908990899089908990600401613538565b5f604051808303815f87803b158015612041575f80fd5b505af1158015612053573d5f803e3d5ffd5b505050506105a785858585612563565b5f601b83900b83148383826120c7577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000008605156120a757620186a0860595506005850194505b8586601b0b146120c257600a860595508460010194506120a7565b6120dd565b855f036120dd57505f925060019150611ea79050565b848560030b14612139575f8512156120fd57505f9250829150611ea79050565b6040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016107f4565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f8085158415178015612181575f92505f915061227e565b61218b848761357d565b91505f612197886127c7565b90505f6121a3876127c7565b90505f6121b08383612828565b5090505f6f0785ee10d5da46d900f436a0000000008211156121e5576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561220657670de0b6b3a7640000820491506012015b633b9aca0082111561221f57633b9aca00820491506009015b61271082111561223457612710820491506004015b811561224857600a82049150600101612234565b612252818761357d565b95506122748b8a61226e878761226987600a613684565b612844565b89612929565b9097509550505050505b5094509492505050565b5f805f6122958585612063565b91509150801580156122a5575081155b15611e02576040517f8eba4d0700000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107f4565b5f805f85121561232c576040517f4a7d166b00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107f4565b845f0361233e57505f905060016115e5565b8460ff8416850185811215612389576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044016107f4565b5f805f8312156123f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb38312156123ca575f8095509550505050506115e5565b825f03600a0a91508184816123e1576123e1613201565b04955050840290911491506115e59050565b5f8313156124be57604d831315612449576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff881660448201526064016107f4565b82600a0a9150815f198161245f5761245f613201565b048411156124ac576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff881660448201526064016107f4565b50919091029250600191506115e59050565b83600195509550505050506115e5565b5f6124d984846118f6565b91909155505050565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201545f907fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc200906001600160a01b03168061253e57339250505090565b6001909101805473ffffffffffffffffffffffffffffffffffffffff19169055919050565b805182517f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450091146125cd57825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016107f4565b335f5b84518110156126e8576020818102868101820151908601909101516001600160a01b0389161561269a575f828152602086815260408083206001600160a01b038d16845290915290205481811015612674576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038b1660048201526024810182905260448101839052606481018490526084016107f4565b5f838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b038816156126de575f828152602086815260408083206001600160a01b038c168452909152812080548392906126d89084906132e6565b90915550505b50506001016125d0565b5083516001036127685760208401515f906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612759929190918252602082015260400190565b60405180910390a4505061096d565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516127b792919061368f565b60405180910390a4505050505050565b5f80821215612824577f8000000000000000000000000000000000000000000000000000000000000000820361281e57507f8000000000000000000000000000000000000000000000000000000000000000919050565b505f0390565b5090565b5f805f1983850993909202808410938190039390930393915050565b5f805f6128518686612828565b91509150815f036128755783818161286b5761286b613201565b0492505050610b00565b8382106128bf576040517f6c59da120000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064016107f4565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156129f3577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156129e0576129887f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60016132e6565b84036129b857507f8000000000000000000000000000000000000000000000000000000000000000905081612a2c565b6129c3600a856132f9565b6129cc906136b3565b6129d784600161357d565b91509150612a2c565b6129e9846136b3565b8391509150612a2c565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115612a26576129cc600a856132f9565b50829050815b94509492505050565b6001600160a01b0381168114610b6b575f80fd5b5f8060408385031215612a5a575f80fd5b8235612a6581612a35565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610b6b575f80fd5b5f60208284031215612ab0575f80fd5b8135610b0081612a73565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612af857612af8612abb565b604052919050565b5f67ffffffffffffffff821115612b1957612b19612abb565b50601f01601f191660200190565b5f82601f830112612b36575f80fd5b8135612b49612b4482612b00565b612acf565b818152846020838601011115612b5d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060c08789031215612b8e575f80fd5b8635612b9981612a35565b95506020870135612ba981612a35565b94506040870135612bb981612a35565b9350606087013592506080870135915060a087013567ffffffffffffffff811115612be2575f80fd5b612bee89828a01612b27565b9150509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6102d86020830184612bfb565b5f60208284031215612c4b575f80fd5b5035919050565b5f8060408385031215612c63575f80fd5b82359150602083013567ffffffffffffffff811115612c80575f80fd5b612c8c85828601612b27565b9150509250929050565b5f67ffffffffffffffff821115612caf57612caf612abb565b5060051b60200190565b5f82601f830112612cc8575f80fd5b81356020612cd8612b4483612c96565b8083825260208201915060208460051b870101935086841115612cf9575f80fd5b602086015b84811015612d155780358352918301918301612cfe565b509695505050505050565b5f805f805f60a08688031215612d34575f80fd5b8535612d3f81612a35565b94506020860135612d4f81612a35565b9350604086013567ffffffffffffffff80821115612d6b575f80fd5b612d7789838a01612cb9565b94506060880135915080821115612d8c575f80fd5b612d9889838a01612cb9565b93506080880135915080821115612dad575f80fd5b50612dba88828901612b27565b9150509295509295909350565b5f60208284031215612dd7575f80fd5b813567ffffffffffffffff811115612ded575f80fd5b612df984828501612b27565b949350505050565b5f8060408385031215612e12575f80fd5b823567ffffffffffffffff80821115612e29575f80fd5b818501915085601f830112612e3c575f80fd5b81356020612e4c612b4483612c96565b82815260059290921b84018101918181019089841115612e6a575f80fd5b948201945b83861015612e91578535612e8281612a35565b82529482019490820190612e6f565b96505086013592505080821115612ea6575f80fd5b50612c8c85828601612cb9565b5f815180845260208085019450602084015f5b83811015612ee257815187529582019590820190600101612ec6565b509495945050505050565b602081525f6102d86020830184612eb3565b5f805f805f60a08688031215612f13575f80fd5b8535612f1e81612a35565b94506020860135612f2e81612a35565b93506040860135925060608601359150608086013567ffffffffffffffff811115612f57575f80fd5b612dba88828901612b27565b5f8060408385031215612f74575f80fd5b8235612f7f81612a35565b915060208301358015158114612f93575f80fd5b809150509250929050565b5f8060408385031215612faf575f80fd5b8235612fba81612a35565b91506020830135612f9381612a35565b5f81518060208401855e5f93019283525090919050565b5f612df9612fef8386612fca565b84612fca565b7f7b22646563696d616c73223a000000000000000000000000000000000000000081525f613026600c830187612fca565b7f2c226465736372697074696f6e223a2231206f6620746865736520726563656981527f7074732063616e206265206275726e656420616c6f6e67736964652031200000602082015261307c603e820187612fca565b90507f20746f2072656465656d2000000000000000000000000000000000000000000081526130ae600b820186612fca565b90507f2066726f6d20746865207661756c742e222c000000000000000000000000000081527f226e616d65223a220000000000000000000000000000000000000000000000006012820152613106601a820185612fca565b7f227d0000000000000000000000000000000000000000000000000000000000008152600201979650505050505050565b5f60208284031215613147575f80fd5b8151610b0081612a35565b634e487b7160e01b5f52603260045260245ffd5b5f613173612b4484612b00565b9050828152838383011115613186575f80fd5b8282602083015e5f602084830101529392505050565b5f602082840312156131ac575f80fd5b815167ffffffffffffffff8111156131c2575f80fd5b8201601f810184136131d2575f80fd5b612df984825160208401613166565b5f602082840312156131f1575f80fd5b815160ff81168114610b00575f80fd5b634e487b7160e01b5f52601260045260245ffd5b6001600160a01b0384168152826020820152606060408201525f61323c6060830184612bfb565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102db576102db613245565b83815260208101839052606081016003831061329657634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b5f805f606084860312156132b6575f80fd5b8351925060208401519150604084015167ffffffffffffffff811681146132db575f80fd5b809150509250925092565b808201808211156102db576102db613245565b5f8261331357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176102db576102db613245565b5f6020828403121561333f575f80fd5b5051919050565b5f6001600160a01b03808816835280871660208401525060a0604083015261337160a0830186612eb3565b82810360608401526133838186612eb3565b905082810360808401526133978185612bfb565b98975050505050505050565b5f602082840312156133b3575f80fd5b8151610b0081612a73565b5f6001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526133f560a0830184612bfb565b979650505050505050565b600181811c9082168061341457607f821691505b60208210810361343257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610f4457805f5260205f20601f840160051c8101602085101561345d5750805b601f840160051c820191505b818110156105a7575f8155600101613469565b815167ffffffffffffffff81111561349657613496612abb565b6134aa816134a48454613400565b84613438565b602080601f8311600181146134dd575f84156134c65750858301515b5f19600386901b1c1916600185901b17855561096d565b5f85815260208120601f198616915b8281101561350b578886015182559484019460019091019084016134ec565b508582101561352857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6001600160a01b038088168352808716602084015280861660408401525060a0606083015261356b60a0830185612eb3565b82810360808401526133978185612eb3565b8082018281125f83128015821682158216171561359c5761359c613245565b505092915050565b600181815b808511156135de57815f19048211156135c4576135c4613245565b808516156135d157918102915b93841c93908002906135a9565b509250929050565b5f826135f4575060016102db565b8161360057505f6102db565b816001811461361657600281146136205761363c565b60019150506102db565b60ff84111561363157613631613245565b50506001821b6102db565b5060208310610133831016604e8410600b841016171561365f575081810a6102db565b61366983836135a4565b805f190482111561367c5761367c613245565b029392505050565b5f6102d883836135e6565b604081525f6136a16040830185612eb3565b828103602084015261323c8185612eb3565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361281e5761281e61324556"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b50600436106100fa575f3560e01c8063481c6a7511610093578063a22cb46511610063578063a22cb46514610232578063c2530e3914610245578063e985e9c514610258578063f242432a146102b2575f80fd5b8063481c6a75146101bd5780634e1273f4146101f75780636d5b3f781461021757806395d89b411461022a575f80fd5b80630e89341c116100ce5780630e89341c14610171578063177769cb146101845780632eb2c2d614610197578063439fab91146101aa575f80fd5b8062fdd58e146100fe57806301ffc9a714610124578063043fa9871461014757806306fdde031461015c575b5f80fd5b61011161010c366004612a49565b6102c5565b6040519081526020015b60405180910390f35b610137610132366004612aa0565b6102e1565b604051901515815260200161011b565b61015a610155366004612b79565b6103c3565b005b61016461046a565b60405161011b9190612c29565b61016461017f366004612c3b565b6104cf565b61015a610192366004612c52565b610580565b61015a6101a5366004612d20565b61058f565b6101116101b8366004612dc7565b6105ae565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc200546040516001600160a01b03909116815260200161011b565b61020a610205366004612e01565b6107ae565b60405161011b9190612eed565b61015a610225366004612eff565b6108c5565b610164610975565b61015a610240366004612f63565b6109c6565b61015a610253366004612eff565b6109d1565b610137610266366004612f9e565b6001600160a01b039182165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b61015a6102c0366004612eff565b610a37565b5f6102d883836102d3610a4d565b610ab3565b90505b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b806102db57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102db565b6103cb610b07565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055856104208686868686610b6e565b6104617fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19169055565b50505050505050565b6060610474610c25565b6040518060400160405280600881526020017f20526563656970740000000000000000000000000000000000000000000000008152506040516020016104bb929190612fe1565b604051602081830303815290604052905090565b60605f6104e56104dd610cd3565b60ff16610d78565b6104ed610c25565b6104f5610e15565b6104fd61046a565b6040516020016105109493929190612ff5565b60408051601f19818403018152828201909152601d82527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020830152915061055882610ef5565b604051602001610569929190612fe1565b604051602081830303815290604052915050919050565b61058b338383610f01565b5050565b61059a335b86610f49565b6105a78585858585610ff9565b5050505050565b5f806105b861108c565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156105e45750825b90505f8267ffffffffffffffff1660011480156106005750303b155b90508115801561060e575080155b15610645576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156106a65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6106bd60405180602001604052805f8152506110b4565b5f7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc20090505f888060200190518101906106f69190613137565b825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039190911617909155507fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3955083156107a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b606081518351146107fd57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044015b60405180910390fd5b5f610806610a4d565b90505f845167ffffffffffffffff81111561082357610823612abb565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b5090505f5b85518110156108bc5761089786828151811061086f5761086f613152565b602002602001015186838151811061088957610889613152565b602002602001015185610ab3565b8282815181106108a9576108a9613152565b6020908102919091010152600101610851565b50949350505050565b6108cd610b07565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03871617905584610920868584610f01565b61092c858585856110c5565b61096d7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19169055565b505050505050565b606061097f610c25565b6040518060400160405280600581526020017f20524350540000000000000000000000000000000000000000000000000000008152506040516020016104bb929190612fe1565b61058b33838361113a565b6109d9610b07565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03871617905584610a2c868584610f01565b61092c85858561124e565b610a4033610594565b6105a78585858585610b6e565b5f306001600160a01b031663481c6a756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aae9190613137565b905090565b5f80610abf85856112cf565b90505f610aca6112e4565b6001600160a01b0387165f90815260209182526040808220888352909252908120549150610af9838387611345565b5093505050505b9392505050565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc20080546001600160a01b03163314610b6b576040517fc0b2335a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6001600160a01b038416610bb0576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b038516610bf2576040517f01a835140000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6040805160018082526020820186905281830190815260608201859052608082019092529061046187878484875f6115ed565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc2008054604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051606093926001600160a01b0316916395d89b41916004808301925f9291908290030181865afa158015610ca6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ccd919081019061319c565b91505090565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc2008054604080517f313ce56700000000000000000000000000000000000000000000000000000000815290515f93926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccd91906131e1565b60605f610d8483611645565b60010190505f8167ffffffffffffffff811115610da357610da3612abb565b6040519080825280601f01601f191660200182016040528015610dcd576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610dd757509392505050565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc2008054604080517f38d52e0f0000000000000000000000000000000000000000000000000000000081529051606093926001600160a01b0316916338d52e0f9160048083019260209291908290030181865afa158015610e97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebb9190613137565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ca6573d5f803e3d5ffd5b60606102db825f611726565b805115610f44577fd66d6a9810a5cef78b704e7e04334961e997c81d337f029f74637f060f3d8d65838383604051610f3b93929190613215565b60405180910390a15b505050565b816001600160a01b0316816001600160a01b031614158015610faf57506001600160a01b038082165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209386168352929052205460ff16155b1561058b576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b038084166004830152821660248201526044016107f4565b6001600160a01b03841661103b576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b03851661107d576040517f01a835140000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6105a7858585858560016115ed565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006102db565b6110bc6118a5565b610b6b816118e5565b6001600160a01b038416611107576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6040805160018082526020820186905281830190815260608201859052608082019092529061096d5f87848487846115ed565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45006001600160a01b03841661119d576040517f3e31884e0000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b0383166111df576040517fced3e1000000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b6001600160a01b038481165f818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038316611290576040517f01a835140000000000000000000000000000000000000000000000000000000081525f60048201526024016107f4565b604080516001808252602082018590528183019081526060820184905260a082019092525f608082018181529192916105a791879185908590836115ed565b5f806112db84846118f6565b54949350505050565b5f8060ff1961131460017fedb99b3af8e1c50d494d6f1b4c75245a0b733cb90baa42bfe0e2f5bc8b000f82613259565b60405160200161132691815260200190565b60408051601f1981840301815291905280516020909101201692915050565b6040517f79ba43050000000000000000000000000000000000000000000000000000000081525f9081908490829081906001600160a01b038716906379ba43059061139a90869060039060019060040161326c565b606060405180830381865afa1580156113b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d991906132a4565b5091509150875f03611496575b5f198214611488576040517f79ba430500000000000000000000000000000000000000000000000000000000815291925082916001600160a01b038716906379ba43059061143e90859060039060019060040161326c565b606060405180830381865afa158015611459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147d91906132a4565b5090925090506113e6565b5f83945094505050506115e5565b875b5f1983146115dd5782935060028203611548576040517fb21a2494000000000000000000000000000000000000000000000000000000008152600481018490525f90611538906001600160a01b038a169063b21a2494906024015f60405180830381865afa15801561150c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611533919081019061319c565b61196a565b9050611544828261197f565b9150505b6040517f79ba43050000000000000000000000000000000000000000000000000000000081526001600160a01b038816906379ba43059061159390869060039060019060040161326c565b606060405180830381865afa1580156115ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d291906132a4565b509093509150611498565b945091925050505b935093915050565b6115f9868686866119fa565b6001600160a01b0385161561096d573381156116225761161d818888888888611a5f565b610461565b6020858101519085015161163a838a8a85858a611bfc565b505050505050505050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061168d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106116b9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106116d757662386f26fc10000830492506010015b6305f5e10083106116ef576305f5e100830492506008015b612710831061170357612710830492506004015b60648310611715576064830492506002015b600a83106102db5760010192915050565b606082515f03611744575060408051602081019091525f81526102db565b5f826117745760038451600261175a91906132e6565b61176491906132f9565b61176f906004613318565b611799565b6003845160046117849190613318565b61178f9060026132e6565b61179991906132f9565b905060405191507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f5261067083027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f18603f526020820181810185865187016020810180515f82525b82841015611857576003840193508351603f8160121c16518753600187019650603f81600c1c16518753600187019650603f8160061c16518753600187019650603f811651875350600186019550611804565b9052508590506118985760038651066001811461187b576002811461188e57611896565b603d6001840353603d6002840353611896565b603d60018403535b505b9183525060405292915050565b6118ad611d46565b6118e3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6118ed6118a5565b610b6b81611d64565b5f8060ff1961192660017f3a8e79826d53842322cdcc810d4a989eb01ac46cfabfd48dcc021625ce13c2d7613259565b60405160200161193891815260200190565b60408051808303601f1901815291815281516020928301205f9687529290921681528185209585529490945250502090565b5f818060200190518101906102db919061332f565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156119dd576040517fbf463fe9000000000000000000000000000000000000000000000000000000008152600481018490526024016107f4565b5f6108bc6119f46119ee865f611db0565b85611e0a565b5f611e6c565b5f611a03610a4d565b90505f5b8351811015611a5257611a3486858381518110611a2657611a26613152565b602002602001015184611eae565b611a4a85858381518110611a2657611a26613152565b600101611a07565b506105a785858585611fb0565b6001600160a01b0384163b1561096d576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c8190611abc9089908990889088908890600401613346565b6020604051808303815f875af1925050508015611af6575060408051601f3d908101601f19168201909252611af3918101906133a3565b60015b611b76573d808015611b23576040519150601f19603f3d011682016040523d82523d5f602084013e611b28565b606091505b5080515f03611b6e576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024016107f4565b805160208201fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610461576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024016107f4565b6001600160a01b0384163b1561096d576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e6190611c5990899089908890889088906004016133be565b6020604051808303815f875af1925050508015611c93575060408051601f3d908101601f19168201909252611c90918101906133a3565b60015b611cc0573d808015611b23576040519150601f19603f3d011682016040523d82523d5f602084013e611b28565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610461576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024016107f4565b5f611d4f61108c565b5468010000000000000000900460ff16919050565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45007f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502610f44838261347c565b5f805f611dbd8585612063565b9150915080611e02576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107f4565b509392505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d8480611e4f86868686612169565b915091505f611e5e8383612288565b9a9950505050505050505050565b5f807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416601b0b60e085901d611ea08282876122e6565b9350935050505b9250929050565b6001600160a01b038316611ec157505050565b5f611eca6112e4565b6001600160a01b0385165f90815260208281526040808320878452909152812054919250611ef886866112cf565b90505f80611f07838588611345565b91509150838103611f1c575050505050505050565b6001600160a01b0388165f908152602086815260408083208a84529091529020819055818314611f5157611f518888846124ce565b60408051858152602081018390529081018490526060810183905287906001600160a01b038a16907f956b049289f8dbe8716375414d9fa6bf32cde65ec1b7e102623775cacc66a6999060800160405180910390a35050505050505050565b5f611fb96124e2565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc200546040517fe5be7d900000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063e5be7d909061202a9084908990899089908990600401613538565b5f604051808303815f87803b158015612041575f80fd5b505af1158015612053573d5f803e3d5ffd5b505050506105a785858585612563565b5f601b83900b83148383826120c7577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000008605156120a757620186a0860595506005850194505b8586601b0b146120c257600a860595508460010194506120a7565b6120dd565b855f036120dd57505f925060019150611ea79050565b848560030b14612139575f8512156120fd57505f9250829150611ea79050565b6040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016107f4565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f8085158415178015612181575f92505f915061227e565b61218b848761357d565b91505f612197886127c7565b90505f6121a3876127c7565b90505f6121b08383612828565b5090505f6f0785ee10d5da46d900f436a0000000008211156121e5576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561220657670de0b6b3a7640000820491506012015b633b9aca0082111561221f57633b9aca00820491506009015b61271082111561223457612710820491506004015b811561224857600a82049150600101612234565b612252818761357d565b95506122748b8a61226e878761226987600a613684565b612844565b89612929565b9097509550505050505b5094509492505050565b5f805f6122958585612063565b91509150801580156122a5575081155b15611e02576040517f8eba4d0700000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107f4565b5f805f85121561232c576040517f4a7d166b00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107f4565b845f0361233e57505f905060016115e5565b8460ff8416850185811215612389576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044016107f4565b5f805f8312156123f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb38312156123ca575f8095509550505050506115e5565b825f03600a0a91508184816123e1576123e1613201565b04955050840290911491506115e59050565b5f8313156124be57604d831315612449576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff881660448201526064016107f4565b82600a0a9150815f198161245f5761245f613201565b048411156124ac576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff881660448201526064016107f4565b50919091029250600191506115e59050565b83600195509550505050506115e5565b5f6124d984846118f6565b91909155505050565b7fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc201545f907fe5444a702a2f437387f4eb075af275e349f1dba9a68923d27352f035d01dc200906001600160a01b03168061253e57339250505090565b6001909101805473ffffffffffffffffffffffffffffffffffffffff19169055919050565b805182517f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450091146125cd57825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016107f4565b335f5b84518110156126e8576020818102868101820151908601909101516001600160a01b0389161561269a575f828152602086815260408083206001600160a01b038d16845290915290205481811015612674576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038b1660048201526024810182905260448101839052606481018490526084016107f4565b5f838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b038816156126de575f828152602086815260408083206001600160a01b038c168452909152812080548392906126d89084906132e6565b90915550505b50506001016125d0565b5083516001036127685760208401515f906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612759929190918252602082015260400190565b60405180910390a4505061096d565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516127b792919061368f565b60405180910390a4505050505050565b5f80821215612824577f8000000000000000000000000000000000000000000000000000000000000000820361281e57507f8000000000000000000000000000000000000000000000000000000000000000919050565b505f0390565b5090565b5f805f1983850993909202808410938190039390930393915050565b5f805f6128518686612828565b91509150815f036128755783818161286b5761286b613201565b0492505050610b00565b8382106128bf576040517f6c59da120000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064016107f4565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156129f3577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156129e0576129887f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60016132e6565b84036129b857507f8000000000000000000000000000000000000000000000000000000000000000905081612a2c565b6129c3600a856132f9565b6129cc906136b3565b6129d784600161357d565b91509150612a2c565b6129e9846136b3565b8391509150612a2c565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115612a26576129cc600a856132f9565b50829050815b94509492505050565b6001600160a01b0381168114610b6b575f80fd5b5f8060408385031215612a5a575f80fd5b8235612a6581612a35565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610b6b575f80fd5b5f60208284031215612ab0575f80fd5b8135610b0081612a73565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612af857612af8612abb565b604052919050565b5f67ffffffffffffffff821115612b1957612b19612abb565b50601f01601f191660200190565b5f82601f830112612b36575f80fd5b8135612b49612b4482612b00565b612acf565b818152846020838601011115612b5d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060c08789031215612b8e575f80fd5b8635612b9981612a35565b95506020870135612ba981612a35565b94506040870135612bb981612a35565b9350606087013592506080870135915060a087013567ffffffffffffffff811115612be2575f80fd5b612bee89828a01612b27565b9150509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6102d86020830184612bfb565b5f60208284031215612c4b575f80fd5b5035919050565b5f8060408385031215612c63575f80fd5b82359150602083013567ffffffffffffffff811115612c80575f80fd5b612c8c85828601612b27565b9150509250929050565b5f67ffffffffffffffff821115612caf57612caf612abb565b5060051b60200190565b5f82601f830112612cc8575f80fd5b81356020612cd8612b4483612c96565b8083825260208201915060208460051b870101935086841115612cf9575f80fd5b602086015b84811015612d155780358352918301918301612cfe565b509695505050505050565b5f805f805f60a08688031215612d34575f80fd5b8535612d3f81612a35565b94506020860135612d4f81612a35565b9350604086013567ffffffffffffffff80821115612d6b575f80fd5b612d7789838a01612cb9565b94506060880135915080821115612d8c575f80fd5b612d9889838a01612cb9565b93506080880135915080821115612dad575f80fd5b50612dba88828901612b27565b9150509295509295909350565b5f60208284031215612dd7575f80fd5b813567ffffffffffffffff811115612ded575f80fd5b612df984828501612b27565b949350505050565b5f8060408385031215612e12575f80fd5b823567ffffffffffffffff80821115612e29575f80fd5b818501915085601f830112612e3c575f80fd5b81356020612e4c612b4483612c96565b82815260059290921b84018101918181019089841115612e6a575f80fd5b948201945b83861015612e91578535612e8281612a35565b82529482019490820190612e6f565b96505086013592505080821115612ea6575f80fd5b50612c8c85828601612cb9565b5f815180845260208085019450602084015f5b83811015612ee257815187529582019590820190600101612ec6565b509495945050505050565b602081525f6102d86020830184612eb3565b5f805f805f60a08688031215612f13575f80fd5b8535612f1e81612a35565b94506020860135612f2e81612a35565b93506040860135925060608601359150608086013567ffffffffffffffff811115612f57575f80fd5b612dba88828901612b27565b5f8060408385031215612f74575f80fd5b8235612f7f81612a35565b915060208301358015158114612f93575f80fd5b809150509250929050565b5f8060408385031215612faf575f80fd5b8235612fba81612a35565b91506020830135612f9381612a35565b5f81518060208401855e5f93019283525090919050565b5f612df9612fef8386612fca565b84612fca565b7f7b22646563696d616c73223a000000000000000000000000000000000000000081525f613026600c830187612fca565b7f2c226465736372697074696f6e223a2231206f6620746865736520726563656981527f7074732063616e206265206275726e656420616c6f6e67736964652031200000602082015261307c603e820187612fca565b90507f20746f2072656465656d2000000000000000000000000000000000000000000081526130ae600b820186612fca565b90507f2066726f6d20746865207661756c742e222c000000000000000000000000000081527f226e616d65223a220000000000000000000000000000000000000000000000006012820152613106601a820185612fca565b7f227d0000000000000000000000000000000000000000000000000000000000008152600201979650505050505050565b5f60208284031215613147575f80fd5b8151610b0081612a35565b634e487b7160e01b5f52603260045260245ffd5b5f613173612b4484612b00565b9050828152838383011115613186575f80fd5b8282602083015e5f602084830101529392505050565b5f602082840312156131ac575f80fd5b815167ffffffffffffffff8111156131c2575f80fd5b8201601f810184136131d2575f80fd5b612df984825160208401613166565b5f602082840312156131f1575f80fd5b815160ff81168114610b00575f80fd5b634e487b7160e01b5f52601260045260245ffd5b6001600160a01b0384168152826020820152606060408201525f61323c6060830184612bfb565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102db576102db613245565b83815260208101839052606081016003831061329657634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b5f805f606084860312156132b6575f80fd5b8351925060208401519150604084015167ffffffffffffffff811681146132db575f80fd5b809150509250925092565b808201808211156102db576102db613245565b5f8261331357634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176102db576102db613245565b5f6020828403121561333f575f80fd5b5051919050565b5f6001600160a01b03808816835280871660208401525060a0604083015261337160a0830186612eb3565b82810360608401526133838186612eb3565b905082810360808401526133978185612bfb565b98975050505050505050565b5f602082840312156133b3575f80fd5b8151610b0081612a73565b5f6001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526133f560a0830184612bfb565b979650505050505050565b600181811c9082168061341457607f821691505b60208210810361343257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610f4457805f5260205f20601f840160051c8101602085101561345d5750805b601f840160051c820191505b818110156105a7575f8155600101613469565b815167ffffffffffffffff81111561349657613496612abb565b6134aa816134a48454613400565b84613438565b602080601f8311600181146134dd575f84156134c65750858301515b5f19600386901b1c1916600185901b17855561096d565b5f85815260208120601f198616915b8281101561350b578886015182559484019460019091019084016134ec565b508582101561352857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6001600160a01b038088168352808716602084015280861660408401525060a0606083015261356b60a0830185612eb3565b82810360808401526133978185612eb3565b8082018281125f83128015821682158216171561359c5761359c613245565b505092915050565b600181815b808511156135de57815f19048211156135c4576135c4613245565b808516156135d157918102915b93841c93908002906135a9565b509250929050565b5f826135f4575060016102db565b8161360057505f6102db565b816001811461361657600281146136205761363c565b60019150506102db565b60ff84111561363157613631613245565b50506001821b6102db565b5060208310610133831016604e8410600b841016171561365f575081810a6102db565b61366983836135a4565b805f190482111561367c5761367c613245565b029392505050565b5f6102d883836135e6565b604081525f6136a16040830185612eb3565b828103602084015261323c8185612eb3565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361281e5761281e61324556"; diff --git a/src/generated/0_1_8/StoxReceiptVault.pointers.sol b/src/generated/0_1_8/StoxReceiptVault.pointers.sol new file mode 100644 index 00000000..95c52050 --- /dev/null +++ b/src/generated/0_1_8/StoxReceiptVault.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x22aa77aa9ffec4d290a8cacbcd8444b85761b6a1fb77c3f1b1a73490a7d9f972); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0xD7f91c1C6e6e651Ec3F1Fd707aF7CbB7526206e1); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"608060405234801561000f575f80fd5b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005561003c610041565b6100f3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100915760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100f05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615ffa806101005f395ff3fe608060405260043610610337575f3560e01c8063715018a6116101af578063bbec4d06116100eb578063dd62ed3e11610094578063e70689f51161006e578063e70689f5146109ab578063f2fde38b146109ca578063f5647943146109e9578063f5d214f514610a1e5761033e565b8063dd62ed3e146108ed578063e1e6b89814610950578063e5be7d901461098c5761033e565b8063c77b66c2116100c5578063c77b66c2146108b3578063d09edf31146108c6578063db2088f4146108da5761033e565b8063bbec4d0614610875578063c54cafee14610894578063c63d75b6146105635761033e565b80638da5cb5b11610158578063a9059cbb11610132578063a9059cbb146107b8578063ac9650d8146107d7578063ae57de0c14610803578063ae98b39f146108225761033e565b80638da5cb5b14610771578063921a4c421461078557806395d89b41146107a45761033e565b80637a7af70d116101895780637a7af70d1461072057806381c3fcb91461073357806385b68756146107525761033e565b8063715018a6146106ce578063770afee1146106e2578063786cd916146107015761033e565b8063276b11401161027e5780634abe413711610227578063633ac71711610201578063633ac7171461061e5780636ba235211461063d5780636c876b941461069057806370a08231146106af5761033e565b80634abe4137146105c157806356db02e8146105e057806359f89dda146105ff5761033e565b8063402d267d11610258578063402d267d14610563578063439fab9114610583578063488bd7b0146105a25761033e565b8063276b1140146104fe578063313ce5671461051157806338d52e0f146105375761033e565b806318160ddd116102e05780631f6759d3116102ba5780631f6759d31461048d57806323b872dd146104c05780632755c6c7146104df5761033e565b806318160ddd1461043b578063181e7b3b1461044f5780631e4344a11461046e5761033e565b806306fdde031161031157806306fdde03146103e8578063095ea7b3146104095780631423feba146104285761033e565b806301e1d1141461037357806301ffc9a71461039a578063058a628f146103c95761033e565b3661033e57005b73b7e24412126ad6a2ce19cbd79fd11b68e7f30cf6365f80375f80365f845af43d5f803e80801561036d573d5ff35b3d5ffd5b005b34801561037e575f80fd5b50610387610a51565b6040519081526020015b60405180910390f35b3480156103a5575f80fd5b506103b96103b4366004614f0e565b610a5f565b6040519015158152602001610391565b3480156103d4575f80fd5b506103716103e3366004614f61565b610aba565b3480156103f3575f80fd5b506103fc610ce3565b6040516103919190614faa565b348015610414575f80fd5b506103b9610423366004614fbc565b610db6565b610387610436366004615109565b610dcd565b348015610446575f80fd5b50610387610e17565b34801561045a575f80fd5b50610387610469366004615168565b610e20565b348015610479575f80fd5b50610371610488366004615188565b610e3f565b348015610498575f80fd5b507f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70054610387565b3480156104cb575f80fd5b506103b96104da36600461519f565b610ecb565b3480156104ea575f80fd5b506103716104f9366004614fbc565b610eee565b61038761050c366004615168565b611028565b34801561051c575f80fd5b50610525611053565b60405160ff9091168152602001610391565b348015610542575f80fd5b5061054b6110f8565b6040516001600160a01b039091168152602001610391565b34801561056e575f80fd5b5061038761057d366004614f61565b505f1990565b34801561058e575f80fd5b5061038761059d3660046151dd565b61112c565b3480156105ad575f80fd5b506103876105bc366004615168565b6113d1565b3480156105cc575f80fd5b506103876105db366004614fbc565b6113e9565b3480156105eb575f80fd5b506103876105fa36600461520f565b6114a3565b34801561060a575f80fd5b50610371610619366004615256565b6117e4565b348015610629575f80fd5b50610371610638366004614f61565b61181c565b348015610648575f80fd5b50610387610657366004614f61565b6001600160a01b03165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be701602052604090205490565b34801561069b575f80fd5b506103716106aa366004614f61565b611949565b3480156106ba575f80fd5b506103876106c9366004614f61565b611a49565b3480156106d9575f80fd5b50610371611a92565b3480156106ed575f80fd5b506103876106fc366004615256565b611aa5565b34801561070c575f80fd5b5061037161071b366004614fbc565b611c5f565b61038761072e366004615168565b611d90565b34801561073e575f80fd5b5061037161074d3660046151dd565b611da5565b34801561075d575f80fd5b5061038761076c366004614fbc565b611de1565b34801561077c575f80fd5b5061054b611ec4565b348015610790575f80fd5b5061038761079f3660046152ab565b611ecd565b3480156107af575f80fd5b506103fc611efa565b3480156107c3575f80fd5b506103b96107d2366004614fbc565b611f4b565b3480156107e2575f80fd5b506107f66107f136600461531c565b611f58565b604051610391919061538b565b34801561080e575f80fd5b5061038761081d3660046152ab565b61203e565b34801561082d575f80fd5b5061038761083c366004614f61565b6001600160a01b03165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be702602052604090205490565b348015610880575f80fd5b5061038761088f366004615168565b612061565b34801561089f575f80fd5b506103876108ae366004615449565b61206f565b6103876108c1366004615109565b612157565b3480156108d1575f80fd5b5061054b612186565b6103876108e8366004615168565b6121ae565b3480156108f8575f80fd5b506103876109073660046154ae565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b34801561095b575f80fd5b507f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031661054b565b348015610997575f80fd5b506103716109a6366004615557565b6121c2565b3480156109b6575f80fd5b506103716109c53660046155ed565b6122f9565b3480156109d5575f80fd5b506103716109e4366004614f61565b612462565b3480156109f4575f80fd5b507fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd025442116103b9565b348015610a29575f80fd5b507fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0154610387565b5f610a5a610e17565b905090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f59f89dda000000000000000000000000000000000000000000000000000000001480610ab45750610ab4826124b8565b92915050565b6040517f248a9ca30000000000000000000000000000000000000000000000000000000081527ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f8960048201525f906001600160a01b0383169063248a9ca390602401602060405180830381865afa158015610b37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615645565b905080610bca576040517f76728ed90000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201527ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f8960248201526044015b60405180910390fd5b6040517f248a9ca30000000000000000000000000000000000000000000000000000000081527f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e760048201525f906001600160a01b0384169063248a9ca390602401602060405180830381865afa158015610c47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6b9190615645565b905080610cd5576040517f76728ed90000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e76024820152604401610bc1565b610cde836125e6565b505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610d349061565c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d609061565c565b8015610dab5780601f10610d8257610100808354040283529160200191610dab565b820191905f5260205f20905b815481529060010190602001808311610d8e57829003601f168201915b505050505091505090565b5f33610dc38185856125f7565b5060019392505050565b5f80610dd7612604565b90505f610df187610deb335b89865f61265b565b8761266f565b9050610e008787838588612685565b610e0b335b476128ac565b9150505b949350505050565b5f610a5a612955565b5f610e3883670de0b6b3a7640000612ab4565b612ab4565b9392505050565b610e47612ac0565b7f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be7008054821115610e75578181555b7fff9fd4facd8bd30d905cc7ffbd03e8829a414df4c6554d155d132c3377868a42610e9e611ec4565b8254604080516001600160a01b039093168352602083018690528201526060015b60405180910390a15050565b5f33610ed8858285612b0b565b610ee3858585612bbf565b506001949350505050565b610ef6612ac0565b805f03610f3a576040517f5a6084530000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610bc1565b6001600160a01b0382165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70260205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70090821115610fb7576001600160a01b0383165f90815260028201602052604090208290555b7fa1e5b368dc99c8558f28b1e7e8cb7ab542c989a4b697628ba7bfffe0aeaccffd610fe0611ec4565b6001600160a01b038581165f818152600286016020908152604091829020548251959094168552840191909152820185905260608201526080015b60405180910390a1505050565b5f8061104884611042335b3361103c612604565b5f61265b565b85612c4e565b9050610e3833610e05565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f308970152310243260080545f91906001600160a01b0316803b806110905760126110f0565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f091906156a7565b935050505090565b5f807f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f30897015231024326005b546001600160a01b031692915050565b5f80611136612c65565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156111625750825b90505f8267ffffffffffffffff16600114801561117e5750303b155b90508115801561118c575080155b156111c3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61122c612c8d565b5f878060200190518101906112419190615714565b90506112508160200151612cc6565b6020810151516001600160a01b031615611296576040517f8951799200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b03166112d7576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112e030612e39565b80516112eb90612f99565b7ffa89761502e992c8c755fba778ced00f4562485023f656906eb76f5dd65a9fe53360408051808201825284516001600160a01b0316815260208086015190820152905161133a92919061580b565b60405180910390a17fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc396505083156113c75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b5f610e38836113e4335b3386600161265b565b613021565b5f61141b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031690565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052919091169062fdd58e90604401602060405180830381865afa15801561147f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e389190615645565b5f6114ac61302e565b825f036114e5576040517f312497b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6115a98461151b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031690565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018a9052919091169062fdd58e90604401602060405180830381865afa15801561157f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a39190615645565b9061305c565b905080156116c6577f88e2280ece62e9296d3578b77647db2c11f9fa7e42578e2db5d4262123ffae3e3387878785886040516115ea969594939291906158af565b60405180910390a17f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b03166001600160a01b031663043fa98733883360405160e085901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03938416600482015291831660248301529091166044820152606481018890526084810184905260c060a48201525f60c482015260e4015f604051808303815f87803b1580156116af575f80fd5b505af11580156116c1573d5f803e3d5ffd5b505050505b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f3dd35eca0ca8a128757fa464a5dfa4ad6cc4853cad96dce4e90fdbea4f0a52e36040518060a001604052808c6001600160a01b031681526020018b81526020018a81526020018781526020018981525060405160200161175d91906158f8565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161178a93929190615943565b5f604051808303815f87803b1580156117a1575f80fd5b505af11580156117b3573d5f803e3d5ffd5b5093945050505050610e0f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b8282826040517f3ae4063b000000000000000000000000000000000000000000000000000000008152600401610bc193929190615943565b611824612ac0565b6001600160a01b0381165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70260205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be7009042116118d9576001600160a01b0382165f818152600283016020526040908190205490517f81a7897700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610bc1565b6001600160a01b0382165f9081526002820160205260408120557fa1e5b368dc99c8558f28b1e7e8cb7ab542c989a4b697628ba7bfffe0aeaccffd61191c611ec4565b604080516001600160a01b03928316815291851660208301525f9082018190526060820152608001610ebf565b611951612ac0565b6001600160a01b0381165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70160205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be700904211611a06576001600160a01b0382165f818152600183016020526040908190205490517ff1b01b5400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610bc1565b6001600160a01b0382165f9081526001820160205260408120557fd08871fffa9d03c01fcba597af5dfbe64cb26f207debdae1af2532695447499161191c611ec4565b5f80611a548361306b565b90505f611a5f61307e565b6001600160a01b0385165f90815260038201602052604081205491925090611a889084906130df565b5095945050505050565b611a9a612ac0565b611aa35f612f99565b565b5f611aae61302e565b825f03611ae7576040517f312497b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611af5846115a387611a49565b90508015611b47577f3fc1c49e72362e91416388fe7a107b92db924642476e83e701eeeb6256d7249e3386868487604051611b3495949392919061596a565b60405180910390a1611b47853383612bbf565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f54f0af3716c79b30b8c228679d31d77a1a5f526c16af3262730e0a8de4363fed60405180608001604052808b6001600160a01b031681526020018a815260200187815260200189815250604051602001611bd891906159a1565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611c0593929190615943565b5f604051808303815f87803b158015611c1c575f80fd5b505af1158015611c2e573d5f803e3d5ffd5b5093945050505050610e3860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611c67612ac0565b805f03611cab576040517ffd86061b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610bc1565b6001600160a01b0382165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70160205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70090821115611d28576001600160a01b0383165f90815260018201602052604090208290555b7fd08871fffa9d03c01fcba597af5dfbe64cb26f207debdae1af25326954474991611d51611ec4565b6001600160a01b038581165f8181526001860160209081526040918290205482519590941685528401919091528201859052606082015260800161101b565b5f8061104884611d9f33611033565b8561266f565b7fdaffad82f53a38a62340f14cdd6fd3b437c5dcda6b32029dac1e661dbce28b2d3382604051611dd69291906159e2565b60405180910390a150565b5f80611df0848585600161265b565b9050805f03611e02575f915050610ab4565b610e0f611e367f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031690565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201879052919091169062fdd58e90604401602060405180830381865afa158015611e9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ebe9190615645565b82612ab4565b5f610a5a61318d565b5f80611ee087610e33878988600161265b565b9050611ef08187878a88886131b5565b9695505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610d349061565c565b5f33610dc3818585612bbf565b604080515f8152602081019091526060908267ffffffffffffffff811115611f8257611f82614fe6565b604051908082528060200260200182016040528015611fb557816020015b6060815260200190600190039081611fa05790505b5091505f5b838110156120365761201130868684818110611fd857611fd8615a43565b9050602002810190611fea9190615a70565b85604051602001611ffd93929190615ad1565b60405160208183030381529060405261357b565b83828151811061202357612023615a43565b6020908102919091010152600101611fba565b505092915050565b5f80612051876113e4878988600161265b565b9050611ef08787878488886131b5565b5f610e3883610e33336113db565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd01545f907fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd00908511156120f1576040517fe4a4718200000000000000000000000000000000000000000000000000000000815260048101869052602401610bc1565b5f61210888612102338a8a5f61265b565b5f61266f565b905061214c8888838989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061268592505050565b979650505050505050565b5f80612161612604565b90505f6121778761217133610de3565b87612c4e565b9050610e008187898588612685565b5f807fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0061111c565b5f8061104884670de0b6b3a7640000612102565b6121cf8585858585613616565b6121d98484613679565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080546040805160a0810182526001600160a01b0388811682528781166020830152918101869052606081018590529116906359f89dda9088907f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a4890608081016122837fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0254421190565b151590526040516122979190602001615b2e565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016122c493929190615943565b5f604051808303815f87803b1580156122db575f80fd5b505af11580156122ed573d5f803e3d5ffd5b50505050505050505050565b835f03612332576040517f8672985d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0090505f6040518060a001604052808360020154815260200183600201548152602001878152602001861515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250905084806123cc5750816002015486115b156123e05760028201869055602081018690525b7f7ef5cae78e9bd364afb19bb0f8a881a6d156e35a119e28c0d17524e5079581583387878787604051612417959493929190615ba0565b60405180910390a181546001600160a01b03166359f89dda337f50a07cb25d0d864370863300b20987dfdae089abad71b607faf639d09d053391846040516020016122979190615bee565b61246a612ac0565b6001600160a01b0381166124ac576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6124b581612f99565b50565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe5be7d9000000000000000000000000000000000000000000000000000000000148061254a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f439fab9100000000000000000000000000000000000000000000000000000000145b8061259657507fffffffff0000000000000000000000000000000000000000000000000000000082167fe1e6b89800000000000000000000000000000000000000000000000000000000145b80610ab457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610ab4565b6125ee612ac0565b6124b581612e39565b610cde8383836001613739565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd01545f907fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0090612655906001615c32565b91505090565b5f670de0b6b3a76400005b95945050505050565b5f61267a8284613861565b610e0f84845f6138a5565b61268d61302e565b845f036126c6576040517fc7838b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f036126ff576040517ffc8c806300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841661273f576040517f6ba9ecd800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f0361277a576040517fe4a471820000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b7f3377bcbed49a0c0005e53931cd8fe7334b5371523e5de784c0d0d3d01089cfea3385878686866040516127b3969594939291906158af565b60405180910390a16127c885858585856138ba565b6127d28484613915565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546040517f6d5b3f780000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636d5b3f7890612842903390889087908990889060040161596a565b5f604051808303815f87803b158015612859575f80fd5b505af115801561286b573d5f803e3d5ffd5b5050505061287c8585858585613962565b6128a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b804710156128ef576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101829052604401610bc1565b612908828260405180602001604052805f815250613a0e565b15612911575050565b3d156129235761291f613a23565b5050565b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061295f61307e565b60028101549091505f0361297557612655613a2e565b5f6129845f1960036001613a93565b90505f5b5f198214610e38575f8360020183815481106129a6576129a6615a43565b905f5260205f2090600502015f0154905060028103612a83575f612a738560020185815481106129d8576129d8615a43565b905f5260205f20906005020160040180546129f29061565c565b80601f0160208091040260200160405190810160405280929190818152602001828054612a1e9061565c565b8015612a695780601f10612a4057610100808354040283529160200191612a69565b820191905f5260205f20905b815481529060010190602001808311612a4c57829003601f168201915b5050505050613b8e565b9050612a7f8382613ba3565b9250505b5f838152600485016020526040902054612a9d9083615c32565b9150612aac8360036001613a93565b925050612988565b5f610e38838383613c27565b33612ac9611ec4565b6001600160a01b031614611aa3576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610bc1565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015612bb95781811015612bab576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610bc1565b612bb984848484035f613739565b50505050565b6001600160a01b038316612c01576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6001600160a01b038216612c43576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b610cde838383613c3c565b5f612c598284613861565b610e0f84846001613c27565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610ab4565b425f03611aa3576040517f789a532d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612cce613c8f565b612ce081602001518260400151613c97565b80517f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f308970152310243260080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0393841617825560608401517f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601805490921693169283179055604080517f481c6a75000000000000000000000000000000000000000000000000000000008152905191925f92909163481c6a759160048083019260209291908290030181865afa158015612dc0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612de49190615c45565b90506001600160a01b0381163014610cde576040517f7935475e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382166024820152604401610bc1565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f59f89dda0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015612eb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed89190615c60565b612f0e576040517ffd12061600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811782556040805133815260208101929092527fa8c713fe8fb360697fc0daab836d85208a605d485fbc265aea0f773fc6cdd71a9101610ebf565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f610e38838360016138a5565b613036613ca9565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f828218828410028218610e38565b5f8061307683613d04565b549392505050565b5f8060ff196130ae60017f2f8f8ecf1b7a1a3ceda8d15a9a2247a2377b3434535a87f1728021c13fec2e71615a30565b6040516020016130c091815260200190565b60408051601f1981840301815291905280516020909101201692915050565b5f8082816130eb61307e565b9050855f6130fc8760036001613a93565b90505b5f19811461317e57925082811580159061313c5750600283600201828154811061312b5761312b615a43565b905f5260205f2090600502015f0154145b1561316a575f61315a8460020183815481106129d8576129d8615a43565b90506131668382613ba3565b9250505b6131778160036001613a93565b90506130ff565b509350909150505b9250929050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930061111c565b6131bd61302e565b855f036131f6576040517fc7838b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f0361322f576040517ffc8c806300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03851661326f576040517f6ba9ecd800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166132af576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f036132eb576040517fe4a4718200000000000000000000000000000000000000000000000000000000815260048101839052602401610bc1565b7f2845b9458bcc357e1abfe8de7f6832dfe7220596a053496b33d0deb6577d8d2a338686898787876040516133269796959493929190615c7b565b60405180910390a16001600160a01b038416331461349557613349843385612b0b565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b03166001600160a01b031663e985e9c585336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156133e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134099190615c60565b613495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152608401610bc1565b61349f8484613d71565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546040517fc2530e390000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063c2530e399061350f903390889087908990889060040161596a565b5f604051808303815f87803b158015613526575f80fd5b505af1158015613538573d5f803e3d5ffd5b5050505061354a868686868686613dbe565b61357360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60605f6135888484613ec7565b90508080156135a957505f3d11806135a957505f846001600160a01b03163b115b156135be576135b6613eda565b915050610ab4565b8015613601576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610bc1565b3d156129235761360f613a23565b5092915050565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031633146128a5576040517f8813aac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be700805442118015906136c257506001600160a01b0383165f908152600182016020526040902054155b80156136e557506001600160a01b0382165f908152600282016020526040902054155b15610cde5780546040517f79d7155100000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03808516602483015283166044820152606401610bc1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03851661379c576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6001600160a01b0384166137de576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156128a557836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161385291815260200190565b60405180910390a35050505050565b8181101561291f576040517fa3e322340000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bc1565b5f610e0f8484670de0b6b3a764000085613ef3565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd01547fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd00906139089084613f35565b6001909101555050505050565b6001600160a01b038216613957576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b61291f5f8383613c3c565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8216040518060c001604052806139cb3390565b6001600160a01b031681526020018a6001600160a01b031681526020018881526020018b8152602001898152602001878152506040516020016122979190615d20565b5f805f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b5f8060ff19613a5e60017fb750591399365444a618527b69a54ce09476c8bde1ecff60f5aa1fe2b52605ff615a30565b604051602001613a7091815260200190565b60408051808303601f190181529190528051602090910120166002015492915050565b5f600783168103613ad0576040517fbf3cad0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f613ad961307e565b60028101549091505f03613af1575f19915050610e38565b5f5f198614613b2457816002018681548110613b0f57613b0f615a43565b905f5260205f20906005020160030154613b27565b81545b90506002846002811115613b3d57613b3d615d32565b03613b5f57613b5682613b508484613f44565b87613fbf565b92505050610e38565b6001846002811115613b7357613b73615d32565b03613b8357613b56828287614017565b611ef0828287613fbf565b5f81806020019051810190610ab49190615645565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613c01576040517fbf463fe900000000000000000000000000000000000000000000000000000000815260048101849052602401610bc1565b5f613c1e613c18613c12865f614084565b856140de565b5f614140565b50949350505050565b5f610e0f84670de0b6b3a76400008585613ef3565b613c44614181565b613c4d836141e7565b613c56826141e7565b613c618383836142d4565b6001600160a01b038316613c7857610cde81614434565b6001600160a01b038216610cde57610cde81614477565b611aa36144b1565b613c9f6144b1565b61291f82826144ef565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203611aa3576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060ff19613d3460017fb750591399365444a618527b69a54ce09476c8bde1ecff60f5aa1fe2b52605ff615a30565b604051602001613d4691815260200190565b60408051601f1981840301815291815281516020928301205f96875292909216905290922092915050565b6001600160a01b038216613db3576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b61291f825f83613c3c565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828696040518060c001604052808a6001600160a01b031681526020018b6001600160a01b031681526020018881526020018c815260200189815260200187815250604051602001613e649190615d20565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401613e9193929190615943565b5f604051808303815f87803b158015613ea8575f80fd5b505af1158015613eba573d5f803e3d5ffd5b5050505050505050505050565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b5f613f20613f0083614552565b8015613f1b57505f8480613f1657613f16615d5f565b868809115b151590565b613f2b86868661457e565b6126669190615c32565b5f828218828411028218610e38565b5f5b5f198214158015613f88575042836002018381548110613f6857613f68615a43565b5f91825260209091206001600590920201015467ffffffffffffffff1611155b15613fb957826002018281548110613fa257613fa2615a43565b905f5260205f209060050201600301549150613f46565b50919050565b5f5b5f19831461400d575f846002018481548110613fdf57613fdf615a43565b905f5260205f209060050201905082815f0154165f146140025783915050610e38565b600301549250613fc1565b505f199392505050565b5f5b5f19831461400d575f84600201848154811061403757614037615a43565b5f918252602090912060059091020160018101549091504267ffffffffffffffff9091161115614067575061400d565b80548316156140795783915050610e38565b600301549250614019565b5f805f614091858561462e565b91509150806140d6576040517f22c9f7bb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bc1565b509392505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d848061412386868686614734565b915091505f6141328383614853565b9a9950505050505050505050565b5f807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416601b0b60e085901d6141748282876148b1565b9350935050509250929050565b5f61418a61307e565b60028101549091505f0361419b5750565b5f6141b0826005015460026001176001613a93565b90505f195b5f1982146141d35750806141cc8160036001613a93565b91506141b5565b5f198114610cde5760058301819055505050565b6001600160a01b0381166141f85750565b5f61420161307e565b6001600160a01b0383165f9081526003820160205260408120549192506142278461306b565b90505f8061423583856130df565b9150915083810361424857505050505050565b6001600160a01b0386165f9081526003860160205260409020819055818314614275576142758683614a9c565b6040805185815260208101839052908101849052606081018390526001600160a01b038716907f36a2eb39b73568d38e98721588b15b309c9380e1b1ab575c2c3d71d5148ccb4a9060800160405180910390a261357384848385614aae565b6142de8383613679565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a6040518060800160405280896001600160a01b03168152602001886001600160a01b0316815260200187815260200161438e7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0254421190565b151590526040805182516001600160a01b03908116602080840191909152840151168183015290820151606080830191909152909101511515608082015260a0016040516020818303038152906040526040518463ffffffff1660e01b81526004016143fc93929190615943565b5f604051808303815f87803b158015614413575f80fd5b505af1158015614425573d5f803e3d5ffd5b50505050612bb9848484614b0b565b5f61443d61307e565b60028101549091501561291f5760058101545f9081526004820160205260408120805484929061446e908490615c32565b90915550505050565b5f61448061307e565b60028101549091501561291f5760058101545f9081526004820160205260408120805484929061446e908490615a30565b6144b9614b16565b611aa3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6144f76144b1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036145438482615dd0565b5060048101612bb98382615dd0565b5f600282600381111561456757614567615d32565b6145719190615e8c565b60ff166001149050919050565b5f805f61458b8686614b34565b91509150815f036145af578381816145a5576145a5615d5f565b0492505050610e38565b8184116145c6576145c66003851502601118614b50565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f601b83900b8314838382614692577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561467257620186a0860595506005850194505b8586601b0b1461468d57600a86059550846001019450614672565b6146a8565b855f036146a857505f9250600191506131869050565b848560030b14614704575f8512156146c857505f92508291506131869050565b6040517fd556b1110000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bc1565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f808515841517801561474c575f92505f9150614849565b6147568487615ead565b91505f61476288614b61565b90505f61476e87614b61565b90505f61477b8383614b34565b5090505f6f0785ee10d5da46d900f436a0000000008211156147b0576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a76400008211156147d157670de0b6b3a7640000820491506012015b633b9aca008211156147ea57633b9aca00820491506009015b6127108211156147ff57612710820491506004015b811561481357600a820491506001016147ff565b61481d8187615ead565b955061483f8b8a614839878761483487600a615fac565b614bc2565b89614c9d565b9097509550505050505b5094509492505050565b5f805f614860858561462e565b9150915080158015614870575081155b156140d6576040517f8eba4d070000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bc1565b5f805f8512156148f7576040517f4a7d166b0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bc1565b845f0361490957505f90506001614a94565b8460ff8416850185811215614954576040517fd556b1110000000000000000000000000000000000000000000000000000000081526004810188905260248101879052604401610bc1565b5f805f8312156149be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb3831215614995575f809550955050505050614a94565b825f03600a0a91508184816149ac576149ac615d5f565b0495505084029091149150614a949050565b5f831315614a8957604d831315614a14576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff88166044820152606401610bc1565b82600a0a9150815f1981614a2a57614a2a615d5f565b04841115614a77576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff88166044820152606401610bc1565b5091909102925060019150614a949050565b509193506001925050505b935093915050565b5f614aa683613d04565b919091555050565b5f614ab761307e565b905083816004015f8781526020019081526020015f205f828254614adb9190615a30565b90915550505f83815260048201602052604081208054849290614aff908490615c32565b90915550505050505050565b610cde838383614da9565b5f614b1f612c65565b5468010000000000000000900460ff16919050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f80821215614bbe577f80000000000000000000000000000000000000000000000000000000000000008203614bb857507f8000000000000000000000000000000000000000000000000000000000000000919050565b505f0390565b5090565b5f805f614bcf8686614b34565b91509150815f03614be9578381816145a5576145a5615d5f565b838210614c33576040517f6c59da12000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610bc1565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f8587181215614d67577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115614d5457614cfc7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001615c32565b8403614d2c57507f8000000000000000000000000000000000000000000000000000000000000000905081614da0565b614d37600a85615fb7565b614d4090615fca565b614d4b846001615ead565b91509150614da0565b614d5d84615fca565b8391509150614da0565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115614d9a57614d40600a85615fb7565b50829050815b94509492505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038416614df65781816002015f828254614deb9190615c32565b90915550614e7f9050565b6001600160a01b0384165f9081526020829052604090205482811015614e61576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610bc1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316614e9d576002810180548390039055614ebb565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614f0091815260200190565b60405180910390a350505050565b5f60208284031215614f1e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e38575f80fd5b6001600160a01b03811681146124b5575f80fd5b5f60208284031215614f71575f80fd5b8135610e3881614f4d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e386020830184614f7c565b5f8060408385031215614fcd575f80fd5b8235614fd881614f4d565b946020939093013593505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561503657615036614fe6565b60405290565b6040516080810167ffffffffffffffff8111828210171561503657615036614fe6565b604051601f8201601f1916810167ffffffffffffffff8111828210171561508857615088614fe6565b604052919050565b5f67ffffffffffffffff8211156150a9576150a9614fe6565b50601f01601f191660200190565b5f82601f8301126150c6575f80fd5b81356150d96150d482615090565b61505f565b8181528460208386010111156150ed575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561511c575f80fd5b84359350602085013561512e81614f4d565b925060408501359150606085013567ffffffffffffffff811115615150575f80fd5b61515c878288016150b7565b91505092959194509250565b5f8060408385031215615179575f80fd5b50508035926020909101359150565b5f60208284031215615198575f80fd5b5035919050565b5f805f606084860312156151b1575f80fd5b83356151bc81614f4d565b925060208401356151cc81614f4d565b929592945050506040919091013590565b5f602082840312156151ed575f80fd5b813567ffffffffffffffff811115615203575f80fd5b610e0f848285016150b7565b5f805f8060808587031215615222575f80fd5b843561522d81614f4d565b93506020850135925060408501359150606085013567ffffffffffffffff811115615150575f80fd5b5f805f60608486031215615268575f80fd5b833561527381614f4d565b925060208401359150604084013567ffffffffffffffff811115615295575f80fd5b6152a1868287016150b7565b9150509250925092565b5f805f805f60a086880312156152bf575f80fd5b8535945060208601356152d181614f4d565b935060408601356152e181614f4d565b925060608601359150608086013567ffffffffffffffff811115615303575f80fd5b61530f888289016150b7565b9150509295509295909350565b5f806020838503121561532d575f80fd5b823567ffffffffffffffff80821115615344575f80fd5b818501915085601f830112615357575f80fd5b813581811115615365575f80fd5b8660208260051b8501011115615379575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156153fe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526153ec858351614f7c565b945092850192908501906001016153b2565b5092979650505050505050565b5f8083601f84011261541b575f80fd5b50813567ffffffffffffffff811115615432575f80fd5b602083019150836020828501011115613186575f80fd5b5f805f805f6080868803121561545d575f80fd5b85359450602086013561546f81614f4d565b935060408601359250606086013567ffffffffffffffff811115615491575f80fd5b61549d8882890161540b565b969995985093965092949392505050565b5f80604083850312156154bf575f80fd5b82356154ca81614f4d565b915060208301356154da81614f4d565b809150509250929050565b5f82601f8301126154f4575f80fd5b8135602067ffffffffffffffff82111561551057615510614fe6565b8160051b61551f82820161505f565b9283528481018201928281019087851115615538575f80fd5b83870192505b8483101561214c5782358252918301919083019061553e565b5f805f805f60a0868803121561556b575f80fd5b853561557681614f4d565b9450602086013561558681614f4d565b9350604086013561559681614f4d565b9250606086013567ffffffffffffffff808211156155b2575f80fd5b6155be89838a016154e5565b935060808801359150808211156155d3575f80fd5b5061530f888289016154e5565b80151581146124b5575f80fd5b5f805f8060608587031215615600575f80fd5b843593506020850135615612816155e0565b9250604085013567ffffffffffffffff81111561562d575f80fd5b6156398782880161540b565b95989497509550505050565b5f60208284031215615655575f80fd5b5051919050565b600181811c9082168061567057607f821691505b602082108103613fb9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f602082840312156156b7575f80fd5b815160ff81168114610e38575f80fd5b5f82601f8301126156d6575f80fd5b81516156e46150d482615090565b8181528460208386010111156156f8575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215615724575f80fd5b815167ffffffffffffffff8082111561573b575f80fd5b908301906040828603121561574e575f80fd5b615756615013565b825161576181614f4d565b8152602083015182811115615774575f80fd5b929092019160808387031215615788575f80fd5b61579061503c565b835161579b81614f4d565b81526020840151838111156157ae575f80fd5b6157ba888287016156c7565b6020830152506040840151838111156157d1575f80fd5b6157dd888287016156c7565b604083015250606084015193506157f384614f4d565b60608101939093526020810192909252509392505050565b5f6001600160a01b038085168352604060208401528084511660408401526020840151604060608501528181511660808501526020810151608060a0860152615858610100860182614f7c565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160c08701526158938282614f7c565b9150508260608301511660e08601528093505050509392505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015283608083015260c060a08301526158ec60c0830184614f7c565b98975050505050505050565b602081526001600160a01b0382511660208201526020820151604082015260408201516060820152606082015160808201525f608083015160a080840152610e0f60c0840182614f7c565b6001600160a01b0384168152826020820152606060408201525f6126666060830184614f7c565b5f6001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261214c60a0830184614f7c565b602081526001600160a01b03825116602082015260208201516040820152604082015160608201525f6060830151608080840152610e0f60a0840182614f7c565b6001600160a01b0383168152604060208201525f610e0f6040830184614f7c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610ab457610ab4615a03565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615aa3575f80fd5b83018035915067ffffffffffffffff821115615abd575f80fd5b602001915036819003821315613186575f80fd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f815180845260208085019450602084015f5b83811015615b2357815187529582019590820190600101615b07565b509495945050505050565b602081525f6001600160a01b0380845116602084015280602085015116604084015250604083015160a06060840152615b6a60c0840182615af4565b90506060840151601f19848303016080850152615b878282615af4565b9150506080840151151560a08401528091505092915050565b6001600160a01b0386168152846020820152831515604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b602081528151602082015260208201516040820152604082015160608201526060820151151560808201525f608083015160a080840152610e0f60c0840182614f7c565b80820180821115610ab457610ab4615a03565b5f60208284031215615c55575f80fd5b8151610e3881614f4d565b5f60208284031215615c70575f80fd5b8151610e38816155e0565b5f6001600160a01b03808a16835280891660208401528088166040840152508560608301528460808301528360a083015260e060c0830152615cc060e0830184614f7c565b9998505050505050505050565b5f6001600160a01b038083511684528060208401511660208501525060408201516040840152606082015160608401526080820151608084015260a082015160c060a0850152610e0f60c0850182614f7c565b602081525f610e386020830184615ccd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b601f821115610cde57805f5260205f20601f840160051c81016020851015615db15750805b601f840160051c820191505b818110156128a5575f8155600101615dbd565b815167ffffffffffffffff811115615dea57615dea614fe6565b615dfe81615df8845461565c565b84615d8c565b602080601f831160018114615e31575f8415615e1a5750858301515b5f19600386901b1c1916600185901b178555613573565b5f85815260208120601f198616915b82811015615e5f57888601518255948401946001909101908401615e40565b5085821015615e7c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60ff831680615e9e57615e9e615d5f565b8060ff84160691505092915050565b8082018281125f83128015821682158216171561203657612036615a03565b600181815b80851115615f0657815f1904821115615eec57615eec615a03565b80851615615ef957918102915b93841c9390800290615ed1565b509250929050565b5f82615f1c57506001610ab4565b81615f2857505f610ab4565b8160018114615f3e5760028114615f4857615f64565b6001915050610ab4565b60ff841115615f5957615f59615a03565b50506001821b610ab4565b5060208310610133831016604e8410600b8410161715615f87575081810a610ab4565b615f918383615ecc565b805f1904821115615fa457615fa4615a03565b029392505050565b5f610e388383615f0e565b5f82615fc557615fc5615d5f565b500490565b5f7f80000000000000000000000000000000000000000000000000000000000000008203614bb857614bb8615a0356"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405260043610610337575f3560e01c8063715018a6116101af578063bbec4d06116100eb578063dd62ed3e11610094578063e70689f51161006e578063e70689f5146109ab578063f2fde38b146109ca578063f5647943146109e9578063f5d214f514610a1e5761033e565b8063dd62ed3e146108ed578063e1e6b89814610950578063e5be7d901461098c5761033e565b8063c77b66c2116100c5578063c77b66c2146108b3578063d09edf31146108c6578063db2088f4146108da5761033e565b8063bbec4d0614610875578063c54cafee14610894578063c63d75b6146105635761033e565b80638da5cb5b11610158578063a9059cbb11610132578063a9059cbb146107b8578063ac9650d8146107d7578063ae57de0c14610803578063ae98b39f146108225761033e565b80638da5cb5b14610771578063921a4c421461078557806395d89b41146107a45761033e565b80637a7af70d116101895780637a7af70d1461072057806381c3fcb91461073357806385b68756146107525761033e565b8063715018a6146106ce578063770afee1146106e2578063786cd916146107015761033e565b8063276b11401161027e5780634abe413711610227578063633ac71711610201578063633ac7171461061e5780636ba235211461063d5780636c876b941461069057806370a08231146106af5761033e565b80634abe4137146105c157806356db02e8146105e057806359f89dda146105ff5761033e565b8063402d267d11610258578063402d267d14610563578063439fab9114610583578063488bd7b0146105a25761033e565b8063276b1140146104fe578063313ce5671461051157806338d52e0f146105375761033e565b806318160ddd116102e05780631f6759d3116102ba5780631f6759d31461048d57806323b872dd146104c05780632755c6c7146104df5761033e565b806318160ddd1461043b578063181e7b3b1461044f5780631e4344a11461046e5761033e565b806306fdde031161031157806306fdde03146103e8578063095ea7b3146104095780631423feba146104285761033e565b806301e1d1141461037357806301ffc9a71461039a578063058a628f146103c95761033e565b3661033e57005b73b7e24412126ad6a2ce19cbd79fd11b68e7f30cf6365f80375f80365f845af43d5f803e80801561036d573d5ff35b3d5ffd5b005b34801561037e575f80fd5b50610387610a51565b6040519081526020015b60405180910390f35b3480156103a5575f80fd5b506103b96103b4366004614f0e565b610a5f565b6040519015158152602001610391565b3480156103d4575f80fd5b506103716103e3366004614f61565b610aba565b3480156103f3575f80fd5b506103fc610ce3565b6040516103919190614faa565b348015610414575f80fd5b506103b9610423366004614fbc565b610db6565b610387610436366004615109565b610dcd565b348015610446575f80fd5b50610387610e17565b34801561045a575f80fd5b50610387610469366004615168565b610e20565b348015610479575f80fd5b50610371610488366004615188565b610e3f565b348015610498575f80fd5b507f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70054610387565b3480156104cb575f80fd5b506103b96104da36600461519f565b610ecb565b3480156104ea575f80fd5b506103716104f9366004614fbc565b610eee565b61038761050c366004615168565b611028565b34801561051c575f80fd5b50610525611053565b60405160ff9091168152602001610391565b348015610542575f80fd5b5061054b6110f8565b6040516001600160a01b039091168152602001610391565b34801561056e575f80fd5b5061038761057d366004614f61565b505f1990565b34801561058e575f80fd5b5061038761059d3660046151dd565b61112c565b3480156105ad575f80fd5b506103876105bc366004615168565b6113d1565b3480156105cc575f80fd5b506103876105db366004614fbc565b6113e9565b3480156105eb575f80fd5b506103876105fa36600461520f565b6114a3565b34801561060a575f80fd5b50610371610619366004615256565b6117e4565b348015610629575f80fd5b50610371610638366004614f61565b61181c565b348015610648575f80fd5b50610387610657366004614f61565b6001600160a01b03165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be701602052604090205490565b34801561069b575f80fd5b506103716106aa366004614f61565b611949565b3480156106ba575f80fd5b506103876106c9366004614f61565b611a49565b3480156106d9575f80fd5b50610371611a92565b3480156106ed575f80fd5b506103876106fc366004615256565b611aa5565b34801561070c575f80fd5b5061037161071b366004614fbc565b611c5f565b61038761072e366004615168565b611d90565b34801561073e575f80fd5b5061037161074d3660046151dd565b611da5565b34801561075d575f80fd5b5061038761076c366004614fbc565b611de1565b34801561077c575f80fd5b5061054b611ec4565b348015610790575f80fd5b5061038761079f3660046152ab565b611ecd565b3480156107af575f80fd5b506103fc611efa565b3480156107c3575f80fd5b506103b96107d2366004614fbc565b611f4b565b3480156107e2575f80fd5b506107f66107f136600461531c565b611f58565b604051610391919061538b565b34801561080e575f80fd5b5061038761081d3660046152ab565b61203e565b34801561082d575f80fd5b5061038761083c366004614f61565b6001600160a01b03165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be702602052604090205490565b348015610880575f80fd5b5061038761088f366004615168565b612061565b34801561089f575f80fd5b506103876108ae366004615449565b61206f565b6103876108c1366004615109565b612157565b3480156108d1575f80fd5b5061054b612186565b6103876108e8366004615168565b6121ae565b3480156108f8575f80fd5b506103876109073660046154ae565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b34801561095b575f80fd5b507f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031661054b565b348015610997575f80fd5b506103716109a6366004615557565b6121c2565b3480156109b6575f80fd5b506103716109c53660046155ed565b6122f9565b3480156109d5575f80fd5b506103716109e4366004614f61565b612462565b3480156109f4575f80fd5b507fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd025442116103b9565b348015610a29575f80fd5b507fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0154610387565b5f610a5a610e17565b905090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f59f89dda000000000000000000000000000000000000000000000000000000001480610ab45750610ab4826124b8565b92915050565b6040517f248a9ca30000000000000000000000000000000000000000000000000000000081527ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f8960048201525f906001600160a01b0383169063248a9ca390602401602060405180830381865afa158015610b37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615645565b905080610bca576040517f76728ed90000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201527ffc0b9a47b723baf66339577301d13949cab2da29c3baeaa9cfc1f36c513e8f8960248201526044015b60405180910390fd5b6040517f248a9ca30000000000000000000000000000000000000000000000000000000081527f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e760048201525f906001600160a01b0384169063248a9ca390602401602060405180830381865afa158015610c47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6b9190615645565b905080610cd5576040517f76728ed90000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527f921a3c774c4abecc1bddc4f7beb397fdb2cde7806021d9571086abb74cd023e76024820152604401610bc1565b610cde836125e6565b505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610d349061565c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d609061565c565b8015610dab5780601f10610d8257610100808354040283529160200191610dab565b820191905f5260205f20905b815481529060010190602001808311610d8e57829003601f168201915b505050505091505090565b5f33610dc38185856125f7565b5060019392505050565b5f80610dd7612604565b90505f610df187610deb335b89865f61265b565b8761266f565b9050610e008787838588612685565b610e0b335b476128ac565b9150505b949350505050565b5f610a5a612955565b5f610e3883670de0b6b3a7640000612ab4565b612ab4565b9392505050565b610e47612ac0565b7f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be7008054821115610e75578181555b7fff9fd4facd8bd30d905cc7ffbd03e8829a414df4c6554d155d132c3377868a42610e9e611ec4565b8254604080516001600160a01b039093168352602083018690528201526060015b60405180910390a15050565b5f33610ed8858285612b0b565b610ee3858585612bbf565b506001949350505050565b610ef6612ac0565b805f03610f3a576040517f5a6084530000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610bc1565b6001600160a01b0382165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70260205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70090821115610fb7576001600160a01b0383165f90815260028201602052604090208290555b7fa1e5b368dc99c8558f28b1e7e8cb7ab542c989a4b697628ba7bfffe0aeaccffd610fe0611ec4565b6001600160a01b038581165f818152600286016020908152604091829020548251959094168552840191909152820185905260608201526080015b60405180910390a1505050565b5f8061104884611042335b3361103c612604565b5f61265b565b85612c4e565b9050610e3833610e05565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f308970152310243260080545f91906001600160a01b0316803b806110905760126110f0565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f091906156a7565b935050505090565b5f807f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f30897015231024326005b546001600160a01b031692915050565b5f80611136612c65565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156111625750825b90505f8267ffffffffffffffff16600114801561117e5750303b155b90508115801561118c575080155b156111c3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61122c612c8d565b5f878060200190518101906112419190615714565b90506112508160200151612cc6565b6020810151516001600160a01b031615611296576040517f8951799200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b03166112d7576040517fd264eed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112e030612e39565b80516112eb90612f99565b7ffa89761502e992c8c755fba778ced00f4562485023f656906eb76f5dd65a9fe53360408051808201825284516001600160a01b0316815260208086015190820152905161133a92919061580b565b60405180910390a17fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc396505083156113c75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050919050565b5f610e38836113e4335b3386600161265b565b613021565b5f61141b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031690565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052919091169062fdd58e90604401602060405180830381865afa15801561147f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e389190615645565b5f6114ac61302e565b825f036114e5576040517f312497b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6115a98461151b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031690565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018a9052919091169062fdd58e90604401602060405180830381865afa15801561157f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a39190615645565b9061305c565b905080156116c6577f88e2280ece62e9296d3578b77647db2c11f9fa7e42578e2db5d4262123ffae3e3387878785886040516115ea969594939291906158af565b60405180910390a17f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b03166001600160a01b031663043fa98733883360405160e085901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03938416600482015291831660248301529091166044820152606481018890526084810184905260c060a48201525f60c482015260e4015f604051808303815f87803b1580156116af575f80fd5b505af11580156116c1573d5f803e3d5ffd5b505050505b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f3dd35eca0ca8a128757fa464a5dfa4ad6cc4853cad96dce4e90fdbea4f0a52e36040518060a001604052808c6001600160a01b031681526020018b81526020018a81526020018781526020018981525060405160200161175d91906158f8565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161178a93929190615943565b5f604051808303815f87803b1580156117a1575f80fd5b505af11580156117b3573d5f803e3d5ffd5b5093945050505050610e0f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b8282826040517f3ae4063b000000000000000000000000000000000000000000000000000000008152600401610bc193929190615943565b611824612ac0565b6001600160a01b0381165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70260205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be7009042116118d9576001600160a01b0382165f818152600283016020526040908190205490517f81a7897700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610bc1565b6001600160a01b0382165f9081526002820160205260408120557fa1e5b368dc99c8558f28b1e7e8cb7ab542c989a4b697628ba7bfffe0aeaccffd61191c611ec4565b604080516001600160a01b03928316815291851660208301525f9082018190526060820152608001610ebf565b611951612ac0565b6001600160a01b0381165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70160205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be700904211611a06576001600160a01b0382165f818152600183016020526040908190205490517ff1b01b5400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610bc1565b6001600160a01b0382165f9081526001820160205260408120557fd08871fffa9d03c01fcba597af5dfbe64cb26f207debdae1af2532695447499161191c611ec4565b5f80611a548361306b565b90505f611a5f61307e565b6001600160a01b0385165f90815260038201602052604081205491925090611a889084906130df565b5095945050505050565b611a9a612ac0565b611aa35f612f99565b565b5f611aae61302e565b825f03611ae7576040517f312497b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611af5846115a387611a49565b90508015611b47577f3fc1c49e72362e91416388fe7a107b92db924642476e83e701eeeb6256d7249e3386868487604051611b3495949392919061596a565b60405180910390a1611b47853383612bbf565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f54f0af3716c79b30b8c228679d31d77a1a5f526c16af3262730e0a8de4363fed60405180608001604052808b6001600160a01b031681526020018a815260200187815260200189815250604051602001611bd891906159a1565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611c0593929190615943565b5f604051808303815f87803b158015611c1c575f80fd5b505af1158015611c2e573d5f803e3d5ffd5b5093945050505050610e3860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611c67612ac0565b805f03611cab576040517ffd86061b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610bc1565b6001600160a01b0382165f9081527f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70160205260409020547f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be70090821115611d28576001600160a01b0383165f90815260018201602052604090208290555b7fd08871fffa9d03c01fcba597af5dfbe64cb26f207debdae1af25326954474991611d51611ec4565b6001600160a01b038581165f8181526001860160209081526040918290205482519590941685528401919091528201859052606082015260800161101b565b5f8061104884611d9f33611033565b8561266f565b7fdaffad82f53a38a62340f14cdd6fd3b437c5dcda6b32029dac1e661dbce28b2d3382604051611dd69291906159e2565b60405180910390a150565b5f80611df0848585600161265b565b9050805f03611e02575f915050610ab4565b610e0f611e367f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031690565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201879052919091169062fdd58e90604401602060405180830381865afa158015611e9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ebe9190615645565b82612ab4565b5f610a5a61318d565b5f80611ee087610e33878988600161265b565b9050611ef08187878a88886131b5565b9695505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610d349061565c565b5f33610dc3818585612bbf565b604080515f8152602081019091526060908267ffffffffffffffff811115611f8257611f82614fe6565b604051908082528060200260200182016040528015611fb557816020015b6060815260200190600190039081611fa05790505b5091505f5b838110156120365761201130868684818110611fd857611fd8615a43565b9050602002810190611fea9190615a70565b85604051602001611ffd93929190615ad1565b60405160208183030381529060405261357b565b83828151811061202357612023615a43565b6020908102919091010152600101611fba565b505092915050565b5f80612051876113e4878988600161265b565b9050611ef08787878488886131b5565b5f610e3883610e33336113db565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd01545f907fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd00908511156120f1576040517fe4a4718200000000000000000000000000000000000000000000000000000000815260048101869052602401610bc1565b5f61210888612102338a8a5f61265b565b5f61266f565b905061214c8888838989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061268592505050565b979650505050505050565b5f80612161612604565b90505f6121778761217133610de3565b87612c4e565b9050610e008187898588612685565b5f807fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0061111c565b5f8061104884670de0b6b3a7640000612102565b6121cf8585858585613616565b6121d98484613679565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080546040805160a0810182526001600160a01b0388811682528781166020830152918101869052606081018590529116906359f89dda9088907f0e5bce7997400ea2056cf00fe99ca5d6be40bdb9d8b4e41217fe8670c2639a4890608081016122837fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0254421190565b151590526040516122979190602001615b2e565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016122c493929190615943565b5f604051808303815f87803b1580156122db575f80fd5b505af11580156122ed573d5f803e3d5ffd5b50505050505050505050565b835f03612332576040517f8672985d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0090505f6040518060a001604052808360020154815260200183600201548152602001878152602001861515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250905084806123cc5750816002015486115b156123e05760028201869055602081018690525b7f7ef5cae78e9bd364afb19bb0f8a881a6d156e35a119e28c0d17524e5079581583387878787604051612417959493929190615ba0565b60405180910390a181546001600160a01b03166359f89dda337f50a07cb25d0d864370863300b20987dfdae089abad71b607faf639d09d053391846040516020016122979190615bee565b61246a612ac0565b6001600160a01b0381166124ac576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6124b581612f99565b50565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe5be7d9000000000000000000000000000000000000000000000000000000000148061254a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f439fab9100000000000000000000000000000000000000000000000000000000145b8061259657507fffffffff0000000000000000000000000000000000000000000000000000000082167fe1e6b89800000000000000000000000000000000000000000000000000000000145b80610ab457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610ab4565b6125ee612ac0565b6124b581612e39565b610cde8383836001613739565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd01545f907fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0090612655906001615c32565b91505090565b5f670de0b6b3a76400005b95945050505050565b5f61267a8284613861565b610e0f84845f6138a5565b61268d61302e565b845f036126c6576040517fc7838b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f036126ff576040517ffc8c806300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841661273f576040517f6ba9ecd800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f0361277a576040517fe4a471820000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b7f3377bcbed49a0c0005e53931cd8fe7334b5371523e5de784c0d0d3d01089cfea3385878686866040516127b3969594939291906158af565b60405180910390a16127c885858585856138ba565b6127d28484613915565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546040517f6d5b3f780000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636d5b3f7890612842903390889087908990889060040161596a565b5f604051808303815f87803b158015612859575f80fd5b505af115801561286b573d5f803e3d5ffd5b5050505061287c8585858585613962565b6128a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b804710156128ef576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101829052604401610bc1565b612908828260405180602001604052805f815250613a0e565b15612911575050565b3d156129235761291f613a23565b5050565b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061295f61307e565b60028101549091505f0361297557612655613a2e565b5f6129845f1960036001613a93565b90505f5b5f198214610e38575f8360020183815481106129a6576129a6615a43565b905f5260205f2090600502015f0154905060028103612a83575f612a738560020185815481106129d8576129d8615a43565b905f5260205f20906005020160040180546129f29061565c565b80601f0160208091040260200160405190810160405280929190818152602001828054612a1e9061565c565b8015612a695780601f10612a4057610100808354040283529160200191612a69565b820191905f5260205f20905b815481529060010190602001808311612a4c57829003601f168201915b5050505050613b8e565b9050612a7f8382613ba3565b9250505b5f838152600485016020526040902054612a9d9083615c32565b9150612aac8360036001613a93565b925050612988565b5f610e38838383613c27565b33612ac9611ec4565b6001600160a01b031614611aa3576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610bc1565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015612bb95781811015612bab576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610bc1565b612bb984848484035f613739565b50505050565b6001600160a01b038316612c01576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6001600160a01b038216612c43576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b610cde838383613c3c565b5f612c598284613861565b610e0f84846001613c27565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610ab4565b425f03611aa3576040517f789a532d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612cce613c8f565b612ce081602001518260400151613c97565b80517f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f308970152310243260080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0393841617825560608401517f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601805490921693169283179055604080517f481c6a75000000000000000000000000000000000000000000000000000000008152905191925f92909163481c6a759160048083019260209291908290030181865afa158015612dc0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612de49190615c45565b90506001600160a01b0381163014610cde576040517f7935475e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382166024820152604401610bc1565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f59f89dda0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015612eb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed89190615c60565b612f0e576040517ffd12061600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811782556040805133815260208101929092527fa8c713fe8fb360697fc0daab836d85208a605d485fbc265aea0f773fc6cdd71a9101610ebf565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f610e38838360016138a5565b613036613ca9565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f828218828410028218610e38565b5f8061307683613d04565b549392505050565b5f8060ff196130ae60017f2f8f8ecf1b7a1a3ceda8d15a9a2247a2377b3434535a87f1728021c13fec2e71615a30565b6040516020016130c091815260200190565b60408051601f1981840301815291905280516020909101201692915050565b5f8082816130eb61307e565b9050855f6130fc8760036001613a93565b90505b5f19811461317e57925082811580159061313c5750600283600201828154811061312b5761312b615a43565b905f5260205f2090600502015f0154145b1561316a575f61315a8460020183815481106129d8576129d8615a43565b90506131668382613ba3565b9250505b6131778160036001613a93565b90506130ff565b509350909150505b9250929050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930061111c565b6131bd61302e565b855f036131f6576040517fc7838b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f0361322f576040517ffc8c806300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03851661326f576040517f6ba9ecd800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166132af576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f036132eb576040517fe4a4718200000000000000000000000000000000000000000000000000000000815260048101839052602401610bc1565b7f2845b9458bcc357e1abfe8de7f6832dfe7220596a053496b33d0deb6577d8d2a338686898787876040516133269796959493929190615c7b565b60405180910390a16001600160a01b038416331461349557613349843385612b0b565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b03166001600160a01b031663e985e9c585336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156133e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134099190615c60565b613495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152608401610bc1565b61349f8484613d71565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546040517fc2530e390000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063c2530e399061350f903390889087908990889060040161596a565b5f604051808303815f87803b158015613526575f80fd5b505af1158015613538573d5f803e3d5ffd5b5050505061354a868686868686613dbe565b61357360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60605f6135888484613ec7565b90508080156135a957505f3d11806135a957505f846001600160a01b03163b115b156135be576135b6613eda565b915050610ab4565b8015613601576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610bc1565b3d156129235761360f613a23565b5092915050565b7f8d198d032a58038629cc32dfaad5ea74a8e78fabf390f3089701523102432601546001600160a01b031633146128a5576040517f8813aac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f04485615b1da6633eec3daf54aadca2a89ef8b155744e223a046f4a6e38be700805442118015906136c257506001600160a01b0383165f908152600182016020526040902054155b80156136e557506001600160a01b0382165f908152600282016020526040902054155b15610cde5780546040517f79d7155100000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03808516602483015283166044820152606401610bc1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03851661379c576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6001600160a01b0384166137de576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156128a557836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161385291815260200190565b60405180910390a35050505050565b8181101561291f576040517fa3e322340000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bc1565b5f610e0f8484670de0b6b3a764000085613ef3565b7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd01547fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd00906139089084613f35565b6001909101555050505050565b6001600160a01b038216613957576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b61291f5f8383613c3c565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8216040518060c001604052806139cb3390565b6001600160a01b031681526020018a6001600160a01b031681526020018881526020018b8152602001898152602001878152506040516020016122979190615d20565b5f805f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b5f8060ff19613a5e60017fb750591399365444a618527b69a54ce09476c8bde1ecff60f5aa1fe2b52605ff615a30565b604051602001613a7091815260200190565b60408051808303601f190181529190528051602090910120166002015492915050565b5f600783168103613ad0576040517fbf3cad0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f613ad961307e565b60028101549091505f03613af1575f19915050610e38565b5f5f198614613b2457816002018681548110613b0f57613b0f615a43565b905f5260205f20906005020160030154613b27565b81545b90506002846002811115613b3d57613b3d615d32565b03613b5f57613b5682613b508484613f44565b87613fbf565b92505050610e38565b6001846002811115613b7357613b73615d32565b03613b8357613b56828287614017565b611ef0828287613fbf565b5f81806020019051810190610ab49190615645565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613c01576040517fbf463fe900000000000000000000000000000000000000000000000000000000815260048101849052602401610bc1565b5f613c1e613c18613c12865f614084565b856140de565b5f614140565b50949350505050565b5f610e0f84670de0b6b3a76400008585613ef3565b613c44614181565b613c4d836141e7565b613c56826141e7565b613c618383836142d4565b6001600160a01b038316613c7857610cde81614434565b6001600160a01b038216610cde57610cde81614477565b611aa36144b1565b613c9f6144b1565b61291f82826144ef565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203611aa3576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060ff19613d3460017fb750591399365444a618527b69a54ce09476c8bde1ecff60f5aa1fe2b52605ff615a30565b604051602001613d4691815260200190565b60408051601f1981840301815291815281516020928301205f96875292909216905290922092915050565b6001600160a01b038216613db3576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610bc1565b61291f825f83613c3c565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828696040518060c001604052808a6001600160a01b031681526020018b6001600160a01b031681526020018881526020018c815260200189815260200187815250604051602001613e649190615d20565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401613e9193929190615943565b5f604051808303815f87803b158015613ea8575f80fd5b505af1158015613eba573d5f803e3d5ffd5b5050505050505050505050565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b5f613f20613f0083614552565b8015613f1b57505f8480613f1657613f16615d5f565b868809115b151590565b613f2b86868661457e565b6126669190615c32565b5f828218828411028218610e38565b5f5b5f198214158015613f88575042836002018381548110613f6857613f68615a43565b5f91825260209091206001600590920201015467ffffffffffffffff1611155b15613fb957826002018281548110613fa257613fa2615a43565b905f5260205f209060050201600301549150613f46565b50919050565b5f5b5f19831461400d575f846002018481548110613fdf57613fdf615a43565b905f5260205f209060050201905082815f0154165f146140025783915050610e38565b600301549250613fc1565b505f199392505050565b5f5b5f19831461400d575f84600201848154811061403757614037615a43565b5f918252602090912060059091020160018101549091504267ffffffffffffffff9091161115614067575061400d565b80548316156140795783915050610e38565b600301549250614019565b5f805f614091858561462e565b91509150806140d6576040517f22c9f7bb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bc1565b509392505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838116601b90810b9160e086811d9291861690910b9085901d848061412386868686614734565b915091505f6141328383614853565b9a9950505050505050505050565b5f807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416601b0b60e085901d6141748282876148b1565b9350935050509250929050565b5f61418a61307e565b60028101549091505f0361419b5750565b5f6141b0826005015460026001176001613a93565b90505f195b5f1982146141d35750806141cc8160036001613a93565b91506141b5565b5f198114610cde5760058301819055505050565b6001600160a01b0381166141f85750565b5f61420161307e565b6001600160a01b0383165f9081526003820160205260408120549192506142278461306b565b90505f8061423583856130df565b9150915083810361424857505050505050565b6001600160a01b0386165f9081526003860160205260409020819055818314614275576142758683614a9c565b6040805185815260208101839052908101849052606081018390526001600160a01b038716907f36a2eb39b73568d38e98721588b15b309c9380e1b1ab575c2c3d71d5148ccb4a9060800160405180910390a261357384848385614aae565b6142de8383613679565b5f7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0080549091506001600160a01b03166359f89dda337f55387ad71a8e46cc1293406722dd825c028eaf5ff0c2a3e4f176184d62e9d30a6040518060800160405280896001600160a01b03168152602001886001600160a01b0316815260200187815260200161438e7fba9f160a0257aef2aa878e698d5363429ea67cc3c427f23f7cb9c3069b67bd0254421190565b151590526040805182516001600160a01b03908116602080840191909152840151168183015290820151606080830191909152909101511515608082015260a0016040516020818303038152906040526040518463ffffffff1660e01b81526004016143fc93929190615943565b5f604051808303815f87803b158015614413575f80fd5b505af1158015614425573d5f803e3d5ffd5b50505050612bb9848484614b0b565b5f61443d61307e565b60028101549091501561291f5760058101545f9081526004820160205260408120805484929061446e908490615c32565b90915550505050565b5f61448061307e565b60028101549091501561291f5760058101545f9081526004820160205260408120805484929061446e908490615a30565b6144b9614b16565b611aa3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6144f76144b1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036145438482615dd0565b5060048101612bb98382615dd0565b5f600282600381111561456757614567615d32565b6145719190615e8c565b60ff166001149050919050565b5f805f61458b8686614b34565b91509150815f036145af578381816145a5576145a5615d5f565b0492505050610e38565b8184116145c6576145c66003851502601118614b50565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f601b83900b8314838382614692577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561467257620186a0860595506005850194505b8586601b0b1461468d57600a86059550846001019450614672565b6146a8565b855f036146a857505f9250600191506131869050565b848560030b14614704575f8512156146c857505f92508291506131869050565b6040517fd556b1110000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bc1565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791509250929050565b5f808515841517801561474c575f92505f9150614849565b6147568487615ead565b91505f61476288614b61565b90505f61476e87614b61565b90505f61477b8383614b34565b5090505f6f0785ee10d5da46d900f436a0000000008211156147b0576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a76400008211156147d157670de0b6b3a7640000820491506012015b633b9aca008211156147ea57633b9aca00820491506009015b6127108211156147ff57612710820491506004015b811561481357600a820491506001016147ff565b61481d8187615ead565b955061483f8b8a614839878761483487600a615fac565b614bc2565b89614c9d565b9097509550505050505b5094509492505050565b5f805f614860858561462e565b9150915080158015614870575081155b156140d6576040517f8eba4d070000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bc1565b5f805f8512156148f7576040517f4a7d166b0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bc1565b845f0361490957505f90506001614a94565b8460ff8416850185811215614954576040517fd556b1110000000000000000000000000000000000000000000000000000000081526004810188905260248101879052604401610bc1565b5f805f8312156149be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb3831215614995575f809550955050505050614a94565b825f03600a0a91508184816149ac576149ac615d5f565b0495505084029091149150614a949050565b5f831315614a8957604d831315614a14576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff88166044820152606401610bc1565b82600a0a9150815f1981614a2a57614a2a615d5f565b04841115614a77576040517fc849483b000000000000000000000000000000000000000000000000000000008152600481018a90526024810189905260ff88166044820152606401610bc1565b5091909102925060019150614a949050565b509193506001925050505b935093915050565b5f614aa683613d04565b919091555050565b5f614ab761307e565b905083816004015f8781526020019081526020015f205f828254614adb9190615a30565b90915550505f83815260048201602052604081208054849290614aff908490615c32565b90915550505050505050565b610cde838383614da9565b5f614b1f612c65565b5468010000000000000000900460ff16919050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f80821215614bbe577f80000000000000000000000000000000000000000000000000000000000000008203614bb857507f8000000000000000000000000000000000000000000000000000000000000000919050565b505f0390565b5090565b5f805f614bcf8686614b34565b91509150815f03614be9578381816145a5576145a5615d5f565b838210614c33576040517f6c59da12000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610bc1565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f8587181215614d67577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115614d5457614cfc7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001615c32565b8403614d2c57507f8000000000000000000000000000000000000000000000000000000000000000905081614da0565b614d37600a85615fb7565b614d4090615fca565b614d4b846001615ead565b91509150614da0565b614d5d84615fca565b8391509150614da0565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115614d9a57614d40600a85615fb7565b50829050815b94509492505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038416614df65781816002015f828254614deb9190615c32565b90915550614e7f9050565b6001600160a01b0384165f9081526020829052604090205482811015614e61576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610bc1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316614e9d576002810180548390039055614ebb565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614f0091815260200190565b60405180910390a350505050565b5f60208284031215614f1e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e38575f80fd5b6001600160a01b03811681146124b5575f80fd5b5f60208284031215614f71575f80fd5b8135610e3881614f4d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e386020830184614f7c565b5f8060408385031215614fcd575f80fd5b8235614fd881614f4d565b946020939093013593505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561503657615036614fe6565b60405290565b6040516080810167ffffffffffffffff8111828210171561503657615036614fe6565b604051601f8201601f1916810167ffffffffffffffff8111828210171561508857615088614fe6565b604052919050565b5f67ffffffffffffffff8211156150a9576150a9614fe6565b50601f01601f191660200190565b5f82601f8301126150c6575f80fd5b81356150d96150d482615090565b61505f565b8181528460208386010111156150ed575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561511c575f80fd5b84359350602085013561512e81614f4d565b925060408501359150606085013567ffffffffffffffff811115615150575f80fd5b61515c878288016150b7565b91505092959194509250565b5f8060408385031215615179575f80fd5b50508035926020909101359150565b5f60208284031215615198575f80fd5b5035919050565b5f805f606084860312156151b1575f80fd5b83356151bc81614f4d565b925060208401356151cc81614f4d565b929592945050506040919091013590565b5f602082840312156151ed575f80fd5b813567ffffffffffffffff811115615203575f80fd5b610e0f848285016150b7565b5f805f8060808587031215615222575f80fd5b843561522d81614f4d565b93506020850135925060408501359150606085013567ffffffffffffffff811115615150575f80fd5b5f805f60608486031215615268575f80fd5b833561527381614f4d565b925060208401359150604084013567ffffffffffffffff811115615295575f80fd5b6152a1868287016150b7565b9150509250925092565b5f805f805f60a086880312156152bf575f80fd5b8535945060208601356152d181614f4d565b935060408601356152e181614f4d565b925060608601359150608086013567ffffffffffffffff811115615303575f80fd5b61530f888289016150b7565b9150509295509295909350565b5f806020838503121561532d575f80fd5b823567ffffffffffffffff80821115615344575f80fd5b818501915085601f830112615357575f80fd5b813581811115615365575f80fd5b8660208260051b8501011115615379575f80fd5b60209290920196919550909350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156153fe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526153ec858351614f7c565b945092850192908501906001016153b2565b5092979650505050505050565b5f8083601f84011261541b575f80fd5b50813567ffffffffffffffff811115615432575f80fd5b602083019150836020828501011115613186575f80fd5b5f805f805f6080868803121561545d575f80fd5b85359450602086013561546f81614f4d565b935060408601359250606086013567ffffffffffffffff811115615491575f80fd5b61549d8882890161540b565b969995985093965092949392505050565b5f80604083850312156154bf575f80fd5b82356154ca81614f4d565b915060208301356154da81614f4d565b809150509250929050565b5f82601f8301126154f4575f80fd5b8135602067ffffffffffffffff82111561551057615510614fe6565b8160051b61551f82820161505f565b9283528481018201928281019087851115615538575f80fd5b83870192505b8483101561214c5782358252918301919083019061553e565b5f805f805f60a0868803121561556b575f80fd5b853561557681614f4d565b9450602086013561558681614f4d565b9350604086013561559681614f4d565b9250606086013567ffffffffffffffff808211156155b2575f80fd5b6155be89838a016154e5565b935060808801359150808211156155d3575f80fd5b5061530f888289016154e5565b80151581146124b5575f80fd5b5f805f8060608587031215615600575f80fd5b843593506020850135615612816155e0565b9250604085013567ffffffffffffffff81111561562d575f80fd5b6156398782880161540b565b95989497509550505050565b5f60208284031215615655575f80fd5b5051919050565b600181811c9082168061567057607f821691505b602082108103613fb9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f602082840312156156b7575f80fd5b815160ff81168114610e38575f80fd5b5f82601f8301126156d6575f80fd5b81516156e46150d482615090565b8181528460208386010111156156f8575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215615724575f80fd5b815167ffffffffffffffff8082111561573b575f80fd5b908301906040828603121561574e575f80fd5b615756615013565b825161576181614f4d565b8152602083015182811115615774575f80fd5b929092019160808387031215615788575f80fd5b61579061503c565b835161579b81614f4d565b81526020840151838111156157ae575f80fd5b6157ba888287016156c7565b6020830152506040840151838111156157d1575f80fd5b6157dd888287016156c7565b604083015250606084015193506157f384614f4d565b60608101939093526020810192909252509392505050565b5f6001600160a01b038085168352604060208401528084511660408401526020840151604060608501528181511660808501526020810151608060a0860152615858610100860182614f7c565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160c08701526158938282614f7c565b9150508260608301511660e08601528093505050509392505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015283608083015260c060a08301526158ec60c0830184614f7c565b98975050505050505050565b602081526001600160a01b0382511660208201526020820151604082015260408201516060820152606082015160808201525f608083015160a080840152610e0f60c0840182614f7c565b6001600160a01b0384168152826020820152606060408201525f6126666060830184614f7c565b5f6001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261214c60a0830184614f7c565b602081526001600160a01b03825116602082015260208201516040820152604082015160608201525f6060830151608080840152610e0f60a0840182614f7c565b6001600160a01b0383168152604060208201525f610e0f6040830184614f7c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610ab457610ab4615a03565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615aa3575f80fd5b83018035915067ffffffffffffffff821115615abd575f80fd5b602001915036819003821315613186575f80fd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f815180845260208085019450602084015f5b83811015615b2357815187529582019590820190600101615b07565b509495945050505050565b602081525f6001600160a01b0380845116602084015280602085015116604084015250604083015160a06060840152615b6a60c0840182615af4565b90506060840151601f19848303016080850152615b878282615af4565b9150506080840151151560a08401528091505092915050565b6001600160a01b0386168152846020820152831515604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b602081528151602082015260208201516040820152604082015160608201526060820151151560808201525f608083015160a080840152610e0f60c0840182614f7c565b80820180821115610ab457610ab4615a03565b5f60208284031215615c55575f80fd5b8151610e3881614f4d565b5f60208284031215615c70575f80fd5b8151610e38816155e0565b5f6001600160a01b03808a16835280891660208401528088166040840152508560608301528460808301528360a083015260e060c0830152615cc060e0830184614f7c565b9998505050505050505050565b5f6001600160a01b038083511684528060208401511660208501525060408201516040840152606082015160608401526080820151608084015260a082015160c060a0850152610e0f60c0850182614f7c565b602081525f610e386020830184615ccd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b601f821115610cde57805f5260205f20601f840160051c81016020851015615db15750805b601f840160051c820191505b818110156128a5575f8155600101615dbd565b815167ffffffffffffffff811115615dea57615dea614fe6565b615dfe81615df8845461565c565b84615d8c565b602080601f831160018114615e31575f8415615e1a5750858301515b5f19600386901b1c1916600185901b178555613573565b5f85815260208120601f198616915b82811015615e5f57888601518255948401946001909101908401615e40565b5085821015615e7c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60ff831680615e9e57615e9e615d5f565b8060ff84160691505092915050565b8082018281125f83128015821682158216171561203657612036615a03565b600181815b80851115615f0657815f1904821115615eec57615eec615a03565b80851615615ef957918102915b93841c9390800290615ed1565b509250929050565b5f82615f1c57506001610ab4565b81615f2857505f610ab4565b8160018114615f3e5760028114615f4857615f64565b6001915050610ab4565b60ff841115615f5957615f59615a03565b50506001821b610ab4565b5060208310610133831016604e8410600b8410161715615f87575081810a610ab4565b615f918383615ecc565b805f1904821115615fa457615fa4615a03565b029392505050565b5f610e388383615f0e565b5f82615fc557615fc5615d5f565b500490565b5f7f80000000000000000000000000000000000000000000000000000000000000008203614bb857614bb8615a0356"; diff --git a/src/generated/0_1_8/StoxUnifiedDeployer.pointers.sol b/src/generated/0_1_8/StoxUnifiedDeployer.pointers.sol new file mode 100644 index 00000000..3819204f --- /dev/null +++ b/src/generated/0_1_8/StoxUnifiedDeployer.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x76b90443c401cb2071b31fbf0596f931e01315c358b9db4e4db998107dc2e62c); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x48E1A9091E89f5500AfC9d42FBB85bE8b4f70203); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b506106308061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063733e1f8d1461005f575b5f80fd5b61004b6100463660046102a3565b610074565b604051901515815260200160405180910390f35b61007261006d36600461042d565b61010c565b005b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f733e1f8d00000000000000000000000000000000000000000000000000000000148061010657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f4904fab30000000000000000000000000000000000000000000000000000000081525f9073679ab223dab158ea93e1a4f49104de436c58eab890634904fab39061015e908590600401610570565b6020604051808303815f875af115801561017a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e9190610615565b6040517fd786858b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091505f90736b4232f1046f1f1bb99a1184d886bbaf3cd7e15a9063d786858b906024016020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610615565b6040805133815273ffffffffffffffffffffffffffffffffffffffff858116602083015283168183015290519192507fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b919081900360600190a1505050565b5f602082840312156102b3575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102e2575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610339576103396102e9565b60405290565b6040516080810167ffffffffffffffff81118282101715610339576103396102e9565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f82601f830112610395575f80fd5b813567ffffffffffffffff808211156103b0576103b06102e9565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156103f6576103f66102e9565b8160405283815286602085880101111561040e575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561043d575f80fd5b813567ffffffffffffffff80821115610454575f80fd5b9083019060408286031215610467575f80fd5b61046f610316565b823561047a81610362565b815260208301358281111561048d575f80fd5b9290920191608083870312156104a1575f80fd5b6104a961033f565b83356104b481610362565b81526020840135838111156104c7575f80fd5b6104d388828701610386565b6020830152506040840135838111156104ea575f80fd5b6104f688828701610386565b6040830152506060840135935061050c84610362565b60608101939093526020810192909252509392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f73ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160408085015281815116606085015260208101516080808601526105bf60e0860182610524565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526105fa8282610524565b9150508260608301511660c086015280935050505092915050565b5f60208284031215610625575f80fd5b81516102e28161036256"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063733e1f8d1461005f575b5f80fd5b61004b6100463660046102a3565b610074565b604051901515815260200160405180910390f35b61007261006d36600461042d565b61010c565b005b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f733e1f8d00000000000000000000000000000000000000000000000000000000148061010657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f4904fab30000000000000000000000000000000000000000000000000000000081525f9073679ab223dab158ea93e1a4f49104de436c58eab890634904fab39061015e908590600401610570565b6020604051808303815f875af115801561017a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e9190610615565b6040517fd786858b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091505f90736b4232f1046f1f1bb99a1184d886bbaf3cd7e15a9063d786858b906024016020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610615565b6040805133815273ffffffffffffffffffffffffffffffffffffffff858116602083015283168183015290519192507fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b919081900360600190a1505050565b5f602082840312156102b3575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102e2575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610339576103396102e9565b60405290565b6040516080810167ffffffffffffffff81118282101715610339576103396102e9565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f82601f830112610395575f80fd5b813567ffffffffffffffff808211156103b0576103b06102e9565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156103f6576103f66102e9565b8160405283815286602085880101111561040e575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561043d575f80fd5b813567ffffffffffffffff80821115610454575f80fd5b9083019060408286031215610467575f80fd5b61046f610316565b823561047a81610362565b815260208301358281111561048d575f80fd5b9290920191608083870312156104a1575f80fd5b6104a961033f565b83356104b481610362565b81526020840135838111156104c7575f80fd5b6104d388828701610386565b6020830152506040840135838111156104ea575f80fd5b6104f688828701610386565b6040830152506060840135935061050c84610362565b60608101939093526020810192909252509392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f73ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160408085015281815116606085015260208101516080808601526105bf60e0860182610524565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526105fa8282610524565b9150508260608301511660c086015280935050505092915050565b5f60208284031215610625575f80fd5b81516102e28161036256"; diff --git a/src/generated/0_1_8/StoxWrappedTokenVault.pointers.sol b/src/generated/0_1_8/StoxWrappedTokenVault.pointers.sol new file mode 100644 index 00000000..18c6e307 --- /dev/null +++ b/src/generated/0_1_8/StoxWrappedTokenVault.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x6de4c556c1811293da4ad2e509ee476f3eb635f019845087e1d2777a1b272034); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x0D99e0174DbF885ceD6AE8dEb939b0F890450099); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611de4806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101b0575f3560e01c806370a08231116100f3578063c4d66de811610093578063ce96cb771161006e578063ce96cb77146103c9578063d905777e146103dc578063dd62ed3e146103ef578063ef8b30f7146103b6575f80fd5b8063c4d66de8146103a3578063c63d75b6146102bb578063c6e6f592146103b6575f80fd5b8063a9059cbb116100ce578063a9059cbb14610357578063b3d7f6b91461036a578063b460af941461037d578063ba08765214610390575f80fd5b806370a08231146102f557806394bf804d1461033c57806395d89b411461034f575f80fd5b806323b872dd1161015e578063402d267d11610139578063402d267d146102bb578063439fab91146102cf5780634cdad506146101e45780636e553f65146102e2575f80fd5b806323b872dd14610254578063313ce5671461026757806338d52e0f14610281575f80fd5b8063095ea7b31161018e578063095ea7b3146101f75780630a28a4771461021a57806318160ddd1461022d575f80fd5b806301e1d114146101b457806306fdde03146101cf57806307a2d13a146101e4575b5f80fd5b6101bc610446565b6040519081526020015b60405180910390f35b6101d76104fe565b6040516101c69190611758565b6101bc6101f236600461178d565b6105b6565b61020a6102053660046117b8565b6105c7565b60405190151581526020016101c6565b6101bc61022836600461178d565b6105de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101bc565b61020a6102623660046117e2565b6105ea565b61026f61060f565b60405160ff90911681526020016101c6565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546040516001600160a01b0390911681526020016101c6565b6101bc6102c9366004611820565b505f1990565b6101bc6102dd36600461183b565b610662565b6101bc6102f03660046118a7565b61089d565b6101bc610303366004611820565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101bc61034a3660046118a7565b6108ce565b6101d76108e9565b61020a6103653660046117b8565b61098d565b6101bc61037836600461178d565b61099a565b6101bc61038b3660046118d5565b6109a6565b6101bc61039e3660046118d5565b610a28565b6101bc6103b1366004611820565b610aa1565b6101bc6103c436600461178d565b610ad4565b6101bc6103d7366004611820565b610adf565b6101bc6103ea366004611820565b610ae8565b6101bc6103fd366004611914565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f6104787f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156104d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f99190611940565b905090565b60606105317f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561056b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105929190810190611984565b6040516020016105a29190611a46565b604051602081830303815290604052905090565b5f6105c1825f610b24565b92915050565b5f336105d4818585610b7b565b5060019392505050565b5f6105c1826001610b8d565b5f336105f7858285610bdb565b610602858585610c8f565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461065c919074010000000000000000000000000000000000000000900460ff16611aa4565b91505090565b5f8061066c610d1e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156106985750825b90505f8267ffffffffffffffff1660011480156106b45750303b155b9050811580156106c2575080155b156106f9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561075a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b5f610767888a018a611820565b90506001600160a01b0381166107a9576040517f7cde9b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b281610d46565b6107d860405180602001604052805f81525060405180602001604052805f815250610d5a565b6040516001600160a01b0382169033907fdf5fabff9e49f8c35d69a1f2d0c5e80c933c31cf836cf70de57e3a6e7dc86ebb905f90a37fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc396505083156108925784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f5f196108ae565b60405180910390fd5b5f6108b885610ad4565b90506108c633858784610d70565b949350505050565b5f5f195f6108db8561099a565b90506108c633858388610d70565b606061091c7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610956573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261097d9190810190611984565b6040516020016105a29190611abd565b5f336105d4818585610c8f565b5f6105c1826001610b24565b5f806109b183610adf565b905080851115610a06576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101869052604481018290526064016108a5565b5f610a10866105de565b9050610a1f3386868985610de0565b95945050505050565b5f80610a3383610ae8565b905080851115610a88576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101869052604481018290526064016108a5565b5f610a92866105b6565b9050610a1f338686848a610de0565b5f6040517faf1fbb2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c1825f610b8d565b5f6105c16101f2835b6001600160a01b0381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546105c1565b5f610608610b30610446565b610b3b906001611aee565b610b465f600a611be1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b729190611aee565b85919085610e7f565b610b888383836001610ec1565b505050565b5f610608610b9c82600a611be1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610bc89190611aee565b610bd0610446565b610b72906001611aee565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610c895781811015610c7b576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016108a5565b610c8984848484035f610ec1565b50505050565b6001600160a01b038316610cd1576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b6001600160a01b038216610d13576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b610b88838383610fea565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006105c1565b610d4e611141565b610d5781611181565b50565b610d62611141565b610d6c8282611245565b5050565b610d7a84836112a8565b610d8483826112e4565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610dd2929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610e0457610e04838683610bdb565b610e0e8382611331565b610e18848361137e565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610e70929190918252602082015260400190565b60405180910390a45050505050565b5f610eac610e8c836113b9565b8015610ea757505f8480610ea257610ea2611bef565b868809115b151590565b610eb78686866113e5565b610a1f9190611aee565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516610f24576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b6001600160a01b038416610f66576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610fe357836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610fda91815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166110375781816002015f82825461102c9190611aee565b909155506110c09050565b6001600160a01b0384165f90815260208290526040902054828110156110a2576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016108a5565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166110de5760028101805483900390556110fc565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dd291815260200190565b611149611495565b61117f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611189611141565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f806111b5846114b3565b91509150816111c55760126111c7565b805b83547fffffffffffffffffffffff000000000000000000000000000000000000000000167401000000000000000000000000000000000000000060ff92909216919091027fffffffffffffffffffffffff000000000000000000000000000000000000000016176001600160a01b0394909416939093179091555050565b61124d611141565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036112998482611cb1565b5060048101610c898382611cb1565b610d6c6112dc7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b83308461156c565b6001600160a01b038216611326576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b610d6c5f8383610fea565b6001600160a01b038216611373576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b610d6c825f83610fea565b610d6c6113b27f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b83836115bb565b5f60028260038111156113ce576113ce611d71565b6113d89190611d9e565b60ff166001149050919050565b5f805f6113f28686611609565b91509150815f036114165783818161140c5761140c611bef565b0492505050610608565b81841161142d5761142d6003851502601118611625565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f61149e610d1e565b5468010000000000000000900460ff16919050565b5f805f6114bf60405190565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001790529091505f908190611528908790611636565b509150915061153683604052565b818015611544575060203d10155b8015611551575060ff8111155b61155c575f80611560565b6001815b94509450505050915091565b61157a848484846001611657565b610c89576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016108a5565b6115c883838360016116dd565b610b88576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016108a5565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f805f60405f855160208701885afa92505f51915060205190509250925092565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166116cc5783831516156116c0573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661174c578383151615611740573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561179d575f80fd5b5035919050565b6001600160a01b0381168114610d57575f80fd5b5f80604083850312156117c9575f80fd5b82356117d4816117a4565b946020939093013593505050565b5f805f606084860312156117f4575f80fd5b83356117ff816117a4565b9250602084013561180f816117a4565b929592945050506040919091013590565b5f60208284031215611830575f80fd5b8135610608816117a4565b5f806020838503121561184c575f80fd5b823567ffffffffffffffff80821115611863575f80fd5b818501915085601f830112611876575f80fd5b813581811115611884575f80fd5b866020828501011115611895575f80fd5b60209290920196919550909350505050565b5f80604083850312156118b8575f80fd5b8235915060208301356118ca816117a4565b809150509250929050565b5f805f606084860312156118e7575f80fd5b8335925060208401356118f9816117a4565b91506040840135611909816117a4565b809150509250925092565b5f8060408385031215611925575f80fd5b8235611930816117a4565b915060208301356118ca816117a4565b5f60208284031215611950575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611994575f80fd5b815167ffffffffffffffff808211156119ab575f80fd5b818401915084601f8301126119be575f80fd5b8151818111156119d0576119d0611957565b604051601f8201601f19908116603f011681019083821181831017156119f8576119f8611957565b81604052828152876020848701011115611a10575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f81518060208401855e5f93019283525090919050565b7f577261707065642000000000000000000000000000000000000000000000000081525f6106086008830184611a2f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff81811683821601908111156105c1576105c1611a77565b7f770000000000000000000000000000000000000000000000000000000000000081525f6106086001830184611a2f565b808201808211156105c1576105c1611a77565b600181815b80851115611b3b57815f1904821115611b2157611b21611a77565b80851615611b2e57918102915b93841c9390800290611b06565b509250929050565b5f82611b51575060016105c1565b81611b5d57505f6105c1565b8160018114611b735760028114611b7d57611b99565b60019150506105c1565b60ff841115611b8e57611b8e611a77565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611bbc575081810a6105c1565b611bc68383611b01565b805f1904821115611bd957611bd9611a77565b029392505050565b5f61060860ff841683611b43565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b600181811c90821680611c3057607f821691505b602082108103611c67577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610b8857805f5260205f20601f840160051c81016020851015611c925750805b601f840160051c820191505b81811015610fe3575f8155600101611c9e565b815167ffffffffffffffff811115611ccb57611ccb611957565b611cdf81611cd98454611c1c565b84611c6d565b602080601f831160018114611d12575f8415611cfb5750858301515b5f19600386901b1c1916600185901b178555611d69565b5f85815260208120601f198616915b82811015611d4057888601518255948401946001909101908401611d21565b5085821015611d5d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680611dd5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8060ff8416069150509291505056"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b50600436106101b0575f3560e01c806370a08231116100f3578063c4d66de811610093578063ce96cb771161006e578063ce96cb77146103c9578063d905777e146103dc578063dd62ed3e146103ef578063ef8b30f7146103b6575f80fd5b8063c4d66de8146103a3578063c63d75b6146102bb578063c6e6f592146103b6575f80fd5b8063a9059cbb116100ce578063a9059cbb14610357578063b3d7f6b91461036a578063b460af941461037d578063ba08765214610390575f80fd5b806370a08231146102f557806394bf804d1461033c57806395d89b411461034f575f80fd5b806323b872dd1161015e578063402d267d11610139578063402d267d146102bb578063439fab91146102cf5780634cdad506146101e45780636e553f65146102e2575f80fd5b806323b872dd14610254578063313ce5671461026757806338d52e0f14610281575f80fd5b8063095ea7b31161018e578063095ea7b3146101f75780630a28a4771461021a57806318160ddd1461022d575f80fd5b806301e1d114146101b457806306fdde03146101cf57806307a2d13a146101e4575b5f80fd5b6101bc610446565b6040519081526020015b60405180910390f35b6101d76104fe565b6040516101c69190611758565b6101bc6101f236600461178d565b6105b6565b61020a6102053660046117b8565b6105c7565b60405190151581526020016101c6565b6101bc61022836600461178d565b6105de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101bc565b61020a6102623660046117e2565b6105ea565b61026f61060f565b60405160ff90911681526020016101c6565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546040516001600160a01b0390911681526020016101c6565b6101bc6102c9366004611820565b505f1990565b6101bc6102dd36600461183b565b610662565b6101bc6102f03660046118a7565b61089d565b6101bc610303366004611820565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101bc61034a3660046118a7565b6108ce565b6101d76108e9565b61020a6103653660046117b8565b61098d565b6101bc61037836600461178d565b61099a565b6101bc61038b3660046118d5565b6109a6565b6101bc61039e3660046118d5565b610a28565b6101bc6103b1366004611820565b610aa1565b6101bc6103c436600461178d565b610ad4565b6101bc6103d7366004611820565b610adf565b6101bc6103ea366004611820565b610ae8565b6101bc6103fd366004611914565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f6104787f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156104d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f99190611940565b905090565b60606105317f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561056b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105929190810190611984565b6040516020016105a29190611a46565b604051602081830303815290604052905090565b5f6105c1825f610b24565b92915050565b5f336105d4818585610b7b565b5060019392505050565b5f6105c1826001610b8d565b5f336105f7858285610bdb565b610602858585610c8f565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461065c919074010000000000000000000000000000000000000000900460ff16611aa4565b91505090565b5f8061066c610d1e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156106985750825b90505f8267ffffffffffffffff1660011480156106b45750303b155b9050811580156106c2575080155b156106f9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561075a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b5f610767888a018a611820565b90506001600160a01b0381166107a9576040517f7cde9b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b281610d46565b6107d860405180602001604052805f81525060405180602001604052805f815250610d5a565b6040516001600160a01b0382169033907fdf5fabff9e49f8c35d69a1f2d0c5e80c933c31cf836cf70de57e3a6e7dc86ebb905f90a37fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc396505083156108925784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f5f196108ae565b60405180910390fd5b5f6108b885610ad4565b90506108c633858784610d70565b949350505050565b5f5f195f6108db8561099a565b90506108c633858388610d70565b606061091c7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610956573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261097d9190810190611984565b6040516020016105a29190611abd565b5f336105d4818585610c8f565b5f6105c1826001610b24565b5f806109b183610adf565b905080851115610a06576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101869052604481018290526064016108a5565b5f610a10866105de565b9050610a1f3386868985610de0565b95945050505050565b5f80610a3383610ae8565b905080851115610a88576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101869052604481018290526064016108a5565b5f610a92866105b6565b9050610a1f338686848a610de0565b5f6040517faf1fbb2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c1825f610b8d565b5f6105c16101f2835b6001600160a01b0381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546105c1565b5f610608610b30610446565b610b3b906001611aee565b610b465f600a611be1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b729190611aee565b85919085610e7f565b610b888383836001610ec1565b505050565b5f610608610b9c82600a611be1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610bc89190611aee565b610bd0610446565b610b72906001611aee565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610c895781811015610c7b576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016108a5565b610c8984848484035f610ec1565b50505050565b6001600160a01b038316610cd1576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b6001600160a01b038216610d13576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b610b88838383610fea565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006105c1565b610d4e611141565b610d5781611181565b50565b610d62611141565b610d6c8282611245565b5050565b610d7a84836112a8565b610d8483826112e4565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610dd2929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610e0457610e04838683610bdb565b610e0e8382611331565b610e18848361137e565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610e70929190918252602082015260400190565b60405180910390a45050505050565b5f610eac610e8c836113b9565b8015610ea757505f8480610ea257610ea2611bef565b868809115b151590565b610eb78686866113e5565b610a1f9190611aee565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516610f24576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b6001600160a01b038416610f66576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610fe357836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610fda91815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166110375781816002015f82825461102c9190611aee565b909155506110c09050565b6001600160a01b0384165f90815260208290526040902054828110156110a2576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016108a5565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166110de5760028101805483900390556110fc565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dd291815260200190565b611149611495565b61117f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611189611141565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f806111b5846114b3565b91509150816111c55760126111c7565b805b83547fffffffffffffffffffffff000000000000000000000000000000000000000000167401000000000000000000000000000000000000000060ff92909216919091027fffffffffffffffffffffffff000000000000000000000000000000000000000016176001600160a01b0394909416939093179091555050565b61124d611141565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036112998482611cb1565b5060048101610c898382611cb1565b610d6c6112dc7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b83308461156c565b6001600160a01b038216611326576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b610d6c5f8383610fea565b6001600160a01b038216611373576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016108a5565b610d6c825f83610fea565b610d6c6113b27f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b83836115bb565b5f60028260038111156113ce576113ce611d71565b6113d89190611d9e565b60ff166001149050919050565b5f805f6113f28686611609565b91509150815f036114165783818161140c5761140c611bef565b0492505050610608565b81841161142d5761142d6003851502601118611625565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f61149e610d1e565b5468010000000000000000900460ff16919050565b5f805f6114bf60405190565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001790529091505f908190611528908790611636565b509150915061153683604052565b818015611544575060203d10155b8015611551575060ff8111155b61155c575f80611560565b6001815b94509450505050915091565b61157a848484846001611657565b610c89576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016108a5565b6115c883838360016116dd565b610b88576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016108a5565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f805f60405f855160208701885afa92505f51915060205190509250925092565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166116cc5783831516156116c0573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661174c578383151615611740573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561179d575f80fd5b5035919050565b6001600160a01b0381168114610d57575f80fd5b5f80604083850312156117c9575f80fd5b82356117d4816117a4565b946020939093013593505050565b5f805f606084860312156117f4575f80fd5b83356117ff816117a4565b9250602084013561180f816117a4565b929592945050506040919091013590565b5f60208284031215611830575f80fd5b8135610608816117a4565b5f806020838503121561184c575f80fd5b823567ffffffffffffffff80821115611863575f80fd5b818501915085601f830112611876575f80fd5b813581811115611884575f80fd5b866020828501011115611895575f80fd5b60209290920196919550909350505050565b5f80604083850312156118b8575f80fd5b8235915060208301356118ca816117a4565b809150509250929050565b5f805f606084860312156118e7575f80fd5b8335925060208401356118f9816117a4565b91506040840135611909816117a4565b809150509250925092565b5f8060408385031215611925575f80fd5b8235611930816117a4565b915060208301356118ca816117a4565b5f60208284031215611950575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611994575f80fd5b815167ffffffffffffffff808211156119ab575f80fd5b818401915084601f8301126119be575f80fd5b8151818111156119d0576119d0611957565b604051601f8201601f19908116603f011681019083821181831017156119f8576119f8611957565b81604052828152876020848701011115611a10575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f81518060208401855e5f93019283525090919050565b7f577261707065642000000000000000000000000000000000000000000000000081525f6106086008830184611a2f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff81811683821601908111156105c1576105c1611a77565b7f770000000000000000000000000000000000000000000000000000000000000081525f6106086001830184611a2f565b808201808211156105c1576105c1611a77565b600181815b80851115611b3b57815f1904821115611b2157611b21611a77565b80851615611b2e57918102915b93841c9390800290611b06565b509250929050565b5f82611b51575060016105c1565b81611b5d57505f6105c1565b8160018114611b735760028114611b7d57611b99565b60019150506105c1565b60ff841115611b8e57611b8e611a77565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611bbc575081810a6105c1565b611bc68383611b01565b805f1904821115611bd957611bd9611a77565b029392505050565b5f61060860ff841683611b43565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b600181811c90821680611c3057607f821691505b602082108103611c67577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610b8857805f5260205f20601f840160051c81016020851015611c925750805b601f840160051c820191505b81811015610fe3575f8155600101611c9e565b815167ffffffffffffffff811115611ccb57611ccb611957565b611cdf81611cd98454611c1c565b84611c6d565b602080601f831160018114611d12575f8415611cfb5750858301515b5f19600386901b1c1916600185901b178555611d69565b5f85815260208120601f198616915b82811015611d4057888601518255948401946001909101908401611d21565b5085821015611d5d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680611dd5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8060ff8416069150509291505056"; diff --git a/src/generated/0_1_8/StoxWrappedTokenVaultBeacon.pointers.sol b/src/generated/0_1_8/StoxWrappedTokenVaultBeacon.pointers.sol new file mode 100644 index 00000000..438a674d --- /dev/null +++ b/src/generated/0_1_8/StoxWrappedTokenVaultBeacon.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x8e95867e52db417944afd90f3b6c3c980962831e8a944e7f6958ba8f8cc10630); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x9FD790f65CA3aF2772358c653F097f0a4c7EE7d2); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"608060405234801561000f575f80fd5b50730d99e0174dbf885ced6ae8deb939b0f890450099738e4bdeec7ceb9570d440676345da1dce10329f5b80610049565b60405180910390fd5b61005281610063565b5061005c826100b2565b5050610130565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100e75760405163211eb15960e21b81526001600160a01b0382166004820152602401610040565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61035a8061013d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100c05780638da5cb5b146100c8578063f2fde38b146100e5575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b610076366004610320565b6100f8565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007b61010c565b5f5473ffffffffffffffffffffffffffffffffffffffff16610097565b61007b6100f3366004610320565b61011f565b610100610184565b610109816101d6565b50565b610114610184565b61011d5f6102ac565b565b610127610184565b73ffffffffffffffffffffffffffffffffffffffff811661017b576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610109816102ac565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461011d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610172565b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361023e576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610172565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610330575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610353575f80fd5b939250505056"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100c05780638da5cb5b146100c8578063f2fde38b146100e5575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b610076366004610320565b6100f8565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007b61010c565b5f5473ffffffffffffffffffffffffffffffffffffffff16610097565b61007b6100f3366004610320565b61011f565b610100610184565b610109816101d6565b50565b610114610184565b61011d5f6102ac565b565b610127610184565b73ffffffffffffffffffffffffffffffffffffffff811661017b576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610109816102ac565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461011d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610172565b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361023e576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610172565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610330575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610353575f80fd5b939250505056"; diff --git a/src/generated/0_1_8/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol b/src/generated/0_1_8/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol new file mode 100644 index 00000000..231752f1 --- /dev/null +++ b/src/generated/0_1_8/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity ^0.8.25; + +// THIS FILE IS AUTOGENERATED BY ./script/BuildPointers.sol + +// This file is committed to the repository because there is a circular +// dependency between the contract and its pointers file. The contract +// needs the pointers file to exist so that it can compile, and the pointers +// file needs the contract to exist so that it can be compiled. + +/// @dev Hash of the known bytecode. +bytes32 constant BYTECODE_HASH = bytes32(0x940e3ab4278cf7ae44026596f4f32dc5c7f3facd99ef8070c63b5cfefd49a47c); + +/// @dev The deterministic deploy address of the contract when deployed via +/// the Zoltu factory. +address constant DEPLOYED_ADDRESS = address(0x6B4232f1046F1f1bb99a1184D886bBaF3Cd7e15A); + +/// @dev The creation bytecode of the contract. +bytes constant CREATION_CODE = + hex"6080604052348015600e575f80fd5b506109468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063d786858b14610060575b5f80fd5b61004b610046366004610333565b610098565b60405190151581526020015b60405180910390f35b61007361006e366004610379565b610130565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610057565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd786858b00000000000000000000000000000000000000000000000000000000148061012a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff821661017e576040517fe51a7ce200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f739fd790f65ca3af2772358c653f097f0a4c7ee7d26040516101a090610326565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156101e4573d5f803e3d5ffd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f82488d8ab594db2178e4a45b7106aaa804836e608f001b5d7fcb6c3514730b3e910160405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff85811660208301527fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3929084169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016102af91906103ac565b6020604051808303815f875af11580156102cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef91906103ff565b1461012a576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052f8061041783390190565b5f60208284031215610343575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610372575f80fd5b9392505050565b5f60208284031215610389575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610372575f80fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561040f575f80fd5b505191905056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; + +/// @dev The runtime bytecode of the contract. +bytes constant RUNTIME_CODE = + hex"608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063d786858b14610060575b5f80fd5b61004b610046366004610333565b610098565b60405190151581526020015b60405180910390f35b61007361006e366004610379565b610130565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610057565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd786858b00000000000000000000000000000000000000000000000000000000148061012a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff821661017e576040517fe51a7ce200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f739fd790f65ca3af2772358c653f097f0a4c7ee7d26040516101a090610326565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156101e4573d5f803e3d5ffd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f82488d8ab594db2178e4a45b7106aaa804836e608f001b5d7fcb6c3514730b3e910160405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff85811660208301527fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3929084169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016102af91906103ac565b6020604051808303815f875af11580156102cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef91906103ff565b1461012a576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052f8061041783390190565b5f60208284031215610343575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610372575f80fd5b9392505050565b5f60208284031215610389575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610372575f80fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561040f575f80fd5b505191905056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; diff --git a/src/generated/LibProdDeployCurrent.sol b/src/generated/LibProdDeployCurrent.sol index f8a401a5..7ed6785e 100644 --- a/src/generated/LibProdDeployCurrent.sol +++ b/src/generated/LibProdDeployCurrent.sol @@ -6,44 +6,44 @@ pragma solidity ^0.8.25; import {LibProdDeployV4} from "./LibProdDeployV4.sol"; library LibProdDeployCurrent { - string constant DEPLOY_TAG = "0_1_7"; + string constant DEPLOY_TAG = "0_1_8"; address constant BEACON_INITIAL_OWNER = LibProdDeployV4.BEACON_INITIAL_OWNER; address constant STOX_PROD_AUTHORISER_V4_CLONE = LibProdDeployV4.STOX_PROD_AUTHORISER_V4_CLONE; bytes32 constant STOX_PROD_AUTHORISER_V4_CLONE_CODEHASH = LibProdDeployV4.STOX_PROD_AUTHORISER_V4_CLONE_CODEHASH; - address constant STOX_RECEIPT = LibProdDeployV4.STOX_RECEIPT_0_1_7; - bytes32 constant STOX_RECEIPT_CODEHASH = LibProdDeployV4.STOX_RECEIPT_CODEHASH_0_1_7; - address constant STOX_RECEIPT_VAULT = LibProdDeployV4.STOX_RECEIPT_VAULT_0_1_7; - bytes32 constant STOX_RECEIPT_VAULT_CODEHASH = LibProdDeployV4.STOX_RECEIPT_VAULT_CODEHASH_0_1_7; - address constant STOX_WRAPPED_TOKEN_VAULT = LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_0_1_7; - bytes32 constant STOX_WRAPPED_TOKEN_VAULT_CODEHASH = LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_CODEHASH_0_1_7; - address constant STOX_UNIFIED_DEPLOYER = LibProdDeployV4.STOX_UNIFIED_DEPLOYER_0_1_7; - bytes32 constant STOX_UNIFIED_DEPLOYER_CODEHASH = LibProdDeployV4.STOX_UNIFIED_DEPLOYER_CODEHASH_0_1_7; - address constant STOX_WRAPPED_TOKEN_VAULT_BEACON = LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_0_1_7; + address constant STOX_RECEIPT = LibProdDeployV4.STOX_RECEIPT_0_1_8; + bytes32 constant STOX_RECEIPT_CODEHASH = LibProdDeployV4.STOX_RECEIPT_CODEHASH_0_1_8; + address constant STOX_RECEIPT_VAULT = LibProdDeployV4.STOX_RECEIPT_VAULT_0_1_8; + bytes32 constant STOX_RECEIPT_VAULT_CODEHASH = LibProdDeployV4.STOX_RECEIPT_VAULT_CODEHASH_0_1_8; + address constant STOX_WRAPPED_TOKEN_VAULT = LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_0_1_8; + bytes32 constant STOX_WRAPPED_TOKEN_VAULT_CODEHASH = LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_CODEHASH_0_1_8; + address constant STOX_UNIFIED_DEPLOYER = LibProdDeployV4.STOX_UNIFIED_DEPLOYER_0_1_8; + bytes32 constant STOX_UNIFIED_DEPLOYER_CODEHASH = LibProdDeployV4.STOX_UNIFIED_DEPLOYER_CODEHASH_0_1_8; + address constant STOX_WRAPPED_TOKEN_VAULT_BEACON = LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_0_1_8; bytes32 constant STOX_WRAPPED_TOKEN_VAULT_BEACON_CODEHASH = - LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_CODEHASH_0_1_7; + LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_CODEHASH_0_1_8; address constant STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER = - LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_0_1_7; + LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_0_1_8; bytes32 constant STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CODEHASH = - LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_7; + LibProdDeployV4.STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8; address constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER = - LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_0_1_7; + LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_0_1_8; bytes32 constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CODEHASH = - LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_7; + LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8; address constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1 = - LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_0_1_7; + LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_0_1_8; bytes32 constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CODEHASH = - LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CODEHASH_0_1_7; + LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CODEHASH_0_1_8; address constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1 = - LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_0_1_7; + LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_0_1_8; bytes32 constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CODEHASH = - LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CODEHASH_0_1_7; - address constant STOX_CORPORATE_ACTIONS_FACET = LibProdDeployV4.STOX_CORPORATE_ACTIONS_FACET_0_1_7; + LibProdDeployV4.STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CODEHASH_0_1_8; + address constant STOX_CORPORATE_ACTIONS_FACET = LibProdDeployV4.STOX_CORPORATE_ACTIONS_FACET_0_1_8; bytes32 constant STOX_CORPORATE_ACTIONS_FACET_CODEHASH = - LibProdDeployV4.STOX_CORPORATE_ACTIONS_FACET_CODEHASH_0_1_7; - address constant ST0X_ORCHESTRATOR = LibProdDeployV4.ST0X_ORCHESTRATOR_0_1_7; - bytes32 constant ST0X_ORCHESTRATOR_CODEHASH = LibProdDeployV4.ST0X_ORCHESTRATOR_CODEHASH_0_1_7; + LibProdDeployV4.STOX_CORPORATE_ACTIONS_FACET_CODEHASH_0_1_8; + address constant ST0X_ORCHESTRATOR = LibProdDeployV4.ST0X_ORCHESTRATOR_0_1_8; + bytes32 constant ST0X_ORCHESTRATOR_CODEHASH = LibProdDeployV4.ST0X_ORCHESTRATOR_CODEHASH_0_1_8; address constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER = - LibProdDeployV4.ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_0_1_7; + LibProdDeployV4.ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_0_1_8; bytes32 constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CODEHASH = - LibProdDeployV4.ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CODEHASH_0_1_7; + LibProdDeployV4.ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CODEHASH_0_1_8; } diff --git a/src/generated/LibProdDeployV4.sol b/src/generated/LibProdDeployV4.sol index 4461204b..d044cf3f 100644 --- a/src/generated/LibProdDeployV4.sol +++ b/src/generated/LibProdDeployV4.sol @@ -495,10 +495,82 @@ import { CREATION_CODE as ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CREATION_0_1_7_GEN, RUNTIME_CODE as ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_RUNTIME_0_1_7_GEN } from "./0_1_7/ST0xOrchestratorBeaconSetDeployer.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_RECEIPT_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_RECEIPT_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_RECEIPT_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_RECEIPT_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxReceipt.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_RECEIPT_VAULT_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_RECEIPT_VAULT_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_RECEIPT_VAULT_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_RECEIPT_VAULT_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxReceiptVault.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_WRAPPED_TOKEN_VAULT_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_WRAPPED_TOKEN_VAULT_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_WRAPPED_TOKEN_VAULT_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_WRAPPED_TOKEN_VAULT_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxWrappedTokenVault.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_UNIFIED_DEPLOYER_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_UNIFIED_DEPLOYER_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_UNIFIED_DEPLOYER_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_UNIFIED_DEPLOYER_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxUnifiedDeployer.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_WRAPPED_TOKEN_VAULT_BEACON_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_WRAPPED_TOKEN_VAULT_BEACON_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_WRAPPED_TOKEN_VAULT_BEACON_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_WRAPPED_TOKEN_VAULT_BEACON_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxWrappedTokenVaultBeacon.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxOffchainAssetReceiptVaultBeaconSetDeployer.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxOffchainAssetReceiptVaultAuthorizerV1.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.pointers.sol"; +import { + DEPLOYED_ADDRESS as STOX_CORPORATE_ACTIONS_FACET_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as STOX_CORPORATE_ACTIONS_FACET_CODEHASH_0_1_8_GEN, + CREATION_CODE as STOX_CORPORATE_ACTIONS_FACET_CREATION_0_1_8_GEN, + RUNTIME_CODE as STOX_CORPORATE_ACTIONS_FACET_RUNTIME_0_1_8_GEN +} from "./0_1_8/StoxCorporateActionsFacet.pointers.sol"; +import { + DEPLOYED_ADDRESS as ST0X_ORCHESTRATOR_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as ST0X_ORCHESTRATOR_CODEHASH_0_1_8_GEN, + CREATION_CODE as ST0X_ORCHESTRATOR_CREATION_0_1_8_GEN, + RUNTIME_CODE as ST0X_ORCHESTRATOR_RUNTIME_0_1_8_GEN +} from "./0_1_8/ST0xOrchestrator.pointers.sol"; +import { + DEPLOYED_ADDRESS as ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_ADDRESS_0_1_8_GEN, + BYTECODE_HASH as ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CODEHASH_0_1_8_GEN, + CREATION_CODE as ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CREATION_0_1_8_GEN, + RUNTIME_CODE as ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_RUNTIME_0_1_8_GEN +} from "./0_1_8/ST0xOrchestratorBeaconSetDeployer.pointers.sol"; library LibProdDeployV4 { address constant BEACON_INITIAL_OWNER = address(0x8E4bdeec7CEB9570D440676345dA1dCe10329f5b); - address constant STOX_PROD_AUTHORISER_V4_CLONE = address(0); + address constant STOX_PROD_AUTHORISER_V4_CLONE = address(0x315b16faa6eE413faBCa877d3851B3818369f0cD); bytes32 constant STOX_PROD_AUTHORISER_V4_CLONE_CODEHASH = 0x2089950d3cc1112dd66a58adcfadeadc490b50053ac67be8bc676b4a2dcd1717; uint256 constant V4_SWAP_DEADLINE = 1_793_491_200; @@ -987,4 +1059,75 @@ library LibProdDeployV4 { ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CREATION_0_1_7_GEN; bytes constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_RUNTIME_CODE_0_1_7 = ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_RUNTIME_0_1_7_GEN; + address constant STOX_RECEIPT_0_1_8 = STOX_RECEIPT_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_RECEIPT_CODEHASH_0_1_8 = STOX_RECEIPT_CODEHASH_0_1_8_GEN; + bytes constant STOX_RECEIPT_CREATION_CODE_0_1_8 = STOX_RECEIPT_CREATION_0_1_8_GEN; + bytes constant STOX_RECEIPT_RUNTIME_CODE_0_1_8 = STOX_RECEIPT_RUNTIME_0_1_8_GEN; + address constant STOX_RECEIPT_VAULT_0_1_8 = STOX_RECEIPT_VAULT_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_RECEIPT_VAULT_CODEHASH_0_1_8 = STOX_RECEIPT_VAULT_CODEHASH_0_1_8_GEN; + bytes constant STOX_RECEIPT_VAULT_CREATION_CODE_0_1_8 = STOX_RECEIPT_VAULT_CREATION_0_1_8_GEN; + bytes constant STOX_RECEIPT_VAULT_RUNTIME_CODE_0_1_8 = STOX_RECEIPT_VAULT_RUNTIME_0_1_8_GEN; + address constant STOX_WRAPPED_TOKEN_VAULT_0_1_8 = STOX_WRAPPED_TOKEN_VAULT_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_WRAPPED_TOKEN_VAULT_CODEHASH_0_1_8 = STOX_WRAPPED_TOKEN_VAULT_CODEHASH_0_1_8_GEN; + bytes constant STOX_WRAPPED_TOKEN_VAULT_CREATION_CODE_0_1_8 = STOX_WRAPPED_TOKEN_VAULT_CREATION_0_1_8_GEN; + bytes constant STOX_WRAPPED_TOKEN_VAULT_RUNTIME_CODE_0_1_8 = STOX_WRAPPED_TOKEN_VAULT_RUNTIME_0_1_8_GEN; + address constant STOX_UNIFIED_DEPLOYER_0_1_8 = STOX_UNIFIED_DEPLOYER_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_UNIFIED_DEPLOYER_CODEHASH_0_1_8 = STOX_UNIFIED_DEPLOYER_CODEHASH_0_1_8_GEN; + bytes constant STOX_UNIFIED_DEPLOYER_CREATION_CODE_0_1_8 = STOX_UNIFIED_DEPLOYER_CREATION_0_1_8_GEN; + bytes constant STOX_UNIFIED_DEPLOYER_RUNTIME_CODE_0_1_8 = STOX_UNIFIED_DEPLOYER_RUNTIME_0_1_8_GEN; + address constant STOX_WRAPPED_TOKEN_VAULT_BEACON_0_1_8 = STOX_WRAPPED_TOKEN_VAULT_BEACON_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_WRAPPED_TOKEN_VAULT_BEACON_CODEHASH_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_CODEHASH_0_1_8_GEN; + bytes constant STOX_WRAPPED_TOKEN_VAULT_BEACON_CREATION_CODE_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_CREATION_0_1_8_GEN; + bytes constant STOX_WRAPPED_TOKEN_VAULT_BEACON_RUNTIME_CODE_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_RUNTIME_0_1_8_GEN; + address constant STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8_GEN; + bytes constant STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CREATION_CODE_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_CREATION_0_1_8_GEN; + bytes constant STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_RUNTIME_CODE_0_1_8 = + STOX_WRAPPED_TOKEN_VAULT_BEACON_SET_DEPLOYER_RUNTIME_0_1_8_GEN; + address constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CODEHASH_0_1_8_GEN; + bytes constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CREATION_CODE_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_CREATION_0_1_8_GEN; + bytes constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_RUNTIME_CODE_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON_SET_DEPLOYER_RUNTIME_0_1_8_GEN; + address constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CODEHASH_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CODEHASH_0_1_8_GEN; + bytes constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CREATION_CODE_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_CREATION_0_1_8_GEN; + bytes constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_RUNTIME_CODE_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_AUTHORIZER_V1_RUNTIME_0_1_8_GEN; + address constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CODEHASH_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CODEHASH_0_1_8_GEN; + bytes constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CREATION_CODE_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_CREATION_0_1_8_GEN; + bytes constant STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_RUNTIME_CODE_0_1_8 = + STOX_OFFCHAIN_ASSET_RECEIPT_VAULT_PAYMENT_MINT_AUTHORIZER_V1_RUNTIME_0_1_8_GEN; + address constant STOX_CORPORATE_ACTIONS_FACET_0_1_8 = STOX_CORPORATE_ACTIONS_FACET_ADDRESS_0_1_8_GEN; + bytes32 constant STOX_CORPORATE_ACTIONS_FACET_CODEHASH_0_1_8 = STOX_CORPORATE_ACTIONS_FACET_CODEHASH_0_1_8_GEN; + bytes constant STOX_CORPORATE_ACTIONS_FACET_CREATION_CODE_0_1_8 = STOX_CORPORATE_ACTIONS_FACET_CREATION_0_1_8_GEN; + bytes constant STOX_CORPORATE_ACTIONS_FACET_RUNTIME_CODE_0_1_8 = STOX_CORPORATE_ACTIONS_FACET_RUNTIME_0_1_8_GEN; + address constant ST0X_ORCHESTRATOR_0_1_8 = ST0X_ORCHESTRATOR_ADDRESS_0_1_8_GEN; + bytes32 constant ST0X_ORCHESTRATOR_CODEHASH_0_1_8 = ST0X_ORCHESTRATOR_CODEHASH_0_1_8_GEN; + bytes constant ST0X_ORCHESTRATOR_CREATION_CODE_0_1_8 = ST0X_ORCHESTRATOR_CREATION_0_1_8_GEN; + bytes constant ST0X_ORCHESTRATOR_RUNTIME_CODE_0_1_8 = ST0X_ORCHESTRATOR_RUNTIME_0_1_8_GEN; + address constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_0_1_8 = + ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_ADDRESS_0_1_8_GEN; + bytes32 constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CODEHASH_0_1_8 = + ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CODEHASH_0_1_8_GEN; + bytes constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CREATION_CODE_0_1_8 = + ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_CREATION_0_1_8_GEN; + bytes constant ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_RUNTIME_CODE_0_1_8 = + ST0X_ORCHESTRATOR_BEACON_SET_DEPLOYER_RUNTIME_0_1_8_GEN; } diff --git a/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol b/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol index a5465638..3772564f 100644 --- a/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol +++ b/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol @@ -20,7 +20,6 @@ import { UpgradeReceiptVaultsToV4, V4ImplementationNotDeployed, V4CodehashMismatch, - V4AuthoriserCloneNotPinned, VaultAuthoriserMismatchPostUpgrade } from "../../script/20260623-upgrade-receipt-vaults-to-v4.s.sol"; import {UpgradeReceiptVaultsToV4Harness} from "./UpgradeReceiptVaultsToV4Harness.sol"; @@ -114,15 +113,15 @@ contract UpgradeReceiptVaultsToV4Test is Test { upgradeScript.run(); } - /// @notice The audited V4 impl is already deployed on Base at `V4_IMPL` - /// with the pinned codehash, so the impl-side pre-flight passes against the - /// live fork (no planting needed — planting the current source would carry - /// a later release's bytecode, not the pinned `0.1.1` build) and `run()` - /// reaches the next forcing function: `V4AuthoriserCloneNotPinned` (the - /// clone pin is still `address(0)`). The codehash assert doubles as a - /// prod-state pin: the on-chain V4 impl must match the lib's pinned - /// codehash. - function testRunRevertsWhenV4AuthoriserCloneNotPinned() external { + /// @notice Happy path against unmodified live Base state: every + /// pre-flight input is now real (beacon Safe-owned since the 2026-07 + /// migration, audited V4 impl live at `V4_IMPL` with the pinned + /// codehash, V4 authoriser clone deployed + pinned + grant-configured), + /// so `run()` completes end-to-end — pre-flight, bundle build, + /// simulation, post-state, n+1 reversibility — and writes the Safe Tx + /// Builder artifact. This is the exact dry-run the `run-script` + /// dispatch executes to author the signable bundle. + function testRunCompletesAndWritesArtifact() external { _forkAndMigrateBeaconOwnership(); assertEq( V4_IMPL.codehash, @@ -130,8 +129,25 @@ contract UpgradeReceiptVaultsToV4Test is Test { "live V4 impl codehash != pinned codehash" ); UpgradeReceiptVaultsToV4 upgradeScript = new UpgradeReceiptVaultsToV4(); - vm.expectRevert(V4AuthoriserCloneNotPinned.selector); upgradeScript.run(); + + // The artifact landed with the pinned bundle name and the expected + // shape: 1 beacon upgrade + one setAuthorizer per production vault. + string memory json = vm.readFile("out/v4-upgrade.json"); + assertEq( + vm.parseJsonString(json, ".meta.name"), + "ST0x receipt vault V4 upgrade + authoriser swap", + "artifact bundle name" + ); + uint256 expectedTxCount = 1 + LibTokenInvariants.productionReceiptVaults().length; + assertTrue( + vm.keyExistsJson(json, string.concat(".transactions[", vm.toString(expectedTxCount - 1), "].to")), + "last expected tx present" + ); + assertFalse( + vm.keyExistsJson(json, string.concat(".transactions[", vm.toString(expectedTxCount), "].to")), + "no extra txs" + ); } /// @notice `_assertPostState` reverts `VaultAuthoriserMismatchPostUpgrade` diff --git a/test/src/concrete/deploy/StoxProdV4.t.sol b/test/src/concrete/deploy/StoxProdV4.t.sol index 24b01f55..f382ef5a 100644 --- a/test/src/concrete/deploy/StoxProdV4.t.sol +++ b/test/src/concrete/deploy/StoxProdV4.t.sol @@ -23,10 +23,10 @@ import { /// address matches those pins, proving the production deploy landed the audited /// bytecode at the address the source expects. /// -/// `STOX_PROD_AUTHORISER_V4_CLONE` is a non-deterministic deploy target still -/// pinned as `address(0)` in `LibProdDeployV4`, so it is not checked here; -/// `LibProdDeployV4Test.testAuthoriserV4ClonePlaceholder` guards that -/// placeholder until the clone is hydrated. +/// `STOX_PROD_AUTHORISER_V4_CLONE` (hydrated from the 2026-07 broadcast) is +/// not checked here; `LibProdDeployV4Test.testAuthoriserV4ClonePin` asserts +/// the literal + codehash derivation, and `StoxProdV4PostSwap.t.sol` checks +/// the live on-chain clone. contract StoxProdV4Test is Test { /// Asserts every V4 deployed contract is present at its pinned address with /// the pinned codehash; that the wrapped-token-vault beacon points at the V4 diff --git a/test/src/lib/LibProdDeployV4.t.sol b/test/src/lib/LibProdDeployV4.t.sol index aa781fa0..7b3c6165 100644 --- a/test/src/lib/LibProdDeployV4.t.sol +++ b/test/src/lib/LibProdDeployV4.t.sol @@ -48,11 +48,10 @@ import {ST0xOrchestratorBeaconSetDeployer} from "../../../src/concrete/deploy/ST /// 3. **Twin equality** (`testRelease*TwinsEqual*`) — a contract unchanged /// across a release has byte-identical pins in both tags. /// -/// The `STOX_PROD_AUTHORISER_V4_CLONE` pin is a non-deterministic deploy target -/// and is still an `address(0)` placeholder; `testAuthoriserV4ClonePlaceholder` -/// asserts that explicitly so the placeholder can't be silently shipped as a -/// real pin and so the test fails (prompting a real assertion) once the clone -/// is hydrated. +/// The `STOX_PROD_AUTHORISER_V4_CLONE` pin is a non-deterministic deploy +/// target hydrated from the 2026-07 broadcast on Base; +/// `testAuthoriserV4ClonePin` asserts the literal + the codehash derivation +/// so a drifted generator value fails a test. contract LibProdDeployV4Test is Test { // --- StoxReceipt --- @@ -225,21 +224,23 @@ contract LibProdDeployV4Test is Test { assertEq(LibProdDeployCurrent.DEPLOY_TAG, string(v)); } - /// The V4 authoriser clone is a non-deterministic deploy target and is - /// still a placeholder. Asserting the placeholder explicitly prevents it - /// from being silently shipped as a real pin, and makes this test fail - /// (prompting a real address + codehash assertion) the moment the clone is - /// hydrated with its deployed literal. - function testAuthoriserV4ClonePlaceholder() external pure { + /// The V4 authoriser clone pin. The address was hydrated from the + /// 2026-07 broadcast of `20260619-deploy-v4-authoriser-clone.s.sol` on + /// Base (see the `NewClone` event in the broadcast receipt); asserting + /// the literal here means an accidental edit to the generator's + /// hardcoded value fails a test rather than silently re-routing every + /// consumer of the pin. The live-chain codehash cross-check runs in + /// `StoxProdV4PostSwap.t.sol`'s hydrated-clone block. + function testAuthoriserV4ClonePin() external pure { assertEq( LibProdDeployV4.STOX_PROD_AUTHORISER_V4_CLONE, - address(0), - "clone hydrated: replace this placeholder guard with a real address + codehash assertion" + address(0x315b16faa6eE413faBCa877d3851B3818369f0cD), + "clone address pin drifted from the deployed literal" ); // The clone CODEHASH is deterministic from the pinned V4 impl (the - // EIP-1167 runtime embeds the impl address), so unlike the address it - // is hydrated ahead of the deploy. Re-derive it and assert the pinned - // literal matches, so an impl-address change can't leave it stale. + // EIP-1167 runtime embeds the impl address). Re-derive it and assert + // the pinned literal matches, so an impl-address change can't leave + // it stale. assertEq( LibProdDeployV4.STOX_PROD_AUTHORISER_V4_CLONE_CODEHASH, keccak256(