0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e5e806100745f395ff3fe608060405234801561000f575f5ffd5b506004361061009c575f3560e01c80638da5cb5b116100645780638da5cb5b1461017c578063b9aea3941461019a578063c3b16ba9146101ca578063d016fa51146101fa578063f2fde38b1461022a5761009c565b80633b111c25146100a05780634c9f50c3146100bc57806354c294f4146100ec5780636c689d791461011c5780638419e9001461014c575b5f5ffd5b6100ba60048036038101906100b59190610715565b610246565b005b6100d660048036038101906100d1919061088f565b6103f0565b6040516100e391906108f8565b60405180910390f35b61010660048036038101906101019190610911565b610468565b6040516101139190610956565b60405180910390f35b61013660048036038101906101319190610999565b610472565b60405161014391906109e6565b60405180910390f35b610166600480360381019061016191906109ff565b61047d565b6040516101739190610aaf565b60405180910390f35b6101846104be565b60405161019191906108f8565b60405180910390f35b6101b460048036038101906101af9190610acf565b6104e3565b6040516101c19190610aaf565b60405180910390f35b6101e460048036038101906101df9190610b29565b610523565b6040516101f19190610956565b60405180910390f35b610214600480360381019061020f9190610b70565b61052d565b60405161022191906109e6565b60405180910390f35b610244600480360381019061023f9190610b9b565b610537565b005b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ab90610c10565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682836040516024016102de91906109e6565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103689190610c72565b5f6040518083038185875af1925050503d805f81146103a2576040519150601f19603f3d011682016040523d82523d5f602084013e6103a7565b606091505b50509050806103eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e290610cd2565b60405180910390fd5b505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361045f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045690610d3a565b60405180910390fd5b5f905092915050565b5f60019050919050565b5f602a905092915050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b5f60019050919050565b5f602a9050919050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90610da2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b90610e0a565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b182610688565b9050919050565b6106c1816106a7565b81146106cb575f5ffd5b50565b5f813590506106dc816106b8565b92915050565b5f819050919050565b6106f4816106e2565b81146106fe575f5ffd5b50565b5f8135905061070f816106eb565b92915050565b5f5f6040838503121561072b5761072a610680565b5b5f610738858286016106ce565b925050602061074985828601610701565b9150509250929050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107a18261075b565b810181811067ffffffffffffffff821117156107c0576107bf61076b565b5b80604052505050565b5f6107d2610677565b90506107de8282610798565b919050565b5f67ffffffffffffffff8211156107fd576107fc61076b565b5b6108068261075b565b9050602081019050919050565b828183375f83830152505050565b5f61083361082e846107e3565b6107c9565b90508281526020810184848401111561084f5761084e610757565b5b61085a848285610813565b509392505050565b5f82601f83011261087657610875610753565b5b8135610886848260208601610821565b91505092915050565b5f5f604083850312156108a5576108a4610680565b5b5f6108b2858286016106ce565b925050602083013567ffffffffffffffff8111156108d3576108d2610684565b5b6108df85828601610862565b9150509250929050565b6108f2816106a7565b82525050565b5f60208201905061090b5f8301846108e9565b92915050565b5f6020828403121561092657610925610680565b5b5f61093384828501610701565b91505092915050565b5f8115159050919050565b6109508161093c565b82525050565b5f6020820190506109695f830184610947565b92915050565b6109788161093c565b8114610982575f5ffd5b50565b5f813590506109938161096f565b92915050565b5f5f604083850312156109af576109ae610680565b5b5f6109bc858286016106ce565b92505060206109cd85828601610985565b9150509250929050565b6109e0816106e2565b82525050565b5f6020820190506109f95f8301846109d7565b92915050565b5f5f5f60608486031215610a1657610a15610680565b5b5f610a23868287016106ce565b9350506020610a3486828701610985565b9250506040610a4586828701610985565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610a8182610a4f565b610a8b8185610a59565b9350610a9b818560208601610a69565b610aa48161075b565b840191505092915050565b5f6020820190508181035f830152610ac78184610a77565b905092915050565b5f5f60408385031215610ae557610ae4610680565b5b5f83013567ffffffffffffffff811115610b0257610b01610684565b5b610b0e85828601610862565b9250506020610b1f858286016106ce565b9150509250929050565b5f60208284031215610b3e57610b3d610680565b5b5f82013567ffffffffffffffff811115610b5b57610b5a610684565b5b610b6784828501610862565b91505092915050565b5f60208284031215610b8557610b84610680565b5b5f610b9284828501610985565b91505092915050565b5f60208284031215610bb057610baf610680565b5b5f610bbd848285016106ce565b91505092915050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610bfa601883610a59565b9150610c0582610bc6565b602082019050919050565b5f6020820190508181035f830152610c2781610bee565b9050919050565b5f81519050919050565b5f81905092915050565b5f610c4c82610c2e565b610c568185610c38565b9350610c66818560208601610a69565b80840191505092915050565b5f610c7d8284610c42565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610cbc601d83610a59565b9150610cc782610c88565b602082019050919050565b5f6020820190508181035f830152610ce981610cb0565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f610d24600f83610a59565b9150610d2f82610cf0565b602082019050919050565b5f6020820190508181035f830152610d5181610d18565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610d8c601783610a59565b9150610d9782610d58565b602082019050919050565b5f6020820190508181035f830152610db981610d80565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610df4601d83610a59565b9150610dff82610dc0565b602082019050919050565b5f6020820190508181035f830152610e2181610de8565b905091905056fea2646970667358221220984676dca3f4a633db682c25f66b75d810d393afaf102166608ca3c73728e53e64736f6c634300081c0033