608060405234801561000f575f5ffd5b506040518060400160405280600581526020017f41776f6f6f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f617700000000000000000000000000000000000000000000000000000000000081525069152d02c7e14af6800000601283600390816100989190610357565b5082600490816100a89190610357565b5080600a6100b69190610582565b826100c191906105cc565b6002819055506002545f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550806005819055505050505061060d565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061019557607f821691505b6020821081036101a8576101a7610151565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261020a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101cf565b61021486836101cf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61025861025361024e8461022c565b610235565b61022c565b9050919050565b5f819050919050565b6102718361023e565b61028561027d8261025f565b8484546101db565b825550505050565b5f5f905090565b61029c61028d565b6102a7818484610268565b505050565b5b818110156102ca576102bf5f82610294565b6001810190506102ad565b5050565b601f82111561030f576102e0816101ae565b6102e9846101c0565b810160208510156102f8578190505b61030c610304856101c0565b8301826102ac565b50505b505050565b5f82821c905092915050565b5f61032f5f1984600802610314565b1980831691505092915050565b5f6103478383610320565b9150826002028217905092915050565b6103608261011a565b67ffffffffffffffff81111561037957610378610124565b5b610383825461017e565b61038e8282856102ce565b5f60209050601f8311600181146103bf575f84156103ad578287015190505b6103b7858261033c565b86555061041e565b601f1984166103cd866101ae565b5f5b828110156103f4578489015182556001820191506020850194506020810190506103cf565b86831015610411578489015161040d601f891682610320565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156104a85780860481111561048457610483610426565b5b60018516156104935780820291505b80810290506104a185610453565b9450610468565b94509492505050565b5f826104c0576001905061057b565b816104cd575f905061057b565b81600181146104e357600281146104ed5761051c565b600191505061057b565b60ff8411156104ff576104fe610426565b5b8360020a91508482111561051657610515610426565b5b5061057b565b5060208310610133831016604e8410600b84101617156105515782820a90508381111561054c5761054b610426565b5b61057b565b61055e848484600161045f565b9250905081840481111561057557610574610426565b5b81810290505b9392505050565b5f61058c8261022c565b91506105978361022c565b92506105c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b1565b905092915050565b5f6105d68261022c565b91506105e18361022c565b92508282026105ef8161022c565b9150828204841483151761060657610605610426565b5b5092915050565b610c5f8061061a5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a7575f3560e01c8063313ce5671161006f578063313ce5671461014f5780635c6581651461016d57806370a082311461019d57806395d89b41146101cd578063a9059cbb146101eb578063dd62ed3e14610207576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100e557806323b872dd1461010357806327e235e31461011f575b5f5ffd5b6100b3610237565b6040516100c09190610969565b60405180910390f35b6100e360048036038101906100de9190610a1a565b6102c3565b005b6100ed6103a9565b6040516100fa9190610a67565b60405180910390f35b61011d60048036038101906101189190610a80565b6103af565b005b61013960048036038101906101349190610ad0565b610617565b6040516101469190610a67565b60405180910390f35b61015761062b565b6040516101649190610a67565b60405180910390f35b61018760048036038101906101829190610afb565b610631565b6040516101949190610a67565b60405180910390f35b6101b760048036038101906101b29190610ad0565b610651565b6040516101c49190610a67565b60405180910390f35b6101d5610696565b6040516101e29190610969565b60405180910390f35b61020560048036038101906102009190610a1a565b610722565b005b610221600480360381019061021c9190610afb565b610877565b60405161022e9190610a67565b60405180910390f35b6003805461024490610b66565b80601f016020809104026020016040519081016040528092919081815260200182805461027090610b66565b80156102bb5780601f10610292576101008083540402835291602001916102bb565b820191905f5260205f20905b81548152906001019060200180831161029e57829003601f168201915b505050505081565b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161039d9190610a67565b60405180910390a35050565b60025481565b805f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156103f7575f5ffd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561047b575f5ffd5b805f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104c69190610bc3565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105189190610bf6565b925050819055508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105a69190610bc3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161060a9190610a67565b60405180910390a3505050565b5f602052805f5260405f205f915090505481565b60055481565b6001602052815f5260405f20602052805f5260405f205f91509150505481565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600480546106a390610b66565b80601f01602080910402602001604051908101604052809291908181526020018280546106cf90610b66565b801561071a5780601f106106f15761010080835404028352916020019161071a565b820191905f5260205f20905b8154815290600101906020018083116106fd57829003601f168201915b505050505081565b805f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561076a575f5ffd5b805f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107b59190610bc3565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108079190610bf6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161086b9190610a67565b60405180910390a35050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61093b826108f9565b6109458185610903565b9350610955818560208601610913565b61095e81610921565b840191505092915050565b5f6020820190508181035f8301526109818184610931565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109b68261098d565b9050919050565b6109c6816109ac565b81146109d0575f5ffd5b50565b5f813590506109e1816109bd565b92915050565b5f819050919050565b6109f9816109e7565b8114610a03575f5ffd5b50565b5f81359050610a14816109f0565b92915050565b5f5f60408385031215610a3057610a2f610989565b5b5f610a3d858286016109d3565b9250506020610a4e85828601610a06565b9150509250929050565b610a61816109e7565b82525050565b5f602082019050610a7a5f830184610a58565b92915050565b5f5f5f60608486031215610a9757610a96610989565b5b5f610aa4868287016109d3565b9350506020610ab5868287016109d3565b9250506040610ac686828701610a06565b9150509250925092565b5f60208284031215610ae557610ae4610989565b5b5f610af2848285016109d3565b91505092915050565b5f5f60408385031215610b1157610b10610989565b5b5f610b1e858286016109d3565b9250506020610b2f858286016109d3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b7d57607f821691505b602082108103610b9057610b8f610b39565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610bcd826109e7565b9150610bd8836109e7565b9250828203905081811115610bf057610bef610b96565b5b92915050565b5f610c00826109e7565b9150610c0b836109e7565b9250828201905080821115610c2357610c22610b96565b5b9291505056fea264697066735822122058faae28396506bbb1ffbb6283e744490d5c7f833579a4c8be108b1ea1454dcf64736f6c634300081c0033