0x608060405234801561000f575f5ffd5b506040518060400160405280600a81526020017f54657468657220555344000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5553445400000000000000000000000000000000000000000000000000000000815250816003908161008b9190610320565b50806004908161009b9190610320565b5050503360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103ef565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061015e57607f821691505b6020821081036101715761017061011a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610198565b6101dd8683610198565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61022161021c610217846101f5565b6101fe565b6101f5565b9050919050565b5f819050919050565b61023a83610207565b61024e61024682610228565b8484546101a4565b825550505050565b5f5f905090565b610265610256565b610270818484610231565b505050565b5b81811015610293576102885f8261025d565b600181019050610276565b5050565b601f8211156102d8576102a981610177565b6102b284610189565b810160208510156102c1578190505b6102d56102cd85610189565b830182610275565b50505b505050565b5f82821c905092915050565b5f6102f85f19846008026102dd565b1980831691505092915050565b5f61031083836102e9565b9150826002028217905092915050565b610329826100e3565b67ffffffffffffffff811115610342576103416100ed565b5b61034c8254610147565b610357828285610297565b5f60209050601f831160018114610388575f8415610376578287015190505b6103808582610305565b8655506103e7565b601f19841661039686610177565b5f5b828110156103bd57848901518255600182019150602085019450602081019050610398565b868310156103da57848901516103d6601f8916826102e9565b8355505b6001600288020188555050505b505050505050565b610f27806103fc5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c806370a082311161006f57806370a082311461017a57806388f48fbd146101aa5780638da5cb5b146101c657806395d89b41146101e4578063a9059cbb14610202578063dd62ed3e14610232576100b2565b806306fdde03146100b6578063095ea7b3146100d45780631249c58b1461010457806318160ddd1461010e57806323b872dd1461012c578063313ce5671461015c575b5f5ffd5b6100be610262565b6040516100cb9190610ba0565b60405180910390f35b6100ee60048036038101906100e99190610c51565b6102f2565b6040516100fb9190610ca9565b60405180910390f35b61010c610314565b005b61011661034c565b6040516101239190610cd1565b60405180910390f35b61014660048036038101906101419190610cea565b610355565b6040516101539190610ca9565b60405180910390f35b610164610383565b6040516101719190610d55565b60405180910390f35b610194600480360381019061018f9190610d6e565b61038b565b6040516101a19190610cd1565b60405180910390f35b6101c460048036038101906101bf9190610cea565b6103d0565b005b6101ce6103d5565b6040516101db9190610da8565b60405180910390f35b6101ec6103fa565b6040516101f99190610ba0565b60405180910390f35b61021c60048036038101906102179190610c51565b61048a565b6040516102299190610ca9565b60405180910390f35b61024c60048036038101906102479190610dc1565b6104ac565b6040516102599190610cd1565b60405180910390f35b60606003805461027190610e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610e2c565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f5f6102fc61052e565b9050610309818585610535565b600191505092915050565b61034a60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166aa56fa5b99019a5c8000000610547565b565b5f600254905090565b5f5f61035f61052e565b905061036c8582856105c6565b610377858585610658565b60019150509392505050565b5f6012905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461040990610e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461043590610e2c565b80156104805780601f1061045757610100808354040283529160200191610480565b820191905f5260205f20905b81548152906001019060200180831161046357829003601f168201915b5050505050905090565b5f5f61049461052e565b90506104a1818585610658565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6105428383836001610748565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105b7575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105ae9190610da8565b60405180910390fd5b6105c25f8383610917565b5050565b5f6105d184846104ac565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106525781811015610643578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161063a93929190610e5c565b60405180910390fd5b61065184848484035f610748565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c8575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106bf9190610da8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610738575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161072f9190610da8565b60405180910390fd5b610743838383610917565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107b8575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016107af9190610da8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610828575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161081f9190610da8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610911578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109089190610cd1565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610967578060025f82825461095b9190610ebe565b92505081905550610a35565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156109f0578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016109e793929190610e5c565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a7c578060025f8282540392505081905550610ac6565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b239190610cd1565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610b7282610b30565b610b7c8185610b3a565b9350610b8c818560208601610b4a565b610b9581610b58565b840191505092915050565b5f6020820190508181035f830152610bb88184610b68565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bed82610bc4565b9050919050565b610bfd81610be3565b8114610c07575f5ffd5b50565b5f81359050610c1881610bf4565b92915050565b5f819050919050565b610c3081610c1e565b8114610c3a575f5ffd5b50565b5f81359050610c4b81610c27565b92915050565b5f5f60408385031215610c6757610c66610bc0565b5b5f610c7485828601610c0a565b9250506020610c8585828601610c3d565b9150509250929050565b5f8115159050919050565b610ca381610c8f565b82525050565b5f602082019050610cbc5f830184610c9a565b92915050565b610ccb81610c1e565b82525050565b5f602082019050610ce45f830184610cc2565b92915050565b5f5f5f60608486031215610d0157610d00610bc0565b5b5f610d0e86828701610c0a565b9350506020610d1f86828701610c0a565b9250506040610d3086828701610c3d565b9150509250925092565b5f60ff82169050919050565b610d4f81610d3a565b82525050565b5f602082019050610d685f830184610d46565b92915050565b5f60208284031215610d8357610d82610bc0565b5b5f610d9084828501610c0a565b91505092915050565b610da281610be3565b82525050565b5f602082019050610dbb5f830184610d99565b92915050565b5f5f60408385031215610dd757610dd6610bc0565b5b5f610de485828601610c0a565b9250506020610df585828601610c0a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e4357607f821691505b602082108103610e5657610e55610dff565b5b50919050565b5f606082019050610e6f5f830186610d99565b610e7c6020830185610cc2565b610e896040830184610cc2565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ec882610c1e565b9150610ed383610c1e565b9250828201905080821115610eeb57610eea610e91565b5b9291505056fea26469706673582212205d2f91f49cd1b4b99c69effbb4391058e126deabcea2babcde50aa3236954b8864736f6c634300081c0033