608060405234801562000010575f80fd5b50336040518060400160405280600981526020017f484f4e20546f6b656e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f484f4e000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000722565b508060049081620000a1919062000722565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000117575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200010e919062000849565b60405180910390fd5b62000128816200014d60201b60201c565b5062000147336b033b2e3c9fd0803ce80000006200021060201b60201c565b62000932565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000283575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200027a919062000849565b60405180910390fd5b620002965f83836200029a60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620002ee578060025f828254620002e1919062000891565b92505081905550620003bf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200037a578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200037193929190620008dc565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000408578060025f828254039250508190555062000452565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004b1919062000917565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200053a57607f821691505b60208210810362000550576200054f620004f5565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000577565b620005c0868362000577565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200060a62000604620005fe84620005d8565b620005e1565b620005d8565b9050919050565b5f819050919050565b6200062583620005ea565b6200063d620006348262000611565b84845462000583565b825550505050565b5f90565b6200065362000645565b620006608184846200061a565b505050565b5b8181101562000687576200067b5f8262000649565b60018101905062000666565b5050565b601f821115620006d657620006a08162000556565b620006ab8462000568565b81016020851015620006bb578190505b620006d3620006ca8562000568565b83018262000665565b50505b505050565b5f82821c905092915050565b5f620006f85f1984600802620006db565b1980831691505092915050565b5f620007128383620006e7565b9150826002028217905092915050565b6200072d82620004be565b67ffffffffffffffff811115620007495762000748620004c8565b5b62000755825462000522565b620007628282856200068b565b5f60209050601f83116001811462000798575f841562000783578287015190505b6200078f858262000705565b865550620007fe565b601f198416620007a88662000556565b5f5b82811015620007d157848901518255600182019150602085019450602081019050620007aa565b86831015620007f15784890151620007ed601f891682620006e7565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008318262000806565b9050919050565b620008438162000825565b82525050565b5f6020820190506200085e5f83018462000838565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200089d82620005d8565b9150620008aa83620005d8565b9250828201905080821115620008c557620008c462000864565b5b92915050565b620008d681620005d8565b82525050565b5f606082019050620008f15f83018662000838565b620009006020830185620008cb565b6200090f6040830184620008cb565b949350505050565b5f6020820190506200092c5f830184620008cb565b92915050565b6111fe80620009405f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b806370a08231146101a7578063715018a6146101d75780638da5cb5b146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d57806340c10f191461018b575b5f80fd5b6100d9610299565b6040516100e69190610e0f565b60405180910390f35b61010960048036038101906101049190610ec0565b610329565b6040516101169190610f18565b60405180910390f35b61012761034b565b6040516101349190610f40565b60405180910390f35b61015760048036038101906101529190610f59565b610354565b6040516101649190610f18565b60405180910390f35b610175610382565b6040516101829190610fc4565b60405180910390f35b6101a560048036038101906101a09190610ec0565b61038a565b005b6101c160048036038101906101bc9190610fdd565b610401565b6040516101ce9190610f40565b60405180910390f35b6101df610446565b005b6101e9610459565b6040516101f69190611017565b60405180910390f35b610207610481565b6040516102149190610e0f565b60405180910390f35b61023760048036038101906102329190610ec0565b610511565b6040516102449190610f18565b60405180910390f35b61026760048036038101906102629190611030565b610533565b6040516102749190610f40565b60405180910390f35b61029760048036038101906102929190610fdd565b6105b5565b005b6060600380546102a89061109b565b80601f01602080910402602001604051908101604052809291908181526020018280546102d49061109b565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f80610333610639565b9050610340818585610640565b600191505092915050565b5f600254905090565b5f8061035e610639565b905061036b858285610652565b6103768585856106e4565b60019150509392505050565b5f6012905090565b6103926107d4565b6b033b2e3c9fd0803ce8000000816103a861034b565b6103b291906110f8565b11156103f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ea90611175565b60405180910390fd5b6103fd828261085b565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61044e6107d4565b6104575f6108da565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104909061109b565b80601f01602080910402602001604051908101604052809291908181526020018280546104bc9061109b565b80156105075780601f106104de57610100808354040283529160200191610507565b820191905f5260205f20905b8154815290600101906020018083116104ea57829003601f168201915b5050505050905090565b5f8061051b610639565b90506105288185856106e4565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105bd6107d4565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361062d575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106249190611017565b60405180910390fd5b610636816108da565b50565b5f33905090565b61064d838383600161099d565b505050565b5f61065d8484610533565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106de57818110156106cf578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106c693929190611193565b60405180910390fd5b6106dd84848484035f61099d565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610754575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161074b9190611017565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107c4575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107bb9190611017565b60405180910390fd5b6107cf838383610b6c565b505050565b6107dc610639565b73ffffffffffffffffffffffffffffffffffffffff166107fa610459565b73ffffffffffffffffffffffffffffffffffffffff16146108595761081d610639565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108509190611017565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108cb575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108c29190611017565b60405180910390fd5b6108d65f8383610b6c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a0d575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a049190611017565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a7d575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a749190611017565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b66578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b5d9190610f40565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bbc578060025f828254610bb091906110f8565b92505081905550610c8a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c45578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c3c93929190611193565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd1578060025f8282540392505081905550610d1b565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d789190610f40565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610dbc578082015181840152602081019050610da1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610de182610d85565b610deb8185610d8f565b9350610dfb818560208601610d9f565b610e0481610dc7565b840191505092915050565b5f6020820190508181035f830152610e278184610dd7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e5c82610e33565b9050919050565b610e6c81610e52565b8114610e76575f80fd5b50565b5f81359050610e8781610e63565b92915050565b5f819050919050565b610e9f81610e8d565b8114610ea9575f80fd5b50565b5f81359050610eba81610e96565b92915050565b5f8060408385031215610ed657610ed5610e2f565b5b5f610ee385828601610e79565b9250506020610ef485828601610eac565b9150509250929050565b5f8115159050919050565b610f1281610efe565b82525050565b5f602082019050610f2b5f830184610f09565b92915050565b610f3a81610e8d565b82525050565b5f602082019050610f535f830184610f31565b92915050565b5f805f60608486031215610f7057610f6f610e2f565b5b5f610f7d86828701610e79565b9350506020610f8e86828701610e79565b9250506040610f9f86828701610eac565b9150509250925092565b5f60ff82169050919050565b610fbe81610fa9565b82525050565b5f602082019050610fd75f830184610fb5565b92915050565b5f60208284031215610ff257610ff1610e2f565b5b5f610fff84828501610e79565b91505092915050565b61101181610e52565b82525050565b5f60208201905061102a5f830184611008565b92915050565b5f806040838503121561104657611045610e2f565b5b5f61105385828601610e79565b925050602061106485828601610e79565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806110b257607f821691505b6020821081036110c5576110c461106e565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61110282610e8d565b915061110d83610e8d565b9250828201905080821115611125576111246110cb565b5b92915050565b7f4d696e74696e6720776f756c6420657863656564206d617820737570706c79005f82015250565b5f61115f601f83610d8f565b915061116a8261112b565b602082019050919050565b5f6020820190508181035f83015261118c81611153565b9050919050565b5f6060820190506111a65f830186611008565b6111b36020830185610f31565b6111c06040830184610f31565b94935050505056fea26469706673582212202e51cb212047d75a689c4a8f4c8f1b42ca573e3a7718e9c22801bab54cfb778e64736f6c63430008140033