0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350611285806100616000396000f3fe6080604052600436106100405760003560e01c80638da5cb5b14610049578063a7229fd914610076578063d6eef240146100a6578063e72c5717146100b957005b3661004757005b005b34801561005557600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b34801561008257600080fd5b50610096610091366004610f3c565b6100d9565b604051901515815260200161006d565b6100476100b4366004610f78565b61014e565b3480156100c557600080fd5b506100966100d4366004610fdb565b610484565b600080546001600160a01b031633146101395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610144848484610561565b5060019392505050565b81156101a3574382146101a35760405162461bcd60e51b815260206004820152601d60248201527f5a65726f426c6f636b3a204e6f7420612074617267657420626c6f636b0000006044820152606401610130565b82156102615760408051600080825260208201909252419085906040516101ca9190611029565b60006040518083038185875af1925050503d8060008114610207576040519150601f19603f3d011682016040523d82523d6000602084013e61020c565b606091505b5050809150508061025f5760405162461bcd60e51b815260206004820152601a60248201527f5a65726f426c6f636b3a205469702073656e64206661696c65640000000000006044820152606401610130565b505b6000610296735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28a610661565b90506000806102b18a846102aa893461105b565b8a8c61073a565b6040516370a0823160e01b81526001600160a01b0387811660048301529294509092506000918c16906370a0823190602401602060405180830381865afa158015610300573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610324919061106e565b905060008073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0386161461035557836000610359565b6000845b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b0387169063022c0d9f9061039d90859085908c9060248101611087565b600060405180830381600087803b1580156103b757600080fd5b505af11580156103cb573d6000803e3d6000fd5b505050508b838e6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040161040c91906001600160a01b0391909116815260200190565b602060405180830381865afa158015610429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044d919061106e565b610457919061105b565b10156104755760405162461bcd60e51b8152600401610130906110d7565b50505050505050505050505050565b600080546001600160a01b031633146104df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610130565b6040516000906001600160a01b0385169084156108fc0290859084818181858888f193505050509050806105555760405162461bcd60e51b815260206004820152601f60248201527f5a65726f426c6f636b3a204661696c656420746f2073656e64204574686572006044820152606401610130565b60019150505b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916105bd9190611029565b6000604051808303816000865af19150503d80600081146105fa576040519150601f19603f3d011682016040523d82523d6000602084013e6105ff565b606091505b5091509150818015610629575080511580610629575080806020019051810190610629919061111c565b61065a5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610130565b5050505050565b60008060006106708585610bfe565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016107189291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b60008061075b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc288610bfe565b5080925050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c5919061115c565b506001600160701b03918216935016905060008073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03871614610804578284610807565b83835b915091508782101561085b5760405162461bcd60e51b815260206004820152601860248201527f5a65726f426c6f636b3a204c6f77206c697175696469747900000000000000006044820152606401610130565b6040516370a0823160e01b81526001600160a01b038b166004820152600090839073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc919061106e565b6108e6919061105b565b6040516370a0823160e01b81526001600160a01b038d811660048301529192506000918491908f16906370a0823190602401602060405180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610959919061106e565b610963919061105b565b905060006109718c846111ac565b905061097e818686610ce7565b975061098a828b61105b565b881115610ae05761099b828b61105b565b97506109a88a8686610dbe565b905060006109b6848361105b565b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663a9059cbb8f836040518363ffffffff1660e01b8152600401610a769291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab9919061111c565b610ac557610ac56111bf565b610ada33828f610ad5919061105b565b610e5e565b50610bed565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db08d6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b2f57600080fd5b505af1158015610b43573d6000803e3d6000fd5b505050505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663a9059cbb8e8e6040518363ffffffff1660e01b8152600401610b9e9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be1919061111c565b610bed57610bed6111bf565b505050505050509550959350505050565b600080826001600160a01b0316846001600160a01b031603610c625760405162461bcd60e51b815260206004820152601e60248201527f5a65726f426c6f636b3a204964656e746963616c2061646472657373657300006044820152606401610130565b826001600160a01b0316846001600160a01b031610610c82578284610c85565b83835b90925090506001600160a01b038216610ce05760405162461bcd60e51b815260206004820152601760248201527f5a65726f426c6f636b3a205a65726f20616464726573730000000000000000006044820152606401610130565b9250929050565b6000808411610d445760405162461bcd60e51b8152602060048201526024808201527f5a65726f426c6f636b3a20496e73756666696369656e7420696e70757420616d6044820152631bdd5b9d60e21b6064820152608401610130565b600083118015610d545750600082115b610d705760405162461bcd60e51b8152600401610130906111d5565b6000610d7e856103e5611216565b90506000610d8c8483611216565b9050600082610d9d876103e8611216565b610da791906111ac565b9050610db3818361122d565b979650505050505050565b6000808411610ddf5760405162461bcd60e51b8152600401610130906110d7565b600083118015610def5750600082115b610e0b5760405162461bcd60e51b8152600401610130906111d5565b6000610e178585611216565b610e23906103e8611216565b90506000610e31868561105b565b610e3d906103e5611216565b9050610e49818361122d565b610e549060016111ac565b9695505050505050565b604080516000808252602082019092526001600160a01b038416908390604051610e889190611029565b60006040518083038185875af1925050503d8060008114610ec5576040519150601f19603f3d011682016040523d82523d6000602084013e610eca565b606091505b5050905080610f1b5760405162461bcd60e51b815260206004820152601e60248201527f5a65726f426c6f636b3a20455448207472616e73666572206661696c656400006044820152606401610130565b505050565b80356001600160a01b0381168114610f3757600080fd5b919050565b600080600060608486031215610f5157600080fd5b610f5a84610f20565b9250610f6860208501610f20565b9150604084013590509250925092565b600080600080600080600060e0888a031215610f9357600080fd5b610f9c88610f20565b96506020880135955060408801359450606088013593506080880135925060a08801359150610fcd60c08901610f20565b905092959891949750929550565b60008060408385031215610fee57600080fd5b610ff783610f20565b946020939093013593505050565b60005b83811015611020578181015183820152602001611008565b50506000910152565b6000825161103b818460208701611005565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561055b5761055b611045565b60006020828403121561108057600080fd5b5051919050565b84815283602082015260018060a01b038316604082015260806060820152600082518060808401526110c08160a0850160208701611005565b601f01601f19169190910160a00195945050505050565b60208082526025908201527f5a65726f426c6f636b3a20496e73756666696369656e74206f757470757420616040820152641b5bdd5b9d60da1b606082015260800190565b60006020828403121561112e57600080fd5b8151801515811461113e57600080fd5b9392505050565b80516001600160701b0381168114610f3757600080fd5b60008060006060848603121561117157600080fd5b61117a84611145565b925061118860208501611145565b9150604084015163ffffffff811681146111a157600080fd5b809150509250925092565b8082018082111561055b5761055b611045565b634e487b7160e01b600052600160045260246000fd5b60208082526021908201527f5a65726f426c6f636b3a20496e73756666696369656e74206c697175696469746040820152607960f81b606082015260800190565b808202811582820484141761055b5761055b611045565b60008261124a57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212205ea77c27864b963d09d00311c3568522126b6d626ef34cf2f6c9956fd037418564736f6c63430008170033