//
0x608060405234801561001057600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100845760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161007b91906101a5565b60405180910390fd5b610093816100a060201b60201c565b50600180819055506101c0565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061018f82610164565b9050919050565b61019f81610184565b82525050565b60006020820190506101ba6000830184610196565b92915050565b611056806101cf6000396000f3fe60806040526004361061008a5760003560e01c80638947606911610059578063894760691461012a5780638da5cb5b14610153578063996cba681461017e578063f0490b8a146101a7578063f2fde38b146101d057610091565b806313f6686d146100965780632ea66401146100d35780633ccfd60b146100fc578063715018a61461011357610091565b3661009157005b600080fd5b3480156100a257600080fd5b506100bd60048036038101906100b89190610d0c565b6101f9565b6040516100ca9190610d54565b60405180910390f35b3480156100df57600080fd5b506100fa60048036038101906100f59190610d0c565b610219565b005b34801561010857600080fd5b5061011161034e565b005b34801561011f57600080fd5b50610128610381565b005b34801561013657600080fd5b50610151600480360381019061014c9190610d0c565b610395565b005b34801561015f57600080fd5b50610168610556565b6040516101759190610d7e565b60405180910390f35b34801561018a57600080fd5b506101a560048036038101906101a09190610dcf565b61057f565b005b3480156101b357600080fd5b506101ce60048036038101906101c99190610d0c565b61083e565b005b3480156101dc57600080fd5b506101f760048036038101906101f29190610d0c565b610972565b005b60026020528060005260406000206000915054906101000a900460ff1681565b6102216109f8565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156102b057806040517f11959b170000000000000000000000000000000000000000000000000000000081526004016102a79190610d7e565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f561d984f0836dbab2f00468ce59d2a174591d2ef2dc2feda35c7f7f29eff47fd60405160405180910390a250565b6103566109f8565b61037f473373ffffffffffffffffffffffffffffffffffffffff16610a7f90919063ffffffff16565b565b6103896109f8565b6103936000610b49565b565b61039d6109f8565b60008173ffffffffffffffffffffffffffffffffffffffff16338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103f09190610d7e565b602060405180830381865afa15801561040d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104319190610e37565b604051602401610442929190610e73565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104cc9190610f0d565b6000604051808303816000865af19150503d8060008114610509576040519150601f19603f3d011682016040523d82523d6000602084013e61050e565b606091505b5050905080610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054990610f81565b60405180910390fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610587610c0d565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661061557336040517fbcddfb8f00000000000000000000000000000000000000000000000000000000815260040161060c9190610d7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361067757610672818373ffffffffffffffffffffffffffffffffffffffff16610a7f90919063ffffffff16565b6107b5565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016106a3929190610e73565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161072d9190610f0d565b6000604051808303816000865af19150503d806000811461076a576040519150601f19603f3d011682016040523d82523d6000602084013e61076f565b606091505b50509050806107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90610f81565b60405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1405953cccdad6b442e266c84d66ad671e2534c6584f8e6ef92802f7ad294d5846040516108299190610fa1565b60405180910390a4610839610c53565b505050565b6108466109f8565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166108d457806040517fbcddfb8f0000000000000000000000000000000000000000000000000000000081526004016108cb9190610d7e565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f8fcbdd874acd226804ea7a0dda2d6c5beb39a6c7f434988f2e1fd57e06dbaf7860405160405180910390a250565b61097a6109f8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ec5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109e39190610d7e565b60405180910390fd5b6109f581610b49565b50565b610a00610c5c565b73ffffffffffffffffffffffffffffffffffffffff16610a1e610556565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d57610a41610c5c565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a749190610d7e565b60405180910390fd5b565b80471015610ac65747816040517fcf479181000000000000000000000000000000000000000000000000000000008152600401610abd929190610fbc565b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610aed9061100b565b60006040518083038185875af1925050503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b509150915081610b4357610b4281610c64565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610c49576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60018081905550565b600033905090565b600081511115610c775780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cd982610cae565b9050919050565b610ce981610cce565b8114610cf457600080fd5b50565b600081359050610d0681610ce0565b92915050565b600060208284031215610d2257610d21610ca9565b5b6000610d3084828501610cf7565b91505092915050565b60008115159050919050565b610d4e81610d39565b82525050565b6000602082019050610d696000830184610d45565b92915050565b610d7881610cce565b82525050565b6000602082019050610d936000830184610d6f565b92915050565b6000819050919050565b610dac81610d99565b8114610db757600080fd5b50565b600081359050610dc981610da3565b92915050565b600080600060608486031215610de857610de7610ca9565b5b6000610df686828701610cf7565b9350506020610e0786828701610cf7565b9250506040610e1886828701610dba565b9150509250925092565b600081519050610e3181610da3565b92915050565b600060208284031215610e4d57610e4c610ca9565b5b6000610e5b84828501610e22565b91505092915050565b610e6d81610d99565b82525050565b6000604082019050610e886000830185610d6f565b610e956020830184610e64565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610ed0578082015181840152602081019050610eb5565b60008484015250505050565b6000610ee782610e9c565b610ef18185610ea7565b9350610f01818560208601610eb2565b80840191505092915050565b6000610f198284610edc565b915081905092915050565b600082825260208201905092915050565b7f5661756c743a207472616e73666572206661696c656400000000000000000000600082015250565b6000610f6b601683610f24565b9150610f7682610f35565b602082019050919050565b60006020820190508181036000830152610f9a81610f5e565b9050919050565b6000602082019050610fb66000830184610e64565b92915050565b6000604082019050610fd16000830185610e64565b610fde6020830184610e64565b9392505050565b50565b6000610ff5600083610ea7565b915061100082610fe5565b600082019050919050565b600061101682610fe8565b915081905091905056fea2646970667358221220c2c4931452e7df024b30b291490f0ba910dfe3eda596c90564a409ba197f87ca64736f6c63430008170033