60806040526040518060400160405280600b81526020017f504f504f46696e616e6365000000000000000000000000000000000000000000815250600390816200004a919062000548565b506040518060400160405280600481526020017f504f504f000000000000000000000000000000000000000000000000000000008152506004908162000091919062000548565b506009600555600554600a620000a89190620007b2565b64020c855800620000ba919062000803565b600655600554600a620000ce9190620007b2565b64020c855800620000e0919062000803565b600755600554600a620000f49190620007b2565b657f544a44c00062000107919062000803565b600855600560095561dead600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200015f57600080fd5b50600062000172620002c660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a350600654600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620002b891906200085f565b60405180910390a36200087c565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200035057607f821691505b60208210810362000366576200036562000308565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003d07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000391565b620003dc868362000391565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000429620004236200041d84620003f4565b620003fe565b620003f4565b9050919050565b6000819050919050565b620004458362000408565b6200045d620004548262000430565b8484546200039e565b825550505050565b600090565b6200047462000465565b620004818184846200043a565b505050565b5b81811015620004a9576200049d6000826200046a565b60018101905062000487565b5050565b601f821115620004f857620004c2816200036c565b620004cd8462000381565b81016020851015620004dd578190505b620004f5620004ec8562000381565b83018262000486565b50505b505050565b600082821c905092915050565b60006200051d60001984600802620004fd565b1980831691505092915050565b60006200053883836200050a565b9150826002028217905092915050565b6200055382620002ce565b67ffffffffffffffff8111156200056f576200056e620002d9565b5b6200057b825462000337565b62000588828285620004ad565b600060209050601f831160018114620005c05760008415620005ab578287015190505b620005b785826200052a565b86555062000627565b601f198416620005d0866200036c565b60005b82811015620005fa57848901518255600182019150602085019450602081019050620005d3565b868310156200061a578489015162000616601f8916826200050a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006bd578086048111156200069557620006946200062f565b5b6001851615620006a55780820291505b8081029050620006b5856200065e565b945062000675565b94509492505050565b600082620006d85760019050620007ab565b81620006e85760009050620007ab565b81600181146200070157600281146200070c5762000742565b6001915050620007ab565b60ff8411156200072157620007206200062f565b5b8360020a9150848211156200073b576200073a6200062f565b5b50620007ab565b5060208310610133831016604e8410600b84101617156200077c5782820a9050838111156200077657620007756200062f565b5b620007ab565b6200078b84848460016200066b565b92509050818404811115620007a557620007a46200062f565b5b81810290505b9392505050565b6000620007bf82620003f4565b9150620007cc83620003f4565b9250620007fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006c6565b905092915050565b60006200081082620003f4565b91506200081d83620003f4565b92508282026200082d81620003f4565b915082820484148315176200084757620008466200062f565b5b5092915050565b6200085981620003f4565b82525050565b60006020820190506200087660008301846200084e565b92915050565b611aa6806200088c6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461018f5780638da5cb5b146101bf57806395d89b41146101dd578063a9059cbb146101fb578063c2af913b1461022b578063dd62ed3e14610235576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146101075780631f478f1e1461012557806323b872dd14610141578063313ce56714610171575b600080fd5b6100c1610265565b6040516100ce91906111e2565b60405180910390f35b6100f160048036038101906100ec919061129d565b6102f7565b6040516100fe91906112f8565b60405180910390f35b61010f610315565b60405161011c9190611322565b60405180910390f35b61013f600480360381019061013a9190611369565b61031f565b005b61015b600480360381019061015691906113a9565b61040f565b60405161016891906112f8565b60405180910390f35b6101796104f3565b6040516101869190611322565b60405180910390f35b6101a960048036038101906101a491906113fc565b6104fd565b6040516101b69190611322565b60405180910390f35b6101c7610546565b6040516101d49190611438565b60405180910390f35b6101e561056f565b6040516101f291906111e2565b60405180910390f35b6102156004803603810190610210919061129d565b610601565b60405161022291906112f8565b60405180910390f35b61023361073a565b005b61024f600480360381019061024a9190611453565b61088f565b60405161025c9190611322565b60405180910390f35b606060038054610274906114c2565b80601f01602080910402602001604051908101604052809291908181526020018280546102a0906114c2565b80156102ed5780601f106102c2576101008083540402835291602001916102ed565b820191906000526020600020905b8154815290600101906020018083116102d057829003601f168201915b5050505050905090565b600061030b610304610916565b848461091e565b6001905092915050565b6000600654905090565b610327610916565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab9061153f565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061041c848484610ae7565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610467610916565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104de906115d1565b60405180910390fd5b60019150509392505050565b6000600554905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461057e906114c2565b80601f01602080910402602001604051908101604052809291908181526020018280546105aa906114c2565b80156105f75780601f106105cc576101008083540402835291602001916105f7565b820191906000526020600020905b8154815290600101906020018083116105da57829003601f168201915b5050505050905090565b60008061060c610916565b9050610616610546565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156106895750610653610916565b73ffffffffffffffffffffffffffffffffffffffff16610671610546565b73ffffffffffffffffffffffffffffffffffffffff16145b15610724576106e083600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f1f90919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61072f818585610ae7565b600191505092915050565b610742610916565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c69061153f565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098490611663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f3906116f5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ada9190611322565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90611787565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90611819565b60405180910390fd5b60011515600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610cc857610c846001610c76600854600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f7d90919063ffffffff16565b610f7d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000610cf26064610ce460095485610fc790919063ffffffff16565b610f7d90919063ffffffff16565b9050610d4682600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461104190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dd59190611868565b610ddf919061189c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ea19190611322565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8385610f04919061189c565b604051610f119190611322565b60405180910390a350505050565b6000808284610f2e9190611868565b905083811015610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a9061191c565b60405180910390fd5b8091505092915050565b6000610fbf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061108b565b905092915050565b6000808303610fd9576000905061103b565b60008284610fe7919061193c565b9050828482610ff691906119ad565b14611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90611a50565b60405180910390fd5b809150505b92915050565b600061108383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ee565b905092915050565b600080831182906110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c991906111e2565b60405180910390fd5b50600083856110e191906119ad565b9050809150509392505050565b6000838311158290611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d91906111e2565b60405180910390fd5b5060008385611145919061189c565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561118c578082015181840152602081019050611171565b60008484015250505050565b6000601f19601f8301169050919050565b60006111b482611152565b6111be818561115d565b93506111ce81856020860161116e565b6111d781611198565b840191505092915050565b600060208201905081810360008301526111fc81846111a9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061123482611209565b9050919050565b61124481611229565b811461124f57600080fd5b50565b6000813590506112618161123b565b92915050565b6000819050919050565b61127a81611267565b811461128557600080fd5b50565b60008135905061129781611271565b92915050565b600080604083850312156112b4576112b3611204565b5b60006112c285828601611252565b92505060206112d385828601611288565b9150509250929050565b60008115159050919050565b6112f2816112dd565b82525050565b600060208201905061130d60008301846112e9565b92915050565b61131c81611267565b82525050565b60006020820190506113376000830184611313565b92915050565b611346816112dd565b811461135157600080fd5b50565b6000813590506113638161133d565b92915050565b600080604083850312156113805761137f611204565b5b600061138e85828601611252565b925050602061139f85828601611354565b9150509250929050565b6000806000606084860312156113c2576113c1611204565b5b60006113d086828701611252565b93505060206113e186828701611252565b92505060406113f286828701611288565b9150509250925092565b60006020828403121561141257611411611204565b5b600061142084828501611252565b91505092915050565b61143281611229565b82525050565b600060208201905061144d6000830184611429565b92915050565b6000806040838503121561146a57611469611204565b5b600061147885828601611252565b925050602061148985828601611252565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806114da57607f821691505b6020821081036114ed576114ec611493565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061152960208361115d565b9150611534826114f3565b602082019050919050565b600060208201905081810360008301526115588161151c565b9050919050565b7f4945524332303a207472616e7366657220616d65756e7473206578636565647360008201527f20616c6c6f77616e636500000000000000000000000000000000000000000000602082015250565b60006115bb602a8361115d565b91506115c68261155f565b604082019050919050565b600060208201905081810360008301526115ea816115ae565b9050919050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061164d60258361115d565b9150611658826115f1565b604082019050919050565b6000602082019050818103600083015261167c81611640565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006116df60238361115d565b91506116ea82611683565b604082019050919050565b6000602082019050818103600083015261170e816116d2565b9050919050565b7f4945524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061177160268361115d565b915061177c82611715565b604082019050919050565b600060208201905081810360008301526117a081611764565b9050919050565b7f4945524332303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061180360248361115d565b915061180e826117a7565b604082019050919050565b60006020820190508181036000830152611832816117f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061187382611267565b915061187e83611267565b925082820190508082111561189657611895611839565b5b92915050565b60006118a782611267565b91506118b283611267565b92508282039050818111156118ca576118c9611839565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611906601b8361115d565b9150611911826118d0565b602082019050919050565b60006020820190508181036000830152611935816118f9565b9050919050565b600061194782611267565b915061195283611267565b925082820261196081611267565b9150828204841483151761197757611976611839565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006119b882611267565b91506119c383611267565b9250826119d3576119d261197e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a3a60218361115d565b9150611a45826119de565b604082019050919050565b60006020820190508181036000830152611a6981611a2d565b905091905056fea2646970667358221220bdb7fd23c9769ef58bb17e60bef36c369dda836cd096fc580459dcb582d639b564736f6c63430008130033