0x6080604052600436106101025760003560e01c806370a0823111610095578063a9059cbb11610064578063a9059cbb1461031c578063b515566a14610359578063c3c8cd8014610382578063c9567bf914610399578063dd62ed3e146103b057610109565b806370a0823114610272578063715018a6146102af5780638da5cb5b146102c657806395d89b41146102f157610109565b8063273123b7116100d1578063273123b7146101de578063313ce567146102075780635932ead1146102325780636fc3eaec1461025b57610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461017657806323b872dd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103ed565b6040516101309190612acd565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b919061265f565b61040d565b60405161016d9190612ab2565b60405180910390f35b34801561018257600080fd5b5061018b61042b565b6040516101989190612c2f565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612610565b61043f565b6040516101d59190612ab2565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190612582565b610518565b005b34801561021357600080fd5b5061021c610608565b6040516102299190612ca4565b60405180910390f35b34801561023e57600080fd5b50610259600480360381019061025491906126dc565b610611565b005b34801561026757600080fd5b506102706106c3565b005b34801561027e57600080fd5b5061029960048036038101906102949190612582565b610735565b6040516102a69190612c2f565b60405180910390f35b3480156102bb57600080fd5b506102c4610786565b005b3480156102d257600080fd5b506102db6108d9565b6040516102e891906129e4565b60405180910390f35b3480156102fd57600080fd5b50610306610902565b6040516103139190612acd565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061265f565b61093f565b6040516103509190612ab2565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061269b565b61095d565b005b34801561038e57600080fd5b50610397610aad565b005b3480156103a557600080fd5b506103ae610b27565b005b3480156103bc57600080fd5b506103d760048036038101906103d291906125d4565b611089565b6040516103e49190612c2f565b60405180910390f35b606060405180606001604052806024815260200161333e60249139905090565b600061042161041a611110565b8484611118565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b600061044c8484846112e3565b61050d84610458611110565b6105088560405180606001604052806028815260200161331660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104be611110565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e89092919063ffffffff16565b611118565b600190509392505050565b610520611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a490612b8f565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610619611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d90612b8f565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610704611110565b73ffffffffffffffffffffffffffffffffffffffff161461072457600080fd5b60004790506107328161194c565b50565b600061077f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a47565b9050919050565b61078e611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081290612b8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f53686962696e6469610000000000000000000000000000000000000000000000815250905090565b600061095361094c611110565b84846112e3565b6001905092915050565b610965611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e990612b8f565b60405180910390fd5b60005b8151811015610aa957600160066000848481518110610a3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610aa190612f45565b9150506109f5565b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aee611110565b73ffffffffffffffffffffffffffffffffffffffff1614610b0e57600080fd5b6000610b1930610735565b9050610b2481611ab5565b50565b610b2f611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612b8f565b60405180910390fd5b600f60149054906101000a900460ff1615610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0390612c0f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c9f30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce8000000611118565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce557600080fd5b505afa158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d91906125ab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7f57600080fd5b505afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db791906125ab565b6040518363ffffffff1660e01b8152600401610dd49291906129ff565b602060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2691906125ab565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eaf30610735565b600080610eba6108d9565b426040518863ffffffff1660e01b8152600401610edc96959493929190612a51565b6060604051808303818588803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f2e919061272e565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e40000006010819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611033929190612a28565b602060405180830381600087803b15801561104d57600080fd5b505af1158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190612705565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90612bef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90612b2f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112d69190612c2f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90612bcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90612aef565b60405180910390fd5b60008111611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90612baf565b60405180910390fd5b6005600a81905550600a600b8190555061141e6108d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561148c575061145c6108d9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115355750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61153e57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115e95750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561163f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116575750600f60179054906101000a900460ff165b156117075760105481111561166b57600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106116b657600080fd5b6005426116c39190612d65565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156117b25750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561181e576005600a819055506014600b819055505b600061182930610735565b9050600f60159054906101000a900460ff161580156118965750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118ae5750600f60169054906101000a900460ff165b156118d6576118bc81611ab5565b600047905060008111156118d4576118d34761194c565b5b505b505b6118e3838383611daf565b505050565b6000838311158290611930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119279190612acd565b60405180910390fd5b506000838561193f9190612e46565b9050809150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61199c600284611dbf90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156119c7573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611a18600284611dbf90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611a43573d6000803e3d6000fd5b5050565b6000600854821115611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8590612b0f565b60405180910390fd5b6000611a98611e09565b9050611aad8184611dbf90919063ffffffff16565b915050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b13577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611b415781602001602082028036833780820191505090505b5090503081600081518110611b7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2157600080fd5b505afa158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5991906125ab565b81600181518110611c93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611cfa30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611118565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d5e959493929190612c4a565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b611dba838383611e34565b505050565b6000611e0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fff565b905092915050565b6000806000611e16612062565b91509150611e2d8183611dbf90919063ffffffff16565b9250505090565b600080600080600080611e46876120cd565b955095509550955095509550611ea486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f3985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f85816121dd565b611f8f848361229a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fec9190612c2f565b60405180910390a3505050505050505050565b60008083118290612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d9190612acd565b60405180910390fd5b50600083856120559190612dbb565b9050809150509392505050565b6000806000600854905060006b033b2e3c9fd0803ce8000000905061209e6b033b2e3c9fd0803ce8000000600854611dbf90919063ffffffff16565b8210156120c0576008546b033b2e3c9fd0803ce80000009350935050506120c9565b81819350935050505b9091565b60008060008060008060008060006120ea8a600a54600b546122d4565b92509250925060006120fa611e09565b9050600080600061210d8e87878761236a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061217783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118e8565b905092915050565b600080828461218e9190612d65565b9050838110156121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca90612b4f565b60405180910390fd5b8091505092915050565b60006121e7611e09565b905060006121fe82846123f390919063ffffffff16565b905061225281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6122af8260085461213590919063ffffffff16565b6008819055506122ca8160095461217f90919063ffffffff16565b6009819055505050565b60008060008061230060646122f2888a6123f390919063ffffffff16565b611dbf90919063ffffffff16565b9050600061232a606461231c888b6123f390919063ffffffff16565b611dbf90919063ffffffff16565b9050600061235382612345858c61213590919063ffffffff16565b61213590919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061238385896123f390919063ffffffff16565b9050600061239a86896123f390919063ffffffff16565b905060006123b187896123f390919063ffffffff16565b905060006123da826123cc858761213590919063ffffffff16565b61213590919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156124065760009050612468565b600082846124149190612dec565b90508284826124239190612dbb565b14612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a90612b6f565b60405180910390fd5b809150505b92915050565b600061248161247c84612ce4565b612cbf565b905080838252602082019050828560208602820111156124a057600080fd5b60005b858110156124d057816124b688826124da565b8452602084019350602083019250506001810190506124a3565b5050509392505050565b6000813590506124e9816132d0565b92915050565b6000815190506124fe816132d0565b92915050565b600082601f83011261251557600080fd5b813561252584826020860161246e565b91505092915050565b60008135905061253d816132e7565b92915050565b600081519050612552816132e7565b92915050565b600081359050612567816132fe565b92915050565b60008151905061257c816132fe565b92915050565b60006020828403121561259457600080fd5b60006125a2848285016124da565b91505092915050565b6000602082840312156125bd57600080fd5b60006125cb848285016124ef565b91505092915050565b600080604083850312156125e757600080fd5b60006125f5858286016124da565b9250506020612606858286016124da565b9150509250929050565b60008060006060848603121561262557600080fd5b6000612633868287016124da565b9350506020612644868287016124da565b925050604061265586828701612558565b9150509250925092565b6000806040838503121561267257600080fd5b6000612680858286016124da565b925050602061269185828601612558565b9150509250929050565b6000602082840312156126ad57600080fd5b600082013567ffffffffffffffff8111156126c757600080fd5b6126d384828501612504565b91505092915050565b6000602082840312156126ee57600080fd5b60006126fc8482850161252e565b91505092915050565b60006020828403121561271757600080fd5b600061272584828501612543565b91505092915050565b60008060006060848603121561274357600080fd5b60006127518682870161256d565b93505060206127628682870161256d565b92505060406127738682870161256d565b9150509250925092565b60006127898383612795565b60208301905092915050565b61279e81612e7a565b82525050565b6127ad81612e7a565b82525050565b60006127be82612d20565b6127c88185612d43565b93506127d383612d10565b8060005b838110156128045781516127eb888261277d565b97506127f683612d36565b9250506001810190506127d7565b5085935050505092915050565b61281a81612e8c565b82525050565b61282981612ecf565b82525050565b600061283a82612d2b565b6128448185612d54565b9350612854818560208601612ee1565b61285d8161301b565b840191505092915050565b6000612875602383612d54565b91506128808261302c565b604082019050919050565b6000612898602a83612d54565b91506128a38261307b565b604082019050919050565b60006128bb602283612d54565b91506128c6826130ca565b604082019050919050565b60006128de601b83612d54565b91506128e982613119565b602082019050919050565b6000612901602183612d54565b915061290c82613142565b604082019050919050565b6000612924602083612d54565b915061292f82613191565b602082019050919050565b6000612947602983612d54565b9150612952826131ba565b604082019050919050565b600061296a602583612d54565b915061297582613209565b604082019050919050565b600061298d602483612d54565b915061299882613258565b604082019050919050565b60006129b0601783612d54565b91506129bb826132a7565b602082019050919050565b6129cf81612eb8565b82525050565b6129de81612ec2565b82525050565b60006020820190506129f960008301846127a4565b92915050565b6000604082019050612a1460008301856127a4565b612a2160208301846127a4565b9392505050565b6000604082019050612a3d60008301856127a4565b612a4a60208301846129c6565b9392505050565b600060c082019050612a6660008301896127a4565b612a7360208301886129c6565b612a806040830187612820565b612a8d6060830186612820565b612a9a60808301856127a4565b612aa760a08301846129c6565b979650505050505050565b6000602082019050612ac76000830184612811565b92915050565b60006020820190508181036000830152612ae7818461282f565b905092915050565b60006020820190508181036000830152612b0881612868565b9050919050565b60006020820190508181036000830152612b288161288b565b9050919050565b60006020820190508181036000830152612b48816128ae565b9050919050565b60006020820190508181036000830152612b68816128d1565b9050919050565b60006020820190508181036000830152612b88816128f4565b9050919050565b60006020820190508181036000830152612ba881612917565b9050919050565b60006020820190508181036000830152612bc88161293a565b9050919050565b60006020820190508181036000830152612be88161295d565b9050919050565b60006020820190508181036000830152612c0881612980565b9050919050565b60006020820190508181036000830152612c28816129a3565b9050919050565b6000602082019050612c4460008301846129c6565b92915050565b600060a082019050612c5f60008301886129c6565b612c6c6020830187612820565b8181036040830152612c7e81866127b3565b9050612c8d60608301856127a4565b612c9a60808301846129c6565b9695505050505050565b6000602082019050612cb960008301846129d5565b92915050565b6000612cc9612cda565b9050612cd58282612f14565b919050565b6000604051905090565b600067ffffffffffffffff821115612cff57612cfe612fec565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612d7082612eb8565b9150612d7b83612eb8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612db057612daf612f8e565b5b828201905092915050565b6000612dc682612eb8565b9150612dd183612eb8565b925082612de157612de0612fbd565b5b828204905092915050565b6000612df782612eb8565b9150612e0283612eb8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3b57612e3a612f8e565b5b828202905092915050565b6000612e5182612eb8565b9150612e5c83612eb8565b925082821015612e6f57612e6e612f8e565b5b828203905092915050565b6000612e8582612e98565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612eda82612eb8565b9050919050565b60005b83811015612eff578082015181840152602081019050612ee4565b83811115612f0e576000848401525b50505050565b612f1d8261301b565b810181811067ffffffffffffffff82111715612f3c57612f3b612fec565b5b80604052505050565b6000612f5082612eb8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f8357612f82612f8e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6132d981612e7a565b81146132e457600080fd5b50565b6132f081612e8c565b81146132fb57600080fd5b50565b61330781612eb8565b811461331257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636553686962696e646961207c20742e6d652f53686962696e6469615f636f6d6d756e697479a264697066735822122029351f0f05985b324b5e49527713300bf18a05cd4bfad67354a4931d3a1b95c864736f6c63430008040033
0x60806040526b033b2e3c9fd0803ce800000060001962000020919062000543565b6000196200002f9190620004fe565b6008556000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055506000600f60176101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce8000000601055348015620000a057600080fd5b506000620000b36200049f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350739055d4a9fd5bff35cc049a727c328909fd8e97fc600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f05331fc2e100fcf7210d90d1e5c902ca4d21165600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620002126200049f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000266620004a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004136200049f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620004919190620004e1565b60405180910390a3620005d9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004db8162000539565b82525050565b6000602082019050620004f86000830184620004d0565b92915050565b60006200050b8262000539565b9150620005188362000539565b9250828210156200052e576200052d6200057b565b5b828203905092915050565b6000819050919050565b6000620005508262000539565b91506200055d8362000539565b92508262000570576200056f620005aa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61339780620005e96000396000f3fe6080604052600436106101025760003560e01c806370a0823111610095578063a9059cbb11610064578063a9059cbb1461031c578063b515566a14610359578063c3c8cd8014610382578063c9567bf914610399578063dd62ed3e146103b057610109565b806370a0823114610272578063715018a6146102af5780638da5cb5b146102c657806395d89b41146102f157610109565b8063273123b7116100d1578063273123b7146101de578063313ce567146102075780635932ead1146102325780636fc3eaec1461025b57610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461017657806323b872dd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103ed565b6040516101309190612acd565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b919061265f565b61040d565b60405161016d9190612ab2565b60405180910390f35b34801561018257600080fd5b5061018b61042b565b6040516101989190612c2f565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612610565b61043f565b6040516101d59190612ab2565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190612582565b610518565b005b34801561021357600080fd5b5061021c610608565b6040516102299190612ca4565b60405180910390f35b34801561023e57600080fd5b50610259600480360381019061025491906126dc565b610611565b005b34801561026757600080fd5b506102706106c3565b005b34801561027e57600080fd5b5061029960048036038101906102949190612582565b610735565b6040516102a69190612c2f565b60405180910390f35b3480156102bb57600080fd5b506102c4610786565b005b3480156102d257600080fd5b506102db6108d9565b6040516102e891906129e4565b60405180910390f35b3480156102fd57600080fd5b50610306610902565b6040516103139190612acd565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061265f565b61093f565b6040516103509190612ab2565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061269b565b61095d565b005b34801561038e57600080fd5b50610397610aad565b005b3480156103a557600080fd5b506103ae610b27565b005b3480156103bc57600080fd5b506103d760048036038101906103d291906125d4565b611089565b6040516103e49190612c2f565b60405180910390f35b606060405180606001604052806024815260200161333e60249139905090565b600061042161041a611110565b8484611118565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b600061044c8484846112e3565b61050d84610458611110565b6105088560405180606001604052806028815260200161331660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104be611110565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e89092919063ffffffff16565b611118565b600190509392505050565b610520611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a490612b8f565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610619611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d90612b8f565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610704611110565b73ffffffffffffffffffffffffffffffffffffffff161461072457600080fd5b60004790506107328161194c565b50565b600061077f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a47565b9050919050565b61078e611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081290612b8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f53686962696e6469610000000000000000000000000000000000000000000000815250905090565b600061095361094c611110565b84846112e3565b6001905092915050565b610965611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e990612b8f565b60405180910390fd5b60005b8151811015610aa957600160066000848481518110610a3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610aa190612f45565b9150506109f5565b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aee611110565b73ffffffffffffffffffffffffffffffffffffffff1614610b0e57600080fd5b6000610b1930610735565b9050610b2481611ab5565b50565b610b2f611110565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612b8f565b60405180910390fd5b600f60149054906101000a900460ff1615610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0390612c0f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c9f30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce8000000611118565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce557600080fd5b505afa158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d91906125ab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7f57600080fd5b505afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db791906125ab565b6040518363ffffffff1660e01b8152600401610dd49291906129ff565b602060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2691906125ab565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eaf30610735565b600080610eba6108d9565b426040518863ffffffff1660e01b8152600401610edc96959493929190612a51565b6060604051808303818588803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f2e919061272e565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e40000006010819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611033929190612a28565b602060405180830381600087803b15801561104d57600080fd5b505af1158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190612705565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90612bef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90612b2f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112d69190612c2f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90612bcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90612aef565b60405180910390fd5b60008111611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90612baf565b60405180910390fd5b6005600a81905550600a600b8190555061141e6108d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561148c575061145c6108d9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115355750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61153e57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115e95750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561163f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116575750600f60179054906101000a900460ff165b156117075760105481111561166b57600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106116b657600080fd5b6005426116c39190612d65565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156117b25750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561181e576005600a819055506014600b819055505b600061182930610735565b9050600f60159054906101000a900460ff161580156118965750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118ae5750600f60169054906101000a900460ff165b156118d6576118bc81611ab5565b600047905060008111156118d4576118d34761194c565b5b505b505b6118e3838383611daf565b505050565b6000838311158290611930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119279190612acd565b60405180910390fd5b506000838561193f9190612e46565b9050809150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61199c600284611dbf90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156119c7573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611a18600284611dbf90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611a43573d6000803e3d6000fd5b5050565b6000600854821115611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8590612b0f565b60405180910390fd5b6000611a98611e09565b9050611aad8184611dbf90919063ffffffff16565b915050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b13577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611b415781602001602082028036833780820191505090505b5090503081600081518110611b7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2157600080fd5b505afa158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5991906125ab565b81600181518110611c93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611cfa30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611118565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d5e959493929190612c4a565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b611dba838383611e34565b505050565b6000611e0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fff565b905092915050565b6000806000611e16612062565b91509150611e2d8183611dbf90919063ffffffff16565b9250505090565b600080600080600080611e46876120cd565b955095509550955095509550611ea486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f3985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f85816121dd565b611f8f848361229a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fec9190612c2f565b60405180910390a3505050505050505050565b60008083118290612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d9190612acd565b60405180910390fd5b50600083856120559190612dbb565b9050809150509392505050565b6000806000600854905060006b033b2e3c9fd0803ce8000000905061209e6b033b2e3c9fd0803ce8000000600854611dbf90919063ffffffff16565b8210156120c0576008546b033b2e3c9fd0803ce80000009350935050506120c9565b81819350935050505b9091565b60008060008060008060008060006120ea8a600a54600b546122d4565b92509250925060006120fa611e09565b9050600080600061210d8e87878761236a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061217783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118e8565b905092915050565b600080828461218e9190612d65565b9050838110156121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca90612b4f565b60405180910390fd5b8091505092915050565b60006121e7611e09565b905060006121fe82846123f390919063ffffffff16565b905061225281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6122af8260085461213590919063ffffffff16565b6008819055506122ca8160095461217f90919063ffffffff16565b6009819055505050565b60008060008061230060646122f2888a6123f390919063ffffffff16565b611dbf90919063ffffffff16565b9050600061232a606461231c888b6123f390919063ffffffff16565b611dbf90919063ffffffff16565b9050600061235382612345858c61213590919063ffffffff16565b61213590919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061238385896123f390919063ffffffff16565b9050600061239a86896123f390919063ffffffff16565b905060006123b187896123f390919063ffffffff16565b905060006123da826123cc858761213590919063ffffffff16565b61213590919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156124065760009050612468565b600082846124149190612dec565b90508284826124239190612dbb565b14612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a90612b6f565b60405180910390fd5b809150505b92915050565b600061248161247c84612ce4565b612cbf565b905080838252602082019050828560208602820111156124a057600080fd5b60005b858110156124d057816124b688826124da565b8452602084019350602083019250506001810190506124a3565b5050509392505050565b6000813590506124e9816132d0565b92915050565b6000815190506124fe816132d0565b92915050565b600082601f83011261251557600080fd5b813561252584826020860161246e565b91505092915050565b60008135905061253d816132e7565b92915050565b600081519050612552816132e7565b92915050565b600081359050612567816132fe565b92915050565b60008151905061257c816132fe565b92915050565b60006020828403121561259457600080fd5b60006125a2848285016124da565b91505092915050565b6000602082840312156125bd57600080fd5b60006125cb848285016124ef565b91505092915050565b600080604083850312156125e757600080fd5b60006125f5858286016124da565b9250506020612606858286016124da565b9150509250929050565b60008060006060848603121561262557600080fd5b6000612633868287016124da565b9350506020612644868287016124da565b925050604061265586828701612558565b9150509250925092565b6000806040838503121561267257600080fd5b6000612680858286016124da565b925050602061269185828601612558565b9150509250929050565b6000602082840312156126ad57600080fd5b600082013567ffffffffffffffff8111156126c757600080fd5b6126d384828501612504565b91505092915050565b6000602082840312156126ee57600080fd5b60006126fc8482850161252e565b91505092915050565b60006020828403121561271757600080fd5b600061272584828501612543565b91505092915050565b60008060006060848603121561274357600080fd5b60006127518682870161256d565b93505060206127628682870161256d565b92505060406127738682870161256d565b9150509250925092565b60006127898383612795565b60208301905092915050565b61279e81612e7a565b82525050565b6127ad81612e7a565b82525050565b60006127be82612d20565b6127c88185612d43565b93506127d383612d10565b8060005b838110156128045781516127eb888261277d565b97506127f683612d36565b9250506001810190506127d7565b5085935050505092915050565b61281a81612e8c565b82525050565b61282981612ecf565b82525050565b600061283a82612d2b565b6128448185612d54565b9350612854818560208601612ee1565b61285d8161301b565b840191505092915050565b6000612875602383612d54565b91506128808261302c565b604082019050919050565b6000612898602a83612d54565b91506128a38261307b565b604082019050919050565b60006128bb602283612d54565b91506128c6826130ca565b604082019050919050565b60006128de601b83612d54565b91506128e982613119565b602082019050919050565b6000612901602183612d54565b915061290c82613142565b604082019050919050565b6000612924602083612d54565b915061292f82613191565b602082019050919050565b6000612947602983612d54565b9150612952826131ba565b604082019050919050565b600061296a602583612d54565b915061297582613209565b604082019050919050565b600061298d602483612d54565b915061299882613258565b604082019050919050565b60006129b0601783612d54565b91506129bb826132a7565b602082019050919050565b6129cf81612eb8565b82525050565b6129de81612ec2565b82525050565b60006020820190506129f960008301846127a4565b92915050565b6000604082019050612a1460008301856127a4565b612a2160208301846127a4565b9392505050565b6000604082019050612a3d60008301856127a4565b612a4a60208301846129c6565b9392505050565b600060c082019050612a6660008301896127a4565b612a7360208301886129c6565b612a806040830187612820565b612a8d6060830186612820565b612a9a60808301856127a4565b612aa760a08301846129c6565b979650505050505050565b6000602082019050612ac76000830184612811565b92915050565b60006020820190508181036000830152612ae7818461282f565b905092915050565b60006020820190508181036000830152612b0881612868565b9050919050565b60006020820190508181036000830152612b288161288b565b9050919050565b60006020820190508181036000830152612b48816128ae565b9050919050565b60006020820190508181036000830152612b68816128d1565b9050919050565b60006020820190508181036000830152612b88816128f4565b9050919050565b60006020820190508181036000830152612ba881612917565b9050919050565b60006020820190508181036000830152612bc88161293a565b9050919050565b60006020820190508181036000830152612be88161295d565b9050919050565b60006020820190508181036000830152612c0881612980565b9050919050565b60006020820190508181036000830152612c28816129a3565b9050919050565b6000602082019050612c4460008301846129c6565b92915050565b600060a082019050612c5f60008301886129c6565b612c6c6020830187612820565b8181036040830152612c7e81866127b3565b9050612c8d60608301856127a4565b612c9a60808301846129c6565b9695505050505050565b6000602082019050612cb960008301846129d5565b92915050565b6000612cc9612cda565b9050612cd58282612f14565b919050565b6000604051905090565b600067ffffffffffffffff821115612cff57612cfe612fec565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612d7082612eb8565b9150612d7b83612eb8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612db057612daf612f8e565b5b828201905092915050565b6000612dc682612eb8565b9150612dd183612eb8565b925082612de157612de0612fbd565b5b828204905092915050565b6000612df782612eb8565b9150612e0283612eb8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3b57612e3a612f8e565b5b828202905092915050565b6000612e5182612eb8565b9150612e5c83612eb8565b925082821015612e6f57612e6e612f8e565b5b828203905092915050565b6000612e8582612e98565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612eda82612eb8565b9050919050565b60005b83811015612eff578082015181840152602081019050612ee4565b83811115612f0e576000848401525b50505050565b612f1d8261301b565b810181811067ffffffffffffffff82111715612f3c57612f3b612fec565b5b80604052505050565b6000612f5082612eb8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f8357612f82612f8e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6132d981612e7a565b81146132e457600080fd5b50565b6132f081612e8c565b81146132fb57600080fd5b50565b61330781612eb8565b811461331257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636553686962696e646961207c20742e6d652f53686962696e6469615f636f6d6d756e697479a264697066735822122029351f0f05985b324b5e49527713300bf18a05cd4bfad67354a4931d3a1b95c864736f6c63430008040033