0x60806040526004361061010c5760003560e01c806389112f2f1161009a578063a9059cbb11610061578063a9059cbb14610303578063bdae378f14610323578063dd62ed3e14610343578063ed0f826a14610389578063f2fde38b146103a957005b806389112f2f146102565780638da5cb5b146102765780638e9c66cb1461029e57806395d89b41146102ce578063a457c2d7146102e357005b8063313ce567116100de578063313ce567146101af57806339509351146101cb5780635a446215146101eb57806370a082311461020b578063715018a61461024157005b806306fdde0314610115578063095ea7b31461014057806318160ddd1461017057806323b872dd1461018f57005b3661011357005b005b34801561012157600080fd5b5061012a6103c9565b6040516101379190611290565b60405180910390f35b34801561014c57600080fd5b5061016061015b366004611106565b61045b565b6040519015158152602001610137565b34801561017c57600080fd5b506003545b604051908152602001610137565b34801561019b57600080fd5b506101606101aa3660046110c5565b610471565b3480156101bb57600080fd5b5060405160128152602001610137565b3480156101d757600080fd5b506101606101e6366004611106565b610522565b3480156101f757600080fd5b50610113610206366004611213565b61055e565b34801561021757600080fd5b50610181610226366004611031565b6001600160a01b031660009081526001602052604090205490565b34801561024d57600080fd5b50610113610592565b34801561026257600080fd5b50610113610271366004611131565b6105a6565b34801561028257600080fd5b506000546040516001600160a01b039091168152602001610137565b3480156102aa57600080fd5b506101606102b9366004611031565b60066020526000908152604090205460ff1681565b3480156102da57600080fd5b5061012a610623565b3480156102ef57600080fd5b506101606102fe366004611106565b610632565b34801561030f57600080fd5b5061016061031e366004611106565b6106cb565b34801561032f57600080fd5b5061011361033e3660046110d9565b6106d8565b34801561034f57600080fd5b5061018161035e36600461104d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561039557600080fd5b506101136103a4366004611085565b61070b565b3480156103b557600080fd5b506101136103c4366004611031565b6107d7565b6060600480546103d890611338565b80601f016020809104026020016040519081016040528092919081815260200182805461040490611338565b80156104515780601f1061042657610100808354040283529160200191610451565b820191906000526020600020905b81548152906001019060200180831161043457829003601f168201915b5050505050905090565b6000610468338484610850565b50600192915050565b600061047e848484610974565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156105085760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105158533858403610850565b60019150505b9392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104689185906105599086906112f4565b610850565b6105666109f5565b8151610579906004906020850190610f1d565b50805161058d906005906020840190610f1d565b505050565b61059a6109f5565b6105a46000610a4f565b565b6105ae6109f5565b60005b825181101561058d5781600660008584815181106105df57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061061b81611373565b9150506105b1565b6060600580546103d890611338565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156106b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104ff565b6106c13385858403610850565b5060019392505050565b6000610468338484610974565b6106e06109f5565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6107136109f5565b6001600160a01b0383166107c3576000826001600160a01b03166159d883604051600060405180830381858888f193505050503d8060008114610772576040519150601f19603f3d011682016040523d82523d6000602084013e610777565b606091505b50509050806107bd5760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c9155120819985a5b195960721b60448201526064016104ff565b50505050565b61058d6001600160a01b0384168383610a9f565b6107df6109f5565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ff565b61084d81610a4f565b50565b6001600160a01b0383166108b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ff565b6001600160a01b0382166109135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ff565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526006602052604090205460ff161580156109b657506001600160a01b03821660009081526006602052604090205460ff16155b6109ea5760405162461bcd60e51b8152602060048201526005602482015264189b1a5cdd60da1b60448201526064016104ff565b61058d838383610af1565b6000546001600160a01b031633146105a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ff565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261058d908490610cca565b80610afb57505050565b6001600160a01b038316610b5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ff565b6001600160a01b038216610bc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ff565b6001600160a01b03831660009081526001602052604090205481811015610c395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104ff565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610c709084906112f4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cbc91815260200190565b60405180910390a350505050565b6000610d1f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d9c9092919063ffffffff16565b80519091501561058d5780806020019051810190610d3d91906111f7565b61058d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104ff565b6060610dab8484600085610db3565b949350505050565b606082471015610e145760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104ff565b6001600160a01b0385163b610e6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104ff565b600080866001600160a01b03168587604051610e879190611274565b60006040518083038185875af1925050503d8060008114610ec4576040519150601f19603f3d011682016040523d82523d6000602084013e610ec9565b606091505b5091509150610ed9828286610ee4565b979650505050505050565b60608315610ef357508161051b565b825115610f035782518084602001fd5b8160405162461bcd60e51b81526004016104ff9190611290565b828054610f2990611338565b90600052602060002090601f016020900481019282610f4b5760008555610f91565b82601f10610f6457805160ff1916838001178555610f91565b82800160010185558215610f91579182015b82811115610f91578251825591602001919060010190610f76565b50610f9d929150610fa1565b5090565b5b80821115610f9d5760008155600101610fa2565b8035610fc1816113cf565b919050565b600082601f830112610fd6578081fd5b813567ffffffffffffffff811115610ff057610ff06113a4565b611003601f8201601f19166020016112c3565b818152846020838601011115611017578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611042578081fd5b813561051b816113ba565b6000806040838503121561105f578081fd5b823561106a816113ba565b9150602083013561107a816113ba565b809150509250929050565b600080600060608486031215611099578081fd5b83356110a4816113ba565b925060208401356110b4816113ba565b929592945050506040919091013590565b600080600060608486031215611099578283fd5b600080604083850312156110eb578182fd5b82356110f6816113ba565b9150602083013561107a816113cf565b60008060408385031215611118578182fd5b8235611123816113ba565b946020939093013593505050565b60008060408385031215611143578182fd5b823567ffffffffffffffff8082111561115a578384fd5b818501915085601f83011261116d578384fd5b8135602082821115611181576111816113a4565b8160051b92506111928184016112c3565b8281528181019085830185870184018b10156111ac578889fd5b8896505b848710156111da57803595506111c5866113ba565b858352600196909601959183019183016111b0565b5096506111ea9050878201610fb6565b9450505050509250929050565b600060208284031215611208578081fd5b815161051b816113cf565b60008060408385031215611225578182fd5b823567ffffffffffffffff8082111561123c578384fd5b61124886838701610fc6565b9350602085013591508082111561125d578283fd5b5061126a85828601610fc6565b9150509250929050565b6000825161128681846020870161130c565b9190910192915050565b60208152600082518060208401526112af81604085016020870161130c565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff811182821017156112ec576112ec6113a4565b604052919050565b600082198211156113075761130761138e565b500190565b60005b8381101561132757818101518382015260200161130f565b838111156107bd5750506000910152565b600181811c9082168061134c57607f821691505b6020821081141561136d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156113875761138761138e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461084d57600080fd5b801515811461084d57600080fdfea264697066735822122025f58f75b50e038b886711d4ff62adbb7e30fd7f9d61886985611081d1d1831064736f6c63430008040033
0x60806040523480156200001157600080fd5b506200001d33620000ab565b604080518082019091526005808252640a8e4c2e6d60db1b60209092019182526200004b91600491620001e3565b50604080518082019091526005808252640a8e4c2e6d60db1b6020909201918252620000789181620001e3565b50620000a573b8156f7fe2f2a9f600b78f18db2ea44e074bea786b1027e72f1f12813088000000620000fb565b620002eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001565760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600360008282546200016a919062000289565b90915550506001600160a01b038216600090815260016020526040812080548392906200019990849062000289565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001f190620002ae565b90600052602060002090601f01602090048101928262000215576000855562000260565b82601f106200023057805160ff191683800117855562000260565b8280016001018555821562000260579182015b828111156200026057825182559160200191906001019062000243565b506200026e92915062000272565b5090565b5b808211156200026e576000815560010162000273565b60008219821115620002a957634e487b7160e01b81526011600452602481fd5b500190565b600181811c90821680620002c357607f821691505b60208210811415620002e557634e487b7160e01b600052602260045260246000fd5b50919050565b61141380620002fb6000396000f3fe60806040526004361061010c5760003560e01c806389112f2f1161009a578063a9059cbb11610061578063a9059cbb14610303578063bdae378f14610323578063dd62ed3e14610343578063ed0f826a14610389578063f2fde38b146103a957005b806389112f2f146102565780638da5cb5b146102765780638e9c66cb1461029e57806395d89b41146102ce578063a457c2d7146102e357005b8063313ce567116100de578063313ce567146101af57806339509351146101cb5780635a446215146101eb57806370a082311461020b578063715018a61461024157005b806306fdde0314610115578063095ea7b31461014057806318160ddd1461017057806323b872dd1461018f57005b3661011357005b005b34801561012157600080fd5b5061012a6103c9565b6040516101379190611290565b60405180910390f35b34801561014c57600080fd5b5061016061015b366004611106565b61045b565b6040519015158152602001610137565b34801561017c57600080fd5b506003545b604051908152602001610137565b34801561019b57600080fd5b506101606101aa3660046110c5565b610471565b3480156101bb57600080fd5b5060405160128152602001610137565b3480156101d757600080fd5b506101606101e6366004611106565b610522565b3480156101f757600080fd5b50610113610206366004611213565b61055e565b34801561021757600080fd5b50610181610226366004611031565b6001600160a01b031660009081526001602052604090205490565b34801561024d57600080fd5b50610113610592565b34801561026257600080fd5b50610113610271366004611131565b6105a6565b34801561028257600080fd5b506000546040516001600160a01b039091168152602001610137565b3480156102aa57600080fd5b506101606102b9366004611031565b60066020526000908152604090205460ff1681565b3480156102da57600080fd5b5061012a610623565b3480156102ef57600080fd5b506101606102fe366004611106565b610632565b34801561030f57600080fd5b5061016061031e366004611106565b6106cb565b34801561032f57600080fd5b5061011361033e3660046110d9565b6106d8565b34801561034f57600080fd5b5061018161035e36600461104d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561039557600080fd5b506101136103a4366004611085565b61070b565b3480156103b557600080fd5b506101136103c4366004611031565b6107d7565b6060600480546103d890611338565b80601f016020809104026020016040519081016040528092919081815260200182805461040490611338565b80156104515780601f1061042657610100808354040283529160200191610451565b820191906000526020600020905b81548152906001019060200180831161043457829003601f168201915b5050505050905090565b6000610468338484610850565b50600192915050565b600061047e848484610974565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156105085760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105158533858403610850565b60019150505b9392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104689185906105599086906112f4565b610850565b6105666109f5565b8151610579906004906020850190610f1d565b50805161058d906005906020840190610f1d565b505050565b61059a6109f5565b6105a46000610a4f565b565b6105ae6109f5565b60005b825181101561058d5781600660008584815181106105df57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061061b81611373565b9150506105b1565b6060600580546103d890611338565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156106b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104ff565b6106c13385858403610850565b5060019392505050565b6000610468338484610974565b6106e06109f5565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6107136109f5565b6001600160a01b0383166107c3576000826001600160a01b03166159d883604051600060405180830381858888f193505050503d8060008114610772576040519150601f19603f3d011682016040523d82523d6000602084013e610777565b606091505b50509050806107bd5760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c9155120819985a5b195960721b60448201526064016104ff565b50505050565b61058d6001600160a01b0384168383610a9f565b6107df6109f5565b6001600160a01b0381166108445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ff565b61084d81610a4f565b50565b6001600160a01b0383166108b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ff565b6001600160a01b0382166109135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ff565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526006602052604090205460ff161580156109b657506001600160a01b03821660009081526006602052604090205460ff16155b6109ea5760405162461bcd60e51b8152602060048201526005602482015264189b1a5cdd60da1b60448201526064016104ff565b61058d838383610af1565b6000546001600160a01b031633146105a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ff565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261058d908490610cca565b80610afb57505050565b6001600160a01b038316610b5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ff565b6001600160a01b038216610bc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ff565b6001600160a01b03831660009081526001602052604090205481811015610c395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104ff565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610c709084906112f4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cbc91815260200190565b60405180910390a350505050565b6000610d1f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d9c9092919063ffffffff16565b80519091501561058d5780806020019051810190610d3d91906111f7565b61058d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104ff565b6060610dab8484600085610db3565b949350505050565b606082471015610e145760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104ff565b6001600160a01b0385163b610e6b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104ff565b600080866001600160a01b03168587604051610e879190611274565b60006040518083038185875af1925050503d8060008114610ec4576040519150601f19603f3d011682016040523d82523d6000602084013e610ec9565b606091505b5091509150610ed9828286610ee4565b979650505050505050565b60608315610ef357508161051b565b825115610f035782518084602001fd5b8160405162461bcd60e51b81526004016104ff9190611290565b828054610f2990611338565b90600052602060002090601f016020900481019282610f4b5760008555610f91565b82601f10610f6457805160ff1916838001178555610f91565b82800160010185558215610f91579182015b82811115610f91578251825591602001919060010190610f76565b50610f9d929150610fa1565b5090565b5b80821115610f9d5760008155600101610fa2565b8035610fc1816113cf565b919050565b600082601f830112610fd6578081fd5b813567ffffffffffffffff811115610ff057610ff06113a4565b611003601f8201601f19166020016112c3565b818152846020838601011115611017578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611042578081fd5b813561051b816113ba565b6000806040838503121561105f578081fd5b823561106a816113ba565b9150602083013561107a816113ba565b809150509250929050565b600080600060608486031215611099578081fd5b83356110a4816113ba565b925060208401356110b4816113ba565b929592945050506040919091013590565b600080600060608486031215611099578283fd5b600080604083850312156110eb578182fd5b82356110f6816113ba565b9150602083013561107a816113cf565b60008060408385031215611118578182fd5b8235611123816113ba565b946020939093013593505050565b60008060408385031215611143578182fd5b823567ffffffffffffffff8082111561115a578384fd5b818501915085601f83011261116d578384fd5b8135602082821115611181576111816113a4565b8160051b92506111928184016112c3565b8281528181019085830185870184018b10156111ac578889fd5b8896505b848710156111da57803595506111c5866113ba565b858352600196909601959183019183016111b0565b5096506111ea9050878201610fb6565b9450505050509250929050565b600060208284031215611208578081fd5b815161051b816113cf565b60008060408385031215611225578182fd5b823567ffffffffffffffff8082111561123c578384fd5b61124886838701610fc6565b9350602085013591508082111561125d578283fd5b5061126a85828601610fc6565b9150509250929050565b6000825161128681846020870161130c565b9190910192915050565b60208152600082518060208401526112af81604085016020870161130c565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff811182821017156112ec576112ec6113a4565b604052919050565b600082198211156113075761130761138e565b500190565b60005b8381101561132757818101518382015260200161130f565b838111156107bd5750506000910152565b600181811c9082168061134c57607f821691505b6020821081141561136d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156113875761138761138e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461084d57600080fd5b801515811461084d57600080fdfea264697066735822122025f58f75b50e038b886711d4ff62adbb7e30fd7f9d61886985611081d1d1831064736f6c63430008040033