60c0604052620186a0601060006101000a81548163ffffffff021916908363ffffffff1602179055506003601060046101000a81548161ffff021916908361ffff1602179055506001601060066101000a81548163ffffffff021916908363ffffffff1602179055503480156200007557600080fd5b5060405162004f7f38038062004f7f83398181016040528101906200009b919062000683565b3380600084866040518060400160405280600b81526020017f536f756c646120426f6d620000000000000000000000000000000000000000008152506040518060400160405280600c81526020017f534f554c44413136424f4d42000000000000000000000000000000000000000081525081600290816200011e919062000949565b50806003908162000130919062000949565b50620001416200035560201b60201c565b600081905550505060016008819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200022d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002249062000a91565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620002b557620002b4816200035a60201b60201c565b5b50505081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601190816200034b919062000949565b5050505062000b25565b600090565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620003cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c29062000b03565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004cc826200049f565b9050919050565b620004de81620004bf565b8114620004ea57600080fd5b50565b600081519050620004fe81620004d3565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000559826200050e565b810181811067ffffffffffffffff821117156200057b576200057a6200051f565b5b80604052505050565b6000620005906200048b565b90506200059e82826200054e565b919050565b600067ffffffffffffffff821115620005c157620005c06200051f565b5b620005cc826200050e565b9050602081019050919050565b60005b83811015620005f9578082015181840152602081019050620005dc565b60008484015250505050565b60006200061c6200061684620005a3565b62000584565b9050828152602081018484840111156200063b576200063a62000509565b5b62000648848285620005d9565b509392505050565b600082601f83011262000668576200066762000504565b5b81516200067a84826020860162000605565b91505092915050565b6000806000606084860312156200069f576200069e62000495565b5b6000620006af86828701620004ed565b9350506020620006c286828701620004ed565b925050604084015167ffffffffffffffff811115620006e657620006e56200049a565b5b620006f48682870162000650565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200075157607f821691505b60208210810362000767576200076662000709565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000792565b620007dd868362000792565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200082a620008246200081e84620007f5565b620007ff565b620007f5565b9050919050565b6000819050919050565b620008468362000809565b6200085e620008558262000831565b8484546200079f565b825550505050565b600090565b6200087562000866565b620008828184846200083b565b505050565b5b81811015620008aa576200089e6000826200086b565b60018101905062000888565b5050565b601f821115620008f957620008c3816200076d565b620008ce8462000782565b81016020851015620008de578190505b620008f6620008ed8562000782565b83018262000887565b50505b505050565b600082821c905092915050565b60006200091e60001984600802620008fe565b1980831691505092915050565b60006200093983836200090b565b9150826002028217905092915050565b6200095482620006fe565b67ffffffffffffffff81111562000970576200096f6200051f565b5b6200097c825462000738565b62000989828285620008ae565b600060209050601f831160018114620009c15760008415620009ac578287015190505b620009b885826200092b565b86555062000a28565b601f198416620009d1866200076d565b60005b82811015620009fb57848901518255600182019150602085019450602081019050620009d4565b8683101562000a1b578489015162000a17601f8916826200090b565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f43616e6e6f7420736574206f776e657220746f207a65726f0000000000000000600082015250565b600062000a7960188362000a30565b915062000a868262000a41565b602082019050919050565b6000602082019050818103600083015262000aac8162000a6a565b9050919050565b7f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000600082015250565b600062000aeb60178362000a30565b915062000af88262000ab3565b602082019050919050565b6000602082019050818103600083015262000b1e8162000adc565b9050919050565b60805160a05161441862000b67600039600081816109ad01528181611bc2015281816123480152818161236901526124890152600061230c01526144186000f3fe608060405234801561001057600080fd5b50600436106102055760003560e01c806379ba50971161011a578063a22cb465116100ad578063c87b56dd1161007c578063c87b56dd146105b8578063e086e5ec146105e8578063e0c86289146105f2578063e985e9c514610610578063f2fde38b1461064057610205565b8063a22cb46514610534578063ace3a33014610550578063ae44313e1461056c578063b88d4fde1461059c57610205565b80638dc654a2116100e95780638dc654a2146104c057806395d89b41146104ca5780639fe99c20146104e8578063a0bcfc7f1461051857610205565b806379ba50971461045e5780637d067bda146104685780637df8b802146104845780638da5cb5b146104a257610205565b8063235cea981161019d578063576ce5a01161016c578063576ce5a0146103a05780636352211e146103c05780636c0360eb146103f057806370a082311461040e5780637253575d1461043e57610205565b8063235cea981461032e57806323b872dd1461034c578063279a669e1461036857806342842e0e1461038457610205565b8063095ea7b3116101d9578063095ea7b3146102a65780630a3c0eed146102c257806318160ddd146102f45780631fe543e31461031257610205565b80626d6cae1461020a57806301ffc9a71461022857806306fdde0314610258578063081812fc14610276575b600080fd5b61021261065c565b60405161021f9190612a6a565b60405180910390f35b610242600480360381019061023d9190612af1565b610662565b60405161024f9190612b39565b60405180910390f35b6102606106f4565b60405161026d9190612be4565b60405180910390f35b610290600480360381019061028b9190612c32565b610786565b60405161029d9190612ca0565b60405180910390f35b6102c060048036038101906102bb9190612ce7565b610802565b005b6102dc60048036038101906102d79190612c32565b610943565b6040516102eb93929190612d43565b60405180910390f35b6102fc610994565b6040516103099190612a6a565b60405180910390f35b61032c60048036038101906103279190612ec2565b6109ab565b005b610336610a47565b6040516103439190612ca0565b60405180910390f35b61036660048036038101906103619190612f1e565b610a6d565b005b610382600480360381019061037d9190613034565b610d8f565b005b61039e60048036038101906103999190612f1e565b610df9565b005b6103a8610e19565b6040516103b7939291906130ac565b60405180910390f35b6103da60048036038101906103d59190612c32565b610e3e565b6040516103e79190612ca0565b60405180910390f35b6103f8610e50565b6040516104059190612be4565b60405180910390f35b610428600480360381019061042391906130e3565b610ede565b6040516104359190612a6a565b60405180910390f35b610446610f96565b604051610455939291906130ac565b60405180910390f35b61046661103d565b005b610482600480360381019061047d9190613110565b6111d4565b005b61048c611313565b6040516104999190612ca0565b60405180910390f35b6104aa611339565b6040516104b79190612ca0565b60405180910390f35b6104c8611363565b005b6104d26114cb565b6040516104df9190612be4565b60405180910390f35b61050260048036038101906104fd9190612c32565b61155d565b60405161050f91906131b0565b60405180910390f35b610532600480360381019061052d9190613280565b611699565b005b61054e600480360381019061054991906132f5565b6116b4565b005b61056a60048036038101906105659190613424565b61182b565b005b61058660048036038101906105819190613110565b61195a565b6040516105939190612a6a565b60405180910390f35b6105b660048036038101906105b1919061356c565b611990565b005b6105d260048036038101906105cd9190612c32565b611a03565b6040516105df9190612be4565b60405180910390f35b6105f0611ad5565b005b6105fa611b2c565b6040516106079190612a6a565b60405180910390f35b61062a600480360381019061062591906135ef565b611cca565b6040516106379190612b39565b60405180910390f35b61065a600480360381019061065591906130e3565b611d5e565b005b600e5481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106bd57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106ed5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546107039061365e565b80601f016020809104026020016040519081016040528092919081815260200182805461072f9061365e565b801561077c5780601f106107515761010080835404028352916020019161077c565b820191906000526020600020905b81548152906001019060200180831161075f57829003601f168201915b5050505050905090565b600061079182611d72565b6107c7576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061080d82610e3e565b90508073ffffffffffffffffffffffffffffffffffffffff1661082e611dd1565b73ffffffffffffffffffffffffffffffffffffffff16146108915761085a81610855611dd1565b611cca565b610890576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16905083565b600061099e611dd9565b6001546000540303905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a30906136db565b60405180910390fd5b610a438282611dde565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a7882611ea9565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610adf576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610aeb84611f75565b91509150610b018187610afc611dd1565b611f97565b610b4d57610b1686610b11611dd1565b611cca565b610b4c576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610bb3576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc08686866001611fdb565b8015610bcb57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610c9985610c75888887611fe1565b7c020000000000000000000000000000000000000000000000000000000017612009565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610d1f5760006001850190506000600460008381526020019081526020016000205403610d1d576000548114610d1c578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610d878686866001612034565b505050505050565b610d9761203a565b60005b8251811015610df457610de1838281518110610db957610db86136fb565b5b6020026020010151838381518110610dd457610dd36136fb565b5b60200260200101516120cc565b8080610dec90613759565b915050610d9a565b505050565b610e1483838360405180602001604052806000815250611990565b505050565b600b8060000154908060010160009054906101000a900460ff16908060020154905083565b6000610e4982611ea9565b9050919050565b60118054610e5d9061365e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e899061365e565b8015610ed65780601f10610eab57610100808354040283529160200191610ed6565b820191906000526020600020905b815481529060010190602001808311610eb957829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f45576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b600080600080600b6000015411610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd9906137ed565b60405180910390fd5b6000600b604051806060016040529081600082015481526020016001820160009054906101000a900460ff16151515158152602001600282015481525050905080600001518160200151826040015193509350935050909192565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c490613859565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6111dc61203a565b60011515600b60010160009054906101000a900460ff16151514611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c906138eb565b60405180910390fd5b60008290505b8181101561130e57600f600082815260200190815260200160002060000160009054906101000a900460ff166112fb5761128261127d600b600201548361195a565b61155d565b600f600083815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff1602179055509050505b808061130690613759565b91505061123b565b505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61136b61203a565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113e89190612ca0565b602060405180830381865afa158015611405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114299190613920565b6040518363ffffffff1660e01b815260040161144692919061394d565b6020604051808303816000875af1158015611465573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611489919061398b565b6114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90613a04565b60405180910390fd5b50565b6060600380546114da9061365e565b80601f01602080910402602001604051908101604052809291908181526020018280546115069061365e565b80156115535780601f1061152857610100808354040283529160200191611553565b820191906000526020600020905b81548152906001019060200180831161153657829003601f168201915b5050505050905090565b611565612a28565b600060016064846115769190613a53565b6115809190613a84565b9050600a8161ffff16116115bc576040518060600160405280600115158152602001600160ff168152602001600160ff16815250915050611694565b60198161ffff16116115f6576040518060600160405280600115158152602001600260ff168152602001600160ff16815250915050611694565b60288161ffff1611611630576040518060600160405280600115158152602001600260ff168152602001600260ff16815250915050611694565b60468161ffff161161166a576040518060600160405280600115158152602001600360ff168152602001600160ff16815250915050611694565b6040518060600160405280600115158152602001600360ff168152602001600260ff168152509150505b919050565b6116a161203a565b80601190816116b09190613c64565b5050565b6116bc611dd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611720576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061172d611dd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117da611dd1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161181f9190612b39565b60405180910390a35050565b61183361203a565b60005b8351811015611954576000611849610994565b90506040518060600160405280600115158152602001858481518110611872576118716136fb565b5b602002602001015160ff168152602001848481518110611895576118946136fb565b5b602002602001015160ff16815250600f600083815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff160217905550905050611940858381518110611931576119306136fb565b5b602002602001015160016120cc565b50808061194c90613759565b915050611836565b50505050565b6000828260405160200161196f929190613d36565b6040516020818303038152906040528051906020012060001c905092915050565b61199b848484610a6d565b60008373ffffffffffffffffffffffffffffffffffffffff163b146119fd576119c6848484846120ea565b6119fc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060611a0e82611d72565b611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490613dab565b60405180910390fd5b6011611a7e600f600085815260200190815260200160002060000160019054906101000a900460ff1660ff1661223a565b611aad600f600086815260200190815260200160002060000160029054906101000a900460ff1660ff1661223a565b604051602001611abf93929190613ed6565b6040516020818303038152906040529050919050565b611add61203a565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b28573d6000803e3d6000fd5b5050565b6000611b3661203a565b6000600e5414611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613f84565b60405180910390fd5b611bba601060009054906101000a900463ffffffff16601060049054906101000a900461ffff16601060069054906101000a900463ffffffff16612308565b600e819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634306d354601060009054906101000a900463ffffffff166040518263ffffffff1660e01b8152600401611c2b9190613fc3565b602060405180830381865afa158015611c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6c9190613920565b600b600001819055507fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee600e54601060069054906101000a900463ffffffff16604051611cba929190613fde565b60405180910390a1600e54905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d6661203a565b611d6f8161251f565b50565b600081611d7d611dd9565b11158015611d8c575060005482105b8015611dca575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b81600e5414611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990614079565b60405180910390fd5b6001600b60010160006101000a81548160ff02191690831515021790555080600081518110611e5457611e536136fb565b5b6020026020010151600b600201819055507f147eb1ff0c82f87f2b03e2c43f5a36488ff63ec6b730195fde4605f612f8db518282600b60000154604051611e9d93929190614157565b60405180910390a15050565b60008082905080611eb8611dd9565b11611f3e57600054811015611f3d5760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611f3b575b60008103611f31576004600083600190039350838152602001908152602001600020549050611f07565b8092505050611f70565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000806000600690508360005280602052604060002092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611ff886868461264d565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c1906141e1565b60405180910390fd5b565b6120e6828260405180602001604052806000815250612656565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612110611dd1565b8786866040518563ffffffff1660e01b81526004016121329493929190614256565b6020604051808303816000875af192505050801561216e57506040513d601f19601f8201168201806040525081019061216b91906142b7565b60015b6121e7573d806000811461219e576040519150601f19603f3d011682016040523d82523d6000602084013e6121a3565b606091505b5060008151036121df576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060006001612249846126f3565b01905060008167ffffffffffffffff81111561226857612267612d7f565b5b6040519080825280601f01601f19166020018201604052801561229a5781602001600182028036833780820191505090505b509050600082602001820190505b6001156122fd578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816122f1576122f0613a24565b5b049450600085036122a8575b819350505050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634000aea07f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634306d354886040518263ffffffff1660e01b81526004016123c09190613fc3565b602060405180830381865afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190613920565b87878760405160200161241693929190614301565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161244393929190614338565b6020604051808303816000875af1158015612462573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612486919061398b565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc2a88c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125169190613920565b90509392505050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361258d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612584906143c2565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b60009392505050565b6126608383612846565b60008373ffffffffffffffffffffffffffffffffffffffff163b146126ee57600080549050600083820390505b6126a060008683806001019450866120ea565b6126d6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061268d5781600054146126eb57600080fd5b50505b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612751577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161274757612746613a24565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061278e576d04ee2d6d415b85acef8100000000838161278457612783613a24565b5b0492506020810190505b662386f26fc1000083106127bd57662386f26fc1000083816127b3576127b2613a24565b5b0492506010810190505b6305f5e10083106127e6576305f5e10083816127dc576127db613a24565b5b0492506008810190505b612710831061280b57612710838161280157612800613a24565b5b0492506004810190505b6064831061282e576064838161282457612823613a24565b5b0492506002810190505b600a831061283d576001810190505b80915050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128b2576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036128ec576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128f96000848385611fdb565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612970836129616000866000611fe1565b61296a85612a18565b17612009565b60046000838152602001908152602001600020819055506000819050600083830190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821061299457806000819055505050612a136000848385612034565b505050565b60006001821460e11b9050919050565b6040518060600160405280600015158152602001600060ff168152602001600060ff1681525090565b6000819050919050565b612a6481612a51565b82525050565b6000602082019050612a7f6000830184612a5b565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ace81612a99565b8114612ad957600080fd5b50565b600081359050612aeb81612ac5565b92915050565b600060208284031215612b0757612b06612a8f565b5b6000612b1584828501612adc565b91505092915050565b60008115159050919050565b612b3381612b1e565b82525050565b6000602082019050612b4e6000830184612b2a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b8e578082015181840152602081019050612b73565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bb682612b54565b612bc08185612b5f565b9350612bd0818560208601612b70565b612bd981612b9a565b840191505092915050565b60006020820190508181036000830152612bfe8184612bab565b905092915050565b612c0f81612a51565b8114612c1a57600080fd5b50565b600081359050612c2c81612c06565b92915050565b600060208284031215612c4857612c47612a8f565b5b6000612c5684828501612c1d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c8a82612c5f565b9050919050565b612c9a81612c7f565b82525050565b6000602082019050612cb56000830184612c91565b92915050565b612cc481612c7f565b8114612ccf57600080fd5b50565b600081359050612ce181612cbb565b92915050565b60008060408385031215612cfe57612cfd612a8f565b5b6000612d0c85828601612cd2565b9250506020612d1d85828601612c1d565b9150509250929050565b600060ff82169050919050565b612d3d81612d27565b82525050565b6000606082019050612d586000830186612b2a565b612d656020830185612d34565b612d726040830184612d34565b949350505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612db782612b9a565b810181811067ffffffffffffffff82111715612dd657612dd5612d7f565b5b80604052505050565b6000612de9612a85565b9050612df58282612dae565b919050565b600067ffffffffffffffff821115612e1557612e14612d7f565b5b602082029050602081019050919050565b600080fd5b6000612e3e612e3984612dfa565b612ddf565b90508083825260208201905060208402830185811115612e6157612e60612e26565b5b835b81811015612e8a5780612e768882612c1d565b845260208401935050602081019050612e63565b5050509392505050565b600082601f830112612ea957612ea8612d7a565b5b8135612eb9848260208601612e2b565b91505092915050565b60008060408385031215612ed957612ed8612a8f565b5b6000612ee785828601612c1d565b925050602083013567ffffffffffffffff811115612f0857612f07612a94565b5b612f1485828601612e94565b9150509250929050565b600080600060608486031215612f3757612f36612a8f565b5b6000612f4586828701612cd2565b9350506020612f5686828701612cd2565b9250506040612f6786828701612c1d565b9150509250925092565b600067ffffffffffffffff821115612f8c57612f8b612d7f565b5b602082029050602081019050919050565b6000612fb0612fab84612f71565b612ddf565b90508083825260208201905060208402830185811115612fd357612fd2612e26565b5b835b81811015612ffc5780612fe88882612cd2565b845260208401935050602081019050612fd5565b5050509392505050565b600082601f83011261301b5761301a612d7a565b5b813561302b848260208601612f9d565b91505092915050565b6000806040838503121561304b5761304a612a8f565b5b600083013567ffffffffffffffff81111561306957613068612a94565b5b61307585828601613006565b925050602083013567ffffffffffffffff81111561309657613095612a94565b5b6130a285828601612e94565b9150509250929050565b60006060820190506130c16000830186612a5b565b6130ce6020830185612b2a565b6130db6040830184612a5b565b949350505050565b6000602082840312156130f9576130f8612a8f565b5b600061310784828501612cd2565b91505092915050565b6000806040838503121561312757613126612a8f565b5b600061313585828601612c1d565b925050602061314685828601612c1d565b9150509250929050565b61315981612b1e565b82525050565b61316881612d27565b82525050565b6060820160008201516131846000850182613150565b506020820151613197602085018261315f565b5060408201516131aa604085018261315f565b50505050565b60006060820190506131c5600083018461316e565b92915050565b600080fd5b600067ffffffffffffffff8211156131eb576131ea612d7f565b5b6131f482612b9a565b9050602081019050919050565b82818337600083830152505050565b600061322361321e846131d0565b612ddf565b90508281526020810184848401111561323f5761323e6131cb565b5b61324a848285613201565b509392505050565b600082601f83011261326757613266612d7a565b5b8135613277848260208601613210565b91505092915050565b60006020828403121561329657613295612a8f565b5b600082013567ffffffffffffffff8111156132b4576132b3612a94565b5b6132c084828501613252565b91505092915050565b6132d281612b1e565b81146132dd57600080fd5b50565b6000813590506132ef816132c9565b92915050565b6000806040838503121561330c5761330b612a8f565b5b600061331a85828601612cd2565b925050602061332b858286016132e0565b9150509250929050565b600067ffffffffffffffff8211156133505761334f612d7f565b5b602082029050602081019050919050565b61336a81612d27565b811461337557600080fd5b50565b60008135905061338781613361565b92915050565b60006133a061339b84613335565b612ddf565b905080838252602082019050602084028301858111156133c3576133c2612e26565b5b835b818110156133ec57806133d88882613378565b8452602084019350506020810190506133c5565b5050509392505050565b600082601f83011261340b5761340a612d7a565b5b813561341b84826020860161338d565b91505092915050565b60008060006060848603121561343d5761343c612a8f565b5b600084013567ffffffffffffffff81111561345b5761345a612a94565b5b61346786828701613006565b935050602084013567ffffffffffffffff81111561348857613487612a94565b5b613494868287016133f6565b925050604084013567ffffffffffffffff8111156134b5576134b4612a94565b5b6134c1868287016133f6565b9150509250925092565b600067ffffffffffffffff8211156134e6576134e5612d7f565b5b6134ef82612b9a565b9050602081019050919050565b600061350f61350a846134cb565b612ddf565b90508281526020810184848401111561352b5761352a6131cb565b5b613536848285613201565b509392505050565b600082601f83011261355357613552612d7a565b5b81356135638482602086016134fc565b91505092915050565b6000806000806080858703121561358657613585612a8f565b5b600061359487828801612cd2565b94505060206135a587828801612cd2565b93505060406135b687828801612c1d565b925050606085013567ffffffffffffffff8111156135d7576135d6612a94565b5b6135e38782880161353e565b91505092959194509250565b6000806040838503121561360657613605612a8f565b5b600061361485828601612cd2565b925050602061362585828601612cd2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061367657607f821691505b6020821081036136895761368861362f565b5b50919050565b7f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c00600082015250565b60006136c5601f83612b5f565b91506136d08261368f565b602082019050919050565b600060208201905081810360008301526136f4816136b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376482612a51565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137965761379561372a565b5b600182019050919050565b7f52657175657374206e6f7420666f756e64206f722073656e7400000000000000600082015250565b60006137d7601983612b5f565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f4d7573742062652070726f706f736564206f776e657200000000000000000000600082015250565b6000613843601683612b5f565b915061384e8261380d565b602082019050919050565b6000602082019050818103600083015261387281613836565b9050919050565b7f52616e646f6d206e756d626572207265717565737420686173206e6f7420626560008201527f656e2066696c6c65640000000000000000000000000000000000000000000000602082015250565b60006138d5602983612b5f565b91506138e082613879565b604082019050919050565b60006020820190508181036000830152613904816138c8565b9050919050565b60008151905061391a81612c06565b92915050565b60006020828403121561393657613935612a8f565b5b60006139448482850161390b565b91505092915050565b60006040820190506139626000830185612c91565b61396f6020830184612a5b565b9392505050565b600081519050613985816132c9565b92915050565b6000602082840312156139a1576139a0612a8f565b5b60006139af84828501613976565b91505092915050565b7f556e61626c6520746f207472616e736665720000000000000000000000000000600082015250565b60006139ee601283612b5f565b91506139f9826139b8565b602082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5e82612a51565b9150613a6983612a51565b925082613a7957613a78613a24565b5b828206905092915050565b6000613a8f82612a51565b9150613a9a83612a51565b9250828201905080821115613ab257613ab161372a565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613add565b613b248683613add565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613b61613b5c613b5784612a51565b613b3c565b612a51565b9050919050565b6000819050919050565b613b7b83613b46565b613b8f613b8782613b68565b848454613aea565b825550505050565b600090565b613ba4613b97565b613baf818484613b72565b505050565b5b81811015613bd357613bc8600082613b9c565b600181019050613bb5565b5050565b601f821115613c1857613be981613ab8565b613bf284613acd565b81016020851015613c01578190505b613c15613c0d85613acd565b830182613bb4565b50505b505050565b600082821c905092915050565b6000613c3b60001984600802613c1d565b1980831691505092915050565b6000613c548383613c2a565b9150826002028217905092915050565b613c6d82612b54565b67ffffffffffffffff811115613c8657613c85612d7f565b5b613c90825461365e565b613c9b828285613bd7565b600060209050601f831160018114613cce5760008415613cbc578287015190505b613cc68582613c48565b865550613d2e565b601f198416613cdc86613ab8565b60005b82811015613d0457848901518255600182019150602085019450602081019050613cdf565b86831015613d215784890151613d1d601f891682613c2a565b8355505b6001600288020188555050505b505050505050565b6000604082019050613d4b6000830185612a5b565b613d586020830184612a5b565b9392505050565b7f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e00600082015250565b6000613d95601f83612b5f565b9150613da082613d5f565b602082019050919050565b60006020820190508181036000830152613dc481613d88565b9050919050565b600081905092915050565b60008154613de38161365e565b613ded8186613dcb565b94506001821660008114613e085760018114613e1d57613e50565b60ff1983168652811515820286019350613e50565b613e2685613ab8565b60005b83811015613e4857815481890152600182019150602081019050613e29565b838801955050505b50505092915050565b6000613e6482612b54565b613e6e8185613dcb565b9350613e7e818560208601612b70565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613ec0600583613dcb565b9150613ecb82613e8a565b600582019050919050565b6000613ee28286613dd6565b9150613eee8285613e59565b9150613efa8284613e59565b9150613f0582613eb3565b9150819050949350505050565b7f5265717565737420666f722072616e646f6d6e6573732068617320616c72656160008201527f6479206265656e2073656e740000000000000000000000000000000000000000602082015250565b6000613f6e602c83612b5f565b9150613f7982613f12565b604082019050919050565b60006020820190508181036000830152613f9d81613f61565b9050919050565b600063ffffffff82169050919050565b613fbd81613fa4565b82525050565b6000602082019050613fd86000830184613fb4565b92915050565b6000604082019050613ff36000830185612a5b565b6140006020830184613fb4565b9392505050565b7f52657175657374206e6f7420666f756e64206f72206e6f7420657175616c207460008201527f6f20636f72726563742072657175657374000000000000000000000000000000602082015250565b6000614063603183612b5f565b915061406e82614007565b604082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140ce81612a51565b82525050565b60006140e083836140c5565b60208301905092915050565b6000602082019050919050565b600061410482614099565b61410e81856140a4565b9350614119836140b5565b8060005b8381101561414a57815161413188826140d4565b975061413c836140ec565b92505060018101905061411d565b5085935050505092915050565b600060608201905061416c6000830186612a5b565b818103602083015261417e81856140f9565b905061418d6040830184612a5b565b949350505050565b7f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000600082015250565b60006141cb601683612b5f565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061422882614201565b614232818561420c565b9350614242818560208601612b70565b61424b81612b9a565b840191505092915050565b600060808201905061426b6000830187612c91565b6142786020830186612c91565b6142856040830185612a5b565b8181036060830152614297818461421d565b905095945050505050565b6000815190506142b181612ac5565b92915050565b6000602082840312156142cd576142cc612a8f565b5b60006142db848285016142a2565b91505092915050565b600061ffff82169050919050565b6142fb816142e4565b82525050565b60006060820190506143166000830186613fb4565b61432360208301856142f2565b6143306040830184613fb4565b949350505050565b600060608201905061434d6000830186612c91565b61435a6020830185612a5b565b818103604083015261436c818461421d565b9050949350505050565b7f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000600082015250565b60006143ac601783612b5f565b91506143b782614376565b602082019050919050565b600060208201905081810360008301526143db8161439f565b905091905056fea2646970667358221220bd3c31d7deef458dc0b5c16ea3e9b2052e3213e38210b8eb2d0a2a3d15dcb7c464736f6c634300081100330000000000000000000000005a861794b927983406fce1d062e00b9368d97df6000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d575555644344483878334e704b6361754e5443477056543564446b56744c3951436d6131596439456f4557672f00000000000000000000000000000000000000000000000000000000