60806040523480156200001157600080fd5b506040518060400160405280601181526020017f466f726b4672656e50657420546f6b656e0000000000000000000000000000008152506040518060400160405280600381526020017f464650000000000000000000000000000000000000000000000000000000000081525081600590816200008f91906200052c565b508060069081620000a191906200052c565b505050620000c4620000b8620000db60201b60201c565b620000e360201b60201c565b620000d532620001a960201b60201c565b6200086d565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000620001bb620001f260201b60201c565b600a620001c99190620007a3565b6312698f7c620001da9190620007f4565b9050620001ee8183620001fb60201b60201c565b5050565b60006012905090565b8160048190555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002a6919062000850565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033457607f821691505b6020821081036200034a5762000349620002ec565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000375565b620003c0868362000375565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200040d620004076200040184620003d8565b620003e2565b620003d8565b9050919050565b6000819050919050565b6200042983620003ec565b62000441620004388262000414565b84845462000382565b825550505050565b600090565b6200045862000449565b620004658184846200041e565b505050565b5b818110156200048d57620004816000826200044e565b6001810190506200046b565b5050565b601f821115620004dc57620004a68162000350565b620004b18462000365565b81016020851015620004c1578190505b620004d9620004d08562000365565b8301826200046a565b50505b505050565b600082821c905092915050565b60006200050160001984600802620004e1565b1980831691505092915050565b60006200051c8383620004ee565b9150826002028217905092915050565b6200053782620002b2565b67ffffffffffffffff811115620005535762000552620002bd565b5b6200055f82546200031b565b6200056c82828562000491565b600060209050601f831160018114620005a457600084156200058f578287015190505b6200059b85826200050e565b8655506200060b565b601f198416620005b48662000350565b60005b82811015620005de57848901518255600182019150602085019450602081019050620005b7565b86831015620005fe5784890151620005fa601f891682620004ee565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006a15780860481111562000679576200067862000613565b5b6001851615620006895780820291505b8081029050620006998562000642565b945062000659565b94509492505050565b600082620006bc57600190506200078f565b81620006cc57600090506200078f565b8160018114620006e55760028114620006f05762000726565b60019150506200078f565b60ff84111562000705576200070462000613565b5b8360020a9150848211156200071f576200071e62000613565b5b506200078f565b5060208310610133831016604e8410600b8410161715620007605782820a9050838111156200075a576200075962000613565b5b6200078f565b6200076f84848460016200064f565b9250905081840481111562000789576200078862000613565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007b082620003d8565b9150620007bd8362000796565b9250620007ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006aa565b905092915050565b60006200080182620003d8565b91506200080e83620003d8565b92508282026200081e81620003d8565b9150828204841483151762000838576200083762000613565b5b5092915050565b6200084a81620003d8565b82525050565b60006020820190506200086760008301846200083f565b92915050565b613b30806200087d6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063dd62ed3e1161007c578063dd62ed3e146103ef578063e4b5acca1461041f578063f0e9a1891461044f578063f2fde38b1461046d578063f3c1338714610489578063fff9d1d8146104a557610158565b80638da5cb5b1461031957806395d89b4114610337578063a457c2d714610355578063a9059cbb14610385578063ba2a8839146103b5578063c726117b146103d357610158565b80633dfd3873116101155780633dfd3873146102475780634b14e003146102635780634c2097ad1461027f57806370a08231146102af578063715018a6146102df5780637ca31724146102e957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104c1565b6040516101729190612bd1565b60405180910390f35b61019560048036038101906101909190612c8c565b610553565b6040516101a29190612ce7565b60405180910390f35b6101b361060b565b6040516101c09190612d11565b60405180910390f35b6101e360048036038101906101de9190612d2c565b610615565b6040516101f09190612ce7565b60405180910390f35b61020161062e565b60405161020e9190612d9b565b60405180910390f35b610231600480360381019061022c9190612c8c565b610637565b60405161023e9190612ce7565b60405180910390f35b610261600480360381019061025c9190612db6565b610667565b005b61027d60048036038101906102789190612de3565b61070d565b005b61029960048036038101906102949190612db6565b610946565b6040516102a69190612ce7565b60405180910390f35b6102c960048036038101906102c49190612db6565b610958565b6040516102d69190612d11565b60405180910390f35b6102e76109a1565b005b61030360048036038101906102fe9190612db6565b6109b5565b6040516103109190612d11565b60405180910390f35b6103216109fe565b60405161032e9190612e32565b60405180910390f35b61033f610a28565b60405161034c9190612bd1565b60405180910390f35b61036f600480360381019061036a9190612c8c565b610aba565b60405161037c9190612ce7565b60405180910390f35b61039f600480360381019061039a9190612c8c565b610b2a565b6040516103ac9190612ce7565b60405180910390f35b6103bd61114c565b6040516103ca9190612eac565b60405180910390f35b6103ed60048036038101906103e89190612ec7565b611172565b005b61040960048036038101906104049190612de3565b6114e7565b6040516104169190612d11565b60405180910390f35b61043960048036038101906104349190612db6565b61156e565b6040516104469190612d11565b60405180910390f35b6104576115b7565b6040516104649190612f4f565b60405180910390f35b61048760048036038101906104829190612db6565b6115db565b005b6104a3600480360381019061049e9190612db6565b61165e565b005b6104bf60048036038101906104ba9190612f96565b611672565b005b6060600580546104d090613018565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc90613018565b80156105495780601f1061051e57610100808354040283529160200191610549565b820191906000526020600020905b81548152906001019060200180831161052c57829003601f168201915b5050505050905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff1660e01b81526004016105b2929190613049565b6020604051808303816000875af11580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190613087565b5061060083836119ca565b506001905092915050565b6000600454905090565b60006106228484846119e6565b50600190509392505050565b60006012905090565b60008033905061065c81858561064d85896114e7565b61065791906130e3565b612010565b600191505092915050565b61066f6121d9565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167faa8c55b2228f272c67f4c328bd6d2bf3a68190cb74183834e566c7a81baa95c260405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290613163565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461082591906130e3565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061093982612257565b61094281612378565b5050565b600061095182612460565b9050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a96121d9565b6109b360006124b6565b565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610a3790613018565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6390613018565b8015610ab05780601f10610a8557610100808354040283529160200191610ab0565b820191906000526020600020905b815481529060010190602001808311610a9357829003601f168201915b5050505050905090565b6000803390506000610acc82866114e7565b905083811015610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b08906131f5565b60405180910390fd5b610b1e8286868403612010565b60019250505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610b89929190613049565b6020604051808303816000875af1158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc9190613087565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ee5bbf2846040518263ffffffff1660e01b8152600401610c289190612e32565b6020604051808303816000875af1158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613087565b15610e8157610db8600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ff42b926040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d06919061322a565b6064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1fa38806040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9b9190613283565b60ff1685610da991906132b0565b610db39190613321565b61257c565b50610e7b836064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1fa38806040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e529190613283565b6064610e5e9190613352565b60ff1685610e6c91906132b0565b610e769190613321565b61257c565b50611142565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ee5bbf2336040518263ffffffff1660e01b8152600401610edc9190612e32565b6020604051808303816000875af1158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190613087565b156111355761106c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ff42b926040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba919061322a565b6064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d75c86040518163ffffffff1660e01b81526004016020604051808303816000875af115801561102b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f9190613283565b60ff168561105d91906132b0565b6110679190613321565b61257c565b5061112f836064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d75c86040518163ffffffff1660e01b81526004016020604051808303816000875af11580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111069190613283565b60646111129190613352565b60ff168561112091906132b0565b61112a9190613321565b61257c565b50611141565b61113f838361257c565b505b5b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790613163565b60405180910390fd5b6000339050611210858285612598565b61121984612378565b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361129a57611299613387565b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036112d7576112d6613387565b5b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613402565b60405180910390fd5b83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a99190613422565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143791906130e3565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516114d79190612d11565b60405180910390a3505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115e36121d9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906134c8565b60405180910390fd5b61165b816124b6565b50565b6116666121d9565b61166f81612624565b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790613163565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff9d1d88484846040518463ffffffff1660e01b815260040161175f939291906134e8565b600060405180830381600087803b15801561177957600080fd5b505af115801561178d573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f79061356b565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5101690846040518263ffffffff1660e01b81526004016118599190612e32565b6020604051808303816000875af1158015611878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189c9190613087565b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d2906135d7565b60405180910390fd5b80156119555781600460008282546118f391906130e3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461194991906130e3565b925050819055506119c5565b81600460008282546119679190613422565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119bd9190613422565b925050819055505b505050565b6000803390506119db818585612010565b600191505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b8152600401611a47939291906135f7565b6020604051808303816000875af1158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a9190613087565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ee5bbf2846040518263ffffffff1660e01b8152600401611ae69190612e32565b6020604051808303816000875af1158015611b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b299190613087565b15611d4157611c7784600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ff42b926040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc5919061322a565b6064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1fa38806040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190613283565b60ff1686611c6891906132b0565b611c729190613321565b6126c1565b50611d3b84846064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1fa38806040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d129190613283565b6064611d1e9190613352565b60ff1686611d2c91906132b0565b611d369190613321565b6126c1565b50612005565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ee5bbf2856040518263ffffffff1660e01b8152600401611d9c9190612e32565b6020604051808303816000875af1158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf9190613087565b15611ff757611f2d84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ff42b926040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b919061322a565b6064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d75c86040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f109190613283565b60ff1686611f1e91906132b0565b611f289190613321565b6126c1565b50611ff184846064600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d75c86040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc89190613283565b6064611fd49190613352565b60ff1686611fe291906132b0565b611fec9190613321565b6126c1565b50612004565b6120028484846126c1565b505b5b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612076906136a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590613732565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121cc9190612d11565b60405180910390a3505050565b6121e16126e9565b73ffffffffffffffffffffffffffffffffffffffff166121ff6109fe565b73ffffffffffffffffffffffffffffffffffffffff1614612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c9061379e565b60405180910390fd5b565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da9061380a565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905550565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc90613876565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008033905061258d8185856126f1565b600191505092915050565b60006125a484846114e7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461261e5781811015612610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612607906138e2565b60405180910390fd5b61261d8484848403612010565b5b50505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fff5be33a40f968d19632d6f2364073567ceb3694771aeb9149ace1a9e096681d60405160405180910390a350565b6000803390506126d2858285612598565b6126dd8585856126f1565b60019150509392505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275790613974565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690613a06565b60405180910390fd5b6127da838383612b37565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661291b5760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a627842846040518263ffffffff1660e01b81526004016128879190612e32565b6020604051808303816000875af11580156128a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ca9190613a3b565b905080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061291983612378565b505b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036129a75780600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2590613ada565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1e9190612d11565b60405180910390a3612b31848484612b3c565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b7b578082015181840152602081019050612b60565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ba382612b41565b612bad8185612b4c565b9350612bbd818560208601612b5d565b612bc681612b87565b840191505092915050565b60006020820190508181036000830152612beb8184612b98565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2382612bf8565b9050919050565b612c3381612c18565b8114612c3e57600080fd5b50565b600081359050612c5081612c2a565b92915050565b6000819050919050565b612c6981612c56565b8114612c7457600080fd5b50565b600081359050612c8681612c60565b92915050565b60008060408385031215612ca357612ca2612bf3565b5b6000612cb185828601612c41565b9250506020612cc285828601612c77565b9150509250929050565b60008115159050919050565b612ce181612ccc565b82525050565b6000602082019050612cfc6000830184612cd8565b92915050565b612d0b81612c56565b82525050565b6000602082019050612d266000830184612d02565b92915050565b600080600060608486031215612d4557612d44612bf3565b5b6000612d5386828701612c41565b9350506020612d6486828701612c41565b9250506040612d7586828701612c77565b9150509250925092565b600060ff82169050919050565b612d9581612d7f565b82525050565b6000602082019050612db06000830184612d8c565b92915050565b600060208284031215612dcc57612dcb612bf3565b5b6000612dda84828501612c41565b91505092915050565b60008060408385031215612dfa57612df9612bf3565b5b6000612e0885828601612c41565b9250506020612e1985828601612c41565b9150509250929050565b612e2c81612c18565b82525050565b6000602082019050612e476000830184612e23565b92915050565b6000819050919050565b6000612e72612e6d612e6884612bf8565b612e4d565b612bf8565b9050919050565b6000612e8482612e57565b9050919050565b6000612e9682612e79565b9050919050565b612ea681612e8b565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060008060808587031215612ee157612ee0612bf3565b5b6000612eef87828801612c41565b9450506020612f0087828801612c41565b9350506040612f1187828801612c77565b9250506060612f2287828801612c77565b91505092959194509250565b6000612f3982612e79565b9050919050565b612f4981612f2e565b82525050565b6000602082019050612f646000830184612f40565b92915050565b612f7381612ccc565b8114612f7e57600080fd5b50565b600081359050612f9081612f6a565b92915050565b600080600060608486031215612faf57612fae612bf3565b5b6000612fbd86828701612c41565b9350506020612fce86828701612c77565b9250506040612fdf86828701612f81565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061303057607f821691505b60208210810361304357613042612fe9565b5b50919050565b600060408201905061305e6000830185612e23565b61306b6020830184612d02565b9392505050565b60008151905061308181612f6a565b92915050565b60006020828403121561309d5761309c612bf3565b5b60006130ab84828501613072565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130ee82612c56565b91506130f983612c56565b9250828201905080821115613111576131106130b4565b5b92915050565b7f6e6f20726967687420746f2063616c6c21000000000000000000000000000000600082015250565b600061314d601183612b4c565b915061315882613117565b602082019050919050565b6000602082019050818103600083015261317c81613140565b9050919050565b7f4650426173653a2064656372656173656420616c6c6f77616e63652062656c6f60008201527f77207a65726f0000000000000000000000000000000000000000000000000000602082015250565b60006131df602683612b4c565b91506131ea82613183565b604082019050919050565b6000602082019050818103600083015261320e816131d2565b9050919050565b60008151905061322481612c2a565b92915050565b6000602082840312156132405761323f612bf3565b5b600061324e84828501613215565b91505092915050565b61326081612d7f565b811461326b57600080fd5b50565b60008151905061327d81613257565b92915050565b60006020828403121561329957613298612bf3565b5b60006132a78482850161326e565b91505092915050565b60006132bb82612c56565b91506132c683612c56565b92508282026132d481612c56565b915082820484148315176132eb576132ea6130b4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061332c82612c56565b915061333783612c56565b925082613347576133466132f2565b5b828204905092915050565b600061335d82612d7f565b915061336883612d7f565b9250828203905060ff811115613381576133806130b4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4650426173653a20206e6f20656e6f7567682020666f7220636c61696d000000600082015250565b60006133ec601d83612b4c565b91506133f7826133b6565b602082019050919050565b6000602082019050818103600083015261341b816133df565b9050919050565b600061342d82612c56565b915061343883612c56565b92508282039050818111156134505761344f6130b4565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134b2602683612b4c565b91506134bd82613456565b604082019050919050565b600060208201905081810360008301526134e1816134a5565b9050919050565b60006060820190506134fd6000830186612e23565b61350a6020830185612d02565b6135176040830184612cd8565b949350505050565b7f4650426173653a20696e7661696c642061646472657373000000000000000000600082015250565b6000613555601783612b4c565b91506135608261351f565b602082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f4650426173653a20696e7661696c64204e465420636f756e7400000000000000600082015250565b60006135c1601983612b4c565b91506135cc8261358b565b602082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b600060608201905061360c6000830186612e23565b6136196020830185612e23565b6136266040830184612d02565b949350505050565b7f4650426173653a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061368a602583612b4c565b91506136958261362e565b604082019050919050565b600060208201905081810360008301526136b98161367d565b9050919050565b7f4650426173653a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371c602383612b4c565b9150613727826136c0565b604082019050919050565b6000602082019050818103600083015261374b8161370f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613788602083612b4c565b915061379382613752565b602082019050919050565b600060208201905081810360008301526137b78161377b565b9050919050565b7f4650426173653a2070657420686173206e6f742062696e646564210000000000600082015250565b60006137f4601b83612b4c565b91506137ff826137be565b602082019050919050565b60006020820190508181036000830152613823816137e7565b9050919050565b7f4650426173653a20706574206861732062696e64656421000000000000000000600082015250565b6000613860601783612b4c565b915061386b8261382a565b602082019050919050565b6000602082019050818103600083015261388f81613853565b9050919050565b7f4650426173653a20696e73756666696369656e7420616c6c6f77616e63650000600082015250565b60006138cc601e83612b4c565b91506138d782613896565b602082019050919050565b600060208201905081810360008301526138fb816138bf565b9050919050565b7f4650426173653a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061395e602683612b4c565b915061396982613902565b604082019050919050565b6000602082019050818103600083015261398d81613951565b9050919050565b7f4650426173653a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139f0602483612b4c565b91506139fb82613994565b604082019050919050565b60006020820190508181036000830152613a1f816139e3565b9050919050565b600081519050613a3581612c60565b92915050565b600060208284031215613a5157613a50612bf3565b5b6000613a5f84828501613a26565b91505092915050565b7f4650426173653a207472616e7366657220616d6f756e7420657863656564732060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b6000613ac4602783612b4c565b9150613acf82613a68565b604082019050919050565b60006020820190508181036000830152613af381613ab7565b905091905056fea2646970667358221220e103cbd36b7d4ea77e5b78b0c891e3a230e910a8fa93c84535bfeb97ffc477a064736f6c63430008140033