60806040526000600a60146101000a81548160ff02191690831515021790555060405180606001604052806040815260200162004ff760409139600f9081620000499190620008d8565b507359705eb15a3965c75f871977976a8f053bc4b752601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8601160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550348015620000df57600080fd5b506040516200503738038062005037833981810160405281019062000105919062000b23565b733cc6cdda760b79bafa08df41ecfa224f810dceb66001848481600290816200012f9190620008d8565b508060039081620001419190620008d8565b5062000152620003da60201b60201c565b60008190555050506200017a6200016e620003e360201b60201c565b620003eb60201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200036f57801562000235576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001fb92919062000c21565b600060405180830381600087803b1580156200021657600080fd5b505af11580156200022b573d6000803e3d6000fd5b505050506200036e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002ef576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002b592919062000c21565b600060405180830381600087803b158015620002d057600080fd5b505af1158015620002e5573d6000803e3d6000fd5b505050506200036d565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b815260040162000338919062000c4e565b600060405180830381600087803b1580156200035357600080fd5b505af115801562000368573d6000803e3d6000fd5b505050505b5b5b505080600b9081620003829190620008d8565b50620003d1601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160149054906101000a90046bffffffffffffffffffffffff16620004b160201b60201c565b50505062000d86565b60006001905090565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004c16200065460201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000522576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005199062000cf2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200058b9062000d64565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006e057607f821691505b602082108103620006f657620006f562000698565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000721565b6200076c868362000721565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007b9620007b3620007ad8462000784565b6200078e565b62000784565b9050919050565b6000819050919050565b620007d58362000798565b620007ed620007e482620007c0565b8484546200072e565b825550505050565b600090565b62000804620007f5565b62000811818484620007ca565b505050565b5b8181101562000839576200082d600082620007fa565b60018101905062000817565b5050565b601f82111562000888576200085281620006fc565b6200085d8462000711565b810160208510156200086d578190505b620008856200087c8562000711565b83018262000816565b50505b505050565b600082821c905092915050565b6000620008ad600019846008026200088d565b1980831691505092915050565b6000620008c883836200089a565b9150826002028217905092915050565b620008e3826200065e565b67ffffffffffffffff811115620008ff57620008fe62000669565b5b6200090b8254620006c7565b620009188282856200083d565b600060209050601f8311600181146200095057600084156200093b578287015190505b620009478582620008ba565b865550620009b7565b601f1984166200096086620006fc565b60005b828110156200098a5784890151825560018201915060208501945060208101905062000963565b86831015620009aa5784890151620009a6601f8916826200089a565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620009f982620009dd565b810181811067ffffffffffffffff8211171562000a1b5762000a1a62000669565b5b80604052505050565b600062000a30620009bf565b905062000a3e8282620009ee565b919050565b600067ffffffffffffffff82111562000a615762000a6062000669565b5b62000a6c82620009dd565b9050602081019050919050565b60005b8381101562000a9957808201518184015260208101905062000a7c565b60008484015250505050565b600062000abc62000ab68462000a43565b62000a24565b90508281526020810184848401111562000adb5762000ada620009d8565b5b62000ae884828562000a79565b509392505050565b600082601f83011262000b085762000b07620009d3565b5b815162000b1a84826020860162000aa5565b91505092915050565b60008060006060848603121562000b3f5762000b3e620009c9565b5b600084015167ffffffffffffffff81111562000b605762000b5f620009ce565b5b62000b6e8682870162000af0565b935050602084015167ffffffffffffffff81111562000b925762000b91620009ce565b5b62000ba08682870162000af0565b925050604084015167ffffffffffffffff81111562000bc45762000bc3620009ce565b5b62000bd28682870162000af0565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c098262000bdc565b9050919050565b62000c1b8162000bfc565b82525050565b600060408201905062000c38600083018562000c10565b62000c47602083018462000c10565b9392505050565b600060208201905062000c65600083018462000c10565b92915050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000cda602a8362000c6b565b915062000ce78262000c7c565b604082019050919050565b6000602082019050818103600083015262000d0d8162000ccb565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000d4c60198362000c6b565b915062000d598262000d14565b602082019050919050565b6000602082019050818103600083015262000d7f8162000d3d565b9050919050565b6142618062000d966000396000f3fe6080604052600436106102255760003560e01c8063715018a611610123578063b8997a97116100ab578063e8a3d4851161006f578063e8a3d485146107c0578063e95a644f146107eb578063e985e9c514610814578063e986655014610851578063f2fde38b1461086857610225565b8063b8997a97146106d7578063bf669ed514610702578063c87b56dd1461072d578063cb774d471461076a578063d547cfb71461079557610225565b8063a22cb465116100f2578063a22cb46514610611578063a57c76ad1461063a578063ad2f852a14610665578063af92020614610690578063b88d4fde146106bb57610225565b8063715018a61461057b5780638da5cb5b14610592578063938e3d7b146105bd57806395d89b41146105e657610225565b806323b872dd116101b157806355f804b31161017557806355f804b31461048657806362552fec146104af5780636352211e146104d8578063672434821461051557806370a082311461053e57610225565b806323b872dd146103bc5780632a55205a146103d857806331faafb41461041657806332cb6b0c1461043f57806342842e0e1461046a57610225565b8063095ea7b3116101f8578063095ea7b3146102f85780630f7309e814610314578063109695231461033f57806318160ddd146103685780631bd2eeee1461039357610225565b806301ffc9a71461022a57806306d254da1461026757806306fdde0314610290578063081812fc146102bb575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c9190612c13565b610891565b60405161025e9190612c5b565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190612cd4565b6108a3565b005b34801561029c57600080fd5b506102a5610935565b6040516102b29190612d91565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd9190612de9565b6109c7565b6040516102ef9190612e25565b60405180910390f35b610312600480360381019061030d9190612e40565b610a46565b005b34801561032057600080fd5b50610329610b8a565b6040516103369190612d91565b60405180910390f35b34801561034b57600080fd5b5061036660048036038101906103619190612fb5565b610c18565b005b34801561037457600080fd5b5061037d610c3a565b60405161038a919061300d565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612de9565b610c51565b005b6103d660048036038101906103d19190613028565b610d98565b005b3480156103e457600080fd5b506103ff60048036038101906103fa919061307b565b610ef4565b60405161040d9291906130bb565b60405180910390f35b34801561042257600080fd5b5061043d60048036038101906104389190613128565b6110de565b005b34801561044b57600080fd5b50610454611160565b604051610461919061300d565b60405180910390f35b610484600480360381019061047f9190613028565b611166565b005b34801561049257600080fd5b506104ad60048036038101906104a891906131b5565b6112c2565b005b3480156104bb57600080fd5b506104d660048036038101906104d1919061322e565b6112e0565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190612de9565b611305565b60405161050c9190612e25565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906133e1565b611317565b005b34801561054a57600080fd5b5061056560048036038101906105609190612cd4565b611381565b604051610572919061300d565b60405180910390f35b34801561058757600080fd5b50610590611439565b005b34801561059e57600080fd5b506105a761144d565b6040516105b49190612e25565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df91906131b5565b611477565b005b3480156105f257600080fd5b506105fb611495565b6040516106089190612d91565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190613459565b611527565b005b34801561064657600080fd5b5061064f611632565b60405161065c919061300d565b60405180910390f35b34801561067157600080fd5b5061067a611638565b6040516106879190612e25565b60405180910390f35b34801561069c57600080fd5b506106a561165e565b6040516106b29190612c5b565b60405180910390f35b6106d560048036038101906106d0919061353a565b611671565b005b3480156106e357600080fd5b506106ec6117cf565b6040516106f991906135cc565b60405180910390f35b34801561070e57600080fd5b506107176117ed565b604051610724919061300d565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190612de9565b6117f3565b6040516107619190612d91565b60405180910390f35b34801561077657600080fd5b5061077f611875565b60405161078c919061300d565b60405180910390f35b3480156107a157600080fd5b506107aa61187b565b6040516107b79190612d91565b60405180910390f35b3480156107cc57600080fd5b506107d5611909565b6040516107e29190612d91565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d9190612de9565b611997565b005b34801561082057600080fd5b5061083b600480360381019061083691906135e7565b611ade565b6040516108489190612c5b565b60405180910390f35b34801561085d57600080fd5b50610866611b72565b005b34801561087457600080fd5b5061088f600480360381019061088a9190612cd4565b611bd9565b005b600061089c82611c5c565b9050919050565b6108ab611cd6565b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610932601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160149054906101000a90046bffffffffffffffffffffffff16611d54565b50565b60606002805461094490613656565b80601f016020809104026020016040519081016040528092919081815260200182805461097090613656565b80156109bd5780601f10610992576101008083540402835291602001916109bd565b820191906000526020600020905b8154815290600101906020018083116109a057829003601f168201915b5050505050905090565b60006109d282611ee9565b610a08576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a5182611305565b90508073ffffffffffffffffffffffffffffffffffffffff16610a72611f48565b73ffffffffffffffffffffffffffffffffffffffff1614610ad557610a9e81610a99611f48565b611ade565b610ad4576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600f8054610b9790613656565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc390613656565b8015610c105780601f10610be557610100808354040283529160200191610c10565b820191906000526020600020905b815481529060010190602001808311610bf357829003601f168201915b505050505081565b610c20611cd6565b80600f9081610c2f9190613833565b504260108190555050565b6000610c44611f50565b6001546000540303905090565b803373ffffffffffffffffffffffffffffffffffffffff16610c7282611305565b73ffffffffffffffffffffffffffffffffffffffff1614610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90613951565b60405180910390fd5b600115156012600084815260200190815260200160002060009054906101000a900460ff16151514610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d26906139bd565b60405180910390fd5b60006012600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507f5f56f72b1cd7de6f6d20a960c3287ccb7d1acbc0e44f96885c6ab556eae102ea3383604051610d8c9291906130bb565b60405180910390a15050565b82600a60149054906101000a900460ff168015610de157503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15610ee35760006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610ee2576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610e5d9291906139dd565b6020604051808303816000875af1158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190613a1b565b610ee157336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610ed89190612e25565b60405180910390fd5b5b5b610eee848484611f59565b50505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036110895760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b600061109361227b565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866110bf9190613a77565b6110c99190613ae8565b90508160000151819350935050509250929050565b6110e6611cd6565b80601160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061115d601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160149054906101000a90046bffffffffffffffffffffffff16611d54565b50565b61145081565b82600a60149054906101000a900460ff1680156111af57503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156112b15760006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156112b0576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b815260040161122b9291906139dd565b6020604051808303816000875af115801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190613a1b565b6112af57336040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016112a69190612e25565b60405180910390fd5b5b5b6112bc848484612285565b50505050565b6112ca611cd6565b8181600b91826112db929190613b24565b505050565b6112e8611cd6565b80600a60146101000a81548160ff02191690831515021790555050565b6000611310826122a5565b9050919050565b61131f611cd6565b60005b825181101561137c5761136983828151811061134157611340613bf4565b5b602002602001015183838151811061135c5761135b613bf4565b5b6020026020010151612371565b808061137490613c23565b915050611322565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113e8576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611441611cd6565b61144b600061252c565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61147f611cd6565b8181600c9182611490929190613b24565b505050565b6060600380546114a490613656565b80601f01602080910402602001604051908101604052809291908181526020018280546114d090613656565b801561151d5780601f106114f25761010080835404028352916020019161151d565b820191906000526020600020905b81548152906001019060200180831161150057829003601f168201915b5050505050905090565b8060076000611534611f48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115e1611f48565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116269190612c5b565b60405180910390a35050565b600e5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b83600a60149054906101000a900460ff1680156116ba57503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156117bc5760006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156117bb576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b81526004016117369291906139dd565b6020604051808303816000875af1158015611755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117799190613a1b565b6117ba57336040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016117b19190612e25565b60405180910390fd5b5b5b6117c8858585856125f2565b5050505050565b601160149054906101000a90046bffffffffffffffffffffffff1681565b60105481565b60606117fe82611ee9565b61183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613cb7565b60405180910390fd5b611845612665565b61184e836126f7565b60405160200161185f929190613d5f565b6040516020818303038152906040529050919050565b600d5481565b600b805461188890613656565b80601f01602080910402602001604051908101604052809291908181526020018280546118b490613656565b80156119015780601f106118d657610100808354040283529160200191611901565b820191906000526020600020905b8154815290600101906020018083116118e457829003601f168201915b505050505081565b600c805461191690613656565b80601f016020809104026020016040519081016040528092919081815260200182805461194290613656565b801561198f5780601f106119645761010080835404028352916020019161198f565b820191906000526020600020905b81548152906001019060200180831161197257829003601f168201915b505050505081565b803373ffffffffffffffffffffffffffffffffffffffff166119b882611305565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613951565b60405180910390fd5b600015156012600084815260200190815260200160002060009054906101000a900460ff16151514611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613dda565b60405180910390fd5b60016012600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdddb6e14f7f2101397a6526aab95e964de7f1f44ed06aa47a1c9a0e6b99244563383604051611ad29291906130bb565b60405180910390a15050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b7a611cd6565b6000600d5414611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690613e46565b60405180910390fd5b611bca611450612857565b600d8190555042600e81905550565b611be1611cd6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4790613ed8565b60405180910390fd5b611c598161252c565b50565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ccf5750611cce82612902565b5b9050919050565b611cde61296c565b73ffffffffffffffffffffffffffffffffffffffff16611cfc61144d565b73ffffffffffffffffffffffffffffffffffffffff1614611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990613f44565b60405180910390fd5b565b611d5c61227b565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190613fd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090614042565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b600081611ef4611f50565b11158015611f03575060005482105b8015611f41575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b6000611f64826122a5565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611fcb576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611fd784612974565b91509150611fed8187611fe8611f48565b61299b565b6120395761200286611ffd611f48565b611ade565b612038576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361209f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120ac86868660016129df565b80156120b757600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550612185856121618888876129e5565b7c020000000000000000000000000000000000000000000000000000000017612a0d565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084160361220b5760006001850190506000600460008381526020019081526020016000205403612209576000548114612208578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122738686866001612a38565b505050505050565b6000612710905090565b6122a083838360405180602001604052806000815250611671565b505050565b600080829050806122b4611f50565b1161233a576000548110156123395760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612337575b6000810361232d576004600083600190039350838152602001908152602001600020549050612303565b809250505061236c565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600080549050600082036123b1576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123be60008483856129df565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506124358361242660008660006129e5565b61242f85612a3e565b17612a0d565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146124d657808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905061249b565b5060008203612511576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506125276000848385612a38565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6125fd848484610d98565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461265f5761262884848484612a4e565b61265e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060600b805461267490613656565b80601f01602080910402602001604051908101604052809291908181526020018280546126a090613656565b80156126ed5780601f106126c2576101008083540402835291602001916126ed565b820191906000526020600020905b8154815290600101906020018083116126d057829003601f168201915b5050505050905090565b60606000820361273e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612852565b600082905060005b6000821461277057808061275990613c23565b915050600a826127699190613ae8565b9150612746565b60008167ffffffffffffffff81111561278c5761278b612e8a565b5b6040519080825280601f01601f1916602001820160405280156127be5781602001600182028036833780820191505090505b5090505b6000851461284b576001826127d79190614062565b9150600a856127e69190614096565b60306127f291906140c7565b60f81b81838151811061280857612807613bf4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856128449190613ae8565b94506127c2565b8093505050505b919050565b6000806000444260405160200161286f92919061411c565b6040516020818303038152906040528051906020012060001c905060ff816128979190614096565b60016128a391906140c7565b9050804310156128b257600190505b600081436128c09190614062565b905084814060001c6128d29190614096565b92506000600a846128e39190614096565b036128f75782806128f390613c23565b9350505b829350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86129fc868684612b9e565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b60006001821460e11b9050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a74611f48565b8786866040518563ffffffff1660e01b8152600401612a96949392919061419d565b6020604051808303816000875af1925050508015612ad257506040513d601f19601f82011682018060405250810190612acf91906141fe565b60015b612b4b573d8060008114612b02576040519150601f19603f3d011682016040523d82523d6000602084013e612b07565b606091505b506000815103612b43576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612bf081612bbb565b8114612bfb57600080fd5b50565b600081359050612c0d81612be7565b92915050565b600060208284031215612c2957612c28612bb1565b5b6000612c3784828501612bfe565b91505092915050565b60008115159050919050565b612c5581612c40565b82525050565b6000602082019050612c706000830184612c4c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ca182612c76565b9050919050565b612cb181612c96565b8114612cbc57600080fd5b50565b600081359050612cce81612ca8565b92915050565b600060208284031215612cea57612ce9612bb1565b5b6000612cf884828501612cbf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3b578082015181840152602081019050612d20565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6382612d01565b612d6d8185612d0c565b9350612d7d818560208601612d1d565b612d8681612d47565b840191505092915050565b60006020820190508181036000830152612dab8184612d58565b905092915050565b6000819050919050565b612dc681612db3565b8114612dd157600080fd5b50565b600081359050612de381612dbd565b92915050565b600060208284031215612dff57612dfe612bb1565b5b6000612e0d84828501612dd4565b91505092915050565b612e1f81612c96565b82525050565b6000602082019050612e3a6000830184612e16565b92915050565b60008060408385031215612e5757612e56612bb1565b5b6000612e6585828601612cbf565b9250506020612e7685828601612dd4565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ec282612d47565b810181811067ffffffffffffffff82111715612ee157612ee0612e8a565b5b80604052505050565b6000612ef4612ba7565b9050612f008282612eb9565b919050565b600067ffffffffffffffff821115612f2057612f1f612e8a565b5b612f2982612d47565b9050602081019050919050565b82818337600083830152505050565b6000612f58612f5384612f05565b612eea565b905082815260208101848484011115612f7457612f73612e85565b5b612f7f848285612f36565b509392505050565b600082601f830112612f9c57612f9b612e80565b5b8135612fac848260208601612f45565b91505092915050565b600060208284031215612fcb57612fca612bb1565b5b600082013567ffffffffffffffff811115612fe957612fe8612bb6565b5b612ff584828501612f87565b91505092915050565b61300781612db3565b82525050565b60006020820190506130226000830184612ffe565b92915050565b60008060006060848603121561304157613040612bb1565b5b600061304f86828701612cbf565b935050602061306086828701612cbf565b925050604061307186828701612dd4565b9150509250925092565b6000806040838503121561309257613091612bb1565b5b60006130a085828601612dd4565b92505060206130b185828601612dd4565b9150509250929050565b60006040820190506130d06000830185612e16565b6130dd6020830184612ffe565b9392505050565b60006bffffffffffffffffffffffff82169050919050565b613105816130e4565b811461311057600080fd5b50565b600081359050613122816130fc565b92915050565b60006020828403121561313e5761313d612bb1565b5b600061314c84828501613113565b91505092915050565b600080fd5b600080fd5b60008083601f84011261317557613174612e80565b5b8235905067ffffffffffffffff81111561319257613191613155565b5b6020830191508360018202830111156131ae576131ad61315a565b5b9250929050565b600080602083850312156131cc576131cb612bb1565b5b600083013567ffffffffffffffff8111156131ea576131e9612bb6565b5b6131f68582860161315f565b92509250509250929050565b61320b81612c40565b811461321657600080fd5b50565b60008135905061322881613202565b92915050565b60006020828403121561324457613243612bb1565b5b600061325284828501613219565b91505092915050565b600067ffffffffffffffff82111561327657613275612e8a565b5b602082029050602081019050919050565b600061329a6132958461325b565b612eea565b905080838252602082019050602084028301858111156132bd576132bc61315a565b5b835b818110156132e657806132d28882612cbf565b8452602084019350506020810190506132bf565b5050509392505050565b600082601f83011261330557613304612e80565b5b8135613315848260208601613287565b91505092915050565b600067ffffffffffffffff82111561333957613338612e8a565b5b602082029050602081019050919050565b600061335d6133588461331e565b612eea565b905080838252602082019050602084028301858111156133805761337f61315a565b5b835b818110156133a957806133958882612dd4565b845260208401935050602081019050613382565b5050509392505050565b600082601f8301126133c8576133c7612e80565b5b81356133d884826020860161334a565b91505092915050565b600080604083850312156133f8576133f7612bb1565b5b600083013567ffffffffffffffff81111561341657613415612bb6565b5b613422858286016132f0565b925050602083013567ffffffffffffffff81111561344357613442612bb6565b5b61344f858286016133b3565b9150509250929050565b600080604083850312156134705761346f612bb1565b5b600061347e85828601612cbf565b925050602061348f85828601613219565b9150509250929050565b600067ffffffffffffffff8211156134b4576134b3612e8a565b5b6134bd82612d47565b9050602081019050919050565b60006134dd6134d884613499565b612eea565b9050828152602081018484840111156134f9576134f8612e85565b5b613504848285612f36565b509392505050565b600082601f83011261352157613520612e80565b5b81356135318482602086016134ca565b91505092915050565b6000806000806080858703121561355457613553612bb1565b5b600061356287828801612cbf565b945050602061357387828801612cbf565b935050604061358487828801612dd4565b925050606085013567ffffffffffffffff8111156135a5576135a4612bb6565b5b6135b18782880161350c565b91505092959194509250565b6135c6816130e4565b82525050565b60006020820190506135e160008301846135bd565b92915050565b600080604083850312156135fe576135fd612bb1565b5b600061360c85828601612cbf565b925050602061361d85828601612cbf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061366e57607f821691505b60208210810361368157613680613627565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026136e97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826136ac565b6136f386836136ac565b95508019841693508086168417925050509392505050565b6000819050919050565b600061373061372b61372684612db3565b61370b565b612db3565b9050919050565b6000819050919050565b61374a83613715565b61375e61375682613737565b8484546136b9565b825550505050565b600090565b613773613766565b61377e818484613741565b505050565b5b818110156137a25761379760008261376b565b600181019050613784565b5050565b601f8211156137e7576137b881613687565b6137c18461369c565b810160208510156137d0578190505b6137e46137dc8561369c565b830182613783565b50505b505050565b600082821c905092915050565b600061380a600019846008026137ec565b1980831691505092915050565b600061382383836137f9565b9150826002028217905092915050565b61383c82612d01565b67ffffffffffffffff81111561385557613854612e8a565b5b61385f8254613656565b61386a8282856137a6565b600060209050601f83116001811461389d576000841561388b578287015190505b6138958582613817565b8655506138fd565b601f1984166138ab86613687565b60005b828110156138d3578489015182556001820191506020850194506020810190506138ae565b868310156138f057848901516138ec601f8916826137f9565b8355505b6001600288020188555050505b505050505050565b7f4973206e6f7420796f757220746f6b656e000000000000000000000000000000600082015250565b600061393b601183612d0c565b915061394682613905565b602082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f416c726561647920636865636b6564206f757400000000000000000000000000600082015250565b60006139a7601383612d0c565b91506139b282613971565b602082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b60006040820190506139f26000830185612e16565b6139ff6020830184612e16565b9392505050565b600081519050613a1581613202565b92915050565b600060208284031215613a3157613a30612bb1565b5b6000613a3f84828501613a06565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a8282612db3565b9150613a8d83612db3565b9250828202613a9b81612db3565b91508282048414831517613ab257613ab1613a48565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613af382612db3565b9150613afe83612db3565b925082613b0e57613b0d613ab9565b5b828204905092915050565b600082905092915050565b613b2e8383613b19565b67ffffffffffffffff811115613b4757613b46612e8a565b5b613b518254613656565b613b5c8282856137a6565b6000601f831160018114613b8b5760008415613b79578287013590505b613b838582613817565b865550613beb565b601f198416613b9986613687565b60005b82811015613bc157848901358255600182019150602085019450602081019050613b9c565b86831015613bde5784890135613bda601f8916826137f9565b8355505b6001600288020188555050505b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c2e82612db3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c6057613c5f613a48565b5b600182019050919050565b7f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e00600082015250565b6000613ca1601f83612d0c565b9150613cac82613c6b565b602082019050919050565b60006020820190508181036000830152613cd081613c94565b9050919050565b600081905092915050565b6000613ced82612d01565b613cf78185613cd7565b9350613d07818560208601612d1d565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613d49600583613cd7565b9150613d5482613d13565b600582019050919050565b6000613d6b8285613ce2565b9150613d778284613ce2565b9150613d8282613d3c565b91508190509392505050565b7f416c726561647920636865636b656420696e0000000000000000000000000000600082015250565b6000613dc4601283612d0c565b9150613dcf82613d8e565b602082019050919050565b60006020820190508181036000830152613df381613db7565b9050919050565b7f5374617274696e6720696e64657820616c726561647920736574000000000000600082015250565b6000613e30601a83612d0c565b9150613e3b82613dfa565b602082019050919050565b60006020820190508181036000830152613e5f81613e23565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ec2602683612d0c565b9150613ecd82613e66565b604082019050919050565b60006020820190508181036000830152613ef181613eb5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f2e602083612d0c565b9150613f3982613ef8565b602082019050919050565b60006020820190508181036000830152613f5d81613f21565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000613fc0602a83612d0c565b9150613fcb82613f64565b604082019050919050565b60006020820190508181036000830152613fef81613fb3565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600061402c601983612d0c565b915061403782613ff6565b602082019050919050565b6000602082019050818103600083015261405b8161401f565b9050919050565b600061406d82612db3565b915061407883612db3565b92508282039050818111156140905761408f613a48565b5b92915050565b60006140a182612db3565b91506140ac83612db3565b9250826140bc576140bb613ab9565b5b828206905092915050565b60006140d282612db3565b91506140dd83612db3565b92508282019050808211156140f5576140f4613a48565b5b92915050565b6000819050919050565b61411661411182612db3565b6140fb565b82525050565b60006141288285614105565b6020820191506141388284614105565b6020820191508190509392505050565b600081519050919050565b600082825260208201905092915050565b600061416f82614148565b6141798185614153565b9350614189818560208601612d1d565b61419281612d47565b840191505092915050565b60006080820190506141b26000830187612e16565b6141bf6020830186612e16565b6141cc6040830185612ffe565b81810360608301526141de8184614164565b905095945050505050565b6000815190506141f881612be7565b92915050565b60006020828403121561421457614213612bb1565b5b6000614222848285016141e9565b9150509291505056fea264697066735822122007220041a60dce1b02e50fb71bc6af91bff0c4a6b8deddc6ebe2833135d94ec064736f6c6343000811003333636534326636393635353966383663636136613332656336306265643935313533666664363630383564623164313432613465336630633161383530363633000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000d4b757274546865526f616469650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b555254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569667833367a7162746f62636c6e79787276687873767733646761356c657237767a34756c6b63727a646f7a6875706d61796865692f0000000000000000000000000000000000000000000000000000000000