60806040526001600760006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600760106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503480156200008557600080fd5b506040516200660b3803806200660b8339818101604052810190620000ab91906200038e565b81620000bd816200018260201b60201c565b50620000de620000d26200019e60201b60201c565b620001a660201b60201c565b620000ee6200019e60201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180610120016040528060e481526020016200652760e4913960089080519060200190620001609291906200026c565b5080600a9080519060200190620001799291906200026c565b50505062000532565b80600290805190602001906200019a9291906200026c565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200027a906200049e565b90600052602060002090601f0160209004810192826200029e5760008555620002ea565b82601f10620002b957805160ff1916838001178555620002ea565b82800160010185558215620002ea579182015b82811115620002e9578251825591602001919060010190620002cc565b5b509050620002f99190620002fd565b5090565b5b8082111562000318576000816000905550600101620002fe565b5090565b6000620003336200032d8462000435565b62000401565b9050828152602081018484840111156200034c57600080fd5b6200035984828562000468565b509392505050565b600082601f8301126200037357600080fd5b8151620003858482602086016200031c565b91505092915050565b60008060408385031215620003a257600080fd5b600083015167ffffffffffffffff811115620003bd57600080fd5b620003cb8582860162000361565b925050602083015167ffffffffffffffff811115620003e957600080fd5b620003f78582860162000361565b9150509250929050565b6000604051905081810181811067ffffffffffffffff821117156200042b576200042a62000503565b5b8060405250919050565b600067ffffffffffffffff82111562000453576200045262000503565b5b601f19601f8301169050602081019050919050565b60005b83811015620004885780820151818401526020810190506200046b565b8381111562000498576000848401525b50505050565b60006002820490506001821680620004b757607f821691505b60208210811415620004ce57620004cd620004d4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b615fe580620005426000396000f3fe6080604052600436106101ed5760003560e01c80638da5cb5b1161010d578063c79b009a116100a0578063ea44a7531161006f578063ea44a75314610712578063ecc676241461073b578063f242432a14610764578063f2fde38b1461078d578063f3bd629a146107b6576101ed565b8063c79b009a14610654578063cc33c8751461067f578063d6b0f484146106be578063e985e9c5146106d5576101ed565b8063a22cb465116100dc578063a22cb46514610599578063aaec748a146105c2578063ad7feb8d146105eb578063ada5e75614610614576101ed565b80638da5cb5b146104f357806390703ac21461051e578063936a777314610547578063938e3d7b14610570576101ed565b806352ce0e8811610185578063731120fa11610154578063731120fa1461043457806376f7d7de1461045d578063848b86e31461048857806389f902f6146104b1576101ed565b806352ce0e881461038e57806356e4b992146103b7578063588cb702146103f4578063715018a61461041d576101ed565b80632eb2c2d6116101c15780632eb2c2d6146102d257806334645e5f146102fb5780634e1273f414610326578063521eb27314610363576101ed565b8062fdd58e146101f2578063019c18d81461022f57806301ffc9a7146102585780630e89341c14610295575b600080fd5b3480156101fe57600080fd5b50610219600480360381019061021491906140e7565b6107d2565b60405161022691906158b3565b60405180910390f35b34801561023b57600080fd5b50610256600480360381019061025191906142fa565b61089b565b005b34801561026457600080fd5b5061027f600480360381019061027a91906144fe565b610949565b60405161028c9190615452565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190614612565b610a2b565b6040516102c9919061546d565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190613f5d565b610abf565b005b34801561030757600080fd5b50610310610b60565b60405161031d919061586f565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190614123565b610b82565b60405161035a91906153f9565b60405180910390f35b34801561036f57600080fd5b50610378610d33565b604051610385919061531c565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b0919061420e565b610d59565b005b3480156103c357600080fd5b506103de60048036038101906103d991906145d6565b610f65565b6040516103eb91906158b3565b60405180910390f35b34801561040057600080fd5b5061041b60048036038101906104169190614372565b610f8a565b005b34801561042957600080fd5b50610432611025565b005b34801561044057600080fd5b5061045b60048036038101906104569190614336565b6110ad565b005b34801561046957600080fd5b5061047261117a565b60405161047f919061586f565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190613ef8565b61119c565b005b3480156104bd57600080fd5b506104d860048036038101906104d391906142d1565b61125c565b6040516104ea969594939291906158ce565b60405180910390f35b3480156104ff57600080fd5b506105086112dd565b604051610515919061531c565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614460565b611307565b005b34801561055357600080fd5b5061056e60048036038101906105699190614372565b611670565b005b34801561057c57600080fd5b5061059760048036038101906105929190614550565b611720565b005b3480156105a557600080fd5b506105c060048036038101906105bb91906140ab565b6117b2565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190614595565b611933565b005b3480156105f757600080fd5b50610612600480360381019061060d9190614372565b6119c9565b005b34801561062057600080fd5b5061063b600480360381019061063691906142d1565b611a64565b60405161064b949392919061598f565b60405180910390f35b34801561066057600080fd5b50610669611ac2565b604051610676919061546d565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190614612565b611b50565b6040516106b593929190615958565b60405180910390f35b3480156106ca57600080fd5b506106d3611b7a565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190613f21565b611c5d565b6040516107099190615452565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061418f565b611cf1565b005b34801561074757600080fd5b50610762600480360381019061075d91906143fd565b611f60565b005b34801561077057600080fd5b5061078b6004803603810190610786919061401c565b6121b8565b005b34801561079957600080fd5b506107b460048036038101906107af9190613ef8565b612259565b005b6107d060048036038101906107cb91906143ae565b612351565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a9061550f565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108a3612afd565b73ffffffffffffffffffffffffffffffffffffffff166108c16112dd565b73ffffffffffffffffffffffffffffffffffffffff1614610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e9061568f565b60405180910390fd5b806006600084815260200190815260200160002060040160006101000a81548160ff0219169083151502179055505050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a1457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382612b05565b5b9050919050565b606060028054610a3a90615d10565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6690615d10565b8015610ab35780601f10610a8857610100808354040283529160200191610ab3565b820191906000526020600020905b815481529060010190602001808311610a9657829003601f168201915b50505050509050919050565b610ac7612afd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b0d5750610b0c85610b07612afd565b611c5d565b5b610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b439061562f565b60405180910390fd5b610b598585858585612b6f565b5050505050565b600760109054906101000a90046fffffffffffffffffffffffffffffffff1681565b60608151835114610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf9061580f565b60405180910390fd5b6000835167ffffffffffffffff811115610c0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610c395781602001602082028036833780820191505090505b50905060005b8451811015610d2857610cd2858281518110610c84577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610cc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516107d2565b828281518110610d0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610d2190615d7b565b9050610c3f565b508091505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d61612afd565b73ffffffffffffffffffffffffffffffffffffffff16610d7f6112dd565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc9061568f565b60405180910390fd5b82518451148015610de7575081518451145b8015610df4575080518451145b610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906155ef565b60405180910390fd5b60005b8451811015610f5e57610f4b858281518110610e7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610ebc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858481518110610efd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858581518110610f3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611f60565b8080610f5690615d7b565b915050610e36565b5050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b610f92612afd565b73ffffffffffffffffffffffffffffffffffffffff16610fb06112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffd9061568f565b60405180910390fd5b8060066000848152602001908152602001600020600301819055505050565b61102d612afd565b73ffffffffffffffffffffffffffffffffffffffff1661104b6112dd565b73ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110989061568f565b60405180910390fd5b6110ab6000612ecf565b565b6110b5612afd565b73ffffffffffffffffffffffffffffffffffffffff166110d36112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111209061568f565b60405180910390fd5b806006600084815260200190815260200160002060010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050565b600760009054906101000a90046fffffffffffffffffffffffffffffffff1681565b6111a4612afd565b73ffffffffffffffffffffffffffffffffffffffff166111c26112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f9061568f565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090508060000154908060010160009054906101000a90046fffffffffffffffffffffffffffffffff16908060010160109054906101000a90046fffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900460ff16905086565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61130f612afd565b73ffffffffffffffffffffffffffffffffffffffff1661132d6112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a9061568f565b60405180910390fd5b600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161015611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff906155cf565b60405180910390fd5b60006006600089815260200190815260200160002060010160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161461148f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611486906157af565b60405180910390fd5b6040518060c00160405280878152602001866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018460001c8152602001838152602001821515815250600660008981526020019081526020016000206000820151816000015560208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600201556080820151816003015560a08201518160040160006101000a81548160ff021916908315150217905550905050600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161115611667576007600081819054906101000a90046fffffffffffffffffffffffffffffffff168092919061162f90615d42565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505b50505050505050565b611678612afd565b73ffffffffffffffffffffffffffffffffffffffff166116966112dd565b73ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e39061568f565b60405180910390fd5b80600460008460001c815260200190815260200160002060010160008282546117159190615b5a565b925050819055505050565b611728612afd565b73ffffffffffffffffffffffffffffffffffffffff166117466112dd565b73ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117939061568f565b60405180910390fd5b8181600a91906117ad929190613a4b565b505050565b8173ffffffffffffffffffffffffffffffffffffffff166117d1612afd565b73ffffffffffffffffffffffffffffffffffffffff161415611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f906157ef565b60405180910390fd5b8060016000611835612afd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118e2612afd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119279190615452565b60405180910390a35050565b61193b612afd565b73ffffffffffffffffffffffffffffffffffffffff166119596112dd565b73ffffffffffffffffffffffffffffffffffffffff16146119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a69061568f565b60405180910390fd5b80600890805190602001906119c5929190613ad1565b5050565b6119d1612afd565b73ffffffffffffffffffffffffffffffffffffffff166119ef6112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c9061568f565b60405180910390fd5b8060066000848152602001908152602001600020600001819055505050565b6000806000808460001c93506004600085815260200190815260200160002060000154925060046000858152602001908152602001600020600101549150600460008581526020019081526020016000206002015490509193509193565b60088054611acf90615d10565b80601f0160208091040260200160405190810160405280929190818152602001828054611afb90615d10565b8015611b485780601f10611b1d57610100808354040283529160200191611b48565b820191906000526020600020905b815481529060010190602001808311611b2b57829003601f168201915b505050505081565b60046020528060005260406000206000915090508060000154908060010154908060020154905083565b611b82612afd565b73ffffffffffffffffffffffffffffffffffffffff16611ba06112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed9061568f565b60405180910390fd5b6007601081819054906101000a90046fffffffffffffffffffffffffffffffff1680929190611c2490615d42565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611cf9612afd565b73ffffffffffffffffffffffffffffffffffffffff16611d176112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d649061568f565b60405180910390fd5b8051835114611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da89061570f565b60405180910390fd5b600115158215151415611e24576007601081819054906101000a90046fffffffffffffffffffffffffffffffff1680929190611dec90615d42565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505b60005b8351811015611f5a57818181518110611e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160056000600760109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611f01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611f5290615d7b565b915050611e27565b50505050565b611f68612afd565b73ffffffffffffffffffffffffffffffffffffffff16611f866112dd565b73ffffffffffffffffffffffffffffffffffffffff1614611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd39061568f565b60405180910390fd5b60008460001c9050600060046000838152602001908152602001600020600101541461203d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120349061558f565b60405180910390fd5b600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166006600085815260200190815260200160002060010160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1610156120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb9061574f565b60405180910390fd5b83821115612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e906156ef565b60405180910390fd5b60405180606001604052808381526020018581526020018481525060046000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600082146121b1576121b0612199612afd565b828460405180602001604052806000815250612f95565b5b5050505050565b6121c0612afd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612206575061220585612200612afd565b611c5d565b5b612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906155af565b60405180910390fd5b612252858585858561312b565b5050505050565b612261612afd565b73ffffffffffffffffffffffffffffffffffffffff1661227f6112dd565b73ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc9061568f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c9061552f565b60405180910390fd5b61234e81612ecf565b50565b60008360001c905060008260001c9050600061236b612afd565b9050600060046000858152602001908152602001600020905060008160010154116123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c2906154ef565b60405180910390fd5b8581600001546123db9190615b5a565b81600101541015612421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612418906156cf565b60405180910390fd5b600060066000836002015481526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1615151515815250509050600081602001516fffffffffffffffffffffffffffffffff161161256d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125649061556f565b60405180910390fd5b86816080015110156125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab9061578f565b60405180910390fd5b600115158160a00151151514156127605760003073ffffffffffffffffffffffffffffffffffffffff166356e4b992600760109054906101000a90046fffffffffffffffffffffffffffffffff1661260a612afd565b6040518363ffffffff1660e01b815260040161262792919061588a565b60206040518083038186803b15801561263f57600080fd5b505afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612677919061463b565b116126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae906156af565b60405180910390fd5b60056000600760109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061275a90615ce6565b91905055505b600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681602001516fffffffffffffffffffffffffffffffff16116129fd5760006004600086815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050600060066000836040015181526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090506000826020015111612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291e9061576f565b60405180910390fd5b80604001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff161015612996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298d906157cf565b60405180910390fd5b60006129a286886107d2565b116129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d99061572f565b60405180910390fd5b85836060015114156129fa576129f985878b6133ad565b5b50505b6000349050878260000151612a129190615bb0565b8114612a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4a906154cf565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612abb573d6000803e3d6000fd5b50612ad784878a60405180602001604052806000815250612f95565b87836000016000828254612aeb9190615b5a565b92505081905550505050505050505050565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8151835114612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa9061582f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1a9061560f565b60405180910390fd5b6000612c2d612afd565b9050612c3d8187878787876135ca565b60005b8451811015612e3a576000858281518110612c84577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110612cc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d619061566f565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e1f9190615b5a565b9250508190555050505080612e3390615d7b565b9050612c40565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612eb192919061541b565b60405180910390a4612ec78187878787876135d2565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffc9061584f565b60405180910390fd5b600061300f612afd565b905061303081600087613021886137a2565b61302a886137a2565b876135ca565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461308f9190615b5a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161310d92919061592f565b60405180910390a461312481600087878787613868565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561319b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131929061560f565b60405180910390fd5b60006131a5612afd565b90506131c58187876131b6886137a2565b6131bf886137a2565b876135ca565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561325c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132539061566f565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133119190615b5a565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161338e92919061592f565b60405180910390a46133a4828888888888613868565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561341d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134149061564f565b60405180910390fd5b6000613427612afd565b905061345781856000613439876137a2565b613442876137a2565b604051806020016040528060008152506135ca565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156134ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e59061554f565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516135bb92919061592f565b60405180910390a45050505050565b505050505050565b6135f18473ffffffffffffffffffffffffffffffffffffffff16613a38565b1561379a578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401613637959493929190615337565b602060405180830381600087803b15801561365157600080fd5b505af192505050801561368257506040513d601f19601f8201168201806040525081019061367f9190614527565b60015b6137115761368e615e6f565b8061369957506136d6565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136cd919061546d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137089061548f565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f906154af565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156137e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138155781602001602082028036833780820191505090505b5090508281600081518110613853577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6138878473ffffffffffffffffffffffffffffffffffffffff16613a38565b15613a30578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016138cd95949392919061539f565b602060405180830381600087803b1580156138e757600080fd5b505af192505050801561391857506040513d601f19601f820116820180604052508101906139159190614527565b60015b6139a757613924615e6f565b8061392f575061396c565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613963919061546d565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399e9061548f565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a25906154af565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054613a5790615d10565b90600052602060002090601f016020900481019282613a795760008555613ac0565b82601f10613a9257803560ff1916838001178555613ac0565b82800160010185558215613ac0579182015b82811115613abf578235825591602001919060010190613aa4565b5b509050613acd9190613b57565b5090565b828054613add90615d10565b90600052602060002090601f016020900481019282613aff5760008555613b46565b82601f10613b1857805160ff1916838001178555613b46565b82800160010185558215613b46579182015b82811115613b45578251825591602001919060010190613b2a565b5b509050613b539190613b57565b5090565b5b80821115613b70576000816000905550600101613b58565b5090565b6000613b87613b8284615a05565b6159d4565b90508083825260208201905082856020860282011115613ba657600080fd5b60005b85811015613bd65781613bbc8882613d34565b845260208401935060208301925050600181019050613ba9565b5050509392505050565b6000613bf3613bee84615a31565b6159d4565b90508083825260208201905082856020860282011115613c1257600080fd5b60005b85811015613c425781613c288882613ddc565b845260208401935060208301925050600181019050613c15565b5050509392505050565b6000613c5f613c5a84615a5d565b6159d4565b90508083825260208201905082856020860282011115613c7e57600080fd5b60005b85811015613cae5781613c948882613ece565b845260208401935060208301925050600181019050613c81565b5050509392505050565b6000613ccb613cc684615a89565b6159d4565b905082815260208101848484011115613ce357600080fd5b613cee848285615ca4565b509392505050565b6000613d09613d0484615ab9565b6159d4565b905082815260208101848484011115613d2157600080fd5b613d2c848285615ca4565b509392505050565b600081359050613d4381615f25565b92915050565b600082601f830112613d5a57600080fd5b8135613d6a848260208601613b74565b91505092915050565b600082601f830112613d8457600080fd5b8135613d94848260208601613be0565b91505092915050565b600082601f830112613dae57600080fd5b8135613dbe848260208601613c4c565b91505092915050565b600081359050613dd681615f3c565b92915050565b600081359050613deb81615f53565b92915050565b600081359050613e0081615f6a565b92915050565b600081519050613e1581615f6a565b92915050565b600082601f830112613e2c57600080fd5b8135613e3c848260208601613cb8565b91505092915050565b60008083601f840112613e5757600080fd5b8235905067ffffffffffffffff811115613e7057600080fd5b602083019150836001820283011115613e8857600080fd5b9250929050565b600082601f830112613ea057600080fd5b8135613eb0848260208601613cf6565b91505092915050565b600081359050613ec881615f81565b92915050565b600081359050613edd81615f98565b92915050565b600081519050613ef281615f98565b92915050565b600060208284031215613f0a57600080fd5b6000613f1884828501613d34565b91505092915050565b60008060408385031215613f3457600080fd5b6000613f4285828601613d34565b9250506020613f5385828601613d34565b9150509250929050565b600080600080600060a08688031215613f7557600080fd5b6000613f8388828901613d34565b9550506020613f9488828901613d34565b945050604086013567ffffffffffffffff811115613fb157600080fd5b613fbd88828901613d9d565b935050606086013567ffffffffffffffff811115613fda57600080fd5b613fe688828901613d9d565b925050608086013567ffffffffffffffff81111561400357600080fd5b61400f88828901613e1b565b9150509295509295909350565b600080600080600060a0868803121561403457600080fd5b600061404288828901613d34565b955050602061405388828901613d34565b945050604061406488828901613ece565b935050606061407588828901613ece565b925050608086013567ffffffffffffffff81111561409257600080fd5b61409e88828901613e1b565b9150509295509295909350565b600080604083850312156140be57600080fd5b60006140cc85828601613d34565b92505060206140dd85828601613dc7565b9150509250929050565b600080604083850312156140fa57600080fd5b600061410885828601613d34565b925050602061411985828601613ece565b9150509250929050565b6000806040838503121561413657600080fd5b600083013567ffffffffffffffff81111561415057600080fd5b61415c85828601613d49565b925050602083013567ffffffffffffffff81111561417957600080fd5b61418585828601613d9d565b9150509250929050565b6000806000606084860312156141a457600080fd5b600084013567ffffffffffffffff8111156141be57600080fd5b6141ca86828701613d49565b93505060206141db86828701613dc7565b925050604084013567ffffffffffffffff8111156141f857600080fd5b61420486828701613d9d565b9150509250925092565b6000806000806080858703121561422457600080fd5b600085013567ffffffffffffffff81111561423e57600080fd5b61424a87828801613d73565b945050602085013567ffffffffffffffff81111561426757600080fd5b61427387828801613d9d565b935050604085013567ffffffffffffffff81111561429057600080fd5b61429c87828801613d73565b925050606085013567ffffffffffffffff8111156142b957600080fd5b6142c587828801613d9d565b91505092959194509250565b6000602082840312156142e357600080fd5b60006142f184828501613ddc565b91505092915050565b6000806040838503121561430d57600080fd5b600061431b85828601613ddc565b925050602061432c85828601613dc7565b9150509250929050565b6000806040838503121561434957600080fd5b600061435785828601613ddc565b925050602061436885828601613eb9565b9150509250929050565b6000806040838503121561438557600080fd5b600061439385828601613ddc565b92505060206143a485828601613ece565b9150509250929050565b6000806000606084860312156143c357600080fd5b60006143d186828701613ddc565b93505060206143e286828701613ece565b92505060406143f386828701613ddc565b9150509250925092565b6000806000806080858703121561441357600080fd5b600061442187828801613ddc565b945050602061443287828801613ece565b935050604061444387828801613ddc565b925050606061445487828801613ece565b91505092959194509250565b600080600080600080600060e0888a03121561447b57600080fd5b60006144898a828b01613ddc565b975050602061449a8a828b01613ece565b96505060406144ab8a828b01613eb9565b95505060606144bc8a828b01613eb9565b94505060806144cd8a828b01613ddc565b93505060a06144de8a828b01613ece565b92505060c06144ef8a828b01613dc7565b91505092959891949750929550565b60006020828403121561451057600080fd5b600061451e84828501613df1565b91505092915050565b60006020828403121561453957600080fd5b600061454784828501613e06565b91505092915050565b6000806020838503121561456357600080fd5b600083013567ffffffffffffffff81111561457d57600080fd5b61458985828601613e45565b92509250509250929050565b6000602082840312156145a757600080fd5b600082013567ffffffffffffffff8111156145c157600080fd5b6145cd84828501613e8f565b91505092915050565b600080604083850312156145e957600080fd5b60006145f785828601613eb9565b925050602061460885828601613d34565b9150509250929050565b60006020828403121561462457600080fd5b600061463284828501613ece565b91505092915050565b60006020828403121561464d57600080fd5b600061465b84828501613ee3565b91505092915050565b600061467083836152fe565b60208301905092915050565b61468581615c0a565b82525050565b600061469682615af9565b6146a08185615b27565b93506146ab83615ae9565b8060005b838110156146dc5781516146c38882614664565b97506146ce83615b1a565b9250506001810190506146af565b5085935050505092915050565b6146f281615c1c565b82525050565b61470181615c28565b82525050565b600061471282615b04565b61471c8185615b38565b935061472c818560208601615cb3565b61473581615e51565b840191505092915050565b600061474b82615b0f565b6147558185615b49565b9350614765818560208601615cb3565b61476e81615e51565b840191505092915050565b6000614786603483615b49565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b60006147ec602883615b49565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614852601083615b49565b91507f496e76616c6964204554482070616964000000000000000000000000000000006000830152602082019050919050565b6000614892602183615b49565b91507f54686520746f6b656e20746f206d696e7420646f6573206e6f7420657869737460008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006148f8602b83615b49565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b600061495e602683615b49565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006149c4602483615b49565b91507f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614a2a601d83615b49565b91507f546f6b656e206973206e6f74206f70656e20666f72206d696e74696e670000006000830152602082019050919050565b6000614a6a601483615b49565b91507f546f6b656e20616c7265616479206578697374730000000000000000000000006000830152602082019050919050565b6000614aaa602983615b49565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000614b10601a83615b49565b91507f596f752063616e6e6f7420676f206261636b20696e2074696d650000000000006000830152602082019050919050565b6000614b50602083615b49565b91507f4c656e67746873206f6620696e7075742073686f756c6420626520657175616c6000830152602082019050919050565b6000614b90602583615b49565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614bf6603283615b49565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b6000614c5c602383615b49565b91507f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614cc2602a83615b49565b91507f455243313135353a20696e73756666696369656e742062616c616e636520666f60008301527f72207472616e73666572000000000000000000000000000000000000000000006020830152604082019050919050565b6000614d28602083615b49565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614d68603583615b49565b91507f596f7520617265206e6f742077686974656c697374656420746f206d696e742060008301527f7468697320616d6f756e74206f6620746f6b656e7300000000000000000000006020830152604082019050919050565b6000614dce602d83615b49565b91507f496e73756666696369656e7420746f6b656e73206c65667420666f722074686960008301527f73207472616e73616374696f6e000000000000000000000000000000000000006020830152604082019050919050565b6000614e34603183615b49565b91507f596f752063616e6e6f74206d696e74206d6f726520746f6b656e73207468616e60008301527f2074686520746f74616c20737570706c790000000000000000000000000000006020830152604082019050919050565b6000614e9a602783615b49565b91507f4c656e67746873206f6620696e707574206172726179732073686f756c64206260008301527f6520657175616c000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f00603183615b49565b91507f596f752068617665206e6f2062616c616e6365206f662074686520616363657360008301527f7320746f6b656e2070726f76696465642e0000000000000000000000000000006020830152604082019050919050565b6000614f66602883615b49565b91507f596f752063616e6e6f742061646420746f6b656e7320666f722070726576696f60008301527f75732077617665730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fcc603883615b49565b91507f54686520746f6b656e2070726f766964656420746f2070726f766520796f752060008301527f63616e206d696e7420646f6573206e6f742065786973747300000000000000006020830152604082019050919050565b6000615032604683615b49565b91507f596f752063616e6e6f74206d696e74207468697320616d6f756e7420696e206f60008301527f6e65207472616e73616374696f6e20666f7220746f6b656e7320696e2074686960208301527f73207469657200000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006150be601383615b49565b91507f5469657220616c726561647920657869737473000000000000000000000000006000830152602082019050919050565b60006150fe603d83615b49565b91507f596f7520617265206e6f7420616c6c6f77656420746f206d696e74207468697360008301527f20746f6b656e206174207468697320706f696e7420696e2074696d652e0000006020830152604082019050919050565b6000615164602983615b49565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b60006151ca602983615b49565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b6000615230602883615b49565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615296602183615b49565b91507f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6152f881615c5e565b82525050565b61530781615c9a565b82525050565b61531681615c9a565b82525050565b6000602082019050615331600083018461467c565b92915050565b600060a08201905061534c600083018861467c565b615359602083018761467c565b818103604083015261536b818661468b565b9050818103606083015261537f818561468b565b905081810360808301526153938184614707565b90509695505050505050565b600060a0820190506153b4600083018861467c565b6153c1602083018761467c565b6153ce604083018661530d565b6153db606083018561530d565b81810360808301526153ed8184614707565b90509695505050505050565b60006020820190508181036000830152615413818461468b565b905092915050565b60006040820190508181036000830152615435818561468b565b90508181036020830152615449818461468b565b90509392505050565b600060208201905061546760008301846146e9565b92915050565b600060208201905081810360008301526154878184614740565b905092915050565b600060208201905081810360008301526154a881614779565b9050919050565b600060208201905081810360008301526154c8816147df565b9050919050565b600060208201905081810360008301526154e881614845565b9050919050565b6000602082019050818103600083015261550881614885565b9050919050565b60006020820190508181036000830152615528816148eb565b9050919050565b6000602082019050818103600083015261554881614951565b9050919050565b60006020820190508181036000830152615568816149b7565b9050919050565b6000602082019050818103600083015261558881614a1d565b9050919050565b600060208201905081810360008301526155a881614a5d565b9050919050565b600060208201905081810360008301526155c881614a9d565b9050919050565b600060208201905081810360008301526155e881614b03565b9050919050565b6000602082019050818103600083015261560881614b43565b9050919050565b6000602082019050818103600083015261562881614b83565b9050919050565b6000602082019050818103600083015261564881614be9565b9050919050565b6000602082019050818103600083015261566881614c4f565b9050919050565b6000602082019050818103600083015261568881614cb5565b9050919050565b600060208201905081810360008301526156a881614d1b565b9050919050565b600060208201905081810360008301526156c881614d5b565b9050919050565b600060208201905081810360008301526156e881614dc1565b9050919050565b6000602082019050818103600083015261570881614e27565b9050919050565b6000602082019050818103600083015261572881614e8d565b9050919050565b6000602082019050818103600083015261574881614ef3565b9050919050565b6000602082019050818103600083015261576881614f59565b9050919050565b6000602082019050818103600083015261578881614fbf565b9050919050565b600060208201905081810360008301526157a881615025565b9050919050565b600060208201905081810360008301526157c8816150b1565b9050919050565b600060208201905081810360008301526157e8816150f1565b9050919050565b6000602082019050818103600083015261580881615157565b9050919050565b60006020820190508181036000830152615828816151bd565b9050919050565b6000602082019050818103600083015261584881615223565b9050919050565b6000602082019050818103600083015261586881615289565b9050919050565b600060208201905061588460008301846152ef565b92915050565b600060408201905061589f60008301856152ef565b6158ac602083018461467c565b9392505050565b60006020820190506158c8600083018461530d565b92915050565b600060c0820190506158e3600083018961530d565b6158f060208301886152ef565b6158fd60408301876152ef565b61590a606083018661530d565b615917608083018561530d565b61592460a08301846146e9565b979650505050505050565b6000604082019050615944600083018561530d565b615951602083018461530d565b9392505050565b600060608201905061596d600083018661530d565b61597a602083018561530d565b61598760408301846146f8565b949350505050565b60006080820190506159a4600083018761530d565b6159b1602083018661530d565b6159be604083018561530d565b6159cb60608301846146f8565b95945050505050565b6000604051905081810181811067ffffffffffffffff821117156159fb576159fa615e22565b5b8060405250919050565b600067ffffffffffffffff821115615a2057615a1f615e22565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615a4c57615a4b615e22565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615a7857615a77615e22565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615aa457615aa3615e22565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115615ad457615ad3615e22565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615b6582615c9a565b9150615b7083615c9a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615ba557615ba4615dc4565b5b828201905092915050565b6000615bbb82615c9a565b9150615bc683615c9a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615bff57615bfe615dc4565b5b828202905092915050565b6000615c1582615c7a565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015615cd1578082015181840152602081019050615cb6565b83811115615ce0576000848401525b50505050565b6000615cf182615c9a565b91506000821415615d0557615d04615dc4565b5b600182039050919050565b60006002820490506001821680615d2857607f821691505b60208210811415615d3c57615d3b615df3565b5b50919050565b6000615d4d82615c5e565b91506fffffffffffffffffffffffffffffffff821415615d7057615d6f615dc4565b5b600182019050919050565b6000615d8682615c9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615db957615db8615dc4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015615e7f57615f22565b60046000803e615e90600051615e62565b6308c379a08114615ea15750615f22565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715615ecd57505050615f22565b808201805167ffffffffffffffff811115615eec575050505050615f22565b8060208301013d8501811115615f0757505050505050615f22565b615f1082615e51565b60208401016040528296505050505050505b90565b615f2e81615c0a565b8114615f3957600080fd5b50565b615f4581615c1c565b8114615f5057600080fd5b50565b615f5c81615c28565b8114615f6757600080fd5b50565b615f7381615c32565b8114615f7e57600080fd5b50565b615f8a81615c5e565b8114615f9557600080fd5b50565b615fa181615c9a565b8114615fac57600080fd5b5056fea26469706673582212200927c0c600adc5fcaeb4c86b62f4290582801620a080e4a0ce3d84186004999864736f6c634300080000334f6e6c79206c696d6974656420706572736f6e616c206e6f6e2d636f6d6d65726369616c2075736520616e6420726573616c652072696768747320696e20746865204e465420617265206772616e74656420616e6420616c6c20636f7079726967687420616e64206f7468657220726967687473206172652072657365727665642e20546865207465726d7320616e6420636f6e646974696f6e73206f6620416c69656e2053616d757261692044696e6f2057617272696f7273202868747470733a2f2f64696e6f77617272696f72732e696f2920617265206170706c696361626c652e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f6e66742e64696e6f77617272696f72732e696f2f6d657461646174612f7b69647d2e6a736f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003268747470733a2f2f6e66742e64696e6f77617272696f72732e696f2f6d657461646174612f636f6e74726163742e6a736f6e0000000000000000000000000000