60806040526001600060146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600881526020017f54726164776966650000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54524144000000000000000000000000000000000000000000000000000000008152508160049081620000aa919062000603565b508060059081620000bc919062000603565b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200011f620001136200014360201b60201c565b6200014b60201b60201c565b6200013d336b204fce5e3e250261100000006200021160201b60201c565b62000805565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027a906200074b565b60405180910390fd5b62000297600083836200037f60201b60201c565b8060036000828254620002ab91906200079c565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035f9190620007e8565b60405180910390a36200037b600083836200038460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040b57607f821691505b602082108103620004215762000420620003c3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200048b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200044c565b6200049786836200044c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004e4620004de620004d884620004af565b620004b9565b620004af565b9050919050565b6000819050919050565b6200050083620004c3565b620005186200050f82620004eb565b84845462000459565b825550505050565b600090565b6200052f62000520565b6200053c818484620004f5565b505050565b5b8181101562000564576200055860008262000525565b60018101905062000542565b5050565b601f821115620005b3576200057d8162000427565b62000588846200043c565b8101602085101562000598578190505b620005b0620005a7856200043c565b83018262000541565b50505b505050565b600082821c905092915050565b6000620005d860001984600802620005b8565b1980831691505092915050565b6000620005f38383620005c5565b9150826002028217905092915050565b6200060e8262000389565b67ffffffffffffffff8111156200062a576200062962000394565b5b620006368254620003f2565b6200064382828562000568565b600060209050601f8311600181146200067b576000841562000666578287015190505b620006728582620005e5565b865550620006e2565b601f1984166200068b8662000427565b60005b82811015620006b5578489015182556001820191506020850194506020810190506200068e565b86831015620006d55784890151620006d1601f891682620005c5565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000733601f83620006ea565b91506200074082620006fb565b602082019050919050565b60006020820190508181036000830152620007668162000724565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007a982620004af565b9150620007b683620004af565b9250828201905080821115620007d157620007d06200076d565b5b92915050565b620007e281620004af565b82525050565b6000602082019050620007ff6000830184620007d7565b92915050565b611c2380620008156000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a457c2d711610071578063a457c2d71461030f578063a9059cbb1461033f578063b1d17c981461036f578063dd62ed3e1461038b578063f2fde38b146103bb5761012c565b8063715018a61461028f57806379cc6790146102995780638da5cb5b146102b557806391cca3db146102d357806395d89b41146102f15761012c565b80632f685022116100f45780632f685022146101eb578063313ce567146101f5578063395093511461021357806342966c681461024357806370a082311461025f5761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d57806327578055146101cd575b600080fd5b6101396103d7565b604051610146919061121b565b60405180910390f35b610169600480360381019061016491906112d6565b610469565b6040516101769190611331565b60405180910390f35b61018761048c565b604051610194919061135b565b60405180910390f35b6101b760048036038101906101b29190611376565b610496565b6040516101c49190611331565b60405180910390f35b6101d56104c5565b6040516101e29190611331565b60405180910390f35b6101f36104d8565b005b6101fd61054c565b60405161020a91906113e5565b60405180910390f35b61022d600480360381019061022891906112d6565b610555565b60405161023a9190611331565b60405180910390f35b61025d60048036038101906102589190611400565b61058c565b005b6102796004803603810190610274919061142d565b6105a0565b604051610286919061135b565b60405180910390f35b6102976105e9565b005b6102b360048036038101906102ae91906112d6565b6105fd565b005b6102bd61061d565b6040516102ca9190611469565b60405180910390f35b6102db610647565b6040516102e89190611469565b60405180910390f35b6102f961066b565b604051610306919061121b565b60405180910390f35b610329600480360381019061032491906112d6565b6106fd565b6040516103369190611331565b60405180910390f35b610359600480360381019061035491906112d6565b610774565b6040516103669190611331565b60405180910390f35b6103896004803603810190610384919061142d565b610797565b005b6103a560048036038101906103a09190611484565b610809565b6040516103b2919061135b565b60405180910390f35b6103d560048036038101906103d0919061142d565b610890565b005b6060600480546103e6906114f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610412906114f3565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b5050505050905090565b600080610474610913565b905061048181858561091b565b600191505092915050565b6000600354905090565b6000806104a1610913565b90506104ae858285610ae4565b6104b9858585610b70565b60019150509392505050565b600060149054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053057600080fd5b60008060146101000a81548160ff021916908315150217905550565b60006012905090565b600080610560610913565b90506105818185856105728589610809565b61057c9190611553565b61091b565b600191505092915050565b61059d610597610913565b82610e6e565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105f161103d565b6105fb60006110bb565b565b61060f82610609610913565b83610ae4565b6106198282610e6e565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606005805461067a906114f3565b80601f01602080910402602001604051908101604052809291908181526020018280546106a6906114f3565b80156106f35780601f106106c8576101008083540402835291602001916106f3565b820191906000526020600020905b8154815290600101906020018083116106d657829003601f168201915b5050505050905090565b600080610708610913565b905060006107168286610809565b90508381101561075b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610752906115f9565b60405180910390fd5b610768828686840361091b565b60019250505092915050565b60008061077f610913565b905061078c818585610b70565b600191505092915050565b61079f61103d565b60006107aa336105a0565b90506b204fce5e3e2502611000000081146107fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f190611665565b60405180910390fd5b610805338383610b70565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61089861103d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe906116f7565b60405180910390fd5b610910816110bb565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190611789565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f09061181b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ad7919061135b565b60405180910390a3505050565b6000610af08484610809565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6a5781811015610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390611887565b60405180910390fd5b610b69848484840361091b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690611919565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c45906119ab565b60405180910390fd5b600060149054906101000a900460ff168015610cb6575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610cd357692a5a058fc295ed000000811115610cd257600080fd5b5b610cde838383611181565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90611a3d565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e55919061135b565b60405180910390a3610e68848484611186565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490611acf565b60405180910390fd5b610ee982600083611181565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6790611b61565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611024919061135b565b60405180910390a361103883600084611186565b505050565b611045610913565b73ffffffffffffffffffffffffffffffffffffffff1661106361061d565b73ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090611bcd565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156111c55780820151818401526020810190506111aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006111ed8261118b565b6111f78185611196565b93506112078185602086016111a7565b611210816111d1565b840191505092915050565b6000602082019050818103600083015261123581846111e2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061126d82611242565b9050919050565b61127d81611262565b811461128857600080fd5b50565b60008135905061129a81611274565b92915050565b6000819050919050565b6112b3816112a0565b81146112be57600080fd5b50565b6000813590506112d0816112aa565b92915050565b600080604083850312156112ed576112ec61123d565b5b60006112fb8582860161128b565b925050602061130c858286016112c1565b9150509250929050565b60008115159050919050565b61132b81611316565b82525050565b60006020820190506113466000830184611322565b92915050565b611355816112a0565b82525050565b6000602082019050611370600083018461134c565b92915050565b60008060006060848603121561138f5761138e61123d565b5b600061139d8682870161128b565b93505060206113ae8682870161128b565b92505060406113bf868287016112c1565b9150509250925092565b600060ff82169050919050565b6113df816113c9565b82525050565b60006020820190506113fa60008301846113d6565b92915050565b6000602082840312156114165761141561123d565b5b6000611424848285016112c1565b91505092915050565b6000602082840312156114435761144261123d565b5b60006114518482850161128b565b91505092915050565b61146381611262565b82525050565b600060208201905061147e600083018461145a565b92915050565b6000806040838503121561149b5761149a61123d565b5b60006114a98582860161128b565b92505060206114ba8582860161128b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061150b57607f821691505b60208210810361151e5761151d6114c4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061155e826112a0565b9150611569836112a0565b925082820190508082111561158157611580611524565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006115e3602583611196565b91506115ee82611587565b604082019050919050565b60006020820190508181036000830152611612816115d6565b9050919050565b7f546f6b656e7320616c7265616479206469737472696275746564000000000000600082015250565b600061164f601a83611196565b915061165a82611619565b602082019050919050565b6000602082019050818103600083015261167e81611642565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006116e1602683611196565b91506116ec82611685565b604082019050919050565b60006020820190508181036000830152611710816116d4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611773602483611196565b915061177e82611717565b604082019050919050565b600060208201905081810360008301526117a281611766565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611805602283611196565b9150611810826117a9565b604082019050919050565b60006020820190508181036000830152611834816117f8565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611871601d83611196565b915061187c8261183b565b602082019050919050565b600060208201905081810360008301526118a081611864565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611903602583611196565b915061190e826118a7565b604082019050919050565b60006020820190508181036000830152611932816118f6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611995602383611196565b91506119a082611939565b604082019050919050565b600060208201905081810360008301526119c481611988565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611a27602683611196565b9150611a32826119cb565b604082019050919050565b60006020820190508181036000830152611a5681611a1a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ab9602183611196565b9150611ac482611a5d565b604082019050919050565b60006020820190508181036000830152611ae881611aac565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b4b602283611196565b9150611b5682611aef565b604082019050919050565b60006020820190508181036000830152611b7a81611b3e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611bb7602083611196565b9150611bc282611b81565b602082019050919050565b60006020820190508181036000830152611be681611baa565b905091905056fea2646970667358221220e88968d60a71bddffe9b170497bbe77054cd379f8c422bc8806c92d854859dc264736f6c63430008110033