608060405234801561000f575f5ffd5b50336040518060400160405280600981526020017f426c6f636b54616c6b00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42544b0000000000000000000000000000000000000000000000000000000000815250816003908161008c9190610424565b50806004908161009c9190610424565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361010f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101069190610532565b60405180910390fd5b61011e8161012460201b60201c565b5061054b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061026257607f821691505b6020821081036102755761027461021e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261029c565b6102e1868361029c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61032561032061031b846102f9565b610302565b6102f9565b9050919050565b5f819050919050565b61033e8361030b565b61035261034a8261032c565b8484546102a8565b825550505050565b5f5f905090565b61036961035a565b610374818484610335565b505050565b5b818110156103975761038c5f82610361565b60018101905061037a565b5050565b601f8211156103dc576103ad8161027b565b6103b68461028d565b810160208510156103c5578190505b6103d96103d18561028d565b830182610379565b50505b505050565b5f82821c905092915050565b5f6103fc5f19846008026103e1565b1980831691505092915050565b5f61041483836103ed565b9150826002028217905092915050565b61042d826101e7565b67ffffffffffffffff811115610446576104456101f1565b5b610450825461024b565b61045b82828561039b565b5f60209050601f83116001811461048c575f841561047a578287015190505b6104848582610409565b8655506104eb565b601f19841661049a8661027b565b5f5b828110156104c15784890151825560018201915060208501945060208101905061049c565b868310156104de57848901516104da601f8916826103ed565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61051c826104f3565b9050919050565b61052c81610512565b82525050565b5f6020820190506105455f830184610523565b92915050565b611169806105585f395ff3fe608060405234801561000f575f5ffd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b806370a08231146101a7578063715018a6146101d75780638da5cb5b146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d57806340c10f191461018b575b5f5ffd5b6100d9610299565b6040516100e69190610de2565b60405180910390f35b61010960048036038101906101049190610e93565b610329565b6040516101169190610eeb565b60405180910390f35b61012761034b565b6040516101349190610f13565b60405180910390f35b61015760048036038101906101529190610f2c565b610354565b6040516101649190610eeb565b60405180910390f35b610175610382565b6040516101829190610f97565b60405180910390f35b6101a560048036038101906101a09190610e93565b61038a565b005b6101c160048036038101906101bc9190610fb0565b6103ee565b6040516101ce9190610f13565b60405180910390f35b6101df610433565b005b6101e9610446565b6040516101f69190610fea565b60405180910390f35b61020761046e565b6040516102149190610de2565b60405180910390f35b61023760048036038101906102329190610e93565b6104fe565b6040516102449190610eeb565b60405180910390f35b61026760048036038101906102629190611003565b610520565b6040516102749190610f13565b60405180910390f35b61029760048036038101906102929190610fb0565b6105a2565b005b6060600380546102a89061106e565b80601f01602080910402602001604051908101604052809291908181526020018280546102d49061106e565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f5f610333610626565b905061034081858561062d565b600191505092915050565b5f600254905090565b5f5f61035e610626565b905061036b85828561063f565b6103768585856106d1565b60019150509392505050565b5f6012905090565b6103926107c1565b61039c8282610848565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516103e29190610f13565b60405180910390a25050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61043b6107c1565b6104445f6108c7565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461047d9061106e565b80601f01602080910402602001604051908101604052809291908181526020018280546104a99061106e565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b5f5f610508610626565b90506105158185856106d1565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105aa6107c1565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361061a575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106119190610fea565b60405180910390fd5b610623816108c7565b50565b5f33905090565b61063a838383600161098a565b505050565b5f61064a8484610520565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106cb57818110156106bc578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106b39392919061109e565b60405180910390fd5b6106ca84848484035f61098a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610741575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107389190610fea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b1575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107a89190610fea565b60405180910390fd5b6107bc838383610b59565b505050565b6107c9610626565b73ffffffffffffffffffffffffffffffffffffffff166107e7610446565b73ffffffffffffffffffffffffffffffffffffffff16146108465761080a610626565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161083d9190610fea565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108b8575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108af9190610fea565b60405180910390fd5b6108c35f8383610b59565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109fa575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109f19190610fea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a6a575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a619190610fea565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b53578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b4a9190610f13565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba9578060025f828254610b9d9190611100565b92505081905550610c77565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c32578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c299392919061109e565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cbe578060025f8282540392505081905550610d08565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d659190610f13565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610db482610d72565b610dbe8185610d7c565b9350610dce818560208601610d8c565b610dd781610d9a565b840191505092915050565b5f6020820190508181035f830152610dfa8184610daa565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e2f82610e06565b9050919050565b610e3f81610e25565b8114610e49575f5ffd5b50565b5f81359050610e5a81610e36565b92915050565b5f819050919050565b610e7281610e60565b8114610e7c575f5ffd5b50565b5f81359050610e8d81610e69565b92915050565b5f5f60408385031215610ea957610ea8610e02565b5b5f610eb685828601610e4c565b9250506020610ec785828601610e7f565b9150509250929050565b5f8115159050919050565b610ee581610ed1565b82525050565b5f602082019050610efe5f830184610edc565b92915050565b610f0d81610e60565b82525050565b5f602082019050610f265f830184610f04565b92915050565b5f5f5f60608486031215610f4357610f42610e02565b5b5f610f5086828701610e4c565b9350506020610f6186828701610e4c565b9250506040610f7286828701610e7f565b9150509250925092565b5f60ff82169050919050565b610f9181610f7c565b82525050565b5f602082019050610faa5f830184610f88565b92915050565b5f60208284031215610fc557610fc4610e02565b5b5f610fd284828501610e4c565b91505092915050565b610fe481610e25565b82525050565b5f602082019050610ffd5f830184610fdb565b92915050565b5f5f6040838503121561101957611018610e02565b5b5f61102685828601610e4c565b925050602061103785828601610e4c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061108557607f821691505b60208210810361109857611097611041565b5b50919050565b5f6060820190506110b15f830186610fdb565b6110be6020830185610f04565b6110cb6040830184610f04565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61110a82610e60565b915061111583610e60565b925082820190508082111561112d5761112c6110d3565b5b9291505056fea26469706673582212201b545e6f8498de7f05dbc9d0245fba7e4f9a5cec78de64fcdece1ff29f45510664736f6c634300081c0033