0x60806040523480156200001157600080fd5b506040518060400160405280600e81526020016d13585e5848141c9959995c9c995960921b815250604051806040016040528060048152602001631354149160e21b815250816003908162000067919062000340565b50600462000076828262000340565b5050600580546001600160a01b03191633908117909155620000bf91506200009c601290565b620000a990600a62000521565b620000b990630bebc20062000539565b62000126565b6040518060600160405280603781526020016200154860379139600690620000e8908262000340565b5060408051808201909152601081526f1552c8119a5b985b98da585b08131d1960821b60208201526007906200011f908262000340565b5062000569565b6001600160a01b038216620001565760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620001646000838362000168565b5050565b6001600160a01b038316620001975780600260008282546200018b919062000553565b909155506200020b9050565b6001600160a01b03831660009081526020819052604090205481811015620001ec5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200014d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620002295760028054829003905562000248565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200028e91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c657607f821691505b602082108103620002e757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033b57600081815260208120601f850160051c81016020861015620003165750805b601f850160051c820191505b81811015620003375782815560010162000322565b5050505b505050565b81516001600160401b038111156200035c576200035c6200029b565b62000374816200036d8454620002b1565b84620002ed565b602080601f831160018114620003ac5760008415620003935750858301515b600019600386901b1c1916600185901b17855562000337565b600085815260208120601f198616915b82811015620003dd57888601518255948401946001909101908401620003bc565b5085821015620003fc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004635781600019048211156200044757620004476200040c565b808516156200045557918102915b93841c939080029062000427565b509250929050565b6000826200047c575060016200051b565b816200048b575060006200051b565b8160018114620004a45760028114620004af57620004cf565b60019150506200051b565b60ff841115620004c357620004c36200040c565b50506001821b6200051b565b5060208310610133831016604e8410600b8410161715620004f4575081810a6200051b565b62000500838362000422565b80600019048211156200051757620005176200040c565b0290505b92915050565b60006200053260ff8416836200046b565b9392505050565b80820281158282048414176200051b576200051b6200040c565b808201808211156200051b576200051b6200040c565b610fcf80620005796000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a257806395d89b411161007157806395d89b4114610252578063a9059cbb1461025a578063abb1dc441461026d578063adf5e30c146102d3578063dd62ed3e146102db57600080fd5b80638da5cb5b146102105780638ed6b016146102235780638fd3ab80146102375780639457c1dc1461023f57600080fd5b8063313ce567116100e9578063313ce5671461018157806356ce0e6c146101905780635b51acff146101a557806370a08231146101d05780637a5b4f59146101f957600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b610123610314565b6040516101309190610bab565b60405180910390f35b61014c610147366004610be1565b6103a6565b6040519015158152602001610130565b6002545b604051908152602001610130565b61014c61017c366004610c0b565b6103c0565b60405160128152602001610130565b6101a361019e366004610cea565b6103e4565b005b6008546101b8906001600160a01b031681565b6040516001600160a01b039091168152602001610130565b6101606101de366004610d4e565b6001600160a01b031660009081526020819052604090205490565b61020161046e565b60405161013093929190610d69565b6005546101b8906001600160a01b031681565b60085461014c90600160a01b900460ff1681565b6101a36105b9565b6101a361024d366004610d4e565b6106ed565b6101236107bd565b61014c610268366004610be1565b6107cc565b604080518082018252600681526521b7b6b6b7b760d11b6020808301919091528251808401845260058152640312e302e360dc1b818301528351808501909452601084526f1552c8119a5b985b98da585b08131d1960821b918401919091529091610201565b6101a36107da565b6101606102e9366004610dac565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461032390610ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461034f90610ddf565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b6000336103b481858561083c565b60019150505b92915050565b6000336103ce85828561084e565b6103d98585856108cd565b506001949350505050565b6005546001600160a01b031633146104175760405162461bcd60e51b815260040161040e90610e19565b60405180910390fd5b60066104238382610e8a565b5060076104308282610e8a565b507f30f5c4b652f95e2a697bda3258896c421eee4f29adce8fe38060f47f7aed91ad8282604051610462929190610f4a565b60405180910390a15050565b6060806060600660076040518060400160405280600681526020016521b7b6b6b7b760d11b8152508280546104a290610ddf565b80601f01602080910402602001604051908101604052809291908181526020018280546104ce90610ddf565b801561051b5780601f106104f05761010080835404028352916020019161051b565b820191906000526020600020905b8154815290600101906020018083116104fe57829003601f168201915b5050505050925081805461052e90610ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461055a90610ddf565b80156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b50505050509150925092509250909192565b600854600160a01b900460ff166106095760405162461bcd60e51b81526020600482015260146024820152734d6967726174696f6e206e6f742061637469766560601b604482015260640161040e565b6008546001600160a01b03166106575760405162461bcd60e51b8152602060048201526013602482015272139bc81b5a59dc985d1a5bdb881d185c99d95d606a1b604482015260640161040e565b33600090815260208190526040902054806106ab5760405162461bcd60e51b81526020600482015260146024820152734e6f20746f6b656e7320746f206d69677261746560601b604482015260640161040e565b6106b5338261092c565b60405181815233907f2558d4091fc8e966ac64668ecbe596974579c9f0e5b2e11d94d1469934ab5fd89060200160405180910390a250565b6005546001600160a01b031633146107175760405162461bcd60e51b815260040161040e90610e19565b6001600160a01b03811661076d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206d6967726174696f6e207461726765740000000000000000604482015260640161040e565b600880546001600160a81b0319166001600160a01b038316908117600160a01b179091556040517ff8cb72b93188da0cf41cc6a23978cb1faee80e70bd3c6bdf0a9301728474544290600090a250565b60606004805461032390610ddf565b6000336103b48185856108cd565b6005546001600160a01b031633146108045760405162461bcd60e51b815260040161040e90610e19565b6008805460ff60a01b191690556040517f1e6a33fba02a1ba779412a9af0a34aeb4a9e66b0a93b9ad1247b03c544ce2ab090600090a1565b6108498383836001610966565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198110156108c757818110156108b857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161040e565b6108c784848484036000610966565b50505050565b6001600160a01b0383166108f757604051634b637e8f60e11b81526000600482015260240161040e565b6001600160a01b0382166109215760405163ec442f0560e01b81526000600482015260240161040e565b610849838383610a3b565b6001600160a01b03821661095657604051634b637e8f60e11b81526000600482015260240161040e565b61096282600083610a3b565b5050565b6001600160a01b0384166109905760405163e602df0560e01b81526000600482015260240161040e565b6001600160a01b0383166109ba57604051634a1406b160e11b81526000600482015260240161040e565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156108c757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a2d91815260200190565b60405180910390a350505050565b6001600160a01b038316610a66578060026000828254610a5b9190610f78565b90915550610ad89050565b6001600160a01b03831660009081526020819052604090205481811015610ab95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161040e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610af457600280548290039055610b13565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b5891815260200190565b60405180910390a3505050565b6000815180845260005b81811015610b8b57602081850181015186830182015201610b6f565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610bbe6020830184610b65565b9392505050565b80356001600160a01b0381168114610bdc57600080fd5b919050565b60008060408385031215610bf457600080fd5b610bfd83610bc5565b946020939093013593505050565b600080600060608486031215610c2057600080fd5b610c2984610bc5565b9250610c3760208501610bc5565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c6e57600080fd5b813567ffffffffffffffff80821115610c8957610c89610c47565b604051601f8301601f19908116603f01168101908282118183101715610cb157610cb1610c47565b81604052838152866020858801011115610cca57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215610cfd57600080fd5b823567ffffffffffffffff80821115610d1557600080fd5b610d2186838701610c5d565b93506020850135915080821115610d3757600080fd5b50610d4485828601610c5d565b9150509250929050565b600060208284031215610d6057600080fd5b610bbe82610bc5565b606081526000610d7c6060830186610b65565b8281036020840152610d8e8186610b65565b90508281036040840152610da28185610b65565b9695505050505050565b60008060408385031215610dbf57600080fd5b610dc883610bc5565b9150610dd660208401610bc5565b90509250929050565b600181811c90821680610df357607f821691505b602082108103610e1357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b601f82111561084957600081815260208120601f850160051c81016020861015610e635750805b601f850160051c820191505b81811015610e8257828155600101610e6f565b505050505050565b815167ffffffffffffffff811115610ea457610ea4610c47565b610eb881610eb28454610ddf565b84610e3c565b602080601f831160018114610eed5760008415610ed55750858301515b600019600386901b1c1916600185901b178555610e82565b600085815260208120601f198616915b82811015610f1c57888601518255948401946001909101908401610efd565b5085821015610f3a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000610f5d6040830185610b65565b8281036020840152610f6f8185610b65565b95945050505050565b808201808211156103ba57634e487b7160e01b600052601160045260246000fdfea264697066735822122053d190c00da7b01f3ffb5d4505d6ccac68c736aad9eed0d43bfa121869c1de3564736f6c634300081400334d61796120507265666572726564204d50524420546f6b656e202d20436f6d6d6f6e20436c61737320496d706c656d656e746174696f6e