60e060405261271060016a52b7d2dcc80cd2e400000062000021919062000ad4565b6200002d919062000b4e565b600a556000600b556000600c556000600d556000601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055503480156200008257600080fd5b5060405162005101380380620051018339818101604052810190620000a8919062000c35565b336040518060400160405280600781526020017f41756469744149000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4155444149000000000000000000000000000000000000000000000000000000815250816003908162000126919062000f01565b50806004908162000138919062000f01565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001b05760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001a7919062000ff9565b60405180910390fd5b620001c1816200051760201b60201c565b506001600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200023c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000233906200109d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620002ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a59062001135565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031790620011cd565b60405180910390fd5b82600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620003b2336a52b7d2dcc80cd2e4000000620005dd60201b60201c565b6001600e6000620003c86200066a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000493620004856200066a60201b60201c565b60016200069460201b60201c565b620004a63060016200069460201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505062001341565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006525760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000649919062000ff9565b60405180910390fd5b6200066660008383620007c160201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006a4620009f160201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000716576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070d906200123f565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f3453aad620edfb737e1025fc5b238de98ab421a458d3715761a917b22d3afa0f82604051620007b591906200127e565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008175780600260008282546200080a91906200129b565b92505081905550620008ed565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620008a6578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200089d93929190620012e7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000938578060026000828254039250508190555062000985565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009e4919062001324565b60405180910390a3505050565b62000a0162000a9360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a276200066a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a915762000a5362000a9360201b60201c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162000a88919062000ff9565b60405180910390fd5b565b600033905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ae18262000a9b565b915062000aee8362000a9b565b925082820262000afe8162000a9b565b9150828204841483151762000b185762000b1762000aa5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b5b8262000a9b565b915062000b688362000a9b565b92508262000b7b5762000b7a62000b1f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bb88262000b8b565b9050919050565b62000bca8162000bab565b811462000bd657600080fd5b50565b60008151905062000bea8162000bbf565b92915050565b600062000bfd8262000b8b565b9050919050565b62000c0f8162000bf0565b811462000c1b57600080fd5b50565b60008151905062000c2f8162000c04565b92915050565b60008060006060848603121562000c515762000c5062000b86565b5b600062000c618682870162000bd9565b935050602062000c748682870162000c1e565b925050604062000c878682870162000c1e565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d1357607f821691505b60208210810362000d295762000d2862000ccb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d54565b62000d9f868362000d54565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000de262000ddc62000dd68462000a9b565b62000db7565b62000a9b565b9050919050565b6000819050919050565b62000dfe8362000dc1565b62000e1662000e0d8262000de9565b84845462000d61565b825550505050565b600090565b62000e2d62000e1e565b62000e3a81848462000df3565b505050565b5b8181101562000e625762000e5660008262000e23565b60018101905062000e40565b5050565b601f82111562000eb15762000e7b8162000d2f565b62000e868462000d44565b8101602085101562000e96578190505b62000eae62000ea58562000d44565b83018262000e3f565b50505b505050565b600082821c905092915050565b600062000ed66000198460080262000eb6565b1980831691505092915050565b600062000ef1838362000ec3565b9150826002028217905092915050565b62000f0c8262000c91565b67ffffffffffffffff81111562000f285762000f2762000c9c565b5b62000f34825462000cfa565b62000f4182828562000e66565b600060209050601f83116001811462000f79576000841562000f64578287015190505b62000f70858262000ee3565b86555062000fe0565b601f19841662000f898662000d2f565b60005b8281101562000fb35784890151825560018201915060208501945060208101905062000f8c565b8683101562000fd3578489015162000fcf601f89168262000ec3565b8355505b6001600288020188555050505b505050505050565b62000ff38162000bab565b82525050565b600060208201905062001010600083018462000fe8565b92915050565b600082825260208201905092915050565b7f6d61726b6574696e672061646472657373207a65726f2061646472657373206560008201527f7863657074696f6e000000000000000000000000000000000000000000000000602082015250565b60006200108560288362001016565b9150620010928262001027565b604082019050919050565b60006020820190508181036000830152620010b88162001076565b9050919050565b7f646576656c6f7065722061646472657373207a65726f2061646472657373206560008201527f7863657074696f6e000000000000000000000000000000000000000000000000602082015250565b60006200111d60288362001016565b91506200112a82620010bf565b604082019050919050565b6000602082019050818103600083015262001150816200110e565b9050919050565b7f556e697377617020726f75746572207a65726f2061646472657373206578636560008201527f7074696f6e000000000000000000000000000000000000000000000000000000602082015250565b6000620011b560258362001016565b9150620011c28262001157565b604082019050919050565b60006020820190508181036000830152620011e881620011a6565b9050919050565b7f6164647265737320300000000000000000000000000000000000000000000000600082015250565b60006200122760098362001016565b91506200123482620011ef565b602082019050919050565b600060208201905081810360008301526200125a8162001218565b9050919050565b60008115159050919050565b620012788162001261565b82525050565b60006020820190506200129560008301846200126d565b92915050565b6000620012a88262000a9b565b9150620012b58362000a9b565b9250828201905080821115620012d057620012cf62000aa5565b5b92915050565b620012e18162000a9b565b82525050565b6000606082019050620012fe600083018662000fe8565b6200130d6020830185620012d6565b6200131c6040830184620012d6565b949350505050565b60006020820190506200133b6000830184620012d6565b92915050565b60805160a05160c051613d826200137f60003960008181610ecb01526121f901526000818161083401526122c501526000611fa80152613d826000f3fe6080604052600436106101855760003560e01c806395d89b41116100d1578063c9567bf91161008a578063dd62ed3e11610064578063dd62ed3e14610558578063f2fde38b14610595578063f4e0d9ac146105be578063f82f235f146105e75761018c565b8063c9567bf9146104d7578063ca4b208b146104ee578063cb35ac0b146105195761018c565b806395d89b41146103db57806397a9895514610406578063a33b27371461041d578063a9059cbb14610446578063c6a3064714610483578063c816841b146104ac5761018c565b8063313ce5671161013e57806370a082311161011857806370a082311461031f578063715018a61461035c578063768dc710146103735780638da5cb5b146103b05761018c565b8063313ce567146102b25780634cf088d9146102dd5780634e71d92d146103085761018c565b806306fdde031461018e578063095ea7b3146101b957806318160ddd146101f657806323b872dd146102215780632ad4cab71461025e5780632d3e474a146102875761018c565b3661018c57005b005b34801561019a57600080fd5b506101a3610624565b6040516101b09190612f7f565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db919061303a565b6106b6565b6040516101ed9190613095565b60405180910390f35b34801561020257600080fd5b5061020b6106d9565b60405161021891906130bf565b60405180910390f35b34801561022d57600080fd5b50610248600480360381019061024391906130da565b6106e3565b6040516102559190613095565b60405180910390f35b34801561026a57600080fd5b5061028560048036038101906102809190613159565b610712565b005b34801561029357600080fd5b5061029c610832565b6040516102a991906131ba565b60405180910390f35b3480156102be57600080fd5b506102c7610856565b6040516102d491906131f1565b60405180910390f35b3480156102e957600080fd5b506102f261085f565b6040516102ff919061321b565b60405180910390f35b34801561031457600080fd5b5061031d610885565b005b34801561032b57600080fd5b5061034660048036038101906103419190613236565b610a67565b60405161035391906130bf565b60405180910390f35b34801561036857600080fd5b50610371610aaf565b005b34801561037f57600080fd5b5061039a60048036038101906103959190613236565b610ac3565b6040516103a79190613095565b60405180910390f35b3480156103bc57600080fd5b506103c5610ae3565b6040516103d2919061321b565b60405180910390f35b3480156103e757600080fd5b506103f0610b0d565b6040516103fd9190612f7f565b60405180910390f35b34801561041257600080fd5b5061041b610b9f565b005b34801561042957600080fd5b50610444600480360381019061043f919061303a565b610c13565b005b34801561045257600080fd5b5061046d6004803603810190610468919061303a565b610ceb565b60405161047a9190613095565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190613159565b610d0e565b005b3480156104b857600080fd5b506104c1610e2e565b6040516104ce919061321b565b60405180910390f35b3480156104e357600080fd5b506104ec610e54565b005b3480156104fa57600080fd5b50610503610ec9565b60405161051091906131ba565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b9190613236565b610eed565b60405161054f93929190613263565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a919061329a565b610f17565b60405161058c91906130bf565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190613236565b610f9e565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613236565b611024565b005b3480156105f357600080fd5b5061060e60048036038101906106099190613236565b61118f565b60405161061b9190613095565b60405180910390f35b60606003805461063390613309565b80601f016020809104026020016040519081016040528092919081815260200182805461065f90613309565b80156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b5050505050905090565b6000806106c16111af565b90506106ce8185856111b7565b600191505092915050565b6000600254905090565b6000806106ee6111af565b90506106fb8582856111c9565b61070685858561125d565b60019150509392505050565b61071a611a7c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090613386565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f3453aad620edfb737e1025fc5b238de98ab421a458d3715761a917b22d3afa0f826040516108269190613095565b60405180910390a25050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000811161090f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610906906133f2565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161093590613443565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b50509050806109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906134a4565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555042601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555081600c6000828254610a5c91906134f3565b925050819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ab7611a7c565b610ac16000611b03565b565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b1c90613309565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4890613309565b8015610b955780601f10610b6a57610100808354040283529160200191610b95565b820191906000526020600020905b815481529060010190602001808311610b7857829003601f168201915b5050505050905090565b610ba7611a7c565b601360019054906101000a900460ff16610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90613573565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613605565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080610cf66111af565b9050610d0381858561125d565b600191505092915050565b610d16611a7c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90613386565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fbcb0010c8adfbd183728fee65133576fc1f54f36e7e7911a4323d90157340ee382604051610e229190613095565b60405180910390a25050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e5c611a7c565b601360019054906101000a900460ff1615610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613671565b60405180910390fd5b6001601360016101000a81548160ff021916908315150217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60106020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fa6611a7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110185760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161100f919061321b565b60405180910390fd5b61102181611b03565b50565b61102c611a7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290613703565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600033905090565b6111c48383836001611bc9565b505050565b60006111d58484610f17565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112575781811015611247578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161123e93929190613723565b60405180910390fd5b61125684848484036000611bc9565b5b50505050565b600081116112a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611297906137cc565b60405180910390fd5b806112aa84610a67565b10156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613838565b60405180910390fd5b600080479050600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361152457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d8919061386d565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611485919061386d565b6040518363ffffffff1660e01b81526004016114a292919061389a565b602060405180830381865afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e3919061386d565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60001515600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514806115d3575060001515600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156117ad57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036116a85760011515601360019054906101000a900460ff1615150361164d57600591505b60001515601360019054906101000a900460ff161515036116a3576040517f40b78b3600000000000000000000000000000000000000000000000000000000815260040161169a9061390f565b60405180910390fd5b6117ac565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117ab5760011515601360019054906101000a900460ff161515036117545760059150600061172730610a67565b9050601360009054906101000a900460ff1661175257600a548111156117515761175081611da0565b5b5b505b60001515601360019054906101000a900460ff161515036117aa576040517f40b78b360000000000000000000000000000000000000000000000000000000081526004016117a19061390f565b60405180910390fd5b5b5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118985761180a610ae3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118935782600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188b919061392f565b925050819055505b611a02565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611a01576118f5610ae3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a005782600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906139af565b60405180910390fd5b82600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119f891906134f3565b925050819055505b5b5b600060648385611a1291906139cf565b611a1c9190613a40565b905060008185611a2c91906134f3565b9050611a39878783612039565b611a44873084612039565b670de0b6b3a7640000600c5484611a5b91906134f3565b10611a6957611a6861212d565b5b611a73878761251e565b50505050505050565b611a846111af565b73ffffffffffffffffffffffffffffffffffffffff16611aa2610ae3565b73ffffffffffffffffffffffffffffffffffffffff1614611b0157611ac56111af565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611af8919061321b565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c3b5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611c32919061321b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cad5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611ca4919061321b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611d9a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611d9191906130bf565b60405180910390a35b50505050565b6001601360006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dd857611dd7613a71565b5b604051908082528060200260200182016040528015611e065781602001602082028036833780820191505090505b5090503081600081518110611e1e57611e1d613aa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee9919061386d565b81600181518110611efd57611efc613aa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f6430600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111b7565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947836000847f0000000000000000000000000000000000000000000000000000000000000000426040518663ffffffff1660e01b8152600401611fe8959493929190613bd2565b600060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b50505050506000601360006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120ab5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016120a2919061321b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211d5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401612114919061321b565b60405180910390fd5b612128838383612cca565b505050565b60004790506000600c548261214291906134f3565b905060008111612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e90613c78565b60405180910390fd5b6000606460288361219891906139cf565b6121a29190613a40565b9050600060646014846121b591906139cf565b6121bf9190613a40565b905060008282856121d091906134f3565b6121da91906134f3565b905080600c60008282546121ee919061392f565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168360405161223b90613443565b60006040518083038185875af1925050503d8060008114612278576040519150601f19603f3d011682016040523d82523d6000602084013e61227d565b606091505b50509050806122c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b8906134a4565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168560405161230790613443565b60006040518083038185875af1925050503d8060008114612344576040519150601f19603f3d011682016040523d82523d6000602084013e612349565b606091505b505090508061238d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238490613ce4565b60405180910390fd5b60005b600b548111612514576000600f60006011600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244a6011600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a67565b612454919061392f565b90506000600d54828761246791906139cf565b6124719190613a40565b905080601060006011600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546124f8919061392f565b925050819055505050808061250c90613d04565b915050612390565b5050505050505050565b600069152d02c7e14af680000090506000600267ffffffffffffffff81111561254a57612549613a71565b5b6040519080825280602002602001820160405280156125785781602001602082028036833780820191505090505b50905083816000815181106125905761258f613aa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106125df576125de613aa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561263657612635613a71565b5b6040519080825280602002602001820160405280156126645781602001602082028036833780820191505090505b509050848160008151811061267c5761267b613aa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816001815181106126cb576126ca613aa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b6002811015612cc25760006010600085848151811061272a57612729613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006010600086858151811061278b5761278a613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000601060008786815181106127ec576127eb613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154146128e557600f600085858151811061284e5761284d613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d60008282546128a291906134f3565b925050819055506128cc8584815181106128bf576128be613aa0565b5b6020026020010151610a67565b600d60008282546128dd91906134f3565b925050819055505b6011600060106000888781518110612900576128ff613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556010600086858151811061298e5761298d613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160009055505085600f6000868681518110612a0357612a02613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a69878681518110612a5c57612a5b613aa0565b5b6020026020010151610a67565b612a73919061392f565b10158015612ae5575060126000868581518110612a9357612a92613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cad57600b6000815480929190612afd90613d04565b91905055506040518060600160405280600b5481526020018381526020018281525060106000878681518110612b3657612b35613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050848381518110612bac57612bab613aa0565b5b602002602001015160116000600b54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f6000868681518110612c2057612c1f613aa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c86878681518110612c7957612c78613aa0565b5b6020026020010151610a67565b612c90919061392f565b905080600d6000828254612ca4919061392f565b92505081905550505b50508080612cba90613d04565b915050612708565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d1c578060026000828254612d10919061392f565b92505081905550612def565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612da8578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612d9f93929190613723565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e385780600260008282540392505081905550612e85565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ee291906130bf565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f29578082015181840152602081019050612f0e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5182612eef565b612f5b8185612efa565b9350612f6b818560208601612f0b565b612f7481612f35565b840191505092915050565b60006020820190508181036000830152612f998184612f46565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fd182612fa6565b9050919050565b612fe181612fc6565b8114612fec57600080fd5b50565b600081359050612ffe81612fd8565b92915050565b6000819050919050565b61301781613004565b811461302257600080fd5b50565b6000813590506130348161300e565b92915050565b6000806040838503121561305157613050612fa1565b5b600061305f85828601612fef565b925050602061307085828601613025565b9150509250929050565b60008115159050919050565b61308f8161307a565b82525050565b60006020820190506130aa6000830184613086565b92915050565b6130b981613004565b82525050565b60006020820190506130d460008301846130b0565b92915050565b6000806000606084860312156130f3576130f2612fa1565b5b600061310186828701612fef565b935050602061311286828701612fef565b925050604061312386828701613025565b9150509250925092565b6131368161307a565b811461314157600080fd5b50565b6000813590506131538161312d565b92915050565b600080604083850312156131705761316f612fa1565b5b600061317e85828601612fef565b925050602061318f85828601613144565b9150509250929050565b60006131a482612fa6565b9050919050565b6131b481613199565b82525050565b60006020820190506131cf60008301846131ab565b92915050565b600060ff82169050919050565b6131eb816131d5565b82525050565b600060208201905061320660008301846131e2565b92915050565b61321581612fc6565b82525050565b6000602082019050613230600083018461320c565b92915050565b60006020828403121561324c5761324b612fa1565b5b600061325a84828501612fef565b91505092915050565b600060608201905061327860008301866130b0565b61328560208301856130b0565b61329260408301846130b0565b949350505050565b600080604083850312156132b1576132b0612fa1565b5b60006132bf85828601612fef565b92505060206132d085828601612fef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061332157607f821691505b602082108103613334576133336132da565b5b50919050565b7f6164647265737320300000000000000000000000000000000000000000000000600082015250565b6000613370600983612efa565b915061337b8261333a565b602082019050919050565b6000602082019050818103600083015261339f81613363565b9050919050565b7f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000600082015250565b60006133dc601083612efa565b91506133e7826133a6565b602082019050919050565b6000602082019050818103600083015261340b816133cf565b9050919050565b600081905092915050565b50565b600061342d600083613412565b91506134388261341d565b600082019050919050565b600061344e82613420565b9150819050919050565b7f646576656c6f706572207472616e73666572206661696c65642e000000000000600082015250565b600061348e601a83612efa565b915061349982613458565b602082019050919050565b600060208201905081810360008301526134bd81613481565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134fe82613004565b915061350983613004565b9250828203905081811115613521576135206134c4565b5b92915050565b7f74726164696e6720697320616c726561647920636c6f73656400000000000000600082015250565b600061355d601983612efa565b915061356882613527565b602082019050919050565b6000602082019050818103600083015261358c81613550565b9050919050565b7f4f6e6c79207374616b696e6720636f6e74726163742063616e2075706461746560008201527f2062616c616e6365210000000000000000000000000000000000000000000000602082015250565b60006135ef602983612efa565b91506135fa82613593565b604082019050919050565b6000602082019050818103600083015261361e816135e2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061365b601783612efa565b915061366682613625565b602082019050919050565b6000602082019050818103600083015261368a8161364e565b9050919050565b7f61646472657373206973206e6f7420666f756e642c2074727920746f20696e7060008201527f75742061646472657373206f66207265616c207374616b696e67000000000000602082015250565b60006136ed603a83612efa565b91506136f882613691565b604082019050919050565b6000602082019050818103600083015261371c816136e0565b9050919050565b6000606082019050613738600083018661320c565b61374560208301856130b0565b61375260408301846130b0565b949350505050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137b6602983612efa565b91506137c18261375a565b604082019050919050565b600060208201905081810360008301526137e5816137a9565b9050919050565b7f42616c616e6365206c657373207468616e207472616e73666572000000000000600082015250565b6000613822601a83612efa565b915061382d826137ec565b602082019050919050565b6000602082019050818103600083015261385181613815565b9050919050565b60008151905061386781612fd8565b92915050565b60006020828403121561388357613882612fa1565b5b600061389184828501613858565b91505092915050565b60006040820190506138af600083018561320c565b6138bc602083018461320c565b9392505050565b7f54726164696e67206973206e6f74206f70656e20796574000000000000000000600082015250565b60006138f9601783612efa565b9150613904826138c3565b602082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b600061393a82613004565b915061394583613004565b925082820190508082111561395d5761395c6134c4565b5b92915050565b7f696e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000613999601483612efa565b91506139a482613963565b602082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b60006139da82613004565b91506139e583613004565b92508282026139f381613004565b91508282048414831517613a0a57613a096134c4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a4b82613004565b9150613a5683613004565b925082613a6657613a65613a11565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000613afe613af9613af484613acf565b613ad9565b613004565b9050919050565b613b0e81613ae3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b4981612fc6565b82525050565b6000613b5b8383613b40565b60208301905092915050565b6000602082019050919050565b6000613b7f82613b14565b613b898185613b1f565b9350613b9483613b30565b8060005b83811015613bc5578151613bac8882613b4f565b9750613bb783613b67565b925050600181019050613b98565b5085935050505092915050565b600060a082019050613be760008301886130b0565b613bf46020830187613b05565b8181036040830152613c068186613b74565b9050613c15606083018561320c565b613c2260808301846130b0565b9695505050505050565b7f436f6e74726163742062616c616e6365206973207a65726f0000000000000000600082015250565b6000613c62601883612efa565b9150613c6d82613c2c565b602082019050919050565b60006020820190508181036000830152613c9181613c55565b9050919050565b7f6d61726b6574696e67207472616e73666572206661696c65642e000000000000600082015250565b6000613cce601a83612efa565b9150613cd982613c98565b602082019050919050565b60006020820190508181036000830152613cfd81613cc1565b9050919050565b6000613d0f82613004565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d4157613d406134c4565b5b60018201905091905056fea26469706673582212204fc73ac40773c66a51c50cf9a06a62446b26d62406da3eaa38ff01ba47f6a3ed64736f6c63430008140033000000000000000000000000c532a74256d3db42d0bf7a0400fefdbad76940080000000000000000000000005f9e787e146cdf86342d25e00452fc3be6fe62a60000000000000000000000005f9e787e146cdf86342d25e00452fc3be6fe62a6