60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90816200004a919062000585565b506000600d55612710600e556014600f556000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055503480156200009e57600080fd5b5060405162004bcd38038062004bcd8339818101604052810190620000c49190620007d0565b83838160009081620000d7919062000585565b508060019081620000e9919062000585565b5050506200010c620001006200013860201b60201c565b6200014060201b60201c565b6200011d826200020660201b60201c565b6200012e816200022b60201b60201c565b5050505062000941565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002166200025060201b60201c565b80600b908162000227919062000585565b5050565b6200023b6200025060201b60201c565b80601190816200024c919062000585565b5050565b620002606200013860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000286620002e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d6906200091f565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038d57607f821691505b602082108103620003a357620003a262000345565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200040d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003ce565b620004198683620003ce565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000466620004606200045a8462000431565b6200043b565b62000431565b9050919050565b6000819050919050565b620004828362000445565b6200049a62000491826200046d565b848454620003db565b825550505050565b600090565b620004b1620004a2565b620004be81848462000477565b505050565b5b81811015620004e657620004da600082620004a7565b600181019050620004c4565b5050565b601f8211156200053557620004ff81620003a9565b6200050a84620003be565b810160208510156200051a578190505b620005326200052985620003be565b830182620004c3565b50505b505050565b600082821c905092915050565b60006200055a600019846008026200053a565b1980831691505092915050565b600062000575838362000547565b9150826002028217905092915050565b62000590826200030b565b67ffffffffffffffff811115620005ac57620005ab62000316565b5b620005b8825462000374565b620005c5828285620004ea565b600060209050601f831160018114620005fd5760008415620005e8578287015190505b620005f4858262000567565b86555062000664565b601f1984166200060d86620003a9565b60005b82811015620006375784890151825560018201915060208501945060208101905062000610565b8683101562000657578489015162000653601f89168262000547565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006a6826200068a565b810181811067ffffffffffffffff82111715620006c857620006c762000316565b5b80604052505050565b6000620006dd6200066c565b9050620006eb82826200069b565b919050565b600067ffffffffffffffff8211156200070e576200070d62000316565b5b62000719826200068a565b9050602081019050919050565b60005b838110156200074657808201518184015260208101905062000729565b60008484015250505050565b6000620007696200076384620006f0565b620006d1565b90508281526020810184848401111562000788576200078762000685565b5b6200079584828562000726565b509392505050565b600082601f830112620007b557620007b462000680565b5b8151620007c784826020860162000752565b91505092915050565b60008060008060808587031215620007ed57620007ec62000676565b5b600085015167ffffffffffffffff8111156200080e576200080d6200067b565b5b6200081c878288016200079d565b945050602085015167ffffffffffffffff81111562000840576200083f6200067b565b5b6200084e878288016200079d565b935050604085015167ffffffffffffffff8111156200087257620008716200067b565b5b62000880878288016200079d565b925050606085015167ffffffffffffffff811115620008a457620008a36200067b565b5b620008b2878288016200079d565b91505092959194509250565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000907602083620008be565b91506200091482620008cf565b602082019050919050565b600060208201905081810360008301526200093a81620008f8565b9050919050565b61427c80620009516000396000f3fe60806040526004361061020f5760003560e01c80635c975abb11610118578063a475b5dd116100a0578063d5abeb011161006f578063d5abeb011461076f578063da3ef23f1461079a578063e985e9c5146107c3578063f2c4ce1e14610800578063f2fde38b146108295761020f565b8063a475b5dd146106c7578063b88d4fde146106de578063c668286214610707578063c87b56dd146107325761020f565b80637f00c7a6116100e75780637f00c7a6146106035780638da5cb5b1461062c57806395d89b4114610657578063a0712d6814610682578063a22cb4651461069e5761020f565b80635c975abb146105475780636352211e1461057257806370a08231146105af578063715018a6146105ec5761020f565b806323b872dd1161019b578063438b63001161016a578063438b63001461045057806344a0d68a1461048d5780634f6ccce7146104b657806351830227146104f357806355f804b31461051e5761020f565b806323b872dd146103b75780632f745c59146103e05780633ccfd60b1461041d57806342842e0e146104275761020f565b8063081c8c44116101e2578063081c8c44146102e2578063095ea7b31461030d57806313faede61461033657806318160ddd14610361578063239c70ae1461038c5761020f565b806301ffc9a71461021457806302329a291461025157806306fdde031461027a578063081812fc146102a5575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612afc565b610852565b6040516102489190612b44565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190612b8b565b6108cc565b005b34801561028657600080fd5b5061028f6108f1565b60405161029c9190612c48565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c79190612ca0565b610983565b6040516102d99190612d0e565b60405180910390f35b3480156102ee57600080fd5b506102f76109c9565b6040516103049190612c48565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612d55565b610a57565b005b34801561034257600080fd5b5061034b610b6e565b6040516103589190612da4565b60405180910390f35b34801561036d57600080fd5b50610376610b74565b6040516103839190612da4565b60405180910390f35b34801561039857600080fd5b506103a1610b81565b6040516103ae9190612da4565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612dbf565b610b87565b005b3480156103ec57600080fd5b5061040760048036038101906104029190612d55565b610be7565b6040516104149190612da4565b60405180910390f35b610425610c8c565b005b34801561043357600080fd5b5061044e60048036038101906104499190612dbf565b610d14565b005b34801561045c57600080fd5b5061047760048036038101906104729190612e12565b610d34565b6040516104849190612efd565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190612ca0565b610de2565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190612ca0565b610df4565b6040516104ea9190612da4565b60405180910390f35b3480156104ff57600080fd5b50610508610e65565b6040516105159190612b44565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613054565b610e78565b005b34801561055357600080fd5b5061055c610e93565b6040516105699190612b44565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190612ca0565b610ea6565b6040516105a69190612d0e565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190612e12565b610f2c565b6040516105e39190612da4565b60405180910390f35b3480156105f857600080fd5b50610601610fe3565b005b34801561060f57600080fd5b5061062a60048036038101906106259190612ca0565b610ff7565b005b34801561063857600080fd5b50610641611009565b60405161064e9190612d0e565b60405180910390f35b34801561066357600080fd5b5061066c611033565b6040516106799190612c48565b60405180910390f35b61069c60048036038101906106979190612ca0565b6110c5565b005b3480156106aa57600080fd5b506106c560048036038101906106c0919061309d565b6111e7565b005b3480156106d357600080fd5b506106dc6111fd565b005b3480156106ea57600080fd5b506107056004803603810190610700919061317e565b611222565b005b34801561071357600080fd5b5061071c611284565b6040516107299190612c48565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190612ca0565b611312565b6040516107669190612c48565b60405180910390f35b34801561077b57600080fd5b5061078461146a565b6040516107919190612da4565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190613054565b611470565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190613201565b61148b565b6040516107f79190612b44565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613054565b61151f565b005b34801561083557600080fd5b50610850600480360381019061084b9190612e12565b61153a565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c4826115bd565b5b9050919050565b6108d461169f565b80601060006101000a81548160ff02191690831515021790555050565b60606000805461090090613270565b80601f016020809104026020016040519081016040528092919081815260200182805461092c90613270565b80156109795780601f1061094e57610100808354040283529160200191610979565b820191906000526020600020905b81548152906001019060200180831161095c57829003601f168201915b5050505050905090565b600061098e8261171d565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b601180546109d690613270565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0290613270565b8015610a4f5780601f10610a2457610100808354040283529160200191610a4f565b820191906000526020600020905b815481529060010190602001808311610a3257829003601f168201915b505050505081565b6000610a6282610ea6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990613313565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610af1611768565b73ffffffffffffffffffffffffffffffffffffffff161480610b205750610b1f81610b1a611768565b61148b565b5b610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b56906133a5565b60405180910390fd5b610b698383611770565b505050565b600d5481565b6000600880549050905090565b600f5481565b610b98610b92611768565b82611829565b610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613437565b60405180910390fd5b610be28383836118be565b505050565b6000610bf283610f2c565b8210610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a906134c9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c9461169f565b6000610c9e611009565b73ffffffffffffffffffffffffffffffffffffffff1647604051610cc19061351a565b60006040518083038185875af1925050503d8060008114610cfe576040519150601f19603f3d011682016040523d82523d6000602084013e610d03565b606091505b5050905080610d1157600080fd5b50565b610d2f83838360405180602001604052806000815250611222565b505050565b60606000610d4183610f2c565b905060008167ffffffffffffffff811115610d5f57610d5e612f29565b5b604051908082528060200260200182016040528015610d8d5781602001602082028036833780820191505090505b50905060005b82811015610dd757610da58582610be7565b828281518110610db857610db761352f565b5b6020026020010181815250508080610dcf9061358d565b915050610d93565b508092505050919050565b610dea61169f565b80600d8190555050565b6000610dfe610b74565b8210610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690613647565b60405180910390fd5b60088281548110610e5357610e5261352f565b5b90600052602060002001549050919050565b601060019054906101000a900460ff1681565b610e8061169f565b80600b9081610e8f9190613813565b5050565b601060009054906101000a900460ff1681565b600080610eb283611bb7565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90613931565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f93906139c3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610feb61169f565b610ff56000611bf4565b565b610fff61169f565b80600f8190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461104290613270565b80601f016020809104026020016040519081016040528092919081815260200182805461106e90613270565b80156110bb5780601f10611090576101008083540402835291602001916110bb565b820191906000526020600020905b81548152906001019060200180831161109e57829003601f168201915b5050505050905090565b60006110cf610b74565b9050600082116110de57600080fd5b600f548211156110ed57600080fd5b601060009054906101000a900460ff161561113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113490613a2f565b60405180910390fd5b600e54828261114c9190613a4f565b111561115757600080fd5b61115f611009565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111ac5781600d5461119f9190613a83565b3410156111ab57600080fd5b5b6000600190505b8281116111e2576111cf3382846111ca9190613a4f565b611cba565b80806111da9061358d565b9150506111b3565b505050565b6111f96111f2611768565b8383611cd8565b5050565b61120561169f565b6001601060016101000a81548160ff021916908315150217905550565b61123361122d611768565b83611829565b611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990613437565b60405180910390fd5b61127e84848484611e44565b50505050565b600c805461129190613270565b80601f01602080910402602001604051908101604052809291908181526020018280546112bd90613270565b801561130a5780601f106112df5761010080835404028352916020019161130a565b820191906000526020600020905b8154815290600101906020018083116112ed57829003601f168201915b505050505081565b606061131d82611ea0565b61135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390613b37565b60405180910390fd5b60001515601060019054906101000a900460ff16151503611409576011805461138490613270565b80601f01602080910402602001604051908101604052809291908181526020018280546113b090613270565b80156113fd5780601f106113d2576101008083540402835291602001916113fd565b820191906000526020600020905b8154815290600101906020018083116113e057829003601f168201915b50505050509050611465565b6000611413611ee1565b905060008151116114335760405180602001604052806000815250611461565b8061143d84611f73565b600c60405160200161145193929190613c16565b6040516020818303038152906040525b9150505b919050565b600e5481565b61147861169f565b80600c90816114879190613813565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61152761169f565b80601190816115369190613813565b5050565b61154261169f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613cb9565b60405180910390fd5b6115ba81611bf4565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061168857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611698575061169782612041565b5b9050919050565b6116a7611768565b73ffffffffffffffffffffffffffffffffffffffff166116c5611009565b73ffffffffffffffffffffffffffffffffffffffff161461171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290613d25565b60405180910390fd5b565b61172681611ea0565b611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613931565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166117e383610ea6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061183583610ea6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118775750611876818561148b565b5b806118b557508373ffffffffffffffffffffffffffffffffffffffff1661189d84610983565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166118de82610ea6565b73ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90613db7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90613e49565b60405180910390fd5b6119b083838360016120ab565b8273ffffffffffffffffffffffffffffffffffffffff166119d082610ea6565b73ffffffffffffffffffffffffffffffffffffffff1614611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d90613db7565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611bb28383836001612209565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611cd482826040518060200160405280600081525061220f565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613eb5565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e379190612b44565b60405180910390a3505050565b611e4f8484846118be565b611e5b8484848461226a565b611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9190613f47565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611ec283611bb7565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6060600b8054611ef090613270565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1c90613270565b8015611f695780601f10611f3e57610100808354040283529160200191611f69565b820191906000526020600020905b815481529060010190602001808311611f4c57829003601f168201915b5050505050905090565b606060006001611f82846123f1565b01905060008167ffffffffffffffff811115611fa157611fa0612f29565b5b6040519080825280601f01601f191660200182016040528015611fd35781602001600182028036833780820191505090505b509050600082602001820190505b600115612036578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161202a57612029613f67565b5b04945060008503611fe1575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120b784848484612544565b60018111156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290614008565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036121425761213d8161254a565b612181565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146121805761217f8582612593565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036121c3576121be81612700565b612202565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146122015761220084826127d1565b5b5b5050505050565b50505050565b6122198383612850565b612226600084848461226a565b612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90613f47565b60405180910390fd5b505050565b600061228b8473ffffffffffffffffffffffffffffffffffffffff16612a6d565b156123e4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122b4611768565b8786866040518563ffffffff1660e01b81526004016122d6949392919061407d565b6020604051808303816000875af192505050801561231257506040513d601f19601f8201168201806040525081019061230f91906140de565b60015b612394573d8060008114612342576040519150601f19603f3d011682016040523d82523d6000602084013e612347565b606091505b50600081510361238c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238390613f47565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123e9565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061244f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161244557612444613f67565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061248c576d04ee2d6d415b85acef8100000000838161248257612481613f67565b5b0492506020810190505b662386f26fc1000083106124bb57662386f26fc1000083816124b1576124b0613f67565b5b0492506010810190505b6305f5e10083106124e4576305f5e10083816124da576124d9613f67565b5b0492506008810190505b61271083106125095761271083816124ff576124fe613f67565b5b0492506004810190505b6064831061252c576064838161252257612521613f67565b5b0492506002810190505b600a831061253b576001810190505b80915050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016125a084610f2c565b6125aa919061410b565b905060006007600084815260200190815260200160002054905081811461268f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612714919061410b565b90506000600960008481526020019081526020016000205490506000600883815481106127445761274361352f565b5b9060005260206000200154905080600883815481106127665761276561352f565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127b5576127b461413f565b5b6001900381819060005260206000200160009055905550505050565b60006127dc83610f2c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b6906141ba565b60405180910390fd5b6128c881611ea0565b15612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ff90614226565b60405180910390fd5b6129166000838360016120ab565b61291f81611ea0565b1561295f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295690614226565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a69600083836001612209565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ad981612aa4565b8114612ae457600080fd5b50565b600081359050612af681612ad0565b92915050565b600060208284031215612b1257612b11612a9a565b5b6000612b2084828501612ae7565b91505092915050565b60008115159050919050565b612b3e81612b29565b82525050565b6000602082019050612b596000830184612b35565b92915050565b612b6881612b29565b8114612b7357600080fd5b50565b600081359050612b8581612b5f565b92915050565b600060208284031215612ba157612ba0612a9a565b5b6000612baf84828501612b76565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bf2578082015181840152602081019050612bd7565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c1a82612bb8565b612c248185612bc3565b9350612c34818560208601612bd4565b612c3d81612bfe565b840191505092915050565b60006020820190508181036000830152612c628184612c0f565b905092915050565b6000819050919050565b612c7d81612c6a565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612a9a565b5b6000612cc484828501612c8b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cf882612ccd565b9050919050565b612d0881612ced565b82525050565b6000602082019050612d236000830184612cff565b92915050565b612d3281612ced565b8114612d3d57600080fd5b50565b600081359050612d4f81612d29565b92915050565b60008060408385031215612d6c57612d6b612a9a565b5b6000612d7a85828601612d40565b9250506020612d8b85828601612c8b565b9150509250929050565b612d9e81612c6a565b82525050565b6000602082019050612db96000830184612d95565b92915050565b600080600060608486031215612dd857612dd7612a9a565b5b6000612de686828701612d40565b9350506020612df786828701612d40565b9250506040612e0886828701612c8b565b9150509250925092565b600060208284031215612e2857612e27612a9a565b5b6000612e3684828501612d40565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e7481612c6a565b82525050565b6000612e868383612e6b565b60208301905092915050565b6000602082019050919050565b6000612eaa82612e3f565b612eb48185612e4a565b9350612ebf83612e5b565b8060005b83811015612ef0578151612ed78882612e7a565b9750612ee283612e92565b925050600181019050612ec3565b5085935050505092915050565b60006020820190508181036000830152612f178184612e9f565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f6182612bfe565b810181811067ffffffffffffffff82111715612f8057612f7f612f29565b5b80604052505050565b6000612f93612a90565b9050612f9f8282612f58565b919050565b600067ffffffffffffffff821115612fbf57612fbe612f29565b5b612fc882612bfe565b9050602081019050919050565b82818337600083830152505050565b6000612ff7612ff284612fa4565b612f89565b90508281526020810184848401111561301357613012612f24565b5b61301e848285612fd5565b509392505050565b600082601f83011261303b5761303a612f1f565b5b813561304b848260208601612fe4565b91505092915050565b60006020828403121561306a57613069612a9a565b5b600082013567ffffffffffffffff81111561308857613087612a9f565b5b61309484828501613026565b91505092915050565b600080604083850312156130b4576130b3612a9a565b5b60006130c285828601612d40565b92505060206130d385828601612b76565b9150509250929050565b600067ffffffffffffffff8211156130f8576130f7612f29565b5b61310182612bfe565b9050602081019050919050565b600061312161311c846130dd565b612f89565b90508281526020810184848401111561313d5761313c612f24565b5b613148848285612fd5565b509392505050565b600082601f83011261316557613164612f1f565b5b813561317584826020860161310e565b91505092915050565b6000806000806080858703121561319857613197612a9a565b5b60006131a687828801612d40565b94505060206131b787828801612d40565b93505060406131c887828801612c8b565b925050606085013567ffffffffffffffff8111156131e9576131e8612a9f565b5b6131f587828801613150565b91505092959194509250565b6000806040838503121561321857613217612a9a565b5b600061322685828601612d40565b925050602061323785828601612d40565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061328857607f821691505b60208210810361329b5761329a613241565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006132fd602183612bc3565b9150613308826132a1565b604082019050919050565b6000602082019050818103600083015261332c816132f0565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b600061338f603d83612bc3565b915061339a82613333565b604082019050919050565b600060208201905081810360008301526133be81613382565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613421602d83612bc3565b915061342c826133c5565b604082019050919050565b6000602082019050818103600083015261345081613414565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006134b3602b83612bc3565b91506134be82613457565b604082019050919050565b600060208201905081810360008301526134e2816134a6565b9050919050565b600081905092915050565b50565b60006135046000836134e9565b915061350f826134f4565b600082019050919050565b6000613525826134f7565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061359882612c6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135ca576135c961355e565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613631602c83612bc3565b915061363c826135d5565b604082019050919050565b6000602082019050818103600083015261366081613624565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026136c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261368c565b6136d3868361368c565b95508019841693508086168417925050509392505050565b6000819050919050565b600061371061370b61370684612c6a565b6136eb565b612c6a565b9050919050565b6000819050919050565b61372a836136f5565b61373e61373682613717565b848454613699565b825550505050565b600090565b613753613746565b61375e818484613721565b505050565b5b818110156137825761377760008261374b565b600181019050613764565b5050565b601f8211156137c75761379881613667565b6137a18461367c565b810160208510156137b0578190505b6137c46137bc8561367c565b830182613763565b50505b505050565b600082821c905092915050565b60006137ea600019846008026137cc565b1980831691505092915050565b600061380383836137d9565b9150826002028217905092915050565b61381c82612bb8565b67ffffffffffffffff81111561383557613834612f29565b5b61383f8254613270565b61384a828285613786565b600060209050601f83116001811461387d576000841561386b578287015190505b61387585826137f7565b8655506138dd565b601f19841661388b86613667565b60005b828110156138b35784890151825560018201915060208501945060208101905061388e565b868310156138d057848901516138cc601f8916826137d9565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061391b601883612bc3565b9150613926826138e5565b602082019050919050565b6000602082019050818103600083015261394a8161390e565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006139ad602983612bc3565b91506139b882613951565b604082019050919050565b600060208201905081810360008301526139dc816139a0565b9050919050565b7f436f6e7472616374206973207061757365640000000000000000000000000000600082015250565b6000613a19601283612bc3565b9150613a24826139e3565b602082019050919050565b60006020820190508181036000830152613a4881613a0c565b9050919050565b6000613a5a82612c6a565b9150613a6583612c6a565b9250828201905080821115613a7d57613a7c61355e565b5b92915050565b6000613a8e82612c6a565b9150613a9983612c6a565b9250828202613aa781612c6a565b91508282048414831517613abe57613abd61355e565b5b5092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b21602f83612bc3565b9150613b2c82613ac5565b604082019050919050565b60006020820190508181036000830152613b5081613b14565b9050919050565b600081905092915050565b6000613b6d82612bb8565b613b778185613b57565b9350613b87818560208601612bd4565b80840191505092915050565b60008154613ba081613270565b613baa8186613b57565b94506001821660008114613bc55760018114613bda57613c0d565b60ff1983168652811515820286019350613c0d565b613be385613667565b60005b83811015613c0557815481890152600182019150602081019050613be6565b838801955050505b50505092915050565b6000613c228286613b62565b9150613c2e8285613b62565b9150613c3a8284613b93565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ca3602683612bc3565b9150613cae82613c47565b604082019050919050565b60006020820190508181036000830152613cd281613c96565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d0f602083612bc3565b9150613d1a82613cd9565b602082019050919050565b60006020820190508181036000830152613d3e81613d02565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613da1602583612bc3565b9150613dac82613d45565b604082019050919050565b60006020820190508181036000830152613dd081613d94565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e33602483612bc3565b9150613e3e82613dd7565b604082019050919050565b60006020820190508181036000830152613e6281613e26565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613e9f601983612bc3565b9150613eaa82613e69565b602082019050919050565b60006020820190508181036000830152613ece81613e92565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f31603283612bc3565b9150613f3c82613ed5565b604082019050919050565b60006020820190508181036000830152613f6081613f24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613ff2603583612bc3565b9150613ffd82613f96565b604082019050919050565b6000602082019050818103600083015261402181613fe5565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061404f82614028565b6140598185614033565b9350614069818560208601612bd4565b61407281612bfe565b840191505092915050565b60006080820190506140926000830187612cff565b61409f6020830186612cff565b6140ac6040830185612d95565b81810360608301526140be8184614044565b905095945050505050565b6000815190506140d881612ad0565b92915050565b6000602082840312156140f4576140f3612a9a565b5b6000614102848285016140c9565b91505092915050565b600061411682612c6a565b915061412183612c6a565b92508282039050818111156141395761413861355e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006141a4602083612bc3565b91506141af8261416e565b602082019050919050565b600060208201905081810360008301526141d381614197565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614210601c83612bc3565b915061421b826141da565b602082019050919050565b6000602082019050818103600083015261423f81614203565b905091905056fea26469706673582212208aaa8184403b6e827e22c587d670aaec2b992fb701ae25279f6717ae757e138564736f6c63430008130033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000036e6674000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036e667400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003676767000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036767670000000000000000000000000000000000000000000000000000000000