0x6080604052600436106100565760003560e01c80631e7e61dd1461005f5780638da5cb5b1461007f578063917f27af146100ac578063a7229fd9146100bf578063e72c5717146100ef578063f2fde38b1461010f57005b3661005d57005b005b34801561006b57600080fd5b5061005d61007a366004611e04565b61012f565b34801561008b57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b61005d6100ba366004611e62565b610556565b3480156100cb57600080fd5b506100df6100da366004611ecb565b6107f5565b60405190151581526020016100a3565b3480156100fb57600080fd5b506100df61010a366004611f0c565b610835565b34801561011b57600080fd5b5061005d61012a366004611f38565b6108d3565b600061014d86600080516020612195833981519152898787876109bd565b6040516370a0823160e01b81526001600160a01b03858116600483015291935060009250908816906370a0823190602401602060405180830381865afa15801561019b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bf9190611f5c565b90506101f987846101f3735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8b600080516020612195833981519152610bd4565b84610cad565b8660008051602061219583398151915260006102158383610dec565b5090506000610239735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8585610bd4565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190611f91565b506001600160701b031691506001600160701b03169150600080876001600160a01b03168a6001600160a01b0316146102dd5782846102e0565b83835b6040516370a0823160e01b81526001600160a01b038a8116600483015292945090925083918c16906370a0823190602401602060405180830381865afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190611f5c565b61035c9190611ff7565b9550610369868383610eca565b945050505050600080856001600160a01b0316886001600160a01b03161461039357826000610397565b6000835b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b0386169063022c0d9f906103db908590859030906024810161202e565b600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526000925060008051602061219583398151915291506370a0823190602401602060405180830381865afa158015610459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047d9190611f5c565b90508e8110156104d45760405162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e74206f757470757420616d6f756e7400000000000060448201526064015b60405180910390fd5b604051632e1a7d4d60e01b81526004810182905260008051602061219583398151915290632e1a7d4d90602401600060405180830381600087803b15801561051b57600080fd5b505af115801561052f573d6000803e3d6000fd5b5050505060008190506105428d82610fc5565b505050505050505050505050505050505050565b610560858761207e565b34146105a45760405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374206574682076616c756560681b60448201526064016104cb565b60006105d3735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6000805160206121958339815191528a610bd4565b90506000806105e58a848b888a61107d565b6040516370a0823160e01b815233600482015291935091506000906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611f5c565b90506000806000805160206121958339815191526001600160a01b0386161461068057836000610684565b6000845b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b0387169063022c0d9f906106c8908590859033906024810161202e565b600060405180830381600087803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b5050505060008d6001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161073791906001600160a01b0391909116815260200190565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190611f5c565b90508a6107858583611ff7565b10156107d35760405162461bcd60e51b815260206004820181905260248201527f696e73756666696369656e74206f757470757420616d6f756e74206572726f7260448201526064016104cb565b6107e28e82838f60008d61150d565b5050505050505050505050505050505050565b600080546001600160a01b031633146108205760405162461bcd60e51b81526004016104cb90612091565b61082b84848461184e565b5060019392505050565b600080546001600160a01b031633146108605760405162461bcd60e51b81526004016104cb90612091565b6040516000906001600160a01b0385169084156108fc0290859084818181858888f193505050509050806108c75760405162461bcd60e51b815260206004820152600e60248201526d39b2b7321032ba341032b93937b960911b60448201526064016104cb565b60019150505b92915050565b6000546001600160a01b031633146108fd5760405162461bcd60e51b81526004016104cb90612091565b6001600160a01b0381166109625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104cb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006109e1735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8a8a610bd4565b6040516323b872dd60e01b81523360048201526001600160a01b03821660248201819052604482018a90529192506323b872dd906064016020604051808303816000875af1158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b91906120c6565b5060405163226bf2d160e21b81526001600160a01b03858116600483015260009182918416906389afcb449060240160408051808303816000875af1158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc91906120e8565b915091506000610adc8c8c610dec565b509050806001600160a01b03168c6001600160a01b031614610aff578183610b02565b82825b909650945088861015610b665760405162461bcd60e51b815260206004820152602660248201527f556e69737761705632526f757465723a20494e53554646494349454e545f415f604482015265105353d5539560d21b60648201526084016104cb565b87851015610bc55760405162461bcd60e51b815260206004820152602660248201527f556e69737761705632526f757465723a20494e53554646494349454e545f425f604482015265105353d5539560d21b60648201526084016104cb565b50505050965096945050505050565b6000806000610be38585610dec565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001610c8b9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610d11919061210c565b6000604051808303816000865af19150503d8060008114610d4e576040519150601f19603f3d011682016040523d82523d6000602084013e610d53565b606091505b509150915081610d8d5760405162461bcd60e51b8152602060048201526005602482015264053544620360dc1b60448201526064016104cb565b818015610db2575080511580610db2575080806020019051810190610db291906120c6565b610de45760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016104cb565b505050505050565b600080826001600160a01b0316846001600160a01b031603610e505760405162461bcd60e51b815260206004820152601960248201527f6964656e746963616c20616464726573736573206572726f720000000000000060448201526064016104cb565b826001600160a01b0316846001600160a01b031610610e70578284610e73565b83835b90925090506001600160a01b038216610ec35760405162461bcd60e51b81526020600482015260126024820152713d32b9379030b2323932b9b99032b93937b960711b60448201526064016104cb565b9250929050565b6000808411610f1b5760405162461bcd60e51b815260206004820152601f60248201527f696e73756666696369656e7420696e70757420616d6f756e74206572726f720060448201526064016104cb565b600083118015610f2b5750600082115b610f775760405162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e74206c6971756964697479206572726f720000000060448201526064016104cb565b6000610f85856103e5612128565b90506000610f938483612128565b9050600082610fa4876103e8612128565b610fae919061207e565b9050610fba818361213f565b979650505050505050565b604080516000808252602082019092526001600160a01b038416908390604051610fef919061210c565b60006040518083038185875af1925050503d806000811461102c576040519150601f19603f3d011682016040523d82523d6000602084013e611031565b606091505b50509050806110785760405162461bcd60e51b8152602060048201526013602482015272195d1a081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016104cb565b505050565b60008061109860008051602061219583398151915288610dec565b5080925050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190611f91565b506001600160701b0391821693501690506000806000805160206121958339815191526001600160a01b0387161461113b57828461113e565b83835b91509150878210156111885760405162461bcd60e51b81526020600482015260136024820152723637bb903634b8bab4b234ba3c9032b93937b960691b60448201526064016104cb565b6040516370a0823160e01b81526001600160a01b038b1660048201526000908390600080516020612195833981519152906370a0823190602401602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190611f5c565b61120d9190611ff7565b6040516370a0823160e01b81526001600160a01b038d811660048301529192506000918491908f16906370a0823190602401602060405180830381865afa15801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190611f5c565b61128a9190611ff7565b905060006112988c8461207e565b90506112a5818686610eca565b97506112b1828b611ff7565b8811156113fb576112c2828b611ff7565b97506112cf8a868661194e565b905060006112dd8483611ff7565b90506000805160206121958339815191526001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561132857600080fd5b505af115801561133c573d6000803e3d6000fd5b50505050506000805160206121958339815191526001600160a01b031663a9059cbb8f836040518363ffffffff1660e01b81526004016113919291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d491906120c6565b6113e0576113e0612161565b6113f533828f6113f09190611ff7565b610fc5565b506114fc565b6000805160206121958339815191526001600160a01b031663d0e30db08d6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561144457600080fd5b505af1158015611458573d6000803e3d6000fd5b50505050506000805160206121958339815191526001600160a01b031663a9059cbb8e8e6040518363ffffffff1660e01b81526004016114ad9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f091906120c6565b6114fc576114fc612161565b505050505050509550959350505050565b60008060008034116115535760405162461bcd60e51b815260206004820152600f60248201526e36b9b3973b30b63ab29032b93937b960891b60448201526064016104cb565b6040516370a0823160e01b81523360048201526000906001600160a01b038b16906370a0823190602401602060405180830381865afa15801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be9190611f5c565b604051636eb1769f60e11b815233600482015230602482015290915081906001600160a01b038c169063dd62ed3e90604401602060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116319190611f5c565b116116705760405162461bcd60e51b815260206004820152600f60248201526e30b63637bbb0b731b29032b93937b960891b60448201526064016104cb565b61168c8a6000805160206121958339815191528b8a8c8b611a47565b909450925060006116c0735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8c600080516020612195833981519152610bd4565b90506116ce8b338388610cad565b6000805160206121958339815191526001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038516600482015260248101889052600080516020612195833981519152935063a9059cbb925060440190506020604051808303816000875af115801561178c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b091906120c6565b6117bc576117bc612161565b6040516335313c2160e11b81526001600160a01b038781166004830152821690636a627842906024016020604051808303816000875af1158015611804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118289190611f5c565b92508388111561184057611840336113f0868b611ff7565b505096509650969350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916118aa919061210c565b6000604051808303816000865af19150503d80600081146118e7576040519150601f19603f3d011682016040523d82523d6000602084013e6118ec565b606091505b509150915081801561191657508051158061191657508080602001905181019061191691906120c6565b6119475760405162461bcd60e51b815260206004820152600260248201526114d560f21b60448201526064016104cb565b5050505050565b600080841161199f5760405162461bcd60e51b815260206004820181905260248201527f696e73756666696369656e74206f757470757420616d6f756e74206572726f7260448201526064016104cb565b6000831180156119af5750600082115b6119f45760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206c697175696469747960501b60448201526064016104cb565b6000611a008585612128565b611a0c906103e8612128565b90506000611a1a8685611ff7565b611a26906103e5612128565b9050611a32818361213f565b611a3d90600161207e565b9695505050505050565b60405163e6a4390560e01b81526001600160a01b0380881660048301528616602482015260009081908190735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063e6a4390590604401602060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad29190612177565b6001600160a01b031603611b1f5760405162461bcd60e51b81526020600482015260146024820152735061697220646f6573206e6f742065786973747360601b60448201526064016104cb565b600080611b41735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8b8b611c58565b91509150816000148015611b53575080155b15611b6357879350869250611c4b565b6000611b70898484611d22565b9050878111611bd45785811015611bc95760405162461bcd60e51b815260206004820152601960248201527f4c523a20494e53554646494349454e545f425f414d4f554e540000000000000060448201526064016104cb565b889450925082611c49565b6000611be1898486611d22565b905089811115611bf357611bf3612161565b87811015611c435760405162461bcd60e51b815260206004820152601960248201527f4c523a20494e53554646494349454e545f415f414d4f554e540000000000000060448201526064016104cb565b94508793505b505b5050965096945050505050565b6000806000611c678585610dec565b509050600080611c78888888610bd4565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190611f91565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614611d10578082611d13565b81815b90999098509650505050505050565b6000808411611d735760405162461bcd60e51b815260206004820152601760248201527f4c523a20494e53554646494349454e545f414d4f554e5400000000000000000060448201526064016104cb565b600083118015611d835750600082115b611dcf5760405162461bcd60e51b815260206004820152601a60248201527f4c523a20494e53554646494349454e545f4c495155494449545900000000000060448201526064016104cb565b82611dda8386612128565b611de4919061213f565b949350505050565b6001600160a01b0381168114611e0157600080fd5b50565b60008060008060008060c08789031215611e1d57600080fd5b863595506020870135611e2f81611dec565b945060408701359350606087013592506080870135915060a0870135611e5481611dec565b809150509295509295509295565b600080600080600080600060e0888a031215611e7d57600080fd5b8735611e8881611dec565b96506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135611ebb81611dec565b8091505092959891949750929550565b600080600060608486031215611ee057600080fd5b8335611eeb81611dec565b92506020840135611efb81611dec565b929592945050506040919091013590565b60008060408385031215611f1f57600080fd5b8235611f2a81611dec565b946020939093013593505050565b600060208284031215611f4a57600080fd5b8135611f5581611dec565b9392505050565b600060208284031215611f6e57600080fd5b5051919050565b80516001600160701b0381168114611f8c57600080fd5b919050565b600080600060608486031215611fa657600080fd5b611faf84611f75565b9250611fbd60208501611f75565b9150604084015163ffffffff81168114611fd657600080fd5b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b818103818111156108cd576108cd611fe1565b60005b8381101561202557818101518382015260200161200d565b50506000910152565b84815283602082015260018060a01b038316604082015260806060820152600082518060808401526120678160a085016020870161200a565b601f01601f19169190910160a00195945050505050565b808201808211156108cd576108cd611fe1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120d857600080fd5b81518015158114611f5557600080fd5b600080604083850312156120fb57600080fd5b505080516020909101519092909150565b6000825161211e81846020870161200a565b9190910192915050565b80820281158282048414176108cd576108cd611fe1565b60008261215c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561218957600080fd5b8151611f5581611dec56fe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2a264697066735822122047eec21d1a7aec495b6a7f215ad88fedbc4085fe8a54762b3744ad324d7061b064736f6c63430008170033
0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506121ea806100616000396000f3fe6080604052600436106100565760003560e01c80631e7e61dd1461005f5780638da5cb5b1461007f578063917f27af146100ac578063a7229fd9146100bf578063e72c5717146100ef578063f2fde38b1461010f57005b3661005d57005b005b34801561006b57600080fd5b5061005d61007a366004611e04565b61012f565b34801561008b57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b61005d6100ba366004611e62565b610556565b3480156100cb57600080fd5b506100df6100da366004611ecb565b6107f5565b60405190151581526020016100a3565b3480156100fb57600080fd5b506100df61010a366004611f0c565b610835565b34801561011b57600080fd5b5061005d61012a366004611f38565b6108d3565b600061014d86600080516020612195833981519152898787876109bd565b6040516370a0823160e01b81526001600160a01b03858116600483015291935060009250908816906370a0823190602401602060405180830381865afa15801561019b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bf9190611f5c565b90506101f987846101f3735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8b600080516020612195833981519152610bd4565b84610cad565b8660008051602061219583398151915260006102158383610dec565b5090506000610239735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8585610bd4565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190611f91565b506001600160701b031691506001600160701b03169150600080876001600160a01b03168a6001600160a01b0316146102dd5782846102e0565b83835b6040516370a0823160e01b81526001600160a01b038a8116600483015292945090925083918c16906370a0823190602401602060405180830381865afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190611f5c565b61035c9190611ff7565b9550610369868383610eca565b945050505050600080856001600160a01b0316886001600160a01b03161461039357826000610397565b6000835b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b0386169063022c0d9f906103db908590859030906024810161202e565b600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526000925060008051602061219583398151915291506370a0823190602401602060405180830381865afa158015610459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047d9190611f5c565b90508e8110156104d45760405162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e74206f757470757420616d6f756e7400000000000060448201526064015b60405180910390fd5b604051632e1a7d4d60e01b81526004810182905260008051602061219583398151915290632e1a7d4d90602401600060405180830381600087803b15801561051b57600080fd5b505af115801561052f573d6000803e3d6000fd5b5050505060008190506105428d82610fc5565b505050505050505050505050505050505050565b610560858761207e565b34146105a45760405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374206574682076616c756560681b60448201526064016104cb565b60006105d3735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6000805160206121958339815191528a610bd4565b90506000806105e58a848b888a61107d565b6040516370a0823160e01b815233600482015291935091506000906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611f5c565b90506000806000805160206121958339815191526001600160a01b0386161461068057836000610684565b6000845b6040805160008152602081019182905263022c0d9f60e01b90915291935091506001600160a01b0387169063022c0d9f906106c8908590859033906024810161202e565b600060405180830381600087803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b5050505060008d6001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161073791906001600160a01b0391909116815260200190565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190611f5c565b90508a6107858583611ff7565b10156107d35760405162461bcd60e51b815260206004820181905260248201527f696e73756666696369656e74206f757470757420616d6f756e74206572726f7260448201526064016104cb565b6107e28e82838f60008d61150d565b5050505050505050505050505050505050565b600080546001600160a01b031633146108205760405162461bcd60e51b81526004016104cb90612091565b61082b84848461184e565b5060019392505050565b600080546001600160a01b031633146108605760405162461bcd60e51b81526004016104cb90612091565b6040516000906001600160a01b0385169084156108fc0290859084818181858888f193505050509050806108c75760405162461bcd60e51b815260206004820152600e60248201526d39b2b7321032ba341032b93937b960911b60448201526064016104cb565b60019150505b92915050565b6000546001600160a01b031633146108fd5760405162461bcd60e51b81526004016104cb90612091565b6001600160a01b0381166109625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104cb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006109e1735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8a8a610bd4565b6040516323b872dd60e01b81523360048201526001600160a01b03821660248201819052604482018a90529192506323b872dd906064016020604051808303816000875af1158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b91906120c6565b5060405163226bf2d160e21b81526001600160a01b03858116600483015260009182918416906389afcb449060240160408051808303816000875af1158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc91906120e8565b915091506000610adc8c8c610dec565b509050806001600160a01b03168c6001600160a01b031614610aff578183610b02565b82825b909650945088861015610b665760405162461bcd60e51b815260206004820152602660248201527f556e69737761705632526f757465723a20494e53554646494349454e545f415f604482015265105353d5539560d21b60648201526084016104cb565b87851015610bc55760405162461bcd60e51b815260206004820152602660248201527f556e69737761705632526f757465723a20494e53554646494349454e545f425f604482015265105353d5539560d21b60648201526084016104cb565b50505050965096945050505050565b6000806000610be38585610dec565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001610c8b9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610d11919061210c565b6000604051808303816000865af19150503d8060008114610d4e576040519150601f19603f3d011682016040523d82523d6000602084013e610d53565b606091505b509150915081610d8d5760405162461bcd60e51b8152602060048201526005602482015264053544620360dc1b60448201526064016104cb565b818015610db2575080511580610db2575080806020019051810190610db291906120c6565b610de45760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016104cb565b505050505050565b600080826001600160a01b0316846001600160a01b031603610e505760405162461bcd60e51b815260206004820152601960248201527f6964656e746963616c20616464726573736573206572726f720000000000000060448201526064016104cb565b826001600160a01b0316846001600160a01b031610610e70578284610e73565b83835b90925090506001600160a01b038216610ec35760405162461bcd60e51b81526020600482015260126024820152713d32b9379030b2323932b9b99032b93937b960711b60448201526064016104cb565b9250929050565b6000808411610f1b5760405162461bcd60e51b815260206004820152601f60248201527f696e73756666696369656e7420696e70757420616d6f756e74206572726f720060448201526064016104cb565b600083118015610f2b5750600082115b610f775760405162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e74206c6971756964697479206572726f720000000060448201526064016104cb565b6000610f85856103e5612128565b90506000610f938483612128565b9050600082610fa4876103e8612128565b610fae919061207e565b9050610fba818361213f565b979650505050505050565b604080516000808252602082019092526001600160a01b038416908390604051610fef919061210c565b60006040518083038185875af1925050503d806000811461102c576040519150601f19603f3d011682016040523d82523d6000602084013e611031565b606091505b50509050806110785760405162461bcd60e51b8152602060048201526013602482015272195d1a081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016104cb565b505050565b60008061109860008051602061219583398151915288610dec565b5080925050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190611f91565b506001600160701b0391821693501690506000806000805160206121958339815191526001600160a01b0387161461113b57828461113e565b83835b91509150878210156111885760405162461bcd60e51b81526020600482015260136024820152723637bb903634b8bab4b234ba3c9032b93937b960691b60448201526064016104cb565b6040516370a0823160e01b81526001600160a01b038b1660048201526000908390600080516020612195833981519152906370a0823190602401602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190611f5c565b61120d9190611ff7565b6040516370a0823160e01b81526001600160a01b038d811660048301529192506000918491908f16906370a0823190602401602060405180830381865afa15801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190611f5c565b61128a9190611ff7565b905060006112988c8461207e565b90506112a5818686610eca565b97506112b1828b611ff7565b8811156113fb576112c2828b611ff7565b97506112cf8a868661194e565b905060006112dd8483611ff7565b90506000805160206121958339815191526001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561132857600080fd5b505af115801561133c573d6000803e3d6000fd5b50505050506000805160206121958339815191526001600160a01b031663a9059cbb8f836040518363ffffffff1660e01b81526004016113919291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d491906120c6565b6113e0576113e0612161565b6113f533828f6113f09190611ff7565b610fc5565b506114fc565b6000805160206121958339815191526001600160a01b031663d0e30db08d6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561144457600080fd5b505af1158015611458573d6000803e3d6000fd5b50505050506000805160206121958339815191526001600160a01b031663a9059cbb8e8e6040518363ffffffff1660e01b81526004016114ad9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f091906120c6565b6114fc576114fc612161565b505050505050509550959350505050565b60008060008034116115535760405162461bcd60e51b815260206004820152600f60248201526e36b9b3973b30b63ab29032b93937b960891b60448201526064016104cb565b6040516370a0823160e01b81523360048201526000906001600160a01b038b16906370a0823190602401602060405180830381865afa15801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be9190611f5c565b604051636eb1769f60e11b815233600482015230602482015290915081906001600160a01b038c169063dd62ed3e90604401602060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116319190611f5c565b116116705760405162461bcd60e51b815260206004820152600f60248201526e30b63637bbb0b731b29032b93937b960891b60448201526064016104cb565b61168c8a6000805160206121958339815191528b8a8c8b611a47565b909450925060006116c0735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8c600080516020612195833981519152610bd4565b90506116ce8b338388610cad565b6000805160206121958339815191526001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038516600482015260248101889052600080516020612195833981519152935063a9059cbb925060440190506020604051808303816000875af115801561178c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b091906120c6565b6117bc576117bc612161565b6040516335313c2160e11b81526001600160a01b038781166004830152821690636a627842906024016020604051808303816000875af1158015611804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118289190611f5c565b92508388111561184057611840336113f0868b611ff7565b505096509650969350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916118aa919061210c565b6000604051808303816000865af19150503d80600081146118e7576040519150601f19603f3d011682016040523d82523d6000602084013e6118ec565b606091505b509150915081801561191657508051158061191657508080602001905181019061191691906120c6565b6119475760405162461bcd60e51b815260206004820152600260248201526114d560f21b60448201526064016104cb565b5050505050565b600080841161199f5760405162461bcd60e51b815260206004820181905260248201527f696e73756666696369656e74206f757470757420616d6f756e74206572726f7260448201526064016104cb565b6000831180156119af5750600082115b6119f45760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206c697175696469747960501b60448201526064016104cb565b6000611a008585612128565b611a0c906103e8612128565b90506000611a1a8685611ff7565b611a26906103e5612128565b9050611a32818361213f565b611a3d90600161207e565b9695505050505050565b60405163e6a4390560e01b81526001600160a01b0380881660048301528616602482015260009081908190735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063e6a4390590604401602060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad29190612177565b6001600160a01b031603611b1f5760405162461bcd60e51b81526020600482015260146024820152735061697220646f6573206e6f742065786973747360601b60448201526064016104cb565b600080611b41735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8b8b611c58565b91509150816000148015611b53575080155b15611b6357879350869250611c4b565b6000611b70898484611d22565b9050878111611bd45785811015611bc95760405162461bcd60e51b815260206004820152601960248201527f4c523a20494e53554646494349454e545f425f414d4f554e540000000000000060448201526064016104cb565b889450925082611c49565b6000611be1898486611d22565b905089811115611bf357611bf3612161565b87811015611c435760405162461bcd60e51b815260206004820152601960248201527f4c523a20494e53554646494349454e545f415f414d4f554e540000000000000060448201526064016104cb565b94508793505b505b5050965096945050505050565b6000806000611c678585610dec565b509050600080611c78888888610bd4565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190611f91565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614611d10578082611d13565b81815b90999098509650505050505050565b6000808411611d735760405162461bcd60e51b815260206004820152601760248201527f4c523a20494e53554646494349454e545f414d4f554e5400000000000000000060448201526064016104cb565b600083118015611d835750600082115b611dcf5760405162461bcd60e51b815260206004820152601a60248201527f4c523a20494e53554646494349454e545f4c495155494449545900000000000060448201526064016104cb565b82611dda8386612128565b611de4919061213f565b949350505050565b6001600160a01b0381168114611e0157600080fd5b50565b60008060008060008060c08789031215611e1d57600080fd5b863595506020870135611e2f81611dec565b945060408701359350606087013592506080870135915060a0870135611e5481611dec565b809150509295509295509295565b600080600080600080600060e0888a031215611e7d57600080fd5b8735611e8881611dec565b96506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135611ebb81611dec565b8091505092959891949750929550565b600080600060608486031215611ee057600080fd5b8335611eeb81611dec565b92506020840135611efb81611dec565b929592945050506040919091013590565b60008060408385031215611f1f57600080fd5b8235611f2a81611dec565b946020939093013593505050565b600060208284031215611f4a57600080fd5b8135611f5581611dec565b9392505050565b600060208284031215611f6e57600080fd5b5051919050565b80516001600160701b0381168114611f8c57600080fd5b919050565b600080600060608486031215611fa657600080fd5b611faf84611f75565b9250611fbd60208501611f75565b9150604084015163ffffffff81168114611fd657600080fd5b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b818103818111156108cd576108cd611fe1565b60005b8381101561202557818101518382015260200161200d565b50506000910152565b84815283602082015260018060a01b038316604082015260806060820152600082518060808401526120678160a085016020870161200a565b601f01601f19169190910160a00195945050505050565b808201808211156108cd576108cd611fe1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120d857600080fd5b81518015158114611f5557600080fd5b600080604083850312156120fb57600080fd5b505080516020909101519092909150565b6000825161211e81846020870161200a565b9190910192915050565b80820281158282048414176108cd576108cd611fe1565b60008261215c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561218957600080fd5b8151611f5581611dec56fe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2a264697066735822122047eec21d1a7aec495b6a7f215ad88fedbc4085fe8a54762b3744ad324d7061b064736f6c63430008170033