60806040526040518060400160405280600581526020017f4c61456562000000000000000000000000000000000000000000000000000000815250600190816200004a919062000b09565b506040518060400160405280600581526020017f4c614565620000000000000000000000000000000000000000000000000000008152506002908162000091919062000b09565b506009600a620000a2919062000d80565b6305f5e100620000b3919062000dd1565b60035560646002600354620000c9919062000dd1565b620000d5919062000e4b565b60045560006009556005600a55600954600a54620000f4919062000e83565b600b556064600c556064600d556001601160146101000a81548160ff0219169083151502179055506103e8600160035462000130919062000dd1565b6200013c919062000e4b565b6012556064600160035462000152919062000dd1565b6200015e919062000e4b565b6013553480156200016e57600080fd5b50604051620044fd380380620044fd833981810160405281019062000194919062000f28565b6000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000f28565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b9919062000f28565b306040518363ffffffff1660e01b8152600401620003d992919062000f6b565b6020604051808303816000875af1158015620003f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041f919062000f28565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000880919062000fa9565b60405180910390a35062000fc6565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200091157607f821691505b602082108103620009275762000926620008c9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000952565b6200099d868362000952565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009ea620009e4620009de84620009b5565b620009bf565b620009b5565b9050919050565b6000819050919050565b62000a0683620009c9565b62000a1e62000a1582620009f1565b8484546200095f565b825550505050565b600090565b62000a3562000a26565b62000a42818484620009fb565b505050565b5b8181101562000a6a5762000a5e60008262000a2b565b60018101905062000a48565b5050565b601f82111562000ab95762000a83816200092d565b62000a8e8462000942565b8101602085101562000a9e578190505b62000ab662000aad8562000942565b83018262000a47565b50505b505050565b600082821c905092915050565b600062000ade6000198460080262000abe565b1980831691505092915050565b600062000af9838362000acb565b9150826002028217905092915050565b62000b14826200088f565b67ffffffffffffffff81111562000b305762000b2f6200089a565b5b62000b3c8254620008f8565b62000b4982828562000a6e565b600060209050601f83116001811462000b81576000841562000b6c578287015190505b62000b78858262000aeb565b86555062000be8565b601f19841662000b91866200092d565b60005b8281101562000bbb5784890151825560018201915060208501945060208101905062000b94565b8683101562000bdb578489015162000bd7601f89168262000acb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c7e5780860481111562000c565762000c5562000bf0565b5b600185161562000c665780820291505b808102905062000c768562000c1f565b945062000c36565b94509492505050565b60008262000c99576001905062000d6c565b8162000ca9576000905062000d6c565b816001811462000cc2576002811462000ccd5762000d03565b600191505062000d6c565b60ff84111562000ce25762000ce162000bf0565b5b8360020a91508482111562000cfc5762000cfb62000bf0565b5b5062000d6c565b5060208310610133831016604e8410600b841016171562000d3d5782820a90508381111562000d375762000d3662000bf0565b5b62000d6c565b62000d4c848484600162000c2c565b9250905081840481111562000d665762000d6562000bf0565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d8d82620009b5565b915062000d9a8362000d73565b925062000dc97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c87565b905092915050565b600062000dde82620009b5565b915062000deb83620009b5565b925082820262000dfb81620009b5565b9150828204841483151762000e155762000e1462000bf0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5882620009b5565b915062000e6583620009b5565b92508262000e785762000e7762000e1c565b5b828204905092915050565b600062000e9082620009b5565b915062000e9d83620009b5565b925082820190508082111562000eb85762000eb762000bf0565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ef08262000ec3565b9050919050565b62000f028162000ee3565b811462000f0e57600080fd5b50565b60008151905062000f228162000ef7565b92915050565b60006020828403121562000f415762000f4062000ebe565b5b600062000f518482850162000f11565b91505092915050565b62000f658162000ee3565b82525050565b600060408201905062000f82600083018562000f5a565b62000f91602083018462000f5a565b9392505050565b62000fa381620009b5565b82525050565b600060208201905062000fc0600083018462000f98565b92915050565b6135278062000fd66000396000f3fe6080604052600436106101dc5760003560e01c806373a432bb11610102578063ca33e64c11610095578063e96fada211610064578063e96fada2146106bb578063ec72d65f146106e6578063f2fde38b1461070f578063f887ea4014610738576101e3565b8063ca33e64c14610601578063cec10c111461062c578063d088935814610655578063dd62ed3e1461067e576101e3565b8063a4b45c00116100d1578063a4b45c0014610545578063a8aa1b311461056e578063a9059cbb14610599578063acef1a44146105d6576101e3565b806373a432bb1461049b57806378109e54146104c45780638da5cb5b146104ef57806395d89b411461051a576101e3565b80632198cf6c1161017a578063658d4b7f11610149578063658d4b7f146103f35780636ddd17131461041c57806370a0823114610447578063715018a614610484576101e3565b80632198cf6c1461032557806323b872dd1461034e578063313ce5671461038b578063571ac8b0146103b6576101e3565b8063095ea7b3116101b6578063095ea7b314610267578063180b0d7e146102a457806318160ddd146102cf5780631df4ccfc146102fa576101e3565b8063012aa912146101e85780630445b6671461021157806306fdde031461023c576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a91906128cf565b610763565b005b34801561021d57600080fd5b50610226610815565b604051610233919061290b565b60405180910390f35b34801561024857600080fd5b5061025161081b565b60405161025e91906129b6565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190612a36565b6108ad565b60405161029b9190612a91565b60405180910390f35b3480156102b057600080fd5b506102b961099f565b6040516102c6919061290b565b60405180910390f35b3480156102db57600080fd5b506102e46109a5565b6040516102f1919061290b565b60405180910390f35b34801561030657600080fd5b5061030f6109af565b60405161031c919061290b565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190612ad8565b6109b5565b005b34801561035a57600080fd5b5061037560048036038101906103709190612b18565b610a9e565b6040516103829190612a91565b60405180910390f35b34801561039757600080fd5b506103a0610c9e565b6040516103ad9190612b87565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190612ba2565b610ca7565b6040516103ea9190612a91565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190612ad8565b610cda565b005b34801561042857600080fd5b50610431610dc3565b60405161043e9190612a91565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612ba2565b610dd6565b60405161047b919061290b565b60405180910390f35b34801561049057600080fd5b50610499610e1f565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612ba2565b610f6b565b005b3480156104d057600080fd5b506104d96110b7565b6040516104e6919061290b565b60405180910390f35b3480156104fb57600080fd5b506105046110bd565b6040516105119190612bde565b60405180910390f35b34801561052657600080fd5b5061052f6110e6565b60405161053c91906129b6565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190612bf9565b611178565b005b34801561057a57600080fd5b5061058361128c565b6040516105909190612bde565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612a36565b6112b2565b6040516105cd9190612a91565b60405180910390f35b3480156105e257600080fd5b506105eb6112c7565b6040516105f8919061290b565b60405180910390f35b34801561060d57600080fd5b506106166112cd565b6040516106239190612bde565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612c39565b6112f3565b005b34801561066157600080fd5b5061067c60048036038101906106779190612c8c565b611406565b005b34801561068a57600080fd5b506106a560048036038101906106a09190612bf9565b6114c1565b6040516106b2919061290b565b60405180910390f35b3480156106c757600080fd5b506106d0611548565b6040516106dd9190612bde565b60405180910390f35b3480156106f257600080fd5b5061070d600480360381019061070891906128cf565b61156e565b005b34801561071b57600080fd5b5061073660048036038101906107319190612ba2565b611606565b005b34801561074457600080fd5b5061074d6117c0565b60405161075a9190612d3e565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e890612da5565b60405180910390fd5b612710816003546108029190612df4565b61080c9190612e65565b60048190555050565b60125481565b60606001805461082a90612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461085690612ec5565b80156108a35780601f10610878576101008083540402835291602001916108a3565b820191906000526020600020905b81548152906001019060200180831161088657829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161098d919061290b565b60405180910390a36001905092915050565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612da5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c8a57610c09826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e69092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c9584848461184a565b90509392505050565b60006009905090565b6000610cd3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ad565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90612da5565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490612da5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff090612da5565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546110f590612ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461112190612ec5565b801561116e5780601f106111435761010080835404028352916020019161116e565b820191906000526020600020905b81548152906001019060200180831161115157829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90612da5565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006112bf33848461184a565b905092915050565b60135481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890612da5565b60405180910390fd5b8260098190555081600a819055506113a28284611d3d90919063ffffffff16565b600b8190555080600c819055506003600c546113be9190612e65565b600b5410611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890612f42565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90612da5565b60405180910390fd5b82601160146101000a81548160ff0219169083151502179055508160128190555080601381905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f390612da5565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b90612da5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612fae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600083831115829061182e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182591906129b6565b60405180910390fd5b506000838561183d9190612fce565b9050809150509392505050565b60008061185684610dd6565b905060045483826118679190613002565b1115806118bd5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f3906130a8565b60405180910390fd5b611904611d9b565b801561195d5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561196b5761196a611e72565b5b6000629896808461197c9190612e65565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a255750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611a39578084611a369190612fce565b93505b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611adb5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611af457611aeb8686866123ed565b92505050611d36565b611b7d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117e69092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bcc87876124fd565b611bd65784611c32565b611c318786601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146125ab565b5b9050611c8681600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3d90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d26919061290b565b60405180910390a3600193505050505b9392505050565b6000808284611d4c9190613002565b905083811015611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890613114565b60405180910390fd5b8091505092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611e085750601460009054906101000a900460ff16155b8015611e205750601160149054906101000a900460ff165b8015611e6d5750601254600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff0219169083151502179055506000601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611ee2576013549050611f25565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000611f636002611f55600b54611f476009548761272390919063ffffffff16565b61279d90919063ffffffff16565b61279d90919063ffffffff16565b90506000611f7a82846127e790919063ffffffff16565b90506000600267ffffffffffffffff811115611f9957611f98613134565b5b604051908082528060200260200182016040528015611fc75781602001602082028036833780820191505090505b5090503081600081518110611fdf57611fde613163565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120aa91906131a7565b816001815181106120be576120bd613163565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161215c9594939291906132cd565b600060405180830381600087803b15801561217657600080fd5b505af115801561218a573d6000803e3d6000fd5b50505050600047905060006121bf6121ae600260095461279d90919063ffffffff16565b600b546127e790919063ffffffff16565b905060006121fd60026121ef846121e16009548861272390919063ffffffff16565b61279d90919063ffffffff16565b61279d90919063ffffffff16565b9050600061221482856127e790919063ffffffff16565b905060008111156122b6576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161226b90613358565b600060405180830381858888f193505050503d80600081146122a9576040519150601f19603f3d011682016040523d82523d6000602084013e6122ae565b606091505b505080915050505b60008711156123c857601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123489695949392919061336d565b60606040518083038185885af1158015612366573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061238b91906133e3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450682886040516123bf929190613436565b60405180910390a15b50505050505050506000601460006101000a81548160ff021916908315150217905550565b60006103e7600d8190555061244a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3d90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124ea919061290b565b60405180910390a3600190509392505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125a35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826125ba5760646125be565b600d545b905060006126096064600c546125d49190612df4565b6125fb846125ed600b548a61272390919063ffffffff16565b61272390919063ffffffff16565b61279d90919063ffffffff16565b905061265d81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3d90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126fd919061290b565b60405180910390a361271881866127e790919063ffffffff16565b925050509392505050565b60008083036127355760009050612797565b600082846127439190612df4565b90508284826127529190612e65565b14612792576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612789906134d1565b60405180910390fd5b809150505b92915050565b60006127df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612831565b905092915050565b600061282983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117e6565b905092915050565b60008083118290612878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286f91906129b6565b60405180910390fd5b50600083856128879190612e65565b9050809150509392505050565b600080fd5b6000819050919050565b6128ac81612899565b81146128b757600080fd5b50565b6000813590506128c9816128a3565b92915050565b6000602082840312156128e5576128e4612894565b5b60006128f3848285016128ba565b91505092915050565b61290581612899565b82525050565b600060208201905061292060008301846128fc565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612960578082015181840152602081019050612945565b60008484015250505050565b6000601f19601f8301169050919050565b600061298882612926565b6129928185612931565b93506129a2818560208601612942565b6129ab8161296c565b840191505092915050565b600060208201905081810360008301526129d0818461297d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a03826129d8565b9050919050565b612a13816129f8565b8114612a1e57600080fd5b50565b600081359050612a3081612a0a565b92915050565b60008060408385031215612a4d57612a4c612894565b5b6000612a5b85828601612a21565b9250506020612a6c858286016128ba565b9150509250929050565b60008115159050919050565b612a8b81612a76565b82525050565b6000602082019050612aa66000830184612a82565b92915050565b612ab581612a76565b8114612ac057600080fd5b50565b600081359050612ad281612aac565b92915050565b60008060408385031215612aef57612aee612894565b5b6000612afd85828601612a21565b9250506020612b0e85828601612ac3565b9150509250929050565b600080600060608486031215612b3157612b30612894565b5b6000612b3f86828701612a21565b9350506020612b5086828701612a21565b9250506040612b61868287016128ba565b9150509250925092565b600060ff82169050919050565b612b8181612b6b565b82525050565b6000602082019050612b9c6000830184612b78565b92915050565b600060208284031215612bb857612bb7612894565b5b6000612bc684828501612a21565b91505092915050565b612bd8816129f8565b82525050565b6000602082019050612bf36000830184612bcf565b92915050565b60008060408385031215612c1057612c0f612894565b5b6000612c1e85828601612a21565b9250506020612c2f85828601612a21565b9150509250929050565b600080600060608486031215612c5257612c51612894565b5b6000612c60868287016128ba565b9350506020612c71868287016128ba565b9250506040612c82868287016128ba565b9150509250925092565b600080600060608486031215612ca557612ca4612894565b5b6000612cb386828701612ac3565b9350506020612cc4868287016128ba565b9250506040612cd5868287016128ba565b9150509250925092565b6000819050919050565b6000612d04612cff612cfa846129d8565b612cdf565b6129d8565b9050919050565b6000612d1682612ce9565b9050919050565b6000612d2882612d0b565b9050919050565b612d3881612d1d565b82525050565b6000602082019050612d536000830184612d2f565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612d8f600683612931565b9150612d9a82612d59565b602082019050919050565b60006020820190508181036000830152612dbe81612d82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dff82612899565b9150612e0a83612899565b9250828202612e1881612899565b91508282048414831517612e2f57612e2e612dc5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e7082612899565b9150612e7b83612899565b925082612e8b57612e8a612e36565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612edd57607f821691505b602082108103612ef057612eef612e96565b5b50919050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000612f2c601c83612931565b9150612f3782612ef6565b602082019050919050565b60006020820190508181036000830152612f5b81612f1f565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000612f98600883612931565b9150612fa382612f62565b602082019050919050565b60006020820190508181036000830152612fc781612f8b565b9050919050565b6000612fd982612899565b9150612fe483612899565b9250828203905081811115612ffc57612ffb612dc5565b5b92915050565b600061300d82612899565b915061301883612899565b92508282019050808211156130305761302f612dc5565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000613092603e83612931565b915061309d82613036565b604082019050919050565b600060208201905081810360008301526130c181613085565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006130fe601b83612931565b9150613109826130c8565b602082019050919050565b6000602082019050818103600083015261312d816130f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131a181612a0a565b92915050565b6000602082840312156131bd576131bc612894565b5b60006131cb84828501613192565b91505092915050565b6000819050919050565b60006131f96131f46131ef846131d4565b612cdf565b612899565b9050919050565b613209816131de565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613244816129f8565b82525050565b6000613256838361323b565b60208301905092915050565b6000602082019050919050565b600061327a8261320f565b613284818561321a565b935061328f8361322b565b8060005b838110156132c05781516132a7888261324a565b97506132b283613262565b925050600181019050613293565b5085935050505092915050565b600060a0820190506132e260008301886128fc565b6132ef6020830187613200565b8181036040830152613301818661326f565b90506133106060830185612bcf565b61331d60808301846128fc565b9695505050505050565b600081905092915050565b50565b6000613342600083613327565b915061334d82613332565b600082019050919050565b600061336382613335565b9150819050919050565b600060c0820190506133826000830189612bcf565b61338f60208301886128fc565b61339c6040830187613200565b6133a96060830186613200565b6133b66080830185612bcf565b6133c360a08301846128fc565b979650505050505050565b6000815190506133dd816128a3565b92915050565b6000806000606084860312156133fc576133fb612894565b5b600061340a868287016133ce565b935050602061341b868287016133ce565b925050604061342c868287016133ce565b9150509250925092565b600060408201905061344b60008301856128fc565b61345860208301846128fc565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134bb602183612931565b91506134c68261345f565b604082019050919050565b600060208201905081810360008301526134ea816134ae565b905091905056fea2646970667358221220bb4c5357d4bc7847340cb97d2de47782370c0651f500659f899d527e7b0d010764736f6c634300081100330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d