0x60a060405234801561000f575f80fd5b506040516113ff3803806113ff83398101604081905261002e91610096565b60015f556001600160a01b03811661005957604051631ffca0dd60e21b815260040160405180910390fd5b6001600160a01b03811660808190526040517fe8c4c5c9c00e00a90d74086175ec9f2c9ee26debfc4b81b6871bf66bafd2c51c905f90a2506100c3565b5f602082840312156100a6575f80fd5b81516001600160a01b03811681146100bc575f80fd5b9392505050565b6080516113026100fd5f395f818160830152818161013b015281816103420152818161046e01528181610856015261087d01526113025ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80633f707e6b1461004e578063ca39b6c014610063578063f04f27071461006b578063fbfa77cf1461007e575b5f80fd5b61006161005c366004610c2c565b6100c1565b005b610061610130565b610061610079366004610c6b565b61017f565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100c96102db565b6100d38282610337565b805f8190036100e25750610123565b5f5b818110156101205761011884848381811061010157610101610d50565b90506020028101906101139190610d64565b610380565b6001016100e4565b50505b61012c60015f55565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610179576040516303fee25560e21b815260040160405180910390fd5b43600155565b6101876102db565b3373ba12222222228d8ba445958a75a0704d566bf2c8146101bb576040516301520eb960e11b815260040160405180910390fd5b43600154146101dd5760405163323b48e760e01b815260040160405180910390fd5b5f60018190556101ef82840184610ebb565b90506101fa8161046b565b875f8167ffffffffffffffff81111561021557610215610d82565b60405190808252806020026020018201604052801561023e578160200160208202803683370190505b5090505f5b828110156102ac5787878281811061025d5761025d610d50565b905060200201358a8a8381811061027657610276610d50565b905060200201356102879190611065565b82828151811061029957610299610d50565b6020908102919091010152600101610243565b506102b88b8b8361065d565b6102c583602001516107ab565b5050506102d160015f55565b5050505050505050565b60025f54036103315760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60025f55565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461012c576040516303fee25560e21b815260040160405180910390fd5b610389816108f8565b5f80610398602084018461108a565b6001600160a01b031660208401356103b360408601866110ac565b6040516103c19291906110ef565b5f6040518083038185875af1925050503d805f81146103fb576040519150601f19603f3d011682016040523d82523d5f602084013e610400565b606091505b50915091508161042557806040516332e6e2b560e21b8152600401610328919061114b565b336001600160a01b03167f581f7fcb4603641e147a9f037fab064116f10ab9f195b7de511aac72fb3a45328460405161045e919061115d565b60405180910390a2505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd7033c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ec91906111f8565b8251519091505f806060815b84811015610654575f875f0151828151811061051657610516610d50565b60200260200101519050806040015161052e90611213565b81516040516301871a8360e01b81529196506001600160a01b038916916301871a839161055f91899060040161124a565b602060405180830381865afa15801561057a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059e919061126d565b6105c0578051604051630884cc3760e41b81526103289190879060040161124a565b805f01516001600160a01b0316816020015182604001516040516105e4919061128c565b5f6040518083038185875af1925050503d805f811461061e576040519150601f19603f3d011682016040523d82523d5f602084013e610623565b606091505b5090945092508361064b57818360405163319488f560e01b815260040161032892919061129d565b506001016104f8565b50505050505050565b815f5b818110156107a4575f83828151811061067b5761067b610d50565b602002602001015190505f86868481811061069857610698610d50565b90506020020160208101906106ad919061108a565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156106f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071891906112b5565b905082811015610771578186858151811061073557610735610d50565b602090810291909101015160405163604dfba760e11b81526001600160a01b039092166004830152602482015260448101829052606401610328565b6107996001600160a01b03831673ba12222222228d8ba445958a75a0704d566bf2c885610930565b505050600101610660565b5050505050565b80515f805b828110156108f2575f8482815181106107cb576107cb610d50565b60209081029190910101516040516370a0823160e01b81523060048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa15801561081b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083f91906112b5565b925082156108e95761087b6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000085610930565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03167fe8b2c769b00730298f87350efd2b5fa12b2af65f89e8b625c2edb67c25a6155d856040516108e091815260200190565b60405180910390a35b506001016107b0565b50505050565b30610906602083018361108a565b6001600160a01b03160361092d57604051631bfc0ea560e21b815260040160405180910390fd5b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610982908490610987565b505050565b5f6109db826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a5a9092919063ffffffff16565b905080515f14806109fb5750808060200190518101906109fb919061126d565b6109825760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610328565b6060610a6884845f85610a70565b949350505050565b606082471015610ad15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610328565b5f80866001600160a01b03168587604051610aec919061128c565b5f6040518083038185875af1925050503d805f8114610b26576040519150601f19603f3d011682016040523d82523d5f602084013e610b2b565b606091505b5091509150610b3c87838387610b47565b979650505050505050565b60608315610bb55782515f03610bae576001600160a01b0385163b610bae5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610328565b5081610a68565b610a688383815115610bca5781518083602001fd5b8060405162461bcd60e51b8152600401610328919061114b565b5f8083601f840112610bf4575f80fd5b50813567ffffffffffffffff811115610c0b575f80fd5b6020830191508360208260051b8501011115610c25575f80fd5b9250929050565b5f8060208385031215610c3d575f80fd5b823567ffffffffffffffff811115610c53575f80fd5b610c5f85828601610be4565b90969095509350505050565b5f805f805f805f806080898b031215610c82575f80fd5b883567ffffffffffffffff80821115610c99575f80fd5b610ca58c838d01610be4565b909a50985060208b0135915080821115610cbd575f80fd5b610cc98c838d01610be4565b909850965060408b0135915080821115610ce1575f80fd5b610ced8c838d01610be4565b909650945060608b0135915080821115610d05575f80fd5b818b0191508b601f830112610d18575f80fd5b813581811115610d26575f80fd5b8c6020828501011115610d37575f80fd5b6020830194508093505050509295985092959890939650565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112610d78575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610db957610db9610d82565b60405290565b6040516060810167ffffffffffffffff81118282101715610db957610db9610d82565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0b57610e0b610d82565b604052919050565b5f67ffffffffffffffff821115610e2c57610e2c610d82565b5060051b60200190565b6001600160a01b038116811461092d575f80fd5b5f82601f830112610e59575f80fd5b81356020610e6e610e6983610e13565b610de2565b82815260059290921b84018101918181019086841115610e8c575f80fd5b8286015b84811015610eb0578035610ea381610e36565b8352918301918301610e90565b509695505050505050565b5f60208284031215610ecb575f80fd5b67ffffffffffffffff8083351115610ee1575f80fd5b8235830160408186031215610ef4575f80fd5b610efc610d96565b8282351115610f09575f80fd5b8135820186601f820112610f1b575f80fd5b610f28610e698235610e13565b81358082526020808301929160051b84010189811115610f46575f80fd5b602084015b81811015611031578781351115610f60575f80fd5b80358501601f196060828e0382011215610f78575f80fd5b610f80610dbf565b610f8d6020840135610e36565b60208301358152604083013560208201528a60608401351115610fae575f80fd5b6060830135830192508d603f840112610fc5575f80fd5b60208301358b811115610fda57610fda610d82565b610feb602084601f84011601610de2565b92508083528e6040828601011115611001575f80fd5b806040850160208501375f6020828501015250816040820152808752505050602084019350602081019050610f4b565b5050835250506020820135831015611047575f80fd5b6110578660208401358401610e4a565b602082015295945050505050565b8082018082111561108457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f6020828403121561109a575f80fd5b81356110a581610e36565b9392505050565b5f808335601e198436030181126110c1575f80fd5b83018035915067ffffffffffffffff8211156110db575f80fd5b602001915036819003821315610c25575f80fd5b818382375f9101908152919050565b5f5b83811015611118578181015183820152602001611100565b50505f910152565b5f81518084526111378160208601602086016110fe565b601f01601f19169290920160200192915050565b602081525f6110a56020830184611120565b602081525f823561116d81610e36565b60018060a01b038116602084015250602083013560408301526040830135601e1984360301811261119c575f80fd5b830160208101903567ffffffffffffffff8111156111b8575f80fd5b8036038213156111c6575f80fd5b606080850152806080850152808260a08601375f60a0828601015260a0601f19601f8301168501019250505092915050565b5f60208284031215611208575f80fd5b81516110a581610e36565b805160208201516001600160e01b031980821692919060048310156112425780818460040360031b1b83161693505b505050919050565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b5f6020828403121561127d575f80fd5b815180151581146110a5575f80fd5b5f8251610d788184602087016110fe565b828152604060208201525f610a686040830184611120565b5f602082840312156112c5575f80fd5b505191905056fea264697066735822122045187269a715775de8eaec8542258d8a496f559312c2f7df7c4372f3c418140d64736f6c63430008150033000000000000000000000000251e5afbcaee1e23f7b68541d403c66edba30010