60806040523480156200001157600080fd5b5060008060019054906101000a900460ff16159050808015620000445750600160008054906101000a900460ff1660ff16105b8062000080575062000061306200023160201b620011441760201c565b1580156200007f5750600160008054906101000a900460ff1660ff16145b5b620000c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000b9906200092b565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801562000100576001600060016101000a81548160ff0219169083151502179055505b6200017c6040518060400160405280600781526020017f4d79546f6b656e000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d544b00000000000000000000000000000000000000000000000000000000008152506200025460201b60201c565b6200018c620002cc60201b60201c565b620001be7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336200033060201b60201c565b620001ce6200042260201b60201c565b80156200022a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051620002219190620009a7565b60405180910390a15b5062000db3565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16620002a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029d9062000a3a565b60405180910390fd5b620002b66200048660201b60201c565b620002c88282620004ea60201b60201c565b5050565b600060019054906101000a900460ff166200031e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003159062000a3a565b60405180910390fd5b6200032e6200055260201b60201c565b565b620003428282620005c260201b60201c565b6200041e5760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003c36200062d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600060019054906101000a900460ff1662000474576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200046b9062000a3a565b60405180910390fd5b620004846200063560201b60201c565b565b600060019054906101000a900460ff16620004d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004cf9062000a3a565b60405180910390fd5b620004e8620006a960201b60201c565b565b600060019054906101000a900460ff166200053c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005339062000a3a565b60405180910390fd5b6200054e82826200076260201b60201c565b5050565b600060019054906101000a900460ff16620005a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200059b9062000a3a565b60405180910390fd5b600061012d60006101000a81548160ff021916908315150217905550565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600060019054906101000a900460ff1662000687576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067e9062000a3a565b60405180910390fd5b620006a76200069b6200062d60201b60201c565b620007dc60201b60201c565b565b600060019054906101000a900460ff16620006fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f29062000a3a565b60405180910390fd5b6200071f6000801b620007136200062d60201b60201c565b6200033060201b60201c565b620007607f1827642ec0ebd5946ccc9eb085367bc4071c468769f365c9328a034b08bfe293620007546200062d60201b60201c565b6200033060201b60201c565b565b600060019054906101000a900460ff16620007b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ab9062000a3a565b60405180910390fd5b8160c99081620007c5919062000ccc565b508060ca9081620007d7919062000ccc565b505050565b600061015f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508161015f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b600062000913602e83620008a4565b91506200092082620008b5565b604082019050919050565b60006020820190508181036000830152620009468162000904565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b60006200098f6200098962000983846200094d565b62000964565b62000957565b9050919050565b620009a1816200096e565b82525050565b6000602082019050620009be600083018462000996565b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b600062000a22602b83620008a4565b915062000a2f82620009c4565b604082019050919050565b6000602082019050818103600083015262000a558162000a13565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ade57607f821691505b60208210810362000af45762000af362000a96565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b5e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b1f565b62000b6a868362000b1f565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000bad62000ba762000ba18462000b82565b62000964565b62000b82565b9050919050565b6000819050919050565b62000bc98362000b8c565b62000be162000bd88262000bb4565b84845462000b2c565b825550505050565b600090565b62000bf862000be9565b62000c0581848462000bbe565b505050565b5b8181101562000c2d5762000c2160008262000bee565b60018101905062000c0b565b5050565b601f82111562000c7c5762000c468162000afa565b62000c518462000b0f565b8101602085101562000c61578190505b62000c7962000c708562000b0f565b83018262000c0a565b50505b505050565b600082821c905092915050565b600062000ca16000198460080262000c81565b1980831691505092915050565b600062000cbc838362000c8e565b9150826002028217905092915050565b62000cd78262000a5c565b67ffffffffffffffff81111562000cf35762000cf262000a67565b5b62000cff825462000ac5565b62000d0c82828562000c31565b600060209050601f83116001811462000d44576000841562000d2f578287015190505b62000d3b858262000cae565b86555062000dab565b601f19841662000d548662000afa565b60005b8281101562000d7e5784890151825560018201915060208501945060208101905062000d57565b8683101562000d9e578489015162000d9a601f89168262000c8e565b8355505b6001600288020188555050505b505050505050565b61448a8062000dc36000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063a2309ff8116100ad578063d547741f1161007c578063d547741f1461058a578063d89135cd146105a6578063e63ab1e9146105c4578063e985e9c5146105e2578063f2fde38b14610612576101fb565b8063a2309ff814610504578063b88d4fde14610522578063c59f60bd1461053e578063c87b56dd1461055a576101fb565b806391d14854116100e957806391d148541461047c57806395d89b41146104ac578063a217fddf146104ca578063a22cb465146104e8576101fb565b806370a082311461041a578063715018a61461044a5780638456cb59146104545780638da5cb5b1461045e576101fb565b8063248a9ca31161019257806342842e0e1161016157806342842e0e1461039457806342966c68146103b05780635c975abb146103cc5780636352211e146103ea576101fb565b8063248a9ca3146103225780632f2ff15d1461035257806336568abe1461036e5780633f4ba83a1461038a576101fb565b80630ed25f1f116101ce5780630ed25f1f1461029a57806318160ddd146102ca57806322c0c06d146102e857806323b872dd14610306576101fb565b806301ffc9a71461020057806306fdde0314610230578063081812fc1461024e578063095ea7b31461027e575b600080fd5b61021a60048036038101906102159190612b7e565b61062e565b6040516102279190612bc6565b60405180910390f35b610238610640565b6040516102459190612c71565b60405180910390f35b61026860048036038101906102639190612cc9565b6106d2565b6040516102759190612d37565b60405180910390f35b61029860048036038101906102939190612d7e565b610718565b005b6102b460048036038101906102af9190612dfe565b61082f565b6040516102c19190612e3a565b60405180910390f35b6102d2610860565b6040516102df9190612e3a565b60405180910390f35b6102f0610877565b6040516102fd9190612e6e565b60405180910390f35b610320600480360381019061031b9190612e89565b61089b565b005b61033c60048036038101906103379190612f08565b6108fb565b6040516103499190612e6e565b60405180910390f35b61036c60048036038101906103679190612f35565b61091b565b005b61038860048036038101906103839190612f35565b61093c565b005b6103926109bf565b005b6103ae60048036038101906103a99190612e89565b6109f4565b005b6103ca60048036038101906103c59190612cc9565b610a14565b005b6103d4610a7a565b6040516103e19190612bc6565b60405180910390f35b61040460048036038101906103ff9190612cc9565b610a92565b6040516104119190612d37565b60405180910390f35b610434600480360381019061042f9190612f75565b610b18565b6040516104419190612e3a565b60405180910390f35b610452610bcf565b005b61045c610be3565b005b610466610c18565b6040516104739190612d37565b60405180910390f35b61049660048036038101906104919190612f35565b610c43565b6040516104a39190612bc6565b60405180910390f35b6104b4610cae565b6040516104c19190612c71565b60405180910390f35b6104d2610d40565b6040516104df9190612e6e565b60405180910390f35b61050260048036038101906104fd9190612fce565b610d47565b005b61050c610d5d565b6040516105199190612e3a565b60405180910390f35b61053c60048036038101906105379190613143565b610d67565b005b6105586004803603810190610553919061327c565b610dc9565b005b610574600480360381019061056f9190612cc9565b610f76565b6040516105819190612c71565b60405180910390f35b6105a4600480360381019061059f9190612f35565b610fde565b005b6105ae610fff565b6040516105bb9190612e3a565b60405180910390f35b6105cc611009565b6040516105d99190612e6e565b60405180910390f35b6105fc60048036038101906105f79190613338565b61102d565b6040516106099190612bc6565b60405180910390f35b61062c60048036038101906106279190612f75565b6110c1565b005b600061063982611167565b9050919050565b606060c9805461064f906133a7565b80601f016020809104026020016040519081016040528092919081815260200182805461067b906133a7565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b5050505050905090565b60006106dd82611249565b60cd600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061072382610a92565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078a9061344a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107b2611294565b73ffffffffffffffffffffffffffffffffffffffff1614806107e157506107e0816107db611294565b61102d565b5b610820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610817906134dc565b60405180910390fd5b61082a838361129c565b505050565b6000609760008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020549050919050565b600060fc5460fb54610872919061352b565b905090565b7f1827642ec0ebd5946ccc9eb085367bc4071c468769f365c9328a034b08bfe29381565b6108ac6108a6611294565b82611355565b6108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e2906135d1565b60405180910390fd5b6108f68383836113ea565b505050565b600060656000838152602001908152602001600020600101549050919050565b610924826108fb565b61092d816116e3565b61093783836116f7565b505050565b610944611294565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890613663565b60405180910390fd5b6109bb82826117d8565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109e9816116e3565b6109f16118ba565b50565b610a0f83838360405180602001604052806000815250610d67565b505050565b610a25610a1f611294565b82611355565b610a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5b906136f5565b60405180910390fd5b610a6d8161191e565b610a776001611a6c565b50565b600061012d60009054906101000a900460ff16905090565b600080610a9e83611a88565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613761565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7f906137f3565b60405180910390fd5b60cc60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bd7611ac5565b610be16000611b43565b565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c0d816116e3565b610c15611c0b565b50565b600061015f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060ca8054610cbd906133a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce9906133a7565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b5050505050905090565b6000801b81565b610d59610d52611294565b8383611c6f565b5050565b600060fb54905090565b610d78610d72611294565b83611355565b610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae906135d1565b60405180910390fd5b610dc384848484611ddb565b50505050565b610dfa7f1827642ec0ebd5946ccc9eb085367bc4071c468769f365c9328a034b08bfe293610df5611294565b610c43565b610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061385f565b60405180910390fd5b6000808383810190610e4b91906139d6565b915091508167ffffffffffffffff16609760008a67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000205414610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613a7e565b60405180910390fd5b610ee58787878787604051610ed8929190613ace565b6040518091039020611e37565b610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90613b33565b60405180910390fd5b609760008967ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206000815480929190610f5c90613b53565b9190505550610f6b818a611e50565b505050505050505050565b6060610f8182611249565b6000610f8b611f3a565b90506000815111610fab5760405180602001604052806000815250610fd6565b80610fb584611f51565b604051602001610fc6929190613bd7565b6040516020818303038152906040525b915050919050565b610fe7826108fb565b610ff0816116e3565b610ffa83836117d8565b505050565b600060fc54905090565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b600060ce60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6110c9611ac5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613c6d565b60405180910390fd5b61114181611b43565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061123257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061124257506112418261201f565b5b9050919050565b61125281612099565b611291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128890613761565b60405180910390fd5b50565b600033905090565b8160cd600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661130f83610a92565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061136183610a92565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113a357506113a2818561102d565b5b806113e157508373ffffffffffffffffffffffffffffffffffffffff166113c9846106d2565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661140a82610a92565b73ffffffffffffffffffffffffffffffffffffffff1614611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145790613cff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613d91565b60405180910390fd5b6114dc83838360016120da565b8273ffffffffffffffffffffffffffffffffffffffff166114fc82610a92565b73ffffffffffffffffffffffffffffffffffffffff1614611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990613cff565b60405180910390fd5b60cd600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160cc60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600160cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508160cb600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46116de83838360016120f4565b505050565b6116f4816116ef611294565b6120fa565b50565b6117018282610c43565b6117d45760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611779611294565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6117e28282610c43565b156118b65760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061185b611294565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6118c261217f565b600061012d60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611907611294565b6040516119149190612d37565b60405180910390a1565b600061192982610a92565b90506119398160008460016120da565b61194282610a92565b905060cd600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160cc60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060cb600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a688160008460016120f4565b5050565b8060fc6000828254611a7e9190613db1565b9250508190555050565b600060cb600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611acd611294565b73ffffffffffffffffffffffffffffffffffffffff16611aeb610c18565b73ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613e31565b60405180910390fd5b565b600061015f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508161015f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c136121c8565b600161012d60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c58611294565b604051611c659190612d37565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490613e9d565b60405180910390fd5b8060ce60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611dce9190612bc6565b60405180910390a3505050565b611de68484846113ea565b611df284848484612212565b611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890613f2f565b60405180910390fd5b50505050565b600082611e45868685612399565b149050949350505050565b6000805b8351811015611f21576000848281518110611e7257611e71613f4f565b5b60200260200101516000015160001c90506000858381518110611e9857611e97613f4f565b5b602002602001015160200151806020019051810190611eb79190613fbc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f0157600184611efa9190613db1565b9350611f0c565b611f0b81836123f1565b5b50508080611f1990613b53565b915050611e54565b50611f2c835161260e565b611f3581611a6c565b505050565b606060405180602001604052806000815250905090565b606060006001611f608461262a565b01905060008167ffffffffffffffff811115611f7f57611f7e613018565b5b6040519080825280601f01601f191660200182016040528015611fb15781602001600182028036833780820191505090505b509050600082602001820190505b600115612014578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161200857612007613fe9565b5b04945060008503611fbf575b819350505050919050565b60007fc59f60bd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061209257506120918261277d565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166120bb83611a88565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6120e26121c8565b6120ee848484846127f7565b50505050565b50505050565b6121048282610c43565b61217b57612111816127fd565b61211f8360001c602061282a565b6040516020016121309291906140b0565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121729190612c71565b60405180910390fd5b5050565b612187610a7a565b6121c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bd90614136565b60405180910390fd5b565b6121d0610a7a565b15612210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612207906141a2565b60405180910390fd5b565b60006122338473ffffffffffffffffffffffffffffffffffffffff16611144565b1561238c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261225c611294565b8786866040518563ffffffff1660e01b815260040161227e9493929190614217565b6020604051808303816000875af19250505080156122ba57506040513d601f19601f820116820180604052508101906122b79190614278565b60015b61233c573d80600081146122ea576040519150601f19603f3d011682016040523d82523d6000602084013e6122ef565b606091505b506000815103612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b90613f2f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612391565b600190505b949350505050565b60008082905060005b858590508110156123e5576123d0828787848181106123c4576123c3613f4f565b5b90506020020135612a66565b915080806123dd90613b53565b9150506123a2565b50809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612457906142f1565b60405180910390fd5b61246981612099565b156124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a09061435d565b60405180910390fd5b6124b76000838360016120da565b6124c081612099565b15612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f79061435d565b60405180910390fd5b600160cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508160cb600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461260a6000838360016120f4565b5050565b8060fb60008282546126209190613db1565b9250508190555050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612688577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161267e5761267d613fe9565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106126c5576d04ee2d6d415b85acef810000000083816126bb576126ba613fe9565b5b0492506020810190505b662386f26fc1000083106126f457662386f26fc1000083816126ea576126e9613fe9565b5b0492506010810190505b6305f5e100831061271d576305f5e100838161271357612712613fe9565b5b0492506008810190505b612710831061274257612710838161273857612737613fe9565b5b0492506004810190505b60648310612765576064838161275b5761275a613fe9565b5b0492506002810190505b600a8310612774576001810190505b80915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127f057506127ef82612a91565b5b9050919050565b50505050565b60606128238273ffffffffffffffffffffffffffffffffffffffff16601460ff1661282a565b9050919050565b60606000600283600261283d919061437d565b6128479190613db1565b67ffffffffffffffff8111156128605761285f613018565b5b6040519080825280601f01601f1916602001820160405280156128925781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106128ca576128c9613f4f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061292e5761292d613f4f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261296e919061437d565b6129789190613db1565b90505b6001811115612a18577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106129ba576129b9613f4f565b5b1a60f81b8282815181106129d1576129d0613f4f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612a11906143bf565b905061297b565b5060008414612a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5390614434565b60405180910390fd5b8091505092915050565b6000818310612a7e57612a798284612afb565b612a89565b612a888383612afb565b5b905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600082600052816020526040600020905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612b5b81612b26565b8114612b6657600080fd5b50565b600081359050612b7881612b52565b92915050565b600060208284031215612b9457612b93612b1c565b5b6000612ba284828501612b69565b91505092915050565b60008115159050919050565b612bc081612bab565b82525050565b6000602082019050612bdb6000830184612bb7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c1b578082015181840152602081019050612c00565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c4382612be1565b612c4d8185612bec565b9350612c5d818560208601612bfd565b612c6681612c27565b840191505092915050565b60006020820190508181036000830152612c8b8184612c38565b905092915050565b6000819050919050565b612ca681612c93565b8114612cb157600080fd5b50565b600081359050612cc381612c9d565b92915050565b600060208284031215612cdf57612cde612b1c565b5b6000612ced84828501612cb4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d2182612cf6565b9050919050565b612d3181612d16565b82525050565b6000602082019050612d4c6000830184612d28565b92915050565b612d5b81612d16565b8114612d6657600080fd5b50565b600081359050612d7881612d52565b92915050565b60008060408385031215612d9557612d94612b1c565b5b6000612da385828601612d69565b9250506020612db485828601612cb4565b9150509250929050565b600067ffffffffffffffff82169050919050565b612ddb81612dbe565b8114612de657600080fd5b50565b600081359050612df881612dd2565b92915050565b600060208284031215612e1457612e13612b1c565b5b6000612e2284828501612de9565b91505092915050565b612e3481612c93565b82525050565b6000602082019050612e4f6000830184612e2b565b92915050565b6000819050919050565b612e6881612e55565b82525050565b6000602082019050612e836000830184612e5f565b92915050565b600080600060608486031215612ea257612ea1612b1c565b5b6000612eb086828701612d69565b9350506020612ec186828701612d69565b9250506040612ed286828701612cb4565b9150509250925092565b612ee581612e55565b8114612ef057600080fd5b50565b600081359050612f0281612edc565b92915050565b600060208284031215612f1e57612f1d612b1c565b5b6000612f2c84828501612ef3565b91505092915050565b60008060408385031215612f4c57612f4b612b1c565b5b6000612f5a85828601612ef3565b9250506020612f6b85828601612d69565b9150509250929050565b600060208284031215612f8b57612f8a612b1c565b5b6000612f9984828501612d69565b91505092915050565b612fab81612bab565b8114612fb657600080fd5b50565b600081359050612fc881612fa2565b92915050565b60008060408385031215612fe557612fe4612b1c565b5b6000612ff385828601612d69565b925050602061300485828601612fb9565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61305082612c27565b810181811067ffffffffffffffff8211171561306f5761306e613018565b5b80604052505050565b6000613082612b12565b905061308e8282613047565b919050565b600067ffffffffffffffff8211156130ae576130ad613018565b5b6130b782612c27565b9050602081019050919050565b82818337600083830152505050565b60006130e66130e184613093565b613078565b90508281526020810184848401111561310257613101613013565b5b61310d8482856130c4565b509392505050565b600082601f83011261312a5761312961300e565b5b813561313a8482602086016130d3565b91505092915050565b6000806000806080858703121561315d5761315c612b1c565b5b600061316b87828801612d69565b945050602061317c87828801612d69565b935050604061318d87828801612cb4565b925050606085013567ffffffffffffffff8111156131ae576131ad612b21565b5b6131ba87828801613115565b91505092959194509250565b600080fd5b600080fd5b60008083601f8401126131e6576131e561300e565b5b8235905067ffffffffffffffff811115613203576132026131c6565b5b60208301915083602082028301111561321f5761321e6131cb565b5b9250929050565b60008083601f84011261323c5761323b61300e565b5b8235905067ffffffffffffffff811115613259576132586131c6565b5b602083019150836001820283011115613275576132746131cb565b5b9250929050565b600080600080600080600060a0888a03121561329b5761329a612b1c565b5b60006132a98a828b01612ef3565b97505060206132ba8a828b01612de9565b965050604088013567ffffffffffffffff8111156132db576132da612b21565b5b6132e78a828b016131d0565b955095505060606132fa8a828b01612ef3565b935050608088013567ffffffffffffffff81111561331b5761331a612b21565b5b6133278a828b01613226565b925092505092959891949750929550565b6000806040838503121561334f5761334e612b1c565b5b600061335d85828601612d69565b925050602061336e85828601612d69565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133bf57607f821691505b6020821081036133d2576133d1613378565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613434602183612bec565b915061343f826133d8565b604082019050919050565b6000602082019050818103600083015261346381613427565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006134c6603d83612bec565b91506134d18261346a565b604082019050919050565b600060208201905081810360008301526134f5816134b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353682612c93565b915061354183612c93565b9250828203905081811115613559576135586134fc565b5b92915050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006135bb602d83612bec565b91506135c68261355f565b604082019050919050565b600060208201905081810360008301526135ea816135ae565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061364d602f83612bec565b9150613658826135f1565b604082019050919050565b6000602082019050818103600083015261367c81613640565b9050919050565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b60006136df603083612bec565b91506136ea82613683565b604082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061374b601883612bec565b915061375682613715565b602082019050919050565b6000602082019050818103600083015261377a8161373e565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006137dd602983612bec565b91506137e882613781565b604082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f6e6f74206120726f6c6c75702061646d696e0000000000000000000000000000600082015250565b6000613849601283612bec565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600067ffffffffffffffff82111561389a57613899613018565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156138cb576138ca6138ab565b5b6138d56040613078565b905060006138e584828501612ef3565b600083015250602082013567ffffffffffffffff811115613909576139086138b0565b5b61391584828501613115565b60208301525092915050565b600061393461392f8461387f565b613078565b90508083825260208201905060208402830185811115613957576139566131cb565b5b835b8181101561399e57803567ffffffffffffffff81111561397c5761397b61300e565b5b80860161398989826138b5565b85526020850194505050602081019050613959565b5050509392505050565b600082601f8301126139bd576139bc61300e565b5b81356139cd848260208601613921565b91505092915050565b600080604083850312156139ed576139ec612b1c565b5b60006139fb85828601612de9565b925050602083013567ffffffffffffffff811115613a1c57613a1b612b21565b5b613a28858286016139a8565b9150509250929050565b7f4c314c69623a20696e76616c696420626174636820696e646578000000000000600082015250565b6000613a68601a83612bec565b9150613a7382613a32565b602082019050919050565b60006020820190508181036000830152613a9781613a5b565b9050919050565b600081905092915050565b6000613ab58385613a9e565b9350613ac28385846130c4565b82840190509392505050565b6000613adb828486613aa9565b91508190509392505050565b7f4c314c69623a206661696c656420746f20766572696679000000000000000000600082015250565b6000613b1d601783612bec565b9150613b2882613ae7565b602082019050919050565b60006020820190508181036000830152613b4c81613b10565b9050919050565b6000613b5e82612c93565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b9057613b8f6134fc565b5b600182019050919050565b600081905092915050565b6000613bb182612be1565b613bbb8185613b9b565b9350613bcb818560208601612bfd565b80840191505092915050565b6000613be38285613ba6565b9150613bef8284613ba6565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c57602683612bec565b9150613c6282613bfb565b604082019050919050565b60006020820190508181036000830152613c8681613c4a565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613ce9602583612bec565b9150613cf482613c8d565b604082019050919050565b60006020820190508181036000830152613d1881613cdc565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d7b602483612bec565b9150613d8682613d1f565b604082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b6000613dbc82612c93565b9150613dc783612c93565b9250828201905080821115613ddf57613dde6134fc565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e1b602083612bec565b9150613e2682613de5565b602082019050919050565b60006020820190508181036000830152613e4a81613e0e565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613e87601983612bec565b9150613e9282613e51565b602082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f19603283612bec565b9150613f2482613ebd565b604082019050919050565b60006020820190508181036000830152613f4881613f0c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613f8982612cf6565b9050919050565b613f9981613f7e565b8114613fa457600080fd5b50565b600081519050613fb681613f90565b92915050565b600060208284031215613fd257613fd1612b1c565b5b6000613fe084828501613fa7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061404e601783613b9b565b915061405982614018565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061409a601183613b9b565b91506140a582614064565b601182019050919050565b60006140bb82614041565b91506140c78285613ba6565b91506140d28261408d565b91506140de8284613ba6565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614120601483612bec565b915061412b826140ea565b602082019050919050565b6000602082019050818103600083015261414f81614113565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061418c601083612bec565b915061419782614156565b602082019050919050565b600060208201905081810360008301526141bb8161417f565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006141e9826141c2565b6141f381856141cd565b9350614203818560208601612bfd565b61420c81612c27565b840191505092915050565b600060808201905061422c6000830187612d28565b6142396020830186612d28565b6142466040830185612e2b565b818103606083015261425881846141de565b905095945050505050565b60008151905061427281612b52565b92915050565b60006020828403121561428e5761428d612b1c565b5b600061429c84828501614263565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006142db602083612bec565b91506142e6826142a5565b602082019050919050565b6000602082019050818103600083015261430a816142ce565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614347601c83612bec565b915061435282614311565b602082019050919050565b600060208201905081810360008301526143768161433a565b9050919050565b600061438882612c93565b915061439383612c93565b92508282026143a181612c93565b915082820484148315176143b8576143b76134fc565b5b5092915050565b60006143ca82612c93565b9150600082036143dd576143dc6134fc565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061441e602083612bec565b9150614429826143e8565b602082019050919050565b6000602082019050818103600083015261444d81614411565b905091905056fea2646970667358221220bd3cc26fc53521e6291a003d1b8d64406b02da920ee7abb91db2644e73e6d84764736f6c63430008120033