0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d49806100745f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c80638da5cb5b116100595780638da5cb5b14610136578063a64e2e8614610154578063e0aa6c3b14610184578063f2fde38b146101b457610086565b8063209754161461008a5780632106b0fa146100ba5780633b111c25146100ea578063518c806614610106575b5f5ffd5b6100a4600480360381019061009f9190610658565b6101d0565b6040516100b19190610692565b60405180910390f35b6100d460048036038101906100cf91906106de565b610247565b6040516100e19190610736565b60405180910390f35b61010460048036038101906100ff919061074f565b610252565b005b610120600480360381019061011b91906108f3565b6103fc565b60405161012d9190610692565b60405180910390f35b61013e610407565b60405161014b9190610692565b60405180910390f35b61016e6004803603810190610169919061095f565b61042c565b60405161017b9190610a2b565b60405180910390f35b61019e60048036038101906101999190610a4b565b61046d565b6040516101ab9190610a2b565b60405180910390f35b6101ce60048036038101906101c99190610658565b6104ad565b005b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361023f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023690610ad3565b60405180910390fd5b5f9050919050565b5f6001905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b790610b3b565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682836040516024016102ea9190610b68565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103749190610bc5565b5f6040518083038185875af1925050503d805f81146103ae576040519150601f19603f3d011682016040523d82523d5f602084013e6103b3565b606091505b50509050806103f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ee90610c25565b60405180910390fd5b505050565b5f5f90509392505050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053390610c8d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a190610cf5565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610627826105fe565b9050919050565b6106378161061d565b8114610641575f5ffd5b50565b5f813590506106528161062e565b92915050565b5f6020828403121561066d5761066c6105f6565b5b5f61067a84828501610644565b91505092915050565b61068c8161061d565b82525050565b5f6020820190506106a55f830184610683565b92915050565b5f819050919050565b6106bd816106ab565b81146106c7575f5ffd5b50565b5f813590506106d8816106b4565b92915050565b5f5f604083850312156106f4576106f36105f6565b5b5f610701858286016106ca565b9250506020610712858286016106ca565b9150509250929050565b5f8115159050919050565b6107308161071c565b82525050565b5f6020820190506107495f830184610727565b92915050565b5f5f60408385031215610765576107646105f6565b5b5f61077285828601610644565b9250506020610783858286016106ca565b9150509250929050565b6107968161071c565b81146107a0575f5ffd5b50565b5f813590506107b18161078d565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610805826107bf565b810181811067ffffffffffffffff82111715610824576108236107cf565b5b80604052505050565b5f6108366105ed565b905061084282826107fc565b919050565b5f67ffffffffffffffff821115610861576108606107cf565b5b61086a826107bf565b9050602081019050919050565b828183375f83830152505050565b5f61089761089284610847565b61082d565b9050828152602081018484840111156108b3576108b26107bb565b5b6108be848285610877565b509392505050565b5f82601f8301126108da576108d96107b7565b5b81356108ea848260208601610885565b91505092915050565b5f5f5f6060848603121561090a576109096105f6565b5b5f610917868287016107a3565b9350506020610928868287016106ca565b925050604084013567ffffffffffffffff811115610949576109486105fa565b5b610955868287016108c6565b9150509250925092565b5f5f5f60608486031215610976576109756105f6565b5b5f84013567ffffffffffffffff811115610993576109926105fa565b5b61099f868287016108c6565b93505060206109b0868287016106ca565b92505060406109c186828701610644565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6109fd826109cb565b610a0781856109d5565b9350610a178185602086016109e5565b610a20816107bf565b840191505092915050565b5f6020820190508181035f830152610a4381846109f3565b905092915050565b5f5f60408385031215610a6157610a606105f6565b5b5f610a6e85828601610644565b9250506020610a7f85828601610644565b9150509250929050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f610abd600f836109d5565b9150610ac882610a89565b602082019050919050565b5f6020820190508181035f830152610aea81610ab1565b9050919050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610b256018836109d5565b9150610b3082610af1565b602082019050919050565b5f6020820190508181035f830152610b5281610b19565b9050919050565b610b62816106ab565b82525050565b5f602082019050610b7b5f830184610b59565b92915050565b5f81519050919050565b5f81905092915050565b5f610b9f82610b81565b610ba98185610b8b565b9350610bb98185602086016109e5565b80840191505092915050565b5f610bd08284610b95565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610c0f601d836109d5565b9150610c1a82610bdb565b602082019050919050565b5f6020820190508181035f830152610c3c81610c03565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610c776017836109d5565b9150610c8282610c43565b602082019050919050565b5f6020820190508181035f830152610ca481610c6b565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610cdf601d836109d5565b9150610cea82610cab565b602082019050919050565b5f6020820190508181035f830152610d0c81610cd3565b905091905056fea26469706673582212200abe8a98dad44ef117503ec8cb563a5cb365b73033754e5a76b7a312ce370de864736f6c634300081c0033