0x608060405234801561001057600080fd5b50600436106103735760003560e01c80637ecebe00116101d3578063cd0d009611610104578063de02cde7116100a2578063e9e5d6d01161007c578063e9e5d6d0146108f1578063effae35314610904578063f8c2b77314610917578063ffffffff1461077b57600080fd5b8063de02cde71461088a578063de320cc11461089d578063dea587b0146108b057600080fd5b8063d95edafe116100de578063d95edafe14610823578063dc3bfba914610836578063dd46e85414610849578063dd62ed3e1461085157600080fd5b8063cd0d0096146107d6578063d1af0c7d146107fd578063d505accf1461081057600080fd5b806397ff6a0411610171578063a9059cbb1161014b578063a9059cbb1461078a578063ad82110f1461079d578063ae93c1b5146107b0578063ba3573b0146107c357600080fd5b806397ff6a0414610755578063a354f39e14610768578063a4f0d7d01461077b57600080fd5b80638cc96ac5116101ad5780638cc96ac51461071d5780639326295b1461073157806394b8e38f1461073a57806395d89b411461074d57600080fd5b80637ecebe00146106d75780638737a2dc146106f757806389afcb441461070a57600080fd5b806330adf81f116102ad5780635909c12f1161024b5780636a627842116102255780636a627842146106175780636ed3e3e31461062a57806370641a361461063e57806370a08231146106ae57600080fd5b80635909c12f146103785780635ba5e9f0146105f1578063687f0e4c1461060457600080fd5b806344faded01161028757806344faded0146105875780635001f3b51461059a57806354fd4d50146105c1578063559742d9146105de57600080fd5b806330adf81f14610539578063313ce567146105605780633644e5151461057f57600080fd5b806318160ddd1161031a578063243d6585116102f4578063243d6585146104bd57806326ae2b78146104d057806328c3b85c146105095780632d42cf7d1461052f57600080fd5b806318160ddd146104855780631e83409a1461049757806323b872dd146104aa57600080fd5b80630700037d116103565780630700037d146103e8578063095ea7b31461043c57806310ab94321461045f57806316f0115b1461047257600080fd5b8015610378578063068b8a801461039e57806306fdde03146103d3575b600080fd5b610380600081565b6040516001600160e01b031990911681526020015b60405180910390f35b600c546103bb90660100000000000090046001600160a01b031681565b6040516001600160a01b039091168152602001610395565b6103db61092a565b6040516103959190613d44565b61041c6103f63660046137a4565b600b602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610395565b61044f61044a3660046138cf565b6109b8565b6040519015158152602001610395565b61044f61046d3660046139fe565b6109cc565b600f546103bb906001600160a01b031681565b6001545b604051908152602001610395565b6104896104a53660046137a4565b610a00565b61044f6104b8366004613817565b610aa5565b6011546103bb906001600160a01b031681565b6009546104ec9063ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610395565b600c546105169060d01b81565b6040516001600160d01b03199091168152602001610395565b610537610ac5565b005b6104897f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60065461056d9060ff1681565b60405160ff9091168152602001610395565b610489610e07565b6105376105953660046139fe565b610e63565b6103bb7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b6040805180820190915260018152603160f81b60208201526103db565b6105376105ec3660046139e3565b610efd565b6103806105ff3660046139e3565b610f76565b6105376106123660046139fe565b610f9d565b6104896106253660046137a4565b610fff565b60115461051690600160a01b900460d01b81565b600a54610676906001600160801b03811690600160801b810463ffffffff1690600160a01b90046bffffffffffffffffffffffff1683565b604080516001600160801b03909416845263ffffffff90921660208401526bffffffffffffffffffffffff1690820152606001610395565b6104896106bc3660046137a4565b6001600160a01b031660009081526002602052604090205490565b6104896106e53660046137a4565b60076020526000908152604090205481565b610537610705366004613a6a565b611123565b6104896107183660046137a4565b61144a565b600f5461051690600160a01b900460d01b81565b61048960125481565b600d546103bb906001600160a01b031681565b6103db611507565b600e546103bb906001600160a01b031681565b610537610776366004613c30565b611514565b6103806001600160e01b031981565b61044f6107983660046138cf565b611766565b6105376107ab3660046138fb565b611773565b6105376107be366004613a1a565b61182f565b6104896107d13660046137a4565b61189c565b6104897f000000000000000000000000000000000000000000000000000000000000000181565b6008546103bb906001600160a01b031681565b61053761081e366004613858565b6119f3565b6105376108313660046137a4565b611c7d565b6010546103bb906001600160a01b031681565b610537611e19565b61048961085f3660046137de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6105376108983660046139fe565b611fe6565b6105376108ab3660046137a4565b612053565b6108d96108be3660046137a4565b6013602052600090815260409020546001600160801b031681565b6040516001600160801b039091168152602001610395565b6105376108ff366004613a4d565b612163565b6105376109123660046138fb565b6123ed565b610537610925366004613be0565b61247f565b6004805461093790613e7f565b80601f016020809104026020016040519081016040528092919081815260200182805461096390613e7f565b80156109b05780601f10610985576101008083540402835291602001916109b0565b820191906000526020600020905b81548152906001019060200180831161099357829003601f168201915b505050505081565b60006109c5338484612b6c565b9392505050565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915281205460ff166109c5565b6000610a0a612bd5565b610a1333612dbb565b336000908152600b6020526040902080546fffffffffffffffffffffffffffffffff191690556008546001600160801b03919091169150610a5e906001600160a01b03168383612f30565b604080516001600160a01b0384168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a1919050565b6000610ab18483613053565b50610abd8484846130fc565b949350505050565b601060009054906101000a90046001600160a01b03166001600160a01b031663204f83f96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1357600080fd5b505afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190613bc7565b4263ffffffff161015610ba55760405162461bcd60e51b815260206004820152601360248201527f4f6e6c79206166746572206d617475726974790000000000000000000000000060448201526064015b60405180910390fd5b600f546010546040516370a0823160e01b81523060048201526001600160a01b03928316929091169060009083906370a082319060240160206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190613bc7565b9050610c426001600160a01b0384168483612f30565b6040517fd7020d0a000000000000000000000000000000000000000000000000000000008152306004820181905260248201526000604482018190526000196064830152906001600160a01b0385169063d7020d0a90608401606060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190613c02565b9250610d069150506001600160a01b0384168483612f30565b6040517f1e9a6950000000000000000000000000000000000000000000000000000000008152306004820152602481018290526001600160a01b03841690631e9a695090604401602060405180830381600087803b158015610d6757600080fd5b505af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f9190613bc7565b506040516001600160a01b03851681527ffeba534d95469be2b9f083643be5f83b8ffd5aba9b64b79f3e71e51acd5c87a29060200160405180910390a15050600f8054601080546001600160a01b03191690556001600160d01b031916905550506000601255565b60007f00000000000000000000000000000000000000000000000000000000000000014614610e3e57610e3946613125565b905090565b507fc4edd7a5519862fd58009a548c9e745ea5cfbc50206d5fd30f944e0d55ceee4e90565b81610eb5610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b6001600160e01b03191660009081526020818152604080832033845290915290205460ff1690565b610eee5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610ef883836131d9565b505050565b80610f27610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b610f605760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610f72826001600160e01b031961326d565b5050565b6001600160e01b0319811660009081526020819052604081206001015460e01b5b92915050565b6001600160a01b0381163314610ff55760405162461bcd60e51b815260206004820152601660248201527f52656e6f756e6365206f6e6c7920666f722073656c66000000000000000000006044820152606401610b9c565b610f7282826131d9565b600f546000906001600160a01b031661105a5760405162461bcd60e51b815260206004820152601160248201527f506f6f6c206e6f742073656c65637465640000000000000000000000000000006044820152606401610b9c565b601254600f546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a082319060240160206040518083038186803b1580156110a557600080fd5b505afa1580156110b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dd9190613bc7565b6110e79190613e1b565b905081816001546110f89190613dd4565b6111029190613dc0565b925061110e8183613da8565b60125561111b8484613309565b505050919050565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166111855760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b816001600160a01b0316635001f3b56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f691906137c1565b6001600160a01b03167f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f6001600160a01b0316146112765760405162461bcd60e51b815260206004820152600f60248201527f4d69736d617463686564206261736500000000000000000000000000000000006044820152606401610b9c565b600e546040517f55d03e340000000000000000000000000000000000000000000000000000000081526001600160d01b0319831660048201526000916001600160a01b0316906355d03e349060240160606040518083038186803b1580156112dd57600080fd5b505afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190613b2c565b9050826001600160a01b031663dc3bfba96040518163ffffffff1660e01b815260040160206040518083038186803b15801561135057600080fd5b505afa158015611364573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138891906137c1565b6001600160a01b031681600001516001600160a01b0316146113ec5760405162461bcd60e51b815260206004820152601360248201527f4d69736d617463686564207365726965734964000000000000000000000000006044820152606401610b9c565b601180546001600160a01b0385166001600160d01b03199182168117600160a01b60d087901c021790925560405190841691907fa0868ad381d06fdaa9677c62624fe2c7bdcfb52ff9147345f2b1b691f3f5ec7d90600090a3505050565b600f546000906001600160a01b03166114a55760405162461bcd60e51b815260206004820152601160248201527f506f6f6c206e6f742073656c65637465640000000000000000000000000000006044820152606401610b9c565b601254306000908152600260205260409020546001546114c58284613dd4565b6114cf9190613dc0565b92506114db8383613e1b565b6012556114e83082613327565b50600f54611500906001600160a01b03168585612f30565b5050919050565b6005805461093790613e7f565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166115765760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b8163ffffffff168363ffffffff1611156115d25760405162461bcd60e51b815260206004820152600f60248201527f496e636f727265637420696e70757400000000000000000000000000000000006044820152606401610b9c565b6008546001600160a01b031661162a5760405162461bcd60e51b815260206004820152601560248201527f5265776172647320746f6b656e206e6f742073657400000000000000000000006044820152606401610b9c565b60095463ffffffff1661163c42613345565b63ffffffff16108061166b5750600954640100000000900463ffffffff1661166342613345565b63ffffffff16115b6116b75760405162461bcd60e51b815260206004820152600f60248201527f4f6e676f696e67207265776172647300000000000000000000000000000000006044820152606401610b9c565b6009805463ffffffff85811667ffffffffffffffff19909216821764010000000091861691820217909255600a80546001600160801b0316600160801b83026001600160a01b031617600160a01b6bffffffffffffffffffffffff861690810291909117909155604080519283526020830193909352918101919091527f95efd8a2a0aa591f48fd9673cf5d13c2150ca7a1fe1cbe438dd3f0ae470646639060600160405180910390a1505050565b60006109c53384846130fc565b60005b8251811015610ef8576117c1610e8d84838151811061179757611797613f0f565b60200260200101516001600160e01b03191660009081526020819052604090206001015460e01b90565b6117fa5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b61181d83828151811061180f5761180f613f0f565b6020026020010151836131d9565b8061182781613eb4565b915050611776565b81611859610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b6118925760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610ef8838361326d565b600f546000906001600160a01b0316156118e85760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b30600081815260026020526040908190205460015491516370a0823160e01b815260048101939093529182906001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f16906370a082319060240160206040518083038186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613bc7565b6119a29190613dd4565b6119ac9190613dc0565b91506119b83082613327565b506119ed6001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f168484612f30565b50919050565b42841015611a435760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610b9c565b6001600160a01b038716600090815260076020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611a9083613eb4565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000014614611b1b57611b1646613125565b611b3d565b7fc4edd7a5519862fd58009a548c9e745ea5cfbc50206d5fd30f944e0d55ceee4e5b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611be3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c195750896001600160a01b0316816001600160a01b0316145b611c655760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610b9c565b611c708a8a8a612b6c565b5050505050505050505050565b600f546001600160a01b031615611cc65760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff16611d285760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600d80546001600160a01b0319166001600160a01b038316908117909155604080516325ffda8160e21b81529051600092916397ff6a04916004808301926020929190829003018186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db791906137c1565b600e80546001600160a01b0319166001600160a01b0383811691821790925560408051928616835260208301919091529192507f2fe4e5ef899cc1bf6c10bd764667743de04f9dfe0ad51bbc956f4539b4f8a654910160405180910390a15050565b600f546001600160a01b031615611e625760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff16611ec45760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600d54600c546040517f60e0b63600000000000000000000000000000000000000000000000000000000815260d09190911b6001600160d01b03191660048201526001600160a01b03909116906360e0b6369060240160206040518083038186803b158015611f3257600080fd5b505afa158015611f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6a91906137c1565b600c80547fffffffffffff0000000000000000000000000000000000000000ffffffffffff1666010000000000006001600160a01b0393841681029190911791829055604051910490911681527f9261f5bf303fa2594f2b969e042420fc0125c062081305ab742561823f41c8f89060200160405180910390a1565b81612010610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b6120495760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610ef8838361338f565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166120b55760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b6008546001600160a01b03161561210e5760405162461bcd60e51b815260206004820152601960248201527f5265776172647320746f6b656e20616c726561647920736574000000000000006044820152606401610b9c565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f45a4cbe003c343d60028e5acd63eecf588647b0eb369733afa2c0482180d4f74906020015b60405180910390a150565b600f546001600160a01b0316156121ac5760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff1661220e5760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600d54604080516325ffda8160e21b815290516001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81169316916397ff6a04916004808301926020929190829003018186803b15801561227457600080fd5b505afa158015612288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ac91906137c1565b6040517f19be8d120000000000000000000000000000000000000000000000000000000081526001600160d01b0319841660048201526001600160a01b0391909116906319be8d129060240160206040518083038186803b15801561231057600080fd5b505afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234891906137c1565b6001600160a01b03161461239e5760405162461bcd60e51b815260206004820152601160248201527f4d69736d617463686564206261736549640000000000000000000000000000006044820152606401610b9c565b600c805465ffffffffffff191660d083901c1790556040516001600160d01b0319821681527fa5a662d5f3165a00b47bd97ea0424c19490c0f263661390c2ab7dcedfa1a17ce90602001612158565b60005b8251811015610ef857612411610e8d84838151811061179757611797613f0f565b61244a5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b61246d83828151811061245f5761245f613f0f565b60200260200101518361338f565b8061247781613eb4565b9150506123f0565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166124e15760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600f546001600160a01b03161561252a5760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b6011546001600160a01b0316806125835760405162461bcd60e51b815260206004820152601160248201527f4e65787420706f6f6c206e6f74207365740000000000000000000000000000006044820152606401610b9c565b60008190506000816001600160a01b031663dc3bfba96040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c357600080fd5b505afa1580156125d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fb91906137c1565b60118054600f8054601080546001600160a01b038781166001600160a01b03199092169190911790915565ffffffffffff600160a01b808604918216026001600160d01b03199384168a8416171790935592169092556040516370a0823160e01b815230600482015292935060d09190911b916000917f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f16906370a082319060240160206040518083038186803b1580156126b557600080fd5b505afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed9190613bc7565b90506000811161273f5760405162461bcd60e51b815260206004820152601660248201527f4e6f2066756e647320746f2073746172742077697468000000000000000000006044820152606401610b9c565b6040516370a0823160e01b81526001600160a01b0385811660048301526000917f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f909116906370a082319060240160206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190613bc7565b6040516370a0823160e01b81526001600160a01b0387811660048301529192506000918616906370a082319060240160206040518083038186803b15801561282457600080fd5b505afa158015612838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285c9190613bc7565b9050600061287d61286d8385613da8565b6128778587613dd4565b90613425565b9050600061288b8286613e1b565b600c549091506128d2906001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f811691660100000000000090041683612f30565b6010546040517fb64b80840000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018490529091169063b64b808490604401600060405180830381600087803b15801561293957600080fd5b505af115801561294d573d6000803e3d6000fd5b506129879250506001600160a01b037f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f1690508984612f30565b6040517fb3f1c93d00000000000000000000000000000000000000000000000000000000815230600482018190526024820152604481018c9052606481018b90526001600160a01b0389169063b3f1c93d90608401606060405180830381600087803b1580156129f657600080fd5b505af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190613c02565b6012555050600154612a4857612a4633601254613309565b505b6040517f9e1f907b0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015273ea3d459b61ed77447fade80e5a3de617e947aa1e90639e1f907b9060240160206040518083038186803b158015612ab457600080fd5b505af4158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec9190613b9e565b6001600160a01b03891660008181526013602090815260409182902080546fffffffffffffffffffffffffffffffff19166001600160801b039590951694909417909355519081527fbf392a2214e536eb932a25b4490f99634f238baedb37418c3fd6de8923c94133910160405180910390a15050505050505050505050565b6001600160a01b03838116600081815260036020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b60408051606081018252600a546001600160801b0381168252600160801b810463ffffffff908116602080850191909152600160a01b9092046bffffffffffffffffffffffff168385015283518085019094526009548082168086526401000000009091049091169184019190915260015491929190612c5442613345565b63ffffffff161015612c6557505050565b6000612c7d612c7342613345565b8460200151613468565b90506000846020015182612c919190613e32565b63ffffffff16905080612ca5575050505050565b8215612d1057612d048386604001516bffffffffffffffffffffffff1683670de0b6b3a7640000612cd69190613dd4565b612ce09190613dd4565b612cea9190613dc0565b8651612cff91906001600160801b0316613da8565b61348a565b6001600160801b031685525b63ffffffff8216602086018190528551600a80546040808a01516bffffffffffffffffffffffff16600160a01b026001600160a01b03600160801b9096026001600160a01b03199093166001600160801b03861617929092179490941617905590517fe972555b20cae8150e291bb40efce3ef4e3ed6b6b2c39c029346600e95469d4891612dac916001600160801b0391909116815260200190565b60405180910390a15050505050565b6001600160a01b0381166000908152600b602090815260408083208151808301835290546001600160801b038082168352600160801b9182900481168386019081528451606081018652600a5492831680825293830463ffffffff1696810196909652600160a01b9091046bffffffffffffffffffffffff16938501939093529151909291612ea391670de0b6b3a764000091612e589190613df3565b6001600160a01b038716600090815260026020526040902054612e84916001600160801b031690613dd4565b612e8e9190613dc0565b8351612cff91906001600160801b0316613da8565b6001600160801b0390811683528151811660208085019182526001600160a01b0387166000818152600b835260409081902087519451948616600160801b95909616948502861790558051918252918101939093528201527f5b9aaf4cc5141c090a75f8b8a627863eba92df81f0c83c096350da9b79aedd049060600160405180910390a1505192915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612fba9190613c8c565b6000604051808303816000865af19150503d8060008114612ff7576040519150601f19603f3d011682016040523d82523d6000602084013e612ffc565b606091505b509150915081801561302657508051158061302657508080602001905181019061302691906139c1565b61304c57613033816134d3565b60405162461bcd60e51b8152600401610b9c9190613d44565b5050505050565b60006001600160a01b03831633146130f3576001600160a01b038316600090815260036020908152604080832033845290915290205460001981146130f157828110156130e25760405162461bcd60e51b815260206004820152601c60248201527f45524332303a20496e73756666696369656e7420617070726f76616c000000006044820152606401610b9c565b6130ef8433858403612b6c565b505b505b50600192915050565b6000613106612bd5565b61310f84612dbb565b5061311983612dbb565b50610abd848484613532565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60046040516131579190613ca8565b60408051918290038220828201825260018352603160f81b602093840152815180840194909452838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606084015260808301949094523060a0808401919091528451808403909101815260c09092019093528051920191909120919050565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915290205460ff1615610f72576001600160e01b031982166000818152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339391927f4ddc7b757e7bdd7254a9cd39452d307a52761bc824625c6a33104a075d8099e691a45050565b6001600160e01b0319811661329e836001600160e01b03191660009081526020819052604090206001015460e01b90565b6001600160e01b03191614610f72576001600160e01b0319828116600081815260208190526040808220600101805463ffffffff191660e087901c17905551928416927fd348e2220a50b4500ec353f6e802d2f14dd1b5d6786148fd1bbcc570bf92d4739190a35050565b6000613313612bd5565b61331c83612dbb565b506109c58383613621565b6000613331612bd5565b61333a83612dbb565b506109c583836136ba565b600063ffffffff82111561338b5760405162461bcd60e51b815260206004820152600d60248201526c43617374206f766572666c6f7760981b6044820152606401610b9c565b5090565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915290205460ff16610f72576001600160e01b031982166000818152602081815260408083206001600160a01b0386168085529252808320805460ff1916600117905551339391927fe6231789d19137da31d0550f4ba9ee379020a8cfb64cb79bf1790c996d2e616591a45050565b60006134318284613ecf565b15613453576134408284613dc0565b61344b906001613da8565b905080613461565b61345d8284613dc0565b9050805b5092915050565b60008163ffffffff168363ffffffff161061348357816109c5565b5090919050565b60006001600160801b0382111561338b5760405162461bcd60e51b815260206004820152600d60248201526c43617374206f766572666c6f7760981b6044820152606401610b9c565b606060448251101561351857505060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015290565b60048201915081806020019051810190610f979190613a98565b6001600160a01b03831660009081526002602052604081205482111561359a5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e73756666696369656e742062616c616e636500000000006044820152606401610b9c565b6001600160a01b0380851660009081526002602052604080822080548690039055918516815220546135cd908390613da8565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bc39086815260200190565b6001600160a01b038216600090815260026020526040812054613645908390613da8565b6001600160a01b03841660009081526002602052604090205560015461366c908390613da8565b6001556040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350600192915050565b6001600160a01b0382166000908152600260205260408120548211156137225760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e73756666696369656e742062616c616e636500000000006044820152606401610b9c565b6001600160a01b038316600081815260026020908152604080832080548790039055600180548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016136a9565b803561378781613f3b565b919050565b80356001600160e01b03198116811461378757600080fd5b6000602082840312156137b657600080fd5b81356109c581613f3b565b6000602082840312156137d357600080fd5b81516109c581613f3b565b600080604083850312156137f157600080fd5b82356137fc81613f3b565b9150602083013561380c81613f3b565b809150509250929050565b60008060006060848603121561382c57600080fd5b833561383781613f3b565b9250602084013561384781613f3b565b929592945050506040919091013590565b600080600080600080600060e0888a03121561387357600080fd5b873561387e81613f3b565b9650602088013561388e81613f3b565b95506040880135945060608801359350608088013560ff811681146138b257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156138e257600080fd5b82356138ed81613f3b565b946020939093013593505050565b6000806040838503121561390e57600080fd5b823567ffffffffffffffff8082111561392657600080fd5b818501915085601f83011261393a57600080fd5b813560208282111561394e5761394e613f25565b8160051b925061395f818401613d77565b8281528181019085830185870184018b101561397a57600080fd5b600096505b848710156139a4576139908161378c565b83526001969096019591830191830161397f565b5096506139b4905087820161377c565b9450505050509250929050565b6000602082840312156139d357600080fd5b815180151581146109c557600080fd5b6000602082840312156139f557600080fd5b6109c58261378c565b60008060408385031215613a1157600080fd5b6137fc8361378c565b60008060408385031215613a2d57600080fd5b613a368361378c565b9150613a446020840161378c565b90509250929050565b600060208284031215613a5f57600080fd5b81356109c581613f53565b60008060408385031215613a7d57600080fd5b8235613a8881613f3b565b9150602083013561380c81613f53565b600060208284031215613aaa57600080fd5b815167ffffffffffffffff80821115613ac257600080fd5b818401915084601f830112613ad657600080fd5b815181811115613ae857613ae8613f25565b613afb601f8201601f1916602001613d77565b9150808252856020828501011115613b1257600080fd5b613b23816020840160208601613e4f565b50949350505050565b600060608284031215613b3e57600080fd5b6040516060810181811067ffffffffffffffff82111715613b6157613b61613f25565b6040528251613b6f81613f3b565b81526020830151613b7f81613f53565b60208201526040830151613b9281613f69565b60408201529392505050565b600060208284031215613bb057600080fd5b81516001600160801b03811681146109c557600080fd5b600060208284031215613bd957600080fd5b5051919050565b60008060408385031215613bf357600080fd5b50508035926020909101359150565b600080600060608486031215613c1757600080fd5b8351925060208401519150604084015190509250925092565b600080600060608486031215613c4557600080fd5b8335613c5081613f69565b92506020840135613c6081613f69565b915060408401356bffffffffffffffffffffffff81168114613c8157600080fd5b809150509250925092565b60008251613c9e818460208701613e4f565b9190910192915050565b600080835481600182811c915080831680613cc457607f831692505b6020808410821415613ce457634e487b7160e01b86526022600452602486fd5b818015613cf85760018114613d0957613d36565b60ff19861689528489019650613d36565b60008a81526020902060005b86811015613d2e5781548b820152908501908301613d15565b505084890196505b509498975050505050505050565b6020815260008251806020840152613d63816040850160208701613e4f565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613da057613da0613f25565b604052919050565b60008219821115613dbb57613dbb613ee3565b500190565b600082613dcf57613dcf613ef9565b500490565b6000816000190483118215151615613dee57613dee613ee3565b500290565b60006001600160801b0383811690831681811015613e1357613e13613ee3565b039392505050565b600082821015613e2d57613e2d613ee3565b500390565b600063ffffffff83811690831681811015613e1357613e13613ee3565b60005b83811015613e6a578181015183820152602001613e52565b83811115613e79576000848401525b50505050565b600181811c90821680613e9357607f821691505b602082108114156119ed57634e487b7160e01b600052602260045260246000fd5b6000600019821415613ec857613ec8613ee3565b5060010190565b600082613ede57613ede613ef9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114613f5057600080fd5b50565b6001600160d01b031981168114613f5057600080fd5b63ffffffff81168114613f5057600080fdfea2646970667358221220ecbf0c39e03806af5203d9fccdd201d323536355f0de4bb4cf3f1d2a1443262a64736f6c63430008060033
0x6101406040526003610100819052623f3f3f60e81b6101209081526200002991600491906200069b565b50604080518082019091526003808252623f3f3f60e81b602090920191825262000056916005916200069b565b506006805460ff191660121790557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96080523480156200009557600080fd5b5060405162004a4e38038062004a4e833981016040819052620000b8916200081f565b6040516323b95ceb60e21b81526001600160a01b0383166004820152859085907339bb9cbe0221d769e30bd08d185842065bce170690638ee573ac9060240160206040518083038186803b1580156200011057600080fd5b505af415801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b9190620008d7565b8282828282826200015e600033620004af565b620001726001600160e01b03198062000547565b8251620001879060049060208601906200069b565b5081516200019d9060059060208501906200069b565b506006805460ff191660ff9290921691909117905550504660c0819052620001c590620005e5565b60a08181525050505050505050816001600160a01b0316836001600160a01b03166397ff6a046040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021657600080fd5b505afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002519190620007f8565b604051630cdf468960e11b81526001600160d01b0319841660048201526001600160a01b0391909116906319be8d129060240160206040518083038186803b1580156200029d57600080fd5b505afa158015620002b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d89190620007f8565b6001600160a01b031614620003275760405162461bcd60e51b8152602060048201526011602482015270135a5cdb585d18da19590818985cd95259607a1b604482015260640160405180910390fd5b606082901b6001600160601b03191660e052600c805465ffffffffffff191660d083901c1790556040516330705b1b60e11b81526001600160d01b0319821660048201526001600160a01b038416906360e0b6369060240160206040518083038186803b1580156200039857600080fd5b505afa158015620003ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d39190620007f8565b600c8054600160301b600160d01b03191666010000000000006001600160a01b0393841602179055600d80546001600160a01b0319169185169182179055604080516325ffda8160e21b815290516397ff6a0491600480820192602092909190829003018186803b1580156200044857600080fd5b505afa1580156200045d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004839190620007f8565b600e80546001600160a01b0319166001600160a01b03929092169190911790555062000a0c9350505050565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915290205460ff1662000543576001600160e01b031982166000818152602081815260408083206001600160a01b0386168085529252808320805460ff1916600117905551339391927fe6231789d19137da31d0550f4ba9ee379020a8cfb64cb79bf1790c996d2e616591a45b5050565b6001600160e01b0319811662000579836001600160e01b03191660009081526020819052604090206001015460e01b90565b6001600160e01b0319161462000543576001600160e01b0319828116600081815260208190526040808220600101805463ffffffff191660e087901c17905551928416927fd348e2220a50b4500ec353f6e802d2f14dd1b5d6786148fd1bbcc570bf92d4739190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6004604051620006199190620008fc565b60408051918290038220828201825260018352603160f81b602093840152815180840194909452838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606084015260808301949094523060a0808401919091528451808403909101815260c09092019093528051920191909120919050565b828054620006a990620009a0565b90600052602060002090601f016020900481019282620006cd576000855562000718565b82601f10620006e857805160ff191683800117855562000718565b8280016001018555821562000718579182015b8281111562000718578251825591602001919060010190620006fb565b50620007269291506200072a565b5090565b5b808211156200072657600081556001016200072b565b600082601f8301126200075357600080fd5b81516001600160401b0380821115620007705762000770620009dd565b604051601f8301601f19908116603f011681019082821181831017156200079b576200079b620009dd565b81604052838152602092508683858801011115620007b857600080fd5b600091505b83821015620007dc5785820183015181830184015290820190620007bd565b83821115620007ee5760008385830101525b9695505050505050565b6000602082840312156200080b57600080fd5b81516200081881620009f3565b9392505050565b600080600080600060a086880312156200083857600080fd5b85516001600160401b03808211156200085057600080fd5b6200085e89838a0162000741565b965060208801519150808211156200087557600080fd5b50620008848882890162000741565b94505060408601516200089781620009f3565b6060870151909350620008aa81620009f3565b60808701519092506001600160d01b031981168114620008c957600080fd5b809150509295509295909350565b600060208284031215620008ea57600080fd5b815160ff811681146200081857600080fd5b600080835481600182811c9150808316806200091957607f831692505b60208084108214156200093a57634e487b7160e01b86526022600452602486fd5b818015620009515760018114620009635762000992565b60ff1986168952848901965062000992565b60008a81526020902060005b868110156200098a5781548b8201529085019083016200096f565b505084890196505b509498975050505050505050565b600181811c90821680620009b557607f821691505b60208210811415620009d757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000a0957600080fd5b50565b60805160a05160c05160e05160601c613fb162000a9d6000396000818161059f015281816112010152818161191e015281816119c60152818161222b01528181612673015281816127610152818161289f015261295e0152600081816107db01528181610e0b0152611ae8015260008181610e410152611b1d01526000818161053e0152611a5f0152613fb16000f3fe608060405234801561001057600080fd5b50600436106103735760003560e01c80637ecebe00116101d3578063cd0d009611610104578063de02cde7116100a2578063e9e5d6d01161007c578063e9e5d6d0146108f1578063effae35314610904578063f8c2b77314610917578063ffffffff1461077b57600080fd5b8063de02cde71461088a578063de320cc11461089d578063dea587b0146108b057600080fd5b8063d95edafe116100de578063d95edafe14610823578063dc3bfba914610836578063dd46e85414610849578063dd62ed3e1461085157600080fd5b8063cd0d0096146107d6578063d1af0c7d146107fd578063d505accf1461081057600080fd5b806397ff6a0411610171578063a9059cbb1161014b578063a9059cbb1461078a578063ad82110f1461079d578063ae93c1b5146107b0578063ba3573b0146107c357600080fd5b806397ff6a0414610755578063a354f39e14610768578063a4f0d7d01461077b57600080fd5b80638cc96ac5116101ad5780638cc96ac51461071d5780639326295b1461073157806394b8e38f1461073a57806395d89b411461074d57600080fd5b80637ecebe00146106d75780638737a2dc146106f757806389afcb441461070a57600080fd5b806330adf81f116102ad5780635909c12f1161024b5780636a627842116102255780636a627842146106175780636ed3e3e31461062a57806370641a361461063e57806370a08231146106ae57600080fd5b80635909c12f146103785780635ba5e9f0146105f1578063687f0e4c1461060457600080fd5b806344faded01161028757806344faded0146105875780635001f3b51461059a57806354fd4d50146105c1578063559742d9146105de57600080fd5b806330adf81f14610539578063313ce567146105605780633644e5151461057f57600080fd5b806318160ddd1161031a578063243d6585116102f4578063243d6585146104bd57806326ae2b78146104d057806328c3b85c146105095780632d42cf7d1461052f57600080fd5b806318160ddd146104855780631e83409a1461049757806323b872dd146104aa57600080fd5b80630700037d116103565780630700037d146103e8578063095ea7b31461043c57806310ab94321461045f57806316f0115b1461047257600080fd5b8015610378578063068b8a801461039e57806306fdde03146103d3575b600080fd5b610380600081565b6040516001600160e01b031990911681526020015b60405180910390f35b600c546103bb90660100000000000090046001600160a01b031681565b6040516001600160a01b039091168152602001610395565b6103db61092a565b6040516103959190613d44565b61041c6103f63660046137a4565b600b602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610395565b61044f61044a3660046138cf565b6109b8565b6040519015158152602001610395565b61044f61046d3660046139fe565b6109cc565b600f546103bb906001600160a01b031681565b6001545b604051908152602001610395565b6104896104a53660046137a4565b610a00565b61044f6104b8366004613817565b610aa5565b6011546103bb906001600160a01b031681565b6009546104ec9063ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610395565b600c546105169060d01b81565b6040516001600160d01b03199091168152602001610395565b610537610ac5565b005b6104897f000000000000000000000000000000000000000000000000000000000000000081565b60065461056d9060ff1681565b60405160ff9091168152602001610395565b610489610e07565b6105376105953660046139fe565b610e63565b6103bb7f000000000000000000000000000000000000000000000000000000000000000081565b6040805180820190915260018152603160f81b60208201526103db565b6105376105ec3660046139e3565b610efd565b6103806105ff3660046139e3565b610f76565b6105376106123660046139fe565b610f9d565b6104896106253660046137a4565b610fff565b60115461051690600160a01b900460d01b81565b600a54610676906001600160801b03811690600160801b810463ffffffff1690600160a01b90046bffffffffffffffffffffffff1683565b604080516001600160801b03909416845263ffffffff90921660208401526bffffffffffffffffffffffff1690820152606001610395565b6104896106bc3660046137a4565b6001600160a01b031660009081526002602052604090205490565b6104896106e53660046137a4565b60076020526000908152604090205481565b610537610705366004613a6a565b611123565b6104896107183660046137a4565b61144a565b600f5461051690600160a01b900460d01b81565b61048960125481565b600d546103bb906001600160a01b031681565b6103db611507565b600e546103bb906001600160a01b031681565b610537610776366004613c30565b611514565b6103806001600160e01b031981565b61044f6107983660046138cf565b611766565b6105376107ab3660046138fb565b611773565b6105376107be366004613a1a565b61182f565b6104896107d13660046137a4565b61189c565b6104897f000000000000000000000000000000000000000000000000000000000000000081565b6008546103bb906001600160a01b031681565b61053761081e366004613858565b6119f3565b6105376108313660046137a4565b611c7d565b6010546103bb906001600160a01b031681565b610537611e19565b61048961085f3660046137de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6105376108983660046139fe565b611fe6565b6105376108ab3660046137a4565b612053565b6108d96108be3660046137a4565b6013602052600090815260409020546001600160801b031681565b6040516001600160801b039091168152602001610395565b6105376108ff366004613a4d565b612163565b6105376109123660046138fb565b6123ed565b610537610925366004613be0565b61247f565b6004805461093790613e7f565b80601f016020809104026020016040519081016040528092919081815260200182805461096390613e7f565b80156109b05780601f10610985576101008083540402835291602001916109b0565b820191906000526020600020905b81548152906001019060200180831161099357829003601f168201915b505050505081565b60006109c5338484612b6c565b9392505050565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915281205460ff166109c5565b6000610a0a612bd5565b610a1333612dbb565b336000908152600b6020526040902080546fffffffffffffffffffffffffffffffff191690556008546001600160801b03919091169150610a5e906001600160a01b03168383612f30565b604080516001600160a01b0384168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a1919050565b6000610ab18483613053565b50610abd8484846130fc565b949350505050565b601060009054906101000a90046001600160a01b03166001600160a01b031663204f83f96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1357600080fd5b505afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190613bc7565b4263ffffffff161015610ba55760405162461bcd60e51b815260206004820152601360248201527f4f6e6c79206166746572206d617475726974790000000000000000000000000060448201526064015b60405180910390fd5b600f546010546040516370a0823160e01b81523060048201526001600160a01b03928316929091169060009083906370a082319060240160206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190613bc7565b9050610c426001600160a01b0384168483612f30565b6040517fd7020d0a000000000000000000000000000000000000000000000000000000008152306004820181905260248201526000604482018190526000196064830152906001600160a01b0385169063d7020d0a90608401606060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190613c02565b9250610d069150506001600160a01b0384168483612f30565b6040517f1e9a6950000000000000000000000000000000000000000000000000000000008152306004820152602481018290526001600160a01b03841690631e9a695090604401602060405180830381600087803b158015610d6757600080fd5b505af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f9190613bc7565b506040516001600160a01b03851681527ffeba534d95469be2b9f083643be5f83b8ffd5aba9b64b79f3e71e51acd5c87a29060200160405180910390a15050600f8054601080546001600160a01b03191690556001600160d01b031916905550506000601255565b60007f00000000000000000000000000000000000000000000000000000000000000004614610e3e57610e3946613125565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b81610eb5610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b6001600160e01b03191660009081526020818152604080832033845290915290205460ff1690565b610eee5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610ef883836131d9565b505050565b80610f27610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b610f605760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610f72826001600160e01b031961326d565b5050565b6001600160e01b0319811660009081526020819052604081206001015460e01b5b92915050565b6001600160a01b0381163314610ff55760405162461bcd60e51b815260206004820152601660248201527f52656e6f756e6365206f6e6c7920666f722073656c66000000000000000000006044820152606401610b9c565b610f7282826131d9565b600f546000906001600160a01b031661105a5760405162461bcd60e51b815260206004820152601160248201527f506f6f6c206e6f742073656c65637465640000000000000000000000000000006044820152606401610b9c565b601254600f546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a082319060240160206040518083038186803b1580156110a557600080fd5b505afa1580156110b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dd9190613bc7565b6110e79190613e1b565b905081816001546110f89190613dd4565b6111029190613dc0565b925061110e8183613da8565b60125561111b8484613309565b505050919050565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166111855760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b816001600160a01b0316635001f3b56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f691906137c1565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146112765760405162461bcd60e51b815260206004820152600f60248201527f4d69736d617463686564206261736500000000000000000000000000000000006044820152606401610b9c565b600e546040517f55d03e340000000000000000000000000000000000000000000000000000000081526001600160d01b0319831660048201526000916001600160a01b0316906355d03e349060240160606040518083038186803b1580156112dd57600080fd5b505afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190613b2c565b9050826001600160a01b031663dc3bfba96040518163ffffffff1660e01b815260040160206040518083038186803b15801561135057600080fd5b505afa158015611364573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138891906137c1565b6001600160a01b031681600001516001600160a01b0316146113ec5760405162461bcd60e51b815260206004820152601360248201527f4d69736d617463686564207365726965734964000000000000000000000000006044820152606401610b9c565b601180546001600160a01b0385166001600160d01b03199182168117600160a01b60d087901c021790925560405190841691907fa0868ad381d06fdaa9677c62624fe2c7bdcfb52ff9147345f2b1b691f3f5ec7d90600090a3505050565b600f546000906001600160a01b03166114a55760405162461bcd60e51b815260206004820152601160248201527f506f6f6c206e6f742073656c65637465640000000000000000000000000000006044820152606401610b9c565b601254306000908152600260205260409020546001546114c58284613dd4565b6114cf9190613dc0565b92506114db8383613e1b565b6012556114e83082613327565b50600f54611500906001600160a01b03168585612f30565b5050919050565b6005805461093790613e7f565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166115765760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b8163ffffffff168363ffffffff1611156115d25760405162461bcd60e51b815260206004820152600f60248201527f496e636f727265637420696e70757400000000000000000000000000000000006044820152606401610b9c565b6008546001600160a01b031661162a5760405162461bcd60e51b815260206004820152601560248201527f5265776172647320746f6b656e206e6f742073657400000000000000000000006044820152606401610b9c565b60095463ffffffff1661163c42613345565b63ffffffff16108061166b5750600954640100000000900463ffffffff1661166342613345565b63ffffffff16115b6116b75760405162461bcd60e51b815260206004820152600f60248201527f4f6e676f696e67207265776172647300000000000000000000000000000000006044820152606401610b9c565b6009805463ffffffff85811667ffffffffffffffff19909216821764010000000091861691820217909255600a80546001600160801b0316600160801b83026001600160a01b031617600160a01b6bffffffffffffffffffffffff861690810291909117909155604080519283526020830193909352918101919091527f95efd8a2a0aa591f48fd9673cf5d13c2150ca7a1fe1cbe438dd3f0ae470646639060600160405180910390a1505050565b60006109c53384846130fc565b60005b8251811015610ef8576117c1610e8d84838151811061179757611797613f0f565b60200260200101516001600160e01b03191660009081526020819052604090206001015460e01b90565b6117fa5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b61181d83828151811061180f5761180f613f0f565b6020026020010151836131d9565b8061182781613eb4565b915050611776565b81611859610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b6118925760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610ef8838361326d565b600f546000906001600160a01b0316156118e85760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b30600081815260026020526040908190205460015491516370a0823160e01b815260048101939093529182906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613bc7565b6119a29190613dd4565b6119ac9190613dc0565b91506119b83082613327565b506119ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484612f30565b50919050565b42841015611a435760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610b9c565b6001600160a01b038716600090815260076020526040812080547f0000000000000000000000000000000000000000000000000000000000000000918a918a918a919086611a9083613eb4565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000004614611b1b57611b1646613125565b611b3d565b7f00000000000000000000000000000000000000000000000000000000000000005b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611be3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c195750896001600160a01b0316816001600160a01b0316145b611c655760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610b9c565b611c708a8a8a612b6c565b5050505050505050505050565b600f546001600160a01b031615611cc65760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff16611d285760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600d80546001600160a01b0319166001600160a01b038316908117909155604080516325ffda8160e21b81529051600092916397ff6a04916004808301926020929190829003018186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db791906137c1565b600e80546001600160a01b0319166001600160a01b0383811691821790925560408051928616835260208301919091529192507f2fe4e5ef899cc1bf6c10bd764667743de04f9dfe0ad51bbc956f4539b4f8a654910160405180910390a15050565b600f546001600160a01b031615611e625760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff16611ec45760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600d54600c546040517f60e0b63600000000000000000000000000000000000000000000000000000000815260d09190911b6001600160d01b03191660048201526001600160a01b03909116906360e0b6369060240160206040518083038186803b158015611f3257600080fd5b505afa158015611f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6a91906137c1565b600c80547fffffffffffff0000000000000000000000000000000000000000ffffffffffff1666010000000000006001600160a01b0393841681029190911791829055604051910490911681527f9261f5bf303fa2594f2b969e042420fc0125c062081305ab742561823f41c8f89060200160405180910390a1565b81612010610e8d826001600160e01b03191660009081526020819052604090206001015460e01b90565b6120495760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b610ef8838361338f565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166120b55760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b6008546001600160a01b03161561210e5760405162461bcd60e51b815260206004820152601960248201527f5265776172647320746f6b656e20616c726561647920736574000000000000006044820152606401610b9c565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f45a4cbe003c343d60028e5acd63eecf588647b0eb369733afa2c0482180d4f74906020015b60405180910390a150565b600f546001600160a01b0316156121ac5760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff1661220e5760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600d54604080516325ffda8160e21b815290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169316916397ff6a04916004808301926020929190829003018186803b15801561227457600080fd5b505afa158015612288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ac91906137c1565b6040517f19be8d120000000000000000000000000000000000000000000000000000000081526001600160d01b0319841660048201526001600160a01b0391909116906319be8d129060240160206040518083038186803b15801561231057600080fd5b505afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234891906137c1565b6001600160a01b03161461239e5760405162461bcd60e51b815260206004820152601160248201527f4d69736d617463686564206261736549640000000000000000000000000000006044820152606401610b9c565b600c805465ffffffffffff191660d083901c1790556040516001600160d01b0319821681527fa5a662d5f3165a00b47bd97ea0424c19490c0f263661390c2ab7dcedfa1a17ce90602001612158565b60005b8251811015610ef857612411610e8d84838151811061179757611797613f0f565b61244a5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9030b236b4b760b11b6044820152606401610b9c565b61246d83828151811061245f5761245f613f0f565b60200260200101518361338f565b8061247781613eb4565b9150506123f0565b600080356001600160e01b03191681526020818152604080832033845290915290205460ff166124e15760405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b6044820152606401610b9c565b600f546001600160a01b03161561252a5760405162461bcd60e51b815260206004820152600d60248201526c141bdbdb081cd95b1958dd1959609a1b6044820152606401610b9c565b6011546001600160a01b0316806125835760405162461bcd60e51b815260206004820152601160248201527f4e65787420706f6f6c206e6f74207365740000000000000000000000000000006044820152606401610b9c565b60008190506000816001600160a01b031663dc3bfba96040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c357600080fd5b505afa1580156125d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fb91906137c1565b60118054600f8054601080546001600160a01b038781166001600160a01b03199092169190911790915565ffffffffffff600160a01b808604918216026001600160d01b03199384168a8416171790935592169092556040516370a0823160e01b815230600482015292935060d09190911b916000917f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b1580156126b557600080fd5b505afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed9190613bc7565b90506000811161273f5760405162461bcd60e51b815260206004820152601660248201527f4e6f2066756e647320746f2073746172742077697468000000000000000000006044820152606401610b9c565b6040516370a0823160e01b81526001600160a01b0385811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a082319060240160206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190613bc7565b6040516370a0823160e01b81526001600160a01b0387811660048301529192506000918616906370a082319060240160206040518083038186803b15801561282457600080fd5b505afa158015612838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285c9190613bc7565b9050600061287d61286d8385613da8565b6128778587613dd4565b90613425565b9050600061288b8286613e1b565b600c549091506128d2906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691660100000000000090041683612f30565b6010546040517fb64b80840000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018490529091169063b64b808490604401600060405180830381600087803b15801561293957600080fd5b505af115801561294d573d6000803e3d6000fd5b506129879250506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690508984612f30565b6040517fb3f1c93d00000000000000000000000000000000000000000000000000000000815230600482018190526024820152604481018c9052606481018b90526001600160a01b0389169063b3f1c93d90608401606060405180830381600087803b1580156129f657600080fd5b505af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190613c02565b6012555050600154612a4857612a4633601254613309565b505b6040517f9e1f907b0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015273ea3d459b61ed77447fade80e5a3de617e947aa1e90639e1f907b9060240160206040518083038186803b158015612ab457600080fd5b505af4158015612ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aec9190613b9e565b6001600160a01b03891660008181526013602090815260409182902080546fffffffffffffffffffffffffffffffff19166001600160801b039590951694909417909355519081527fbf392a2214e536eb932a25b4490f99634f238baedb37418c3fd6de8923c94133910160405180910390a15050505050505050505050565b6001600160a01b03838116600081815260036020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b60408051606081018252600a546001600160801b0381168252600160801b810463ffffffff908116602080850191909152600160a01b9092046bffffffffffffffffffffffff168385015283518085019094526009548082168086526401000000009091049091169184019190915260015491929190612c5442613345565b63ffffffff161015612c6557505050565b6000612c7d612c7342613345565b8460200151613468565b90506000846020015182612c919190613e32565b63ffffffff16905080612ca5575050505050565b8215612d1057612d048386604001516bffffffffffffffffffffffff1683670de0b6b3a7640000612cd69190613dd4565b612ce09190613dd4565b612cea9190613dc0565b8651612cff91906001600160801b0316613da8565b61348a565b6001600160801b031685525b63ffffffff8216602086018190528551600a80546040808a01516bffffffffffffffffffffffff16600160a01b026001600160a01b03600160801b9096026001600160a01b03199093166001600160801b03861617929092179490941617905590517fe972555b20cae8150e291bb40efce3ef4e3ed6b6b2c39c029346600e95469d4891612dac916001600160801b0391909116815260200190565b60405180910390a15050505050565b6001600160a01b0381166000908152600b602090815260408083208151808301835290546001600160801b038082168352600160801b9182900481168386019081528451606081018652600a5492831680825293830463ffffffff1696810196909652600160a01b9091046bffffffffffffffffffffffff16938501939093529151909291612ea391670de0b6b3a764000091612e589190613df3565b6001600160a01b038716600090815260026020526040902054612e84916001600160801b031690613dd4565b612e8e9190613dc0565b8351612cff91906001600160801b0316613da8565b6001600160801b0390811683528151811660208085019182526001600160a01b0387166000818152600b835260409081902087519451948616600160801b95909616948502861790558051918252918101939093528201527f5b9aaf4cc5141c090a75f8b8a627863eba92df81f0c83c096350da9b79aedd049060600160405180910390a1505192915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612fba9190613c8c565b6000604051808303816000865af19150503d8060008114612ff7576040519150601f19603f3d011682016040523d82523d6000602084013e612ffc565b606091505b509150915081801561302657508051158061302657508080602001905181019061302691906139c1565b61304c57613033816134d3565b60405162461bcd60e51b8152600401610b9c9190613d44565b5050505050565b60006001600160a01b03831633146130f3576001600160a01b038316600090815260036020908152604080832033845290915290205460001981146130f157828110156130e25760405162461bcd60e51b815260206004820152601c60248201527f45524332303a20496e73756666696369656e7420617070726f76616c000000006044820152606401610b9c565b6130ef8433858403612b6c565b505b505b50600192915050565b6000613106612bd5565b61310f84612dbb565b5061311983612dbb565b50610abd848484613532565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60046040516131579190613ca8565b60408051918290038220828201825260018352603160f81b602093840152815180840194909452838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606084015260808301949094523060a0808401919091528451808403909101815260c09092019093528051920191909120919050565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915290205460ff1615610f72576001600160e01b031982166000818152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339391927f4ddc7b757e7bdd7254a9cd39452d307a52761bc824625c6a33104a075d8099e691a45050565b6001600160e01b0319811661329e836001600160e01b03191660009081526020819052604090206001015460e01b90565b6001600160e01b03191614610f72576001600160e01b0319828116600081815260208190526040808220600101805463ffffffff191660e087901c17905551928416927fd348e2220a50b4500ec353f6e802d2f14dd1b5d6786148fd1bbcc570bf92d4739190a35050565b6000613313612bd5565b61331c83612dbb565b506109c58383613621565b6000613331612bd5565b61333a83612dbb565b506109c583836136ba565b600063ffffffff82111561338b5760405162461bcd60e51b815260206004820152600d60248201526c43617374206f766572666c6f7760981b6044820152606401610b9c565b5090565b6001600160e01b031982166000908152602081815260408083206001600160a01b038516845290915290205460ff16610f72576001600160e01b031982166000818152602081815260408083206001600160a01b0386168085529252808320805460ff1916600117905551339391927fe6231789d19137da31d0550f4ba9ee379020a8cfb64cb79bf1790c996d2e616591a45050565b60006134318284613ecf565b15613453576134408284613dc0565b61344b906001613da8565b905080613461565b61345d8284613dc0565b9050805b5092915050565b60008163ffffffff168363ffffffff161061348357816109c5565b5090919050565b60006001600160801b0382111561338b5760405162461bcd60e51b815260206004820152600d60248201526c43617374206f766572666c6f7760981b6044820152606401610b9c565b606060448251101561351857505060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015290565b60048201915081806020019051810190610f979190613a98565b6001600160a01b03831660009081526002602052604081205482111561359a5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e73756666696369656e742062616c616e636500000000006044820152606401610b9c565b6001600160a01b0380851660009081526002602052604080822080548690039055918516815220546135cd908390613da8565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bc39086815260200190565b6001600160a01b038216600090815260026020526040812054613645908390613da8565b6001600160a01b03841660009081526002602052604090205560015461366c908390613da8565b6001556040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350600192915050565b6001600160a01b0382166000908152600260205260408120548211156137225760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e73756666696369656e742062616c616e636500000000006044820152606401610b9c565b6001600160a01b038316600081815260026020908152604080832080548790039055600180548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016136a9565b803561378781613f3b565b919050565b80356001600160e01b03198116811461378757600080fd5b6000602082840312156137b657600080fd5b81356109c581613f3b565b6000602082840312156137d357600080fd5b81516109c581613f3b565b600080604083850312156137f157600080fd5b82356137fc81613f3b565b9150602083013561380c81613f3b565b809150509250929050565b60008060006060848603121561382c57600080fd5b833561383781613f3b565b9250602084013561384781613f3b565b929592945050506040919091013590565b600080600080600080600060e0888a03121561387357600080fd5b873561387e81613f3b565b9650602088013561388e81613f3b565b95506040880135945060608801359350608088013560ff811681146138b257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156138e257600080fd5b82356138ed81613f3b565b946020939093013593505050565b6000806040838503121561390e57600080fd5b823567ffffffffffffffff8082111561392657600080fd5b818501915085601f83011261393a57600080fd5b813560208282111561394e5761394e613f25565b8160051b925061395f818401613d77565b8281528181019085830185870184018b101561397a57600080fd5b600096505b848710156139a4576139908161378c565b83526001969096019591830191830161397f565b5096506139b4905087820161377c565b9450505050509250929050565b6000602082840312156139d357600080fd5b815180151581146109c557600080fd5b6000602082840312156139f557600080fd5b6109c58261378c565b60008060408385031215613a1157600080fd5b6137fc8361378c565b60008060408385031215613a2d57600080fd5b613a368361378c565b9150613a446020840161378c565b90509250929050565b600060208284031215613a5f57600080fd5b81356109c581613f53565b60008060408385031215613a7d57600080fd5b8235613a8881613f3b565b9150602083013561380c81613f53565b600060208284031215613aaa57600080fd5b815167ffffffffffffffff80821115613ac257600080fd5b818401915084601f830112613ad657600080fd5b815181811115613ae857613ae8613f25565b613afb601f8201601f1916602001613d77565b9150808252856020828501011115613b1257600080fd5b613b23816020840160208601613e4f565b50949350505050565b600060608284031215613b3e57600080fd5b6040516060810181811067ffffffffffffffff82111715613b6157613b61613f25565b6040528251613b6f81613f3b565b81526020830151613b7f81613f53565b60208201526040830151613b9281613f69565b60408201529392505050565b600060208284031215613bb057600080fd5b81516001600160801b03811681146109c557600080fd5b600060208284031215613bd957600080fd5b5051919050565b60008060408385031215613bf357600080fd5b50508035926020909101359150565b600080600060608486031215613c1757600080fd5b8351925060208401519150604084015190509250925092565b600080600060608486031215613c4557600080fd5b8335613c5081613f69565b92506020840135613c6081613f69565b915060408401356bffffffffffffffffffffffff81168114613c8157600080fd5b809150509250925092565b60008251613c9e818460208701613e4f565b9190910192915050565b600080835481600182811c915080831680613cc457607f831692505b6020808410821415613ce457634e487b7160e01b86526022600452602486fd5b818015613cf85760018114613d0957613d36565b60ff19861689528489019650613d36565b60008a81526020902060005b86811015613d2e5781548b820152908501908301613d15565b505084890196505b509498975050505050505050565b6020815260008251806020840152613d63816040850160208701613e4f565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613da057613da0613f25565b604052919050565b60008219821115613dbb57613dbb613ee3565b500190565b600082613dcf57613dcf613ef9565b500490565b6000816000190483118215151615613dee57613dee613ee3565b500290565b60006001600160801b0383811690831681811015613e1357613e13613ee3565b039392505050565b600082821015613e2d57613e2d613ee3565b500390565b600063ffffffff83811690831681811015613e1357613e13613ee3565b60005b83811015613e6a578181015183820152602001613e52565b83811115613e79576000848401525b50505050565b600181811c90821680613e9357607f821691505b602082108114156119ed57634e487b7160e01b600052602260045260246000fd5b6000600019821415613ec857613ec8613ee3565b5060010190565b600082613ede57613ede613ef9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114613f5057600080fd5b50565b6001600160d01b031981168114613f5057600080fd5b63ffffffff81168114613f5057600080fdfea2646970667358221220ecbf0c39e03806af5203d9fccdd201d323536355f0de4bb4cf3f1d2a1443262a64736f6c6343000806003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000006cb18ff2a33e981d1e38a663ca056c0a5265066a0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f3031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d5969656c642053747261746567792044414920364d204a756e2044656300000000000000000000000000000000000000000000000000000000000000000000095953444149364d4a440000000000000000000000000000000000000000000000