[ { "inputs": [ { "internalType": "address", "name": "oldRSR_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldMage", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newMage", "type": "address" } ], "name": "MageChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldPauser", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newPauser", "type": "address" } ], "name": "PauserChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" } ], "name": "SpellCast", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WEIGHT_ONE", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowanceCrossed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balCrossed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract Spell", "name": "spell", "type": "address" } ], "name": "castSpell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newPauser", "type": "address" } ], "name": "changePauser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subbedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasWeights", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mage", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "moveToWorking", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oldRSR", "outputs": [ { "internalType": "contract ERC20Pausable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "n", "type": "uint256" } ], "name": "partiallyCross", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauser", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "phase", "outputs": [ { "internalType": "enum RSR.Phase", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renouncePauser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "oldTo", "type": "address" }, { "internalType": "address", "name": "newTo", "type": "address" }, { "internalType": "uint64", "name": "weight", "type": "uint64" } ], "name": "siphon", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "weights", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" } ]
6101a06040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140523480156200003757600080fd5b506040516200478d3803806200478d8339810160408190526200005a91620003ff565b604080518082018252600e8082526d526573657276652052696768747360901b60208084018290528451808601865260018152603160f81b818301528551808701875293845283820192909252845180860190955260038552622929a960e91b908501526000805460ff19169055919283929190620000d93362000262565b8151620000ee90600590602085019062000359565b5080516200010490600690602084019062000359565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c00190528051940193909320919350919060805230606090811b60c0526101209190915286901b6001600160601b031916610160525050604080516318160ddd60e01b815290516001600160a01b03861694506318160ddd935060048083019350602092829003018186803b158015620001f157600080fd5b505afa15801562000206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022c91906200042f565b6101805260088054610100600160a81b031916610100330217905562000251620002bb565b506008805460ff1916905562000485565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff1615620003065760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640160405180910390fd5b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200033c3390565b6040516001600160a01b03909116815260200160405180910390a1565b828054620003679062000448565b90600052602060002090601f0160209004810192826200038b5760008555620003d6565b82601f10620003a657805160ff1916838001178555620003d6565b82800160010185558215620003d6579182015b82811115620003d6578251825591602001919060010190620003b9565b50620003e4929150620003e8565b5090565b5b80821115620003e45760008155600101620003e9565b60006020828403121562000411578081fd5b81516001600160a01b038116811462000428578182fd5b9392505050565b60006020828403121562000441578081fd5b5051919050565b600181811c908216806200045d57607f821691505b602082108114156200047f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160601c60e0516101005161012051610140516101605160601c610180516142596200053460003960006102ac0152600081816103a2015281816108e601528181610ee20152818161176a01528181611b8c01528181611ef0015281816121c8015281816125a40152612705015260006132a601526000612af101526000612b4001526000612b1b01526000612a7401526000612a9e01526000612ac801526142596000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80636ff2212f116101455780639fd0506d116100bd578063b1c9fe6e1161008c578063d505accf11610071578063d505accf14610566578063dd62ed3e14610579578063f2fde38b1461058c57600080fd5b8063b1c9fe6e1461052e578063cca37eef1461054857600080fd5b80639fd0506d146104db578063a457c2d714610500578063a9059cbb14610513578063afb8a7af1461052657600080fd5b806380b34cd1116101145780638456cb59116100f95780638456cb59146104a85780638da5cb5b146104b057806395d89b41146104d357600080fd5b806380b34cd11461047257806380c1bf3f1461049557600080fd5b80636ff2212f1461043157806370a0823114610444578063715018a6146104575780637ecebe001461045f57600080fd5b806332aed946116101d85780633f4ba83a116101a75780635c975abb1161018c5780635c975abb146103e95780636c1e187c146103f45780636ef8d66d1461042957600080fd5b80633f4ba83a14610395578063427dff1d1461039d57600080fd5b806332aed9461461033f5780633644e5151461035257806337bfdef31461035a578063395093511461038257600080fd5b806323b872dd1161021457806323b872dd146102da5780632a7711fb146102ed5780632cd271e71461031b578063313ce5671461033057600080fd5b806306fdde0314610246578063095ea7b3146102645780630d76c6a41461028757806318160ddd146102aa575b600080fd5b61024e61059f565b60405161025b9190613fe0565b60405180910390f35b610277610272366004613f3c565b610631565b604051901515815260200161025b565b610277610295366004613dcc565b600c6020526000908152604090205460ff1681565b7f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161025b565b6102776102e8366004613e87565b610713565b6102776102fb366004613de8565b600d60209081526000928352604080842090915290825290205460ff1681565b61032e610329366004613dcc565b610a22565b005b6040516012815260200161025b565b61032e61034d366004613dcc565b610c53565b6102cc610d91565b610369670de0b6b3a764000081565b60405167ffffffffffffffff909116815260200161025b565b610277610390366004613f3c565b610da0565b61032e610f24565b6103c47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161025b565b60005460ff16610277565b610369610402366004613de8565b600960209081526000928352604080842090915290825290205467ffffffffffffffff1681565b61032e6110e6565b61032e61043f366004613e20565b611275565b6102cc610452366004613dcc565b611418565b61032e6114aa565b6102cc61046d366004613dcc565b61153b565b610277610480366004613dcc565b600a6020526000908152604090205460ff1681565b61032e6104a3366004613f3c565b611566565b61032e61187b565b600054610100900473ffffffffffffffffffffffffffffffffffffffff166103c4565b61024e611a3b565b6008546103c490610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61027761050e366004613f3c565b611a4a565b610277610521366004613f3c565b611bc5565b61032e611d5d565b60085461053b9060ff1681565b60405161025b9190613f9f565b60015473ffffffffffffffffffffffffffffffffffffffff166103c4565b61032e610574366004613ec7565b612025565b6102cc610587366004613de8565b612105565b61032e61059a366004613dcc565b612249565b6060600580546105ae9061414b565b80601f01602080910402602001604051908101604052809291908181526020018280546105da9061414b565b80156106275780601f106105fc57610100808354040283529160200191610627565b820191906000526020600020905b81548152906001019060200180831161060a57829003601f168201915b5050505050905090565b6000805460ff16156106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b6106af33848461237f565b50336000908152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b92915050565b6000805460ff1615610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161069b565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c6020526040902054849060ff166108105773ffffffffffffffffffffffffffffffffffffffff81166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556108108161080b81612532565b6127b9565b843373ffffffffffffffffffffffffffffffffffffffff8083166000908152600d602090815260408083209385168352929052205460ff166109665773ffffffffffffffffffffffffffffffffffffffff8281166000818152600d6020908152604080832086861680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526004810192909252602482015261096691849184917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e906044015b60206040518083038186803b15801561092957600080fd5b505afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109619190613f87565b61237f565b73ffffffffffffffffffffffffffffffffffffffff8616301415610a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f6e6f207472616e736665727320746f207468697320746f6b656e20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161069b565b610a178787876128d9565b979650505050505050565b600854610100900473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a7a575060015473ffffffffffffffffffffffffffffffffffffffff1633145b80610acd5750600054610100900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6f6e6c79207061757365722c206d6167652c206f72206f776e65720000000000604482015260640161069b565b73ffffffffffffffffffffffffffffffffffffffff8116610bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f7573652072656e6f756e63655061757365720000000000000000000000000000604482015260640161069b565b60085460405173ffffffffffffffffffffffffffffffffffffffff8381168252610100909204909116907f95bb211a5a393c4d30c3edc9a745825fba4e6ad3e3bb949e6bf8ccdfe431a8119060200160405180910390a26008805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff610100909104163314610cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069b565b610ce3816129bf565b8073ffffffffffffffffffffffffffffffffffffffff166396d373e56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b50505050610d4d60006129bf565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fe039b74be57483fdd56015b5720092dea2874e85f33906ddbc486455edd0458f90600090a250565b6000610d9b612a5a565b905090565b6000805460ff1615610e0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161069b565b336000818152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902054849060ff16610f115773ffffffffffffffffffffffffffffffffffffffff8281166000818152600d6020908152604080832086861680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517fdd62ed3e00000000000000000000000000000000000000000000000000000000815260048101929092526024820152610f1191849184917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90604401610911565b610f1b8585612b8e565b95945050505050565b600854610100900473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f7c575060015473ffffffffffffffffffffffffffffffffffffffff1633145b80610fcf5750600054610100900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6f6e6c79207061757365722c206d6167652c206f72206f776e65720000000000604482015260640161069b565b600160085460ff166001811115611075577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b146110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6f6e6c7920647572696e6720776f726b696e6720706861736500000000000000604482015260640161069b565b6110e4612bdb565b565b600854610100900473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061113e575060015473ffffffffffffffffffffffffffffffffffffffff1633145b806111915750600054610100900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6f6e6c79207061757365722c206d6167652c206f72206f776e65720000000000604482015260640161069b565b6008546040516000815261010090910473ffffffffffffffffffffffffffffffffffffffff16907f95bb211a5a393c4d30c3edc9a745825fba4e6ad3e3bb949e6bf8ccdfe431a8119060200160405180910390a2600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112f95750600054610100900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6f6e6c79206d616765206f72206f776e65720000000000000000000000000000604482015260640161069b565b600060085460ff16600181111561139f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c7920647572696e67207365747570207068617365000000000000000000604482015260640161069b565b61141284848484612cbc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600c602052604081205460ff16156114715773ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090205461070d565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114a083612532565b61070d9190614051565b60005473ffffffffffffffffffffffffffffffffffffffff610100909104163314611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069b565b6110e46000612fde565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205461070d565b600160085460ff1660018111156115a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1461160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6f6e6c7920647572696e6720776f726b696e6720706861736500000000000000604482015260640161069b565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff16611877575b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604081206116699061305b565b1180156116765750600081115b156118775773ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604081206116e5906001906116b09061305b565b6116ba919061410b565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600b6020526040902090613065565b73ffffffffffffffffffffffffffffffffffffffff81811660008181526009602090815260408083208986168452909152908190205490517f70a0823100000000000000000000000000000000000000000000000000000000815260048101929092529293506117fa928692670de0b6b3a76400009267ffffffffffffffff909216917f0000000000000000000000000000000000000000000000000000000000000000909116906370a082319060240160206040518083038186803b1580156117ae57600080fd5b505afa1580156117c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e69190613f87565b6117f091906140ce565b61080b9190614095565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600960209081526040808320938716835292815282822080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169055600b9052206118639082613071565b5061186f60018361410b565b91505061163b565b5050565b600854610100900473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118d3575060015473ffffffffffffffffffffffffffffffffffffffff1633145b806119265750600054610100900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6f6e6c79207061757365722c206d6167652c206f72206f776e65720000000000604482015260640161069b565b600160085460ff1660018111156119cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6f6e6c7920647572696e6720776f726b696e6720706861736500000000000000604482015260640161069b565b6110e4613093565b6060600680546105ae9061414b565b6000805460ff1615611ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161069b565b336000818152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902054849060ff16611bbb5773ffffffffffffffffffffffffffffffffffffffff8281166000818152600d6020908152604080832086861680855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517fdd62ed3e00000000000000000000000000000000000000000000000000000000815260048101929092526024820152611bbb91849184917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90604401610911565b610f1b8585613153565b6000805460ff1615611c33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161069b565b336000818152600c602052604090205460ff16611ca55773ffffffffffffffffffffffffffffffffffffffff81166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ca58161080b81612532565b73ffffffffffffffffffffffffffffffffffffffff8416301415611d4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f6e6f207472616e736665727320746f207468697320746f6b656e20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161069b565b611d55848461322b565b949350505050565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611de15750600054610100900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6f6e6c79206d616765206f72206f776e65720000000000000000000000000000604482015260640161069b565b600060085460ff166001811115611e87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c7920647572696e67207365747570207068617365000000000000000000604482015260640161069b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5457600080fd5b505afa158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190613f67565b611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f77616974696e6720666f72206f6c6452535220746f2070617573650000000000604482015260640161069b565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611531612bdb565b60005460ff1615612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161069b565b6120a187878787878787613238565b50505073ffffffffffffffffffffffffffffffffffffffff9384166000908152600d602090815260408083209590961682529390935250502080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600d6020908152604080832093851683529290529081205460ff161561217b575073ffffffffffffffffffffffffffffffffffffffff82811660009081526003602090815260408083209385168352929052205461070d565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e9060440160206040518083038186803b15801561220a57600080fd5b505afa15801561221e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122429190613f87565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146122d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069b565b73ffffffffffffffffffffffffffffffffffffffff8116612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161069b565b61237c81612fde565b50565b73ffffffffffffffffffffffffffffffffffffffff8316612421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161069b565b73ffffffffffffffffffffffffffffffffffffffff82166124c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161069b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604081205460ff16612621576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b1580156125e657600080fd5b505afa1580156125fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261e9190613f87565b90505b60005b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090206126529061305b565b8110156127b35773ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604081206126889083613065565b73ffffffffffffffffffffffffffffffffffffffff81811660008181526009602090815260408083208a86168452909152908190205490517f70a082310000000000000000000000000000000000000000000000000000000081526004810192909252929350670de0b6b3a76400009267ffffffffffffffff16917f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561274757600080fd5b505afa15801561275b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277f9190613f87565b61278991906140ce565b6127939190614095565b61279d9084614051565b92505080806127ab90614199565b915050612624565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8216612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161069b565b80600460008282546128489190614051565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604081208054839290612882908490614051565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006128e68484846133f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360209081526040808320338452909152902054828110156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161069b565b6129b4853385840361237f565b506001949350505050565b6001546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f016bc5bf5349a496f75fa2d563e0df9a39a655381c45148bdf8f1b6e6715e60a910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015612ac057507f000000000000000000000000000000000000000000000000000000000000000046145b15612aea57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091612bd2918590610961908690614051565b50600192915050565b60005460ff16612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161069b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604090205460ff16612da75773ffffffffffffffffffffffffffffffffffffffff84166000908152600b60205260409020612d1890856136aa565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600960209081526040808320825280832080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016670de0b6b3a7640000179055600a909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b73ffffffffffffffffffffffffffffffffffffffff80851660009081526009602090815260408083209387168352929052205467ffffffffffffffff9081169082161115612e51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f77656967687420746f6f20626967000000000000000000000000000000000000604482015260640161069b565b73ffffffffffffffffffffffffffffffffffffffff8416612ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f66726f6d2063616e6e6f74206265207a65726f20616464726573730000000000604482015260640161069b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260096020908152604080832093871683529290529081208054839290612f1c90849067ffffffffffffffff16614122565b82546101009290920a67ffffffffffffffff81810219909316918316021790915573ffffffffffffffffffffffffffffffffffffffff8681166000908152600960209081526040808320938816835292905290812080548594509092612f8491859116614069565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555073ffffffffffffffffffffffffffffffffffffffff82166000908152600b60205260409020612fd790856136aa565b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600061070d825490565b600061224283836136cc565b60006122428373ffffffffffffffffffffffffffffffffffffffff841661371d565b60005460ff1615613100576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161069b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c923390565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161069b565b613221338585840361237f565b5060019392505050565b6000612bd23384846133f7565b834211156132a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161069b565b60007f00000000000000000000000000000000000000000000000000000000000000008888886132d18c613885565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000613339826138b8565b9050600061334982878787613921565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146133e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161069b565b6133eb8a8a8a61237f565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661349a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161069b565b73ffffffffffffffffffffffffffffffffffffffff821661353d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161069b565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902054818110156135f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161069b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260026020526040808220858503905591851681529081208054849290613637908490614051565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161369d91815260200190565b60405180910390a3611412565b60006122428373ffffffffffffffffffffffffffffffffffffffff8416613949565b600082600001828154811061370a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b6000818152600183016020526040812054801561387b57600061374160018361410b565b85549091506000906137559060019061410b565b905081811461380857600086600001828154811061379c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050808760000184815481106137e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613840577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061070d565b600091505061070d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090208054600181018255906127b3565b600061070d6138c5612a5a565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061393287878787613998565b9150915061393f81613ab0565b5095945050505050565b60008181526001830160205260408120546139905750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561070d565b50600061070d565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156139cf5750600090506003613aa7565b8460ff16601b141580156139e757508460ff16601c14155b156139f85750600090506004613aa7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613a4c573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116613aa057600060019250925050613aa7565b9150600090505b94509492505050565b6000816004811115613aeb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613af45750565b6001816004811115613b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161069b565b6002816004811115613bd2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161069b565b6003816004811115613c75577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161069b565b6004816004811115613d3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b141561237c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161069b565b600060208284031215613ddd578081fd5b813561224281614201565b60008060408385031215613dfa578081fd5b8235613e0581614201565b91506020830135613e1581614201565b809150509250929050565b60008060008060808587031215613e35578182fd5b8435613e4081614201565b93506020850135613e5081614201565b92506040850135613e6081614201565b9150606085013567ffffffffffffffff81168114613e7c578182fd5b939692955090935050565b600080600060608486031215613e9b578283fd5b8335613ea681614201565b92506020840135613eb681614201565b929592945050506040919091013590565b600080600080600080600060e0888a031215613ee1578283fd5b8735613eec81614201565b96506020880135613efc81614201565b95506040880135945060608801359350608088013560ff81168114613f1f578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613f4e578182fd5b8235613f5981614201565b946020939093013593505050565b600060208284031215613f78578081fd5b81518015158114612242578182fd5b600060208284031215613f98578081fd5b5051919050565b6020810160028310613fda577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000602080835283518082850152825b8181101561400c57858101830151858201604001528201613ff0565b8181111561401d5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115614064576140646141d2565b500190565b600067ffffffffffffffff80831681851680830382111561408c5761408c6141d2565b01949350505050565b6000826140c9577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614106576141066141d2565b500290565b60008282101561411d5761411d6141d2565b500390565b600067ffffffffffffffff83811690831681811015614143576141436141d2565b039392505050565b600181811c9082168061415f57607f821691505b602082108114156127b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141cb576141cb6141d2565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461237c57600080fdfea264697066735822122068c2be641d8e88d5f357ab49c4e3a2959e7dad313a3ed098894d01fe671d16fa64736f6c634300080400330000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e8