0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4a4a20436f696e00000000000000000000000000000000000000000000000000815250600090816200005891906200038a565b506040518060400160405280600281526020017f4a4a000000000000000000000000000000000000000000000000000000000000815250600190816200009f91906200038a565b506122b9600281905550600254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006101000a81548160ff02191690831515021790555062000471565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200019257607f821691505b602082108103620001a857620001a76200014a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001d3565b6200021e8683620001d3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200026b620002656200025f8462000236565b62000240565b62000236565b9050919050565b6000819050919050565b62000287836200024a565b6200029f620002968262000272565b848454620001e0565b825550505050565b600090565b620002b6620002a7565b620002c38184846200027c565b505050565b5b81811015620002eb57620002df600082620002ac565b600181019050620002c9565b5050565b601f8211156200033a576200030481620001ae565b6200030f84620001c3565b810160208510156200031f578190505b620003376200032e85620001c3565b830182620002c8565b50505b505050565b600082821c905092915050565b60006200035f600019846008026200033f565b1980831691505092915050565b60006200037a83836200034c565b9150826002028217905092915050565b620003958262000110565b67ffffffffffffffff811115620003b157620003b06200011b565b5b620003bd825462000179565b620003ca828285620002ef565b600060209050601f831160018114620004025760008415620003ed578287015190505b620003f985826200036c565b86555062000469565b601f1984166200041286620001ae565b60005b828110156200043c5784890151825560018201915060208501945060208101905062000415565b868310156200045c578489015162000458601f8916826200034c565b8355505b6001600288020188555050505b505050505050565b610d8480620004816000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637d55094d1161005b5780637d55094d146100ee57806395d89b41146100f857806396532d1c14610116578063d8b66ae1146101345761007d565b806306fdde031461008257806318160ddd146100a057806327e235e3146100be575b600080fd5b61008a610150565b604051610097919061060a565b60405180910390f35b6100a86101de565b6040516100b59190610645565b60405180910390f35b6100d860048036038101906100d391906106d2565b6101e4565b6040516100e59190610645565b60405180910390f35b6100f66101fc565b005b610100610296565b60405161010d919061060a565b60405180910390f35b61011e610324565b60405161012b919061071a565b60405180910390f35b61014e6004803603810190610149919061096c565b610337565b005b6000805461015d90610a13565b80601f016020809104026020016040519081016040528092919081815260200182805461018990610a13565b80156101d65780601f106101ab576101008083540402835291602001916101d6565b820191906000526020600020905b8154815290600101906020018083116101b957829003601f168201915b505050505081565b60025481565b60036020528060005260406000206000915090505481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026190610ab6565b60405180910390fd5b600460009054906101000a900460ff1615600460006101000a81548160ff021916908315150217905550565b600180546102a390610a13565b80601f01602080910402602001604051908101604052809291908181526020018280546102cf90610a13565b801561031c5780601f106102f15761010080835404028352916020019161031c565b820191906000526020600020905b8154815290600101906020018083116102ff57829003601f168201915b505050505081565b600460009054906101000a900460ff1681565b805182511461037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037290610b22565b60405180910390fd5b6059825111156103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b790610bb4565b60405180910390fd5b60005b8251811015610575578181815181106103df576103de610bd4565b5b6020026020010151600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f90610c4f565b60405180910390fd5b81818151811061047b5761047a610bd4565b5b6020026020010151600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104d19190610c9e565b925050819055508181815181106104eb576104ea610bd4565b5b60200260200101516003600085848151811061050a57610509610bd4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461055b9190610cd2565b92505081905550808061056d90610d06565b9150506103c3565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156105b4578082015181840152602081019050610599565b60008484015250505050565b6000601f19601f8301169050919050565b60006105dc8261057a565b6105e68185610585565b93506105f6818560208601610596565b6105ff816105c0565b840191505092915050565b6000602082019050818103600083015261062481846105d1565b905092915050565b6000819050919050565b61063f8161062c565b82525050565b600060208201905061065a6000830184610636565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061069f82610674565b9050919050565b6106af81610694565b81146106ba57600080fd5b50565b6000813590506106cc816106a6565b92915050565b6000602082840312156106e8576106e761066a565b5b60006106f6848285016106bd565b91505092915050565b60008115159050919050565b610714816106ff565b82525050565b600060208201905061072f600083018461070b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610772826105c0565b810181811067ffffffffffffffff821117156107915761079061073a565b5b80604052505050565b60006107a4610660565b90506107b08282610769565b919050565b600067ffffffffffffffff8211156107d0576107cf61073a565b5b602082029050602081019050919050565b600080fd5b60006107f96107f4846107b5565b61079a565b9050808382526020820190506020840283018581111561081c5761081b6107e1565b5b835b81811015610845578061083188826106bd565b84526020840193505060208101905061081e565b5050509392505050565b600082601f83011261086457610863610735565b5b81356108748482602086016107e6565b91505092915050565b600067ffffffffffffffff8211156108985761089761073a565b5b602082029050602081019050919050565b6108b28161062c565b81146108bd57600080fd5b50565b6000813590506108cf816108a9565b92915050565b60006108e86108e38461087d565b61079a565b9050808382526020820190506020840283018581111561090b5761090a6107e1565b5b835b81811015610934578061092088826108c0565b84526020840193505060208101905061090d565b5050509392505050565b600082601f83011261095357610952610735565b5b81356109638482602086016108d5565b91505092915050565b600080604083850312156109835761098261066a565b5b600083013567ffffffffffffffff8111156109a1576109a061066f565b5b6109ad8582860161084f565b925050602083013567ffffffffffffffff8111156109ce576109cd61066f565b5b6109da8582860161093e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610a2b57607f821691505b602082108103610a3e57610a3d6109e4565b5b50919050565b7f4f6e6c7920636f6e747261637420697473656c662063616e20746f67676c652060008201527f6d696e74696e6700000000000000000000000000000000000000000000000000602082015250565b6000610aa0602783610585565b9150610aab82610a44565b604082019050919050565b60006020820190508181036000830152610acf81610a93565b9050919050565b7f4172726179206c656e6774687320646f206e6f74206d61746368000000000000600082015250565b6000610b0c601a83610585565b9150610b1782610ad6565b602082019050919050565b60006020820190508181036000830152610b3b81610aff565b9050919050565b7f4578636565646564206d6178696d756d206e756d626572206f6620726563697060008201527f69656e7473000000000000000000000000000000000000000000000000000000602082015250565b6000610b9e602583610585565b9150610ba982610b42565b604082019050919050565b60006020820190508181036000830152610bcd81610b91565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610c39601483610585565b9150610c4482610c03565b602082019050919050565b60006020820190508181036000830152610c6881610c2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ca98261062c565b9150610cb48361062c565b9250828203905081811115610ccc57610ccb610c6f565b5b92915050565b6000610cdd8261062c565b9150610ce88361062c565b9250828201905080821115610d0057610cff610c6f565b5b92915050565b6000610d118261062c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d4357610d42610c6f565b5b60018201905091905056fea2646970667358221220f2faab89fa7abbfdfc1d1c8f87da7ee4108f2b5f00e6d5da1d4c6f1754279f4964736f6c63430008120033