0x608060405234801561001057600080fd5b50610ca5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806379233003146100465780638894cdce146100625780638cb3377f1461007e575b600080fd5b610060600480360381019061005b919061069b565b61009a565b005b61007c600480360381019061007791906107bf565b6101d0565b005b61009860048036038101906100939190610892565b6102f0565b005b805183839050146100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d7906109de565b60405180910390fd5b60005b838390508110156101c9578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85858481811061011d5761011c6109fe565b5b90506020020160208101906101329190610a59565b848481518110610145576101446109fe565b5b60200260200101516040518363ffffffff1660e01b815260040161016a929190610aa4565b6020604051808303816000875af1158015610189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ad9190610b05565b6101b657600080fd5b80806101c190610b61565b9150506100e3565b5050505050565b818190508484905014610218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020f906109de565b60405180910390fd5b60005b848490508110156102e8578573ffffffffffffffffffffffffffffffffffffffff166342842e0e33878785818110610256576102556109fe565b5b905060200201602081019061026b9190610a59565b86868681811061027e5761027d6109fe565b5b905060200201356040518463ffffffff1660e01b81526004016102a393929190610ba9565b600060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b5050505080806102e090610b61565b91505061021b565b505050505050565b838390508686905014610338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032f906109de565b60405180910390fd5b60005b86869050811015610423578773ffffffffffffffffffffffffffffffffffffffff1663f242432a33898985818110610376576103756109fe565b5b905060200201602081019061038b9190610a59565b88888681811061039e5761039d6109fe565b5b905060200201358787878181106103b8576103b76109fe565b5b905060200201356040518563ffffffff1660e01b81526004016103de9493929190610c17565b600060405180830381600087803b1580156103f857600080fd5b505af115801561040c573d6000803e3d6000fd5b50505050808061041b90610b61565b91505061033b565b5050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061046c82610441565b9050919050565b600061047e82610461565b9050919050565b61048e81610473565b811461049957600080fd5b50565b6000813590506104ab81610485565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126104d6576104d56104b1565b5b8235905067ffffffffffffffff8111156104f3576104f26104b6565b5b60208301915083602082028301111561050f5761050e6104bb565b5b9250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61055f82610516565b810181811067ffffffffffffffff8211171561057e5761057d610527565b5b80604052505050565b600061059161042d565b905061059d8282610556565b919050565b600067ffffffffffffffff8211156105bd576105bc610527565b5b602082029050602081019050919050565b6000819050919050565b6105e1816105ce565b81146105ec57600080fd5b50565b6000813590506105fe816105d8565b92915050565b6000610617610612846105a2565b610587565b9050808382526020820190506020840283018581111561063a576106396104bb565b5b835b81811015610663578061064f88826105ef565b84526020840193505060208101905061063c565b5050509392505050565b600082601f830112610682576106816104b1565b5b8135610692848260208601610604565b91505092915050565b600080600080606085870312156106b5576106b4610437565b5b60006106c38782880161049c565b945050602085013567ffffffffffffffff8111156106e4576106e361043c565b5b6106f0878288016104c0565b9350935050604085013567ffffffffffffffff8111156107135761071261043c565b5b61071f8782880161066d565b91505092959194509250565b600061073682610461565b9050919050565b6107468161072b565b811461075157600080fd5b50565b6000813590506107638161073d565b92915050565b60008083601f84011261077f5761077e6104b1565b5b8235905067ffffffffffffffff81111561079c5761079b6104b6565b5b6020830191508360208202830111156107b8576107b76104bb565b5b9250929050565b6000806000806000606086880312156107db576107da610437565b5b60006107e988828901610754565b955050602086013567ffffffffffffffff81111561080a5761080961043c565b5b610816888289016104c0565b9450945050604086013567ffffffffffffffff8111156108395761083861043c565b5b61084588828901610769565b92509250509295509295909350565b600061085f82610461565b9050919050565b61086f81610854565b811461087a57600080fd5b50565b60008135905061088c81610866565b92915050565b60008060008060008060006080888a0312156108b1576108b0610437565b5b60006108bf8a828b0161087d565b975050602088013567ffffffffffffffff8111156108e0576108df61043c565b5b6108ec8a828b016104c0565b9650965050604088013567ffffffffffffffff81111561090f5761090e61043c565b5b61091b8a828b01610769565b9450945050606088013567ffffffffffffffff81111561093e5761093d61043c565b5b61094a8a828b01610769565b925092505092959891949750929550565b600082825260208201905092915050565b7f52656365697665727320616e6420616d6f756e747320617265206e6f7420746860008201527f652073616d65206c656e67746800000000000000000000000000000000000000602082015250565b60006109c8602d8361095b565b91506109d38261096c565b604082019050919050565b600060208201905081810360008301526109f7816109bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b610a3681610461565b8114610a4157600080fd5b50565b600081359050610a5381610a2d565b92915050565b600060208284031215610a6f57610a6e610437565b5b6000610a7d84828501610a44565b91505092915050565b610a8f81610461565b82525050565b610a9e816105ce565b82525050565b6000604082019050610ab96000830185610a86565b610ac66020830184610a95565b9392505050565b60008115159050919050565b610ae281610acd565b8114610aed57600080fd5b50565b600081519050610aff81610ad9565b92915050565b600060208284031215610b1b57610b1a610437565b5b6000610b2984828501610af0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b6c826105ce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b9e57610b9d610b32565b5b600182019050919050565b6000606082019050610bbe6000830186610a86565b610bcb6020830185610a86565b610bd86040830184610a95565b949350505050565b600082825260208201905092915050565b50565b6000610c01600083610be0565b9150610c0c82610bf1565b600082019050919050565b600060a082019050610c2c6000830187610a86565b610c396020830186610a86565b610c466040830185610a95565b610c536060830184610a95565b8181036080830152610c6481610bf4565b90509594505050505056fea2646970667358221220868b54b6318d61ad5761d51e4b051176248edef52e6a5b68da48ba48eb7d04df64736f6c63430008120033