0x60806040526012600560006101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040516200145338038062001453833981810160405281019062000053919062000253565b816003908162000064919062000523565b50806004908162000076919062000523565b5033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200060a565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200012982620000de565b810181811067ffffffffffffffff821117156200014b576200014a620000ef565b5b80604052505050565b600062000160620000c0565b90506200016e82826200011e565b919050565b600067ffffffffffffffff821115620001915762000190620000ef565b5b6200019c82620000de565b9050602081019050919050565b60005b83811015620001c9578082015181840152602081019050620001ac565b60008484015250505050565b6000620001ec620001e68462000173565b62000154565b9050828152602081018484840111156200020b576200020a620000d9565b5b62000218848285620001a9565b509392505050565b600082601f830112620002385762000237620000d4565b5b81516200024a848260208601620001d5565b91505092915050565b600080604083850312156200026d576200026c620000ca565b5b600083015167ffffffffffffffff8111156200028e576200028d620000cf565b5b6200029c8582860162000220565b925050602083015167ffffffffffffffff811115620002c057620002bf620000cf565b5b620002ce8582860162000220565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200032b57607f821691505b602082108103620003415762000340620002e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200036c565b620003b786836200036c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000404620003fe620003f884620003cf565b620003d9565b620003cf565b9050919050565b6000819050919050565b6200042083620003e3565b620004386200042f826200040b565b84845462000379565b825550505050565b600090565b6200044f62000440565b6200045c81848462000415565b505050565b5b8181101562000484576200047860008262000445565b60018101905062000462565b5050565b601f821115620004d3576200049d8162000347565b620004a8846200035c565b81016020851015620004b8578190505b620004d0620004c7856200035c565b83018262000461565b50505b505050565b600082821c905092915050565b6000620004f860001984600802620004d8565b1980831691505092915050565b6000620005138383620004e5565b9150826002028217905092915050565b6200052e82620002d8565b67ffffffffffffffff8111156200054a5762000549620000ef565b5b62000556825462000312565b6200056382828562000488565b600060209050601f8311600181146200059b576000841562000586578287015190505b62000592858262000505565b86555062000602565b601f198416620005ab8662000347565b60005b82811015620005d557848901518255600182019150602085019450602081019050620005ae565b86831015620005f55784890151620005f1601f891682620004e5565b8355505b6001600288020188555050505b505050505050565b610e39806200061a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461018f5780638da5cb5b146101bf57806395d89b41146101dd578063a0712d68146101fb578063a9059cbb14610217578063dd62ed3e14610247576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce5671461015557806342966c6814610173575b600080fd5b6100c1610277565b6040516100ce9190610a63565b60405180910390f35b6100f160048036038101906100ec9190610b1e565b610305565b6040516100fe9190610b79565b60405180910390f35b61010f6103f7565b60405161011c9190610ba3565b60405180910390f35b61013f600480360381019061013a9190610bbe565b6103fd565b60405161014c9190610b79565b60405180910390f35b61015d6105ac565b60405161016a9190610c2d565b60405180910390f35b61018d60048036038101906101889190610c48565b6105bf565b005b6101a960048036038101906101a49190610c75565b610696565b6040516101b69190610ba3565b60405180910390f35b6101c76106ae565b6040516101d49190610cb1565b60405180910390f35b6101e56106d4565b6040516101f29190610a63565b60405180910390f35b61021560048036038101906102109190610c48565b610762565b005b610231600480360381019061022c9190610b1e565b610893565b60405161023e9190610b79565b60405180910390f35b610261600480360381019061025c9190610ccc565b6109ae565b60405161026e9190610ba3565b60405180910390f35b6003805461028490610d3b565b80601f01602080910402602001604051908101604052809291908181526020018280546102b090610d3b565b80156102fd5780601f106102d2576101008083540402835291602001916102fd565b820191906000526020600020905b8154815290600101906020018083116102e057829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103e59190610ba3565b60405180910390a36001905092915050565b60025481565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048b9190610d9b565b92505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e09190610d9b565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105359190610dcf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105999190610ba3565b60405180910390a3600190509392505050565b600560009054906101000a900460ff1681565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461060d9190610d9b565b9250508190555080600260008282546106269190610d9b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161068b9190610ba3565b60405180910390a350565b60006020528060005260406000206000915090505481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600480546106e190610d3b565b80601f016020809104026020016040519081016040528092919081815260200182805461070d90610d3b565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107bc57600080fd5b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461080a9190610dcf565b9250508190555080600260008282546108239190610dcf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108889190610ba3565b60405180910390a350565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108e39190610d9b565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109389190610dcf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161099c9190610ba3565b60405180910390a36001905092915050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a0d5780820151818401526020810190506109f2565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a35826109d3565b610a3f81856109de565b9350610a4f8185602086016109ef565b610a5881610a19565b840191505092915050565b60006020820190508181036000830152610a7d8184610a2a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ab582610a8a565b9050919050565b610ac581610aaa565b8114610ad057600080fd5b50565b600081359050610ae281610abc565b92915050565b6000819050919050565b610afb81610ae8565b8114610b0657600080fd5b50565b600081359050610b1881610af2565b92915050565b60008060408385031215610b3557610b34610a85565b5b6000610b4385828601610ad3565b9250506020610b5485828601610b09565b9150509250929050565b60008115159050919050565b610b7381610b5e565b82525050565b6000602082019050610b8e6000830184610b6a565b92915050565b610b9d81610ae8565b82525050565b6000602082019050610bb86000830184610b94565b92915050565b600080600060608486031215610bd757610bd6610a85565b5b6000610be586828701610ad3565b9350506020610bf686828701610ad3565b9250506040610c0786828701610b09565b9150509250925092565b600060ff82169050919050565b610c2781610c11565b82525050565b6000602082019050610c426000830184610c1e565b92915050565b600060208284031215610c5e57610c5d610a85565b5b6000610c6c84828501610b09565b91505092915050565b600060208284031215610c8b57610c8a610a85565b5b6000610c9984828501610ad3565b91505092915050565b610cab81610aaa565b82525050565b6000602082019050610cc66000830184610ca2565b92915050565b60008060408385031215610ce357610ce2610a85565b5b6000610cf185828601610ad3565b9250506020610d0285828601610ad3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d5357607f821691505b602082108103610d6657610d65610d0c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610da682610ae8565b9150610db183610ae8565b9250828203905081811115610dc957610dc8610d6c565b5b92915050565b6000610dda82610ae8565b9150610de583610ae8565b9250828201905080821115610dfd57610dfc610d6c565b5b9291505056fea26469706673582212208cb6d16f4ef1feef0e8ddad90065d7f75d58577ef1f65ea4711de632557209be64736f6c63430008120033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000018576865656c20646576656c6f706d656e7420686172626f72000000000000000000000000000000000000000000000000000000000000000000000000000000035744480000000000000000000000000000000000000000000000000000000000