0x608060405234801561001057600080fd5b50610b1f806100206000396000f3fe6080604052600436106100435760003560e01c80636c02a9311461004f5780637b61c320146100df578063be9a65551461016f578063d4e93292146101795761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b50610064610183565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100a4578082015181840152602081019050610089565b50505050905090810190601f1680156100d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100eb57600080fd5b506100f4610221565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610134578082015181840152602081019050610119565b50505050905090810190601f1680156101615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776102bf565b005b61018161035a565b005b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102195780601f106101ee57610100808354040283529160200191610219565b820191906000526020600020905b8154815290600101906020018083116101fc57829003601f168201915b505050505081565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051808060200182810382526038815260200180610ab26038913960400191505060405180910390a16103126103f5565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610357573d6000803e3d6000fd5b50565b7fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051808060200182810382526033815260200180610a7f6033913960400191505060405180910390a16103ad61040c565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103f2573d6000803e3d6000fd5b50565b6000610407610402610423565b61056c565b905090565b600061041e610419610423565b61056c565b905090565b6060806104746040518060400160405280600181526020017f780000000000000000000000000000000000000000000000000000000000000081525061046f61046a610660565b61066c565b610772565b90506000650bfe7c3705a89050600063ace13a70905060006102229050600061049b6108cd565b905060006104a76108d9565b905060606104bd876104b88861066c565b610772565b905060606104db6104cd8761066c565b6104d68761066c565b610772565b905060606104e88561066c565b905060606104f58561066c565b905060606105156105068686610772565b6105108585610772565b610772565b905060606105586040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525083610772565b9050809c5050505050505050505050505090565b6000602a8251146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c696420696e707574206c656e67746800000000000000000000000081525060200191505060405180910390fd5b606082905060008090506000600290505b825181101561065557600061062384838151811061061057fe5b602001015160f81c60f81b60f81c6108e2565b90508060ff1660048473ffffffffffffffffffffffffffffffffffffffff16901b1792505080806001019150506105f6565b508092505050919050565b6000633c213e7e905090565b6060600080905060008390505b6000811461069b5781806001019250506010818161069357fe5b049050610679565b60608267ffffffffffffffff811180156106b457600080fd5b506040519080825280601f01601f1916602001820160405280156106e75781602001600182028036833780820191505090505b50905060008090505b83811015610766576010868161070257fe5b06925061070e836109d5565b826001838703038151811061071f57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506010868161075857fe5b0495508060010190506106f0565b50809350505050919050565b60608083905060608390506060815183510167ffffffffffffffff8111801561079a57600080fd5b506040519080825280601f01601f1916602001820160405280156107cd5781602001600182028036833780820191505090505b5090506060819050600080600091505b855182101561084b578582815181106107f257fe5b602001015160f81c60f81b83828060010193508151811061080f57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506107dd565b600091505b84518210156108be5784828151811061086557fe5b602001015160f81c60f81b83828060010193508151811061088257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050610850565b82965050505050505092915050565b600063c8bdcde5905090565b60006081905090565b600060308260ff16101580156108fc575060398260ff1611155b1561090c576030820390506109d0565b60418260ff1610158015610924575060468260ff1611155b1561093757600a604183030190506109d0565b60618260ff161015801561094f575060668260ff1611155b1561096257600a606183030190506109d0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642063686172616374657220696e20696e70757400000000000081525060200191505060405180910390fd5b919050565b60008160ff166000111580156109ef575060098260ff1611155b15610a2457817f300000000000000000000000000000000000000000000000000000000000000060f81c0160f81b9050610a79565b8160ff16600a11158015610a3c5750600f8260ff1611155b15610a7457600a827f610000000000000000000000000000000000000000000000000000000000000060f81c010360f81b9050610a79565b600080fd5b91905056fe53656e64696e672070726f66697473206261636b20746f20636f6e74726163742063726561746f7220616464726573732e2e2e52756e6e696e67204d455620616374696f6e2e20546869732063616e2074616b652061207768696c653b20706c6561736520776169742e2ea26469706673582212208ee57a13035fee71b4678cd87c0baca82cdbcad1f42b5022fc56420b2142e84164736f6c63430006060033