60806040523480156200001157600080fd5b5060405162000f7e38038062000f7e8339810160408190526200003491620002c0565b83836003620000448382620003dc565b506004620000538282620003dc565b5050506200006833836200008660201b60201c565b6005805460ff191660ff9290921691909117905550620004d0915050565b6001600160a01b038216620000b65760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000c460008383620000c8565b5050565b6001600160a01b038316620000f7578060026000828254620000eb9190620004a8565b909155506200016b9050565b6001600160a01b038316600090815260208190526040902054818110156200014c5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000ad565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200018957600280548290039055620001a8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620001ee91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200022357600080fd5b81516001600160401b0380821115620002405762000240620001fb565b604051601f8301601f19908116603f011681019082821181831017156200026b576200026b620001fb565b816040528381526020925086838588010111156200028857600080fd5b600091505b83821015620002ac57858201830151818301840152908201906200028d565b600093810190920192909252949350505050565b60008060008060808587031215620002d757600080fd5b84516001600160401b0380821115620002ef57600080fd5b620002fd8883890162000211565b955060208701519150808211156200031457600080fd5b50620003238782880162000211565b93505060408501519150606085015160ff811681146200034257600080fd5b939692955090935050565b600181811c908216806200036257607f821691505b6020821081036200038357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d757600081815260208120601f850160051c81016020861015620003b25750805b601f850160051c820191505b81811015620003d357828155600101620003be565b5050505b505050565b81516001600160401b03811115620003f857620003f8620001fb565b62000410816200040984546200034d565b8462000389565b602080601f8311600181146200044857600084156200042f5750858301515b600019600386901b1c1916600185901b178555620003d3565b600085815260208120601f198616915b82811015620004795788860151825594840194600190910190840162000458565b5085821015620004985787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620004ca57634e487b7160e01b600052601160045260246000fd5b92915050565b610a9e80620004e06000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806370a0823111610081578063a67915681161005b578063a6791568146101ba578063a9059cbb146101cd578063dd62ed3e146101e057600080fd5b806370a082311461016957806395d89b411461019f57806397304ced146101a757600080fd5b806318160ddd116100b257806318160ddd1461012f57806323b872dd14610141578063313ce5671461015457600080fd5b80630549a1be146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e73660046108c4565b610226565b005b6100f6610234565b60405161010391906108ee565b60405180910390f35b61011f61011a3660046108c4565b6102c6565b6040519015158152602001610103565b6002545b604051908152602001610103565b61011f61014f36600461095a565b6102e0565b60055460405160ff9091168152602001610103565b610133610177366004610996565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610304565b6100ec6101b53660046109b8565b610313565b6100ec6101c8366004610996565b610320565b61011f6101db3660046108c4565b610355565b6101336101ee3660046109d1565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102308282610363565b5050565b60606003805461024390610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461026f90610a04565b80156102bc5780601f10610291576101008083540402835291602001916102bc565b820191906000526020600020905b81548152906001019060200180831161029f57829003601f168201915b5050505050905090565b6000336102d48185856103c4565b60019150505b92915050565b6000336102ee8582856103d6565b6102f98585856104a5565b506001949350505050565b60606004805461024390610a04565b61031d3382610363565b50565b61031d816103508373ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610550565b6000336102d48185856104a5565b73ffffffffffffffffffffffffffffffffffffffff82166103b8576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610230600083836105a8565b6103d18383836001610753565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461049f5781811015610490576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016103af565b61049f84848484036000610753565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104f5576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103af565b73ffffffffffffffffffffffffffffffffffffffff8216610545576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103af565b6103d18383836105a8565b73ffffffffffffffffffffffffffffffffffffffff82166105a0576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103af565b610230826000835b73ffffffffffffffffffffffffffffffffffffffff83166105e05780600260008282546105d59190610a57565b909155506106929050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610666576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103af565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166106bb576002805482900390556106e7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074691815260200190565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff84166107a3576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103af565b73ffffffffffffffffffffffffffffffffffffffff83166107f3576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103af565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561049f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161088d91815260200190565b60405180910390a350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108bf57600080fd5b919050565b600080604083850312156108d757600080fd5b6108e08361089b565b946020939093013593505050565b600060208083528351808285015260005b8181101561091b578581018301518582016040015282016108ff565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60008060006060848603121561096f57600080fd5b6109788461089b565b92506109866020850161089b565b9150604084013590509250925092565b6000602082840312156109a857600080fd5b6109b18261089b565b9392505050565b6000602082840312156109ca57600080fd5b5035919050565b600080604083850312156109e457600080fd5b6109ed8361089b565b91506109fb6020840161089b565b90509250929050565b600181811c90821680610a1857607f821691505b602082108103610a51577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea164736f6c6343000814000a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000d3c21bcecceda10000000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000e506c6174666f726d20546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025054000000000000000000000000000000000000000000000000000000000000