608060405234801561000f575f5ffd5b50336040518060400160405280600a81526020017f53686962612057696e67000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f57494e4700000000000000000000000000000000000000000000000000000000815250816003908161008c9190610424565b50806004908161009c9190610424565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361010f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101069190610532565b60405180910390fd5b61011e8161012460201b60201c565b5061054b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061026257607f821691505b6020821081036102755761027461021e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261029c565b6102e1868361029c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61032561032061031b846102f9565b610302565b6102f9565b9050919050565b5f819050919050565b61033e8361030b565b61035261034a8261032c565b8484546102a8565b825550505050565b5f5f905090565b61036961035a565b610374818484610335565b505050565b5b818110156103975761038c5f82610361565b60018101905061037a565b5050565b601f8211156103dc576103ad8161027b565b6103b68461028d565b810160208510156103c5578190505b6103d96103d18561028d565b830182610379565b50505b505050565b5f82821c905092915050565b5f6103fc5f19846008026103e1565b1980831691505092915050565b5f61041483836103ed565b9150826002028217905092915050565b61042d826101e7565b67ffffffffffffffff811115610446576104456101f1565b5b610450825461024b565b61045b82828561039b565b5f60209050601f83116001811461048c575f841561047a578287015190505b6104848582610409565b8655506104eb565b601f19841661049a8661027b565b5f5b828110156104c15784890151825560018201915060208501945060208101905061049c565b868310156104de57848901516104da601f8916826103ed565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61051c826104f3565b9050919050565b61052c81610512565b82525050565b5f6020820190506105455f830184610523565b92915050565b611499806105585f395ff3fe608060405234801561000f575f5ffd5b50600436106100f3575f3560e01c80635427789c1161009557806395d89b411161006457806395d89b411461024f578063a9059cbb1461026d578063dd62ed3e1461029d578063f2fde38b146102cd576100f3565b80635427789c146101d957806370a08231146101f7578063715018a6146102275780638da5cb5b14610231576100f3565b806318160ddd116100d157806318160ddd1461014f57806323b872dd1461016d578063313ce5671461019d57806332cb6b0c146101bb576100f3565b806306fdde03146100f7578063095ea7b3146101155780631249c58b14610145575b5f5ffd5b6100ff6102e9565b60405161010c9190610fb4565b60405180910390f35b61012f600480360381019061012a9190611065565b610379565b60405161013c91906110bd565b60405180910390f35b61014d61039b565b005b610157610561565b60405161016491906110e5565b60405180910390f35b610187600480360381019061018291906110fe565b61056a565b60405161019491906110bd565b60405180910390f35b6101a5610598565b6040516101b29190611169565b60405180910390f35b6101c36105a0565b6040516101d091906110e5565b60405180910390f35b6101e16105b0565b6040516101ee91906110e5565b60405180910390f35b610211600480360381019061020c9190611182565b6105c0565b60405161021e91906110e5565b60405180910390f35b61022f610605565b005b610239610618565b60405161024691906111bc565b60405180910390f35b610257610640565b6040516102649190610fb4565b60405180910390f35b61028760048036038101906102829190611065565b6106d0565b60405161029491906110bd565b60405180910390f35b6102b760048036038101906102b291906111d5565b6106f2565b6040516102c491906110e5565b60405180910390f35b6102e760048036038101906102e29190611182565b610774565b005b6060600380546102f890611240565b80601f016020809104026020016040519081016040528092919081815260200182805461032490611240565b801561036f5780601f106103465761010080835404028352916020019161036f565b820191905f5260205f20905b81548152906001019060200180831161035257829003601f168201915b5050505050905090565b5f5f6103836107f8565b90506103908185856107ff565b600191505092915050565b6b02df458b2c635dcf55e00000806103b1610561565b6103bb919061129d565b11156103fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f39061131a565b60405180910390fd5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d90611382565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104eb90611410565b60405180910390fd5b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061055f336b02df458b2c635dcf55e00000610811565b565b5f600254905090565b5f5f6105746107f8565b9050610581858285610890565b61058c858585610922565b60019150509392505050565b5f6012905090565b6b02df458b2c635dcf55e0000081565b6b02df458b2c635dcf55e0000081565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61060d610a12565b6106165f610a99565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461064f90611240565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90611240565b80156106c65780601f1061069d576101008083540402835291602001916106c6565b820191905f5260205f20905b8154815290600101906020018083116106a957829003601f168201915b5050505050905090565b5f5f6106da6107f8565b90506106e7818585610922565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61077c610a12565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107ec575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107e391906111bc565b60405180910390fd5b6107f581610a99565b50565b5f33905090565b61080c8383836001610b5c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610881575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161087891906111bc565b60405180910390fd5b61088c5f8383610d2b565b5050565b5f61089b84846106f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461091c578181101561090d578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016109049392919061142e565b60405180910390fd5b61091b84848484035f610b5c565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610992575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161098991906111bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a02575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109f991906111bc565b60405180910390fd5b610a0d838383610d2b565b505050565b610a1a6107f8565b73ffffffffffffffffffffffffffffffffffffffff16610a38610618565b73ffffffffffffffffffffffffffffffffffffffff1614610a9757610a5b6107f8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a8e91906111bc565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610bcc575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610bc391906111bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c3c575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c3391906111bc565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d25578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d1c91906110e5565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d7b578060025f828254610d6f919061129d565b92505081905550610e49565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e04578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610dfb9392919061142e565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e90578060025f8282540392505081905550610eda565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f3791906110e5565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f8682610f44565b610f908185610f4e565b9350610fa0818560208601610f5e565b610fa981610f6c565b840191505092915050565b5f6020820190508181035f830152610fcc8184610f7c565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61100182610fd8565b9050919050565b61101181610ff7565b811461101b575f5ffd5b50565b5f8135905061102c81611008565b92915050565b5f819050919050565b61104481611032565b811461104e575f5ffd5b50565b5f8135905061105f8161103b565b92915050565b5f5f6040838503121561107b5761107a610fd4565b5b5f6110888582860161101e565b925050602061109985828601611051565b9150509250929050565b5f8115159050919050565b6110b7816110a3565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b6110df81611032565b82525050565b5f6020820190506110f85f8301846110d6565b92915050565b5f5f5f6060848603121561111557611114610fd4565b5b5f6111228682870161101e565b93505060206111338682870161101e565b925050604061114486828701611051565b9150509250925092565b5f60ff82169050919050565b6111638161114e565b82525050565b5f60208201905061117c5f83018461115a565b92915050565b5f6020828403121561119757611196610fd4565b5b5f6111a48482850161101e565b91505092915050565b6111b681610ff7565b82525050565b5f6020820190506111cf5f8301846111ad565b92915050565b5f5f604083850312156111eb576111ea610fd4565b5b5f6111f88582860161101e565b92505060206112098582860161101e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061125757607f821691505b60208210810361126a57611269611213565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6112a782611032565b91506112b283611032565b92508282019050808211156112ca576112c9611270565b5b92915050565b7f546f74616c20737570706c7920657863656564656400000000000000000000005f82015250565b5f611304601583610f4e565b915061130f826112d0565b602082019050919050565b5f6020820190508181035f830152611331816112f8565b9050919050565b7f416464726573732068617320616c7265616479206d696e7465640000000000005f82015250565b5f61136c601a83610f4e565b915061137782611338565b602082019050919050565b5f6020820190508181035f83015261139981611360565b9050919050565b7f436f6e74726163747320617265206e6f7420616c6c6f77656420746f206d696e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6113fa602183610f4e565b9150611405826113a0565b604082019050919050565b5f6020820190508181035f830152611427816113ee565b9050919050565b5f6060820190506114415f8301866111ad565b61144e60208301856110d6565b61145b60408301846110d6565b94935050505056fea264697066735822122042993520a8116fc0daa14629a9401f79b7519f37fc8277e43416baadd828b29e64736f6c634300081c0033