0x6102006040523480156200001257600080fd5b50732415c6d988cefd610d1b024a2df38d2b730f6c5c80600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200009b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000929062000975565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000d457600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663ba9341c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000148919062000a01565b90508073ffffffffffffffffffffffffffffffffffffffff166306ce8932600c6040518263ffffffff1660e01b815260040162000186919062000ab3565b602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000a01565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480620002ae57508073ffffffffffffffffffffffffffffffffffffffff166306ce8932600f6040518263ffffffff1660e01b81526004016200023b919062000ab3565b602060405180830381865afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000a01565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b620002f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e79062000b20565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663d97e445b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000b87565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663268e46e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000407919062000bfe565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306ce8932601a6040518263ffffffff1660e01b815260040162000476919062000ab3565b602060405180830381865afa15801562000494573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ba919062000a01565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306ce8932601b6040518263ffffffff1660e01b815260040162000529919062000ab3565b602060405180830381865afa15801562000547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056d919062000a01565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306ce8932600b6040518263ffffffff1660e01b815260040162000646919062000ab3565b602060405180830381865afa15801562000664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068a919062000a01565b73ffffffffffffffffffffffffffffffffffffffff166101408173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306ce8932600e6040518263ffffffff1660e01b8152600401620006fa919062000ab3565b602060405180830381865afa15801562000718573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200073e919062000a01565b73ffffffffffffffffffffffffffffffffffffffff166101608173ffffffffffffffffffffffffffffffffffffffff16815250506101205173ffffffffffffffffffffffffffffffffffffffff1663b266cd096040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e7919062000a01565b73ffffffffffffffffffffffffffffffffffffffff166101808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166101a08173ffffffffffffffffffffffffffffffffffffffff168152505060008173ffffffffffffffffffffffffffffffffffffffff166385e1f4d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c4919062000c6b565b905060018114620008d8576126f7620008dc565b6103e55b61ffff166101c0818152505060018114620008fa57612710620008fe565b6103e85b61ffff166101e081815250505050505062000c9d565b600082825260208201905092915050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b60006200095d60018362000914565b91506200096a8262000925565b602082019050919050565b6000602082019050818103600083015262000990816200094e565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c9826200099c565b9050919050565b620009db81620009bc565b8114620009e757600080fd5b50565b600081519050620009fb81620009d0565b92915050565b60006020828403121562000a1a5762000a1962000997565b5b600062000a2a84828501620009ea565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b601f811062000a765762000a7562000a33565b5b50565b600081905062000a898262000a62565b919050565b600062000a9b8262000a79565b9050919050565b62000aad8162000a8e565b82525050565b600060208201905062000aca600083018462000aa2565b92915050565b7f6100000000000000000000000000000000000000000000000000000000000000600082015250565b600062000b0860018362000914565b915062000b158262000ad0565b602082019050919050565b6000602082019050818103600083015262000b3b8162000af9565b9050919050565b600062000b4f82620009bc565b9050919050565b62000b618162000b42565b811462000b6d57600080fd5b50565b60008151905062000b818162000b56565b92915050565b60006020828403121562000ba05762000b9f62000997565b5b600062000bb08482850162000b70565b91505092915050565b600062000bc682620009bc565b9050919050565b62000bd88162000bb9565b811462000be457600080fd5b50565b60008151905062000bf88162000bcd565b92915050565b60006020828403121562000c175762000c1662000997565b5b600062000c278482850162000be7565b91505092915050565b6000819050919050565b62000c458162000c30565b811462000c5157600080fd5b50565b60008151905062000c658162000c3a565b92915050565b60006020828403121562000c845762000c8362000997565b5b600062000c948482850162000c54565b91505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516146d162000e1460003960005050600050506000818161281a015261285b01526000610e5b0152600081816108360152818161097a01528181610c2601528181610d7d0152818161130a01528181611454015281816117390152818161188f01528181611ca60152818161210c0152818161227001526123bb0152600081816107e10152818161092501528181610bd101528181610d28015281816112b5015281816113ff015281816116e40152818161183a01528181611c51015281816120b70152818161221b01526123660152600081816115de01528181611a330152611e6a0152600050506000818161294a0152612a12015260008181610a8001528181610abd01528181611104015281816111a4015281816129d601528181612bea01528181612c5b0152612e3001526000612cf901526000818161290e0152612b7b01526146d16000f3fe6080604052600436106101a05760003560e01c80639bd80e8c116100ec578063db5e282d1161008a578063e88bfbd111610064578063e88bfbd11461055d578063e99b70ff14610588578063eb7cbd90146105b3578063ff36f874146105de576101a7565b8063db5e282d146104de578063dd83cc8914610509578063e7d1c1b414610532576101a7565b8063a1830106116100c6578063a183010614610438578063a8c15df614610461578063c36ed5ed1461048a578063cdb60b98146104c7576101a7565b80639bd80e8c146103a75780639dab1bc0146103d05780639f5341031461040d576101a7565b80633e9c17f7116101595780638f903620116101335780638f90362014610313578063969063411461033e5780639a7d2893146103675780639a867a491461037e576101a7565b80633e9c17f7146102a357806356739ddf146102ce5780636c821d86146102ea576101a7565b80630642b746146101a9578063078afe9b146101e65780630d68beaf14610211578063109c85d81461023a5780631c2919a3146102515780633d342d1b1461027a576101a7565b366101a757005b005b3480156101b557600080fd5b506101d060048036038101906101cb91906133d0565b61061b565b6040516101dd9190613486565b60405180910390f35b3480156101f257600080fd5b506101fb6107b5565b60405161020891906134bc565b60405180910390f35b34801561021d57600080fd5b50610238600480360381019061023391906134d7565b6107c8565b005b34801561024657600080fd5b5061024f61090c565b005b34801561025d57600080fd5b5061027860048036038101906102739190613530565b610bb8565b005b34801561028657600080fd5b506102a1600480360381019061029c91906134d7565b610d0f565b005b3480156102af57600080fd5b506102b8610e53565b6040516102c5919061356c565b60405180910390f35b6102e860048036038101906102e39190613587565b610e59565b005b3480156102f657600080fd5b50610311600480360381019061030c91906134d7565b61129c565b005b34801561031f57600080fd5b506103286113e0565b604051610335919061356c565b60405180910390f35b34801561034a57600080fd5b50610365600480360381019061036091906134d7565b6113e6565b005b34801561037357600080fd5b5061037c6115a4565b005b34801561038a57600080fd5b506103a560048036038101906103a0919061361c565b6116cb565b005b3480156103b357600080fd5b506103ce60048036038101906103c991906137ab565b611821565b005b3480156103dc57600080fd5b506103f760048036038101906103f291906134d7565b611c1a565b604051610404919061356c565b60405180910390f35b34801561041957600080fd5b50610422611c32565b60405161042f919061356c565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190613845565b611c38565b005b34801561046d57600080fd5b50610488600480360381019061048391906134d7565b61209e565b005b34801561049657600080fd5b506104b160048036038101906104ac91906134d7565b6121e2565b6040516104be91906134bc565b60405180910390f35b3480156104d357600080fd5b506104dc612202565b005b3480156104ea57600080fd5b506104f3612347565b604051610500919061356c565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190613530565b61234d565b005b34801561053e57600080fd5b506105476124a4565b60405161055491906134bc565b60405180910390f35b34801561056957600080fd5b506105726124b7565b60405161057f919061356c565b60405180910390f35b34801561059457600080fd5b5061059d6124bd565b6040516105aa919061356c565b60405180910390f35b3480156105bf57600080fd5b506105c86124c3565b6040516105d5919061356c565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190613927565b6124c9565b60405161061291906134bc565b60405180910390f35b6000806001868690500167ffffffffffffffff81111561063e5761063d61366d565b5b60405190808252806020026020018201604052801561066c5781602001602082028036833780820191505090505b50905060005b868690508110156106ff578686828181106106905761068f613970565b5b90506020020160208101906106a5919061399f565b8282815181106106b8576106b7613970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610672565b508781878790508151811061071757610716613970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506107a88161075e896124ff565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061265e565b9150509695505050505050565b600c60009054906101000a900460ff1681565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16148061086d57503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b806108c357503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990613a29565b60405180910390fd5b8060018190555050565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614806109b157503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b80610a0757503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3d90613a29565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7e57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b149190613486565b602060405180830381865afa158015610b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b559190613a5e565b6040518363ffffffff1660e01b8152600401610b72929190613a8b565b6020604051808303816000875af1158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190613ac9565b50565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161480610c5d57503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b80610cb357503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990613a29565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161480610db457503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b80610e0a57503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090613a29565b60405180910390fd5b8060038190555050565b60075481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e9e33878787878761061b565b73ffffffffffffffffffffffffffffffffffffffff1603611295576000610ed260806020886127c49092919063ffffffff16565b90506006600082815260200190815260200160002060009054906101000a900460ff1615610f005750611295565b60016006600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600160058484604051610f40929190613b26565b908152602001604051809103902060006101000a81548160ff021916908315150217905550600c60009054906101000a900460ff1615610f8557610f8485856127e9565b5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fbe5750611295565b6000670de0b6b3a7640000610fe0600060408a6127c49092919063ffffffff16565b610fea9190613b6e565b9050600066038d7ea4c6800061100d604060208b6127c49092919063ffffffff16565b6110179190613b6e565b90506000611032606060208b6127c49092919063ffffffff16565b90506078816110419190613bc8565b4211156110a0573373ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4600060405161108f9190613c41565b60405180910390a250505050611295565b8134101561110157600073ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d460006040516110f09190613c41565b60405180910390a250505050611295565b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161115b9190613486565b602060405180830381865afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c9190613a5e565b1115611290577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b81526004016111fd929190613a8b565b6020604051808303816000875af115801561121c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112409190613ac9565b503373ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d484604051611287919061356c565b60405180910390a25b505050505b5050505050565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16148061134157503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b8061139757503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613a29565b60405180910390fd5b8060028190555050565b60015481565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16148061148b57503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b806114e157503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790613a29565b60405180910390fd5b600061153960006080846127c49092919063ffffffff16565b90506000611553608080856127c49092919063ffffffff16565b905081820291508181019050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115dc57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ce8932600a6040518263ffffffff1660e01b81526004016116369190613cd3565b602060405180830381865afa158015611653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116779190613d03565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ae57600080fd5b6001600c60006101000a81548160ff021916908315150217905550565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16148061177057503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b806117c657503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90613a29565b60405180910390fd5b8060046000848152602001908152602001600020819055505050565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614806118c657503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b8061191c57503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195290613a29565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461199357600080fd5b600032905060004790506000811115611a1e5760008273ffffffffffffffffffffffffffffffffffffffff16826040516119cc90613d56565b60006040518083038185875af1925050503d8060008114611a09576040519150601f19603f3d011682016040523d82523d6000602084013e611a0e565b606091505b5050905080611a1c57600080fd5b505b60008451148015611a2c5750825b15611ac8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b58607a26040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a9c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ac59190613e02565b93505b60005b8451811015611c13576000858281518110611ae957611ae8613970565b5b6020026020010151905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b2e9190613486565b602060405180830381865afa158015611b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6f9190613a5e565b905080600003611b80575050611c02565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b8152600401611bbb929190613ea0565b6020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613ac9565b5050505b80611c0c90613ec9565b9050611acb565b5050505050565b60046020528060005260406000206000915090505481565b60035481565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161480611cdd57503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b80611d3357503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613a29565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611daa57600080fd5b60004790506000811115611e665760008273ffffffffffffffffffffffffffffffffffffffff1682604051611dde90613d56565b60006040518083038185875af1925050503d8060008114611e1b576040519150601f19603f3d011682016040523d82523d6000602084013e611e20565b606091505b5050905080611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b90613f5d565b60405180910390fd5b505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b58607a26040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ed3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611efc9190613e02565b905060005b815181101561209857600073ffffffffffffffffffffffffffffffffffffffff16828281518110611f3557611f34613970565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315612098576000828281518110611f6e57611f6d613970565b5b6020026020010151905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fb39190613486565b602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190613a5e565b905080600003612005575050612087565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b8152600401612040929190613ea0565b6020604051808303816000875af115801561205f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120839190613ac9565b5050505b8061209190613ec9565b9050611f01565b50505050565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16148061214357503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b8061219957503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cf90613a29565b60405180910390fd5b8060098190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614806122a757503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b806122fd57503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390613a29565b60405180910390fd5b6123446128eb565b50565b60095481565b3273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614806123f257503273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b8061244857503273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247e90613a29565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b60025481565b600a5481565b600b5481565b6005818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b606060008203612546576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612659565b600082905060005b6000821461257857808061256190613ec9565b915050600a826125719190613fac565b915061254e565b60008167ffffffffffffffff8111156125945761259361366d565b5b6040519080825280601f01601f1916602001820160405280156125c65781602001600182028036833780820191505090505b5090505b600085146126525781806125dd90613fdd565b925050600a856125ed9190614006565b60306125f99190613bc8565b60f81b81838151811061260f5761260e613970565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561264b9190613fac565b94506125ca565b8093505050505b919050565b6000808484604051602001612674929190614163565b604051602081830303815290604052905060006126918251612ee6565b826040516020016126a392919061425e565b60405160208183030381529060405280519060200120905060418451146126cf576126ce6002612fb4565b5b60008060006020870151925060408701519150606087015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115612722576127216003612fb4565b5b60006001858386866040516000815260200160405260405161274794939291906142c2565b6020604051602081039080840390855afa158015612769573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127b4576127b36001612fb4565b5b8096505050505050509392505050565b6000808360018460020a03901b905080851694508385901c9450508390509392505050565b60008282905003156128e75760c882829050116128e757600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff160361285957600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c5329c7e83836040518363ffffffff1660e01b81526004016128b49291906143c6565b600060405180830381600087803b1580156128ce57600080fd5b505af11580156128e2573d6000803e3d6000fd5b505050505b5050565b6000600860009054906101000a900460ff1661290a5760009050612ee3565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016129859190613486565b602060405180830381865afa1580156129a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c69190613a5e565b90506000811480612a90575060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612a4d9190613486565b602060405180830381865afa158015612a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8e9190613a5e565b145b15612a9f576000915050612ee3565b426007819055506000600a5490506000600b54905060008060018411612ac55784612ad7565b838581612ad557612ad4613f7d565b5b045b915060018311612ae8576001612aea565b825b4781612af957612af8613f7d565b5b0490506000818310612b0b5781612b0d565b825b905064e8d4a51000811015612b2b5760009650505050505050612ee3565b6000600267ffffffffffffffff811115612b4857612b4761366d565b5b604051908082528060200260200182016040528015612b765781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110612bae57612bad613970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612c1d57612c1c613970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612cb29190613486565b602060405180830381865afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf39190613a5e565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1684637ff36ab560008630607842612d459190613bc8565b604051602401612d58949392919061442e565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612da6919061447a565b60006040518083038185875af1925050503d8060008114612de3576040519150601f19603f3d011682016040523d82523d6000602084013e612de8565b606091505b5050905080612e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e23906144dd565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612e879190613486565b602060405180830381865afa158015612ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec89190613a5e565b90508281612ed691906144fd565b9a50505050505050505050505b90565b606060006001612ef58461311a565b01905060008167ffffffffffffffff811115612f1457612f1361366d565b5b6040519080825280601f01601f191660200182016040528015612f465781602001600182028036833780820191505090505b509050600082602001820190505b600115612fa9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612f9d57612f9c613f7d565b5b04945060008503612f54575b819350505050919050565b60006004811115612fc857612fc7613c5c565b5b816004811115612fdb57612fda613c5c565b5b03156131175760016004811115612ff557612ff4613c5c565b5b81600481111561300857613007613c5c565b5b03613048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303f9061457d565b60405180910390fd5b6002600481111561305c5761305b613c5c565b5b81600481111561306f5761306e613c5c565b5b036130af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a6906145e9565b60405180910390fd5b600360048111156130c3576130c2613c5c565b5b8160048111156130d6576130d5613c5c565b5b03613116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310d9061467b565b60405180910390fd5b5b50565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613178577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161316e5761316d613f7d565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106131b5576d04ee2d6d415b85acef810000000083816131ab576131aa613f7d565b5b0492506020810190505b662386f26fc1000083106131e457662386f26fc1000083816131da576131d9613f7d565b5b0492506010810190505b6305f5e100831061320d576305f5e100838161320357613202613f7d565b5b0492506008810190505b612710831061323257612710838161322857613227613f7d565b5b0492506004810190505b60648310613255576064838161324b5761324a613f7d565b5b0492506002810190505b600a8310613264576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132ac82613281565b9050919050565b6132bc816132a1565b81146132c757600080fd5b50565b6000813590506132d9816132b3565b92915050565b6000819050919050565b6132f2816132df565b81146132fd57600080fd5b50565b60008135905061330f816132e9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261333a57613339613315565b5b8235905067ffffffffffffffff8111156133575761335661331a565b5b6020830191508360208202830111156133735761337261331f565b5b9250929050565b60008083601f8401126133905761338f613315565b5b8235905067ffffffffffffffff8111156133ad576133ac61331a565b5b6020830191508360018202830111156133c9576133c861331f565b5b9250929050565b600080600080600080608087890312156133ed576133ec613277565b5b60006133fb89828a016132ca565b965050602061340c89828a01613300565b955050604087013567ffffffffffffffff81111561342d5761342c61327c565b5b61343989828a01613324565b9450945050606087013567ffffffffffffffff81111561345c5761345b61327c565b5b61346889828a0161337a565b92509250509295509295509295565b613480816132a1565b82525050565b600060208201905061349b6000830184613477565b92915050565b60008115159050919050565b6134b6816134a1565b82525050565b60006020820190506134d160008301846134ad565b92915050565b6000602082840312156134ed576134ec613277565b5b60006134fb84828501613300565b91505092915050565b61350d816134a1565b811461351857600080fd5b50565b60008135905061352a81613504565b92915050565b60006020828403121561354657613545613277565b5b60006135548482850161351b565b91505092915050565b613566816132df565b82525050565b6000602082019050613581600083018461355d565b92915050565b6000806000806000606086880312156135a3576135a2613277565b5b60006135b188828901613300565b955050602086013567ffffffffffffffff8111156135d2576135d161327c565b5b6135de88828901613324565b9450945050604086013567ffffffffffffffff8111156136015761360061327c565b5b61360d8882890161337a565b92509250509295509295909350565b6000806040838503121561363357613632613277565b5b600061364185828601613300565b925050602061365285828601613300565b9150509250929050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136a58261365c565b810181811067ffffffffffffffff821117156136c4576136c361366d565b5b80604052505050565b60006136d761326d565b90506136e3828261369c565b919050565b600067ffffffffffffffff8211156137035761370261366d565b5b602082029050602081019050919050565b6000613727613722846136e8565b6136cd565b9050808382526020820190506020840283018581111561374a5761374961331f565b5b835b81811015613773578061375f88826132ca565b84526020840193505060208101905061374c565b5050509392505050565b600082601f83011261379257613791613315565b5b81356137a2848260208601613714565b91505092915050565b600080604083850312156137c2576137c1613277565b5b600083013567ffffffffffffffff8111156137e0576137df61327c565b5b6137ec8582860161377d565b92505060206137fd8582860161351b565b9150509250929050565b600061381282613281565b9050919050565b61382281613807565b811461382d57600080fd5b50565b60008135905061383f81613819565b92915050565b60006020828403121561385b5761385a613277565b5b600061386984828501613830565b91505092915050565b600080fd5b600067ffffffffffffffff8211156138925761389161366d565b5b61389b8261365c565b9050602081019050919050565b82818337600083830152505050565b60006138ca6138c584613877565b6136cd565b9050828152602081018484840111156138e6576138e5613872565b5b6138f18482856138a8565b509392505050565b600082601f83011261390e5761390d613315565b5b813561391e8482602086016138b7565b91505092915050565b60006020828403121561393d5761393c613277565b5b600082013567ffffffffffffffff81111561395b5761395a61327c565b5b613967848285016138f9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156139b5576139b4613277565b5b60006139c3848285016132ca565b91505092915050565b600082825260208201905092915050565b7f6f00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613a136001836139cc565b9150613a1e826139dd565b602082019050919050565b60006020820190508181036000830152613a4281613a06565b9050919050565b600081519050613a58816132e9565b92915050565b600060208284031215613a7457613a73613277565b5b6000613a8284828501613a49565b91505092915050565b6000604082019050613aa06000830185613477565b613aad602083018461355d565b9392505050565b600081519050613ac381613504565b92915050565b600060208284031215613adf57613ade613277565b5b6000613aed84828501613ab4565b91505092915050565b600081905092915050565b6000613b0d8385613af6565b9350613b1a8385846138a8565b82840190509392505050565b6000613b33828486613b01565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b79826132df565b9150613b84836132df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bbd57613bbc613b3f565b5b828202905092915050565b6000613bd3826132df565b9150613bde836132df565b9250828201905080821115613bf657613bf5613b3f565b5b92915050565b6000819050919050565b6000819050919050565b6000613c2b613c26613c2184613bfc565b613c06565b6132df565b9050919050565b613c3b81613c10565b82525050565b6000602082019050613c566000830184613c32565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b601f8110613c9c57613c9b613c5c565b5b50565b6000819050613cad82613c8b565b919050565b6000613cbd82613c9f565b9050919050565b613ccd81613cb2565b82525050565b6000602082019050613ce86000830184613cc4565b92915050565b600081519050613cfd816132b3565b92915050565b600060208284031215613d1957613d18613277565b5b6000613d2784828501613cee565b91505092915050565b50565b6000613d40600083613af6565b9150613d4b82613d30565b600082019050919050565b6000613d6182613d33565b9150819050919050565b6000613d7e613d79846136e8565b6136cd565b90508083825260208201905060208402830185811115613da157613da061331f565b5b835b81811015613dca5780613db68882613cee565b845260208401935050602081019050613da3565b5050509392505050565b600082601f830112613de957613de8613315565b5b8151613df9848260208601613d6b565b91505092915050565b600060208284031215613e1857613e17613277565b5b600082015167ffffffffffffffff811115613e3657613e3561327c565b5b613e4284828501613dd4565b91505092915050565b6000613e66613e61613e5c84613281565b613c06565b613281565b9050919050565b6000613e7882613e4b565b9050919050565b6000613e8a82613e6d565b9050919050565b613e9a81613e7f565b82525050565b6000604082019050613eb56000830185613e91565b613ec2602083018461355d565b9392505050565b6000613ed4826132df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f0657613f05613b3f565b5b600182019050919050565b7f5400000000000000000000000000000000000000000000000000000000000000600082015250565b6000613f476001836139cc565b9150613f5282613f11565b602082019050919050565b60006020820190508181036000830152613f7681613f3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fb7826132df565b9150613fc2836132df565b925082613fd257613fd1613f7d565b5b828204905092915050565b6000613fe8826132df565b915060008203613ffb57613ffa613b3f565b5b600182039050919050565b6000614011826132df565b915061401c836132df565b92508261402c5761402b613f7d565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61406c816132a1565b82525050565b600061407e8383614063565b60208301905092915050565b6000602082019050919050565b60006140a282614037565b6140ac8185614042565b93506140b783614053565b8060005b838110156140e85781516140cf8882614072565b97506140da8361408a565b9250506001810190506140bb565b5085935050505092915050565b600081519050919050565b60005b8381101561411e578082015181840152602081019050614103565b60008484015250505050565b6000614135826140f5565b61413f81856139cc565b935061414f818560208601614100565b6141588161365c565b840191505092915050565b6000604082019050818103600083015261417d8185614097565b90508181036020830152614191818461412a565b90509392505050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000600082015250565b60006141db601a8361419a565b91506141e6826141a5565b601a82019050919050565b60006141fc826140f5565b614206818561419a565b9350614216818560208601614100565b80840191505092915050565b600081519050919050565b600061423882614222565b6142428185613af6565b9350614252818560208601614100565b80840191505092915050565b6000614269826141ce565b915061427582856141f1565b9150614281828461422d565b91508190509392505050565b6000819050919050565b6142a08161428d565b82525050565b600060ff82169050919050565b6142bc816142a6565b82525050565b60006080820190506142d76000830187614297565b6142e460208301866142b3565b6142f16040830185614297565b6142fe6060830184614297565b95945050505050565b6000819050919050565b600061432060208401846132ca565b905092915050565b6000602082019050919050565b60006143418385614042565b935061434c82614307565b8060005b85811015614385576143628284614311565b61436c8882614072565b975061437783614328565b925050600181019050614350565b5085925050509392505050565b600082825260208201905092915050565b60006143b0600083614392565b91506143bb82613d30565b600082019050919050565b600060408201905081810360008301526143e1818486614335565b905081810360208301526143f4816143a3565b90509392505050565b600061441861441361440e84613bfc565b613c06565b6142a6565b9050919050565b614428816143fd565b82525050565b6000608082019050614443600083018761441f565b81810360208301526144558186614097565b90506144646040830185613477565b614471606083018461355d565b95945050505050565b6000614486828461422d565b915081905092915050565b7f7300000000000000000000000000000000000000000000000000000000000000600082015250565b60006144c76001836139cc565b91506144d282614491565b602082019050919050565b600060208201905081810360008301526144f6816144ba565b9050919050565b6000614508826132df565b9150614513836132df565b925082820390508181111561452b5761452a613b3f565b5b92915050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006145676018836139cc565b915061457282614531565b602082019050919050565b600060208201905081810360008301526145968161455a565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006145d3601f836139cc565b91506145de8261459d565b602082019050919050565b60006020820190508181036000830152614602816145c6565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006146656022836139cc565b915061467082614609565b604082019050919050565b6000602082019050818103600083015261469481614658565b905091905056fea2646970667358221220972618f84f53a01b837603f9a8ae79df5e5b398455f2bdf998af6f69542cc01964736f6c63430008100033