60806040526040518060400160405280600481526020017f544c445200000000000000000000000000000000000000000000000000000000815250600090816200004a9190620003d3565b506040518060400160405280600481526020017f544c44520000000000000000000000000000000000000000000000000000000081525060019081620000919190620003d3565b506b204fce5e3e250261100000006002556012600360006101000a81548160ff021916908360ff160217905550348015620000cb57600080fd5b5033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004ba565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001db57607f821691505b602082108103620001f157620001f062000193565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200021c565b6200026786836200021c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002b4620002ae620002a8846200027f565b62000289565b6200027f565b9050919050565b6000819050919050565b620002d08362000293565b620002e8620002df82620002bb565b84845462000229565b825550505050565b600090565b620002ff620002f0565b6200030c818484620002c5565b505050565b5b81811015620003345762000328600082620002f5565b60018101905062000312565b5050565b601f82111562000383576200034d81620001f7565b62000358846200020c565b8101602085101562000368578190505b6200038062000377856200020c565b83018262000311565b50505b505050565b600082821c905092915050565b6000620003a86000198460080262000388565b1980831691505092915050565b6000620003c3838362000395565b9150826002028217905092915050565b620003de8262000159565b67ffffffffffffffff811115620003fa57620003f962000164565b5b620004068254620001c2565b6200041382828562000338565b600060209050601f8311600181146200044b576000841562000436578287015190505b620004428582620003b5565b865550620004b2565b601f1984166200045b86620001f7565b60005b8281101562000485578489015182556001820191506020850194506020810190506200045e565b86831015620004a55784890151620004a1601f89168262000395565b8355505b6001600288020188555050505b505050505050565b610f4580620004ca6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a08231146101685780638da5cb5b1461019857806395d89b41146101b6578063a9059cbb146101d4578063b15be2f514610204578063dd62ed3e1461020e576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b661023e565b6040516100c39190610b0a565b60405180910390f35b6100e660048036038101906100e19190610bc5565b6102cc565b6040516100f39190610c20565b60405180910390f35b6101046103be565b6040516101119190610c4a565b60405180910390f35b610134600480360381019061012f9190610c65565b6103c4565b6040516101419190610c20565b60405180910390f35b610152610683565b60405161015f9190610cd4565b60405180910390f35b610182600480360381019061017d9190610cef565b610696565b60405161018f9190610c4a565b60405180910390f35b6101a06106ae565b6040516101ad9190610d2b565b60405180910390f35b6101be6106d4565b6040516101cb9190610b0a565b60405180910390f35b6101ee60048036038101906101e99190610bc5565b610762565b6040516101fb9190610c20565b60405180910390f35b61020c610904565b005b61022860048036038101906102239190610d46565b610a55565b6040516102359190610c4a565b60405180910390f35b6000805461024b90610db5565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610db5565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103ac9190610c4a565b60405180910390a36001905092915050565b60025481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561041257600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561049b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104d457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105239190610e15565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105799190610e49565b9250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461060c9190610e15565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106709190610c4a565b60405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546106e190610db5565b80601f016020809104026020016040519081016040528092919081815260200182805461070d90610db5565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107b057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107e957600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108389190610e15565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461088e9190610e49565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108f29190610c4a565b60405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90610eef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6005602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab4578082015181840152602081019050610a99565b60008484015250505050565b6000601f19601f8301169050919050565b6000610adc82610a7a565b610ae68185610a85565b9350610af6818560208601610a96565b610aff81610ac0565b840191505092915050565b60006020820190508181036000830152610b248184610ad1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5c82610b31565b9050919050565b610b6c81610b51565b8114610b7757600080fd5b50565b600081359050610b8981610b63565b92915050565b6000819050919050565b610ba281610b8f565b8114610bad57600080fd5b50565b600081359050610bbf81610b99565b92915050565b60008060408385031215610bdc57610bdb610b2c565b5b6000610bea85828601610b7a565b9250506020610bfb85828601610bb0565b9150509250929050565b60008115159050919050565b610c1a81610c05565b82525050565b6000602082019050610c356000830184610c11565b92915050565b610c4481610b8f565b82525050565b6000602082019050610c5f6000830184610c3b565b92915050565b600080600060608486031215610c7e57610c7d610b2c565b5b6000610c8c86828701610b7a565b9350506020610c9d86828701610b7a565b9250506040610cae86828701610bb0565b9150509250925092565b600060ff82169050919050565b610cce81610cb8565b82525050565b6000602082019050610ce96000830184610cc5565b92915050565b600060208284031215610d0557610d04610b2c565b5b6000610d1384828501610b7a565b91505092915050565b610d2581610b51565b82525050565b6000602082019050610d406000830184610d1c565b92915050565b60008060408385031215610d5d57610d5c610b2c565b5b6000610d6b85828601610b7a565b9250506020610d7c85828601610b7a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dcd57607f821691505b602082108103610de057610ddf610d86565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e2082610b8f565b9150610e2b83610b8f565b9250828203905081811115610e4357610e42610de6565b5b92915050565b6000610e5482610b8f565b9150610e5f83610b8f565b9250828201905080821115610e7757610e76610de6565b5b92915050565b7f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60008201527f6374696f6e2e0000000000000000000000000000000000000000000000000000602082015250565b6000610ed9602683610a85565b9150610ee482610e7d565b604082019050919050565b60006020820190508181036000830152610f0881610ecc565b905091905056fea2646970667358221220fbae0508e2e06d746c3231ec964424faa1637b10ebaa4edbceb6e871e1e005d664736f6c63430008120033