60a06040523480156200001157600080fd5b50604051620050f5380380620050f5833981810160405281019062000037919062000889565b806040518060400160405280601381526020017f50726f626162696c69747942617365644e4654000000000000000000000000008152506040518060400160405280600581526020017f50424e46540000000000000000000000000000000000000000000000000000008152508160009081620000b5919062000b52565b508060019081620000c7919062000b52565b505050620000ea620000de6200025660201b60201c565b6200025e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663addf027c3060016040518363ffffffff1660e01b81526004016200015c92919062000c67565b600060405180830381600087803b1580156200017757600080fd5b505af11580156200018c573d6000803e3d6000fd5b5050505050601860ff16601814620001db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001d29062000cf5565b60405180910390fd5b601860ff1660181462000225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021c9062000d67565b60405180910390fd5b8260119060186200023892919062000324565b508160129060186200024c929190620003c5565b5050505062000d89565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b826018601f01602090048101928215620003b25791602002820160005b838211156200038157835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030262000341565b8015620003b05782816101000a81549060ff021916905560010160208160000104928301926001030262000381565b505b509050620003c1919062000418565b5090565b826018810192821562000405579160200282015b8281111562000404578251829081620003f3919062000b52565b5091602001919060010190620003d9565b5b50905062000414919062000437565b5090565b5b808211156200043357600081600090555060010162000419565b5090565b5b808211156200045b57600081816200045191906200045f565b5060010162000438565b5090565b5080546200046d9062000941565b6000825580601f10620004815750620004a2565b601f016020900490600052602060002090810190620004a1919062000418565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050982620004be565b810181811067ffffffffffffffff821117156200052b576200052a620004cf565b5b80604052505050565b600062000540620004a5565b90506200054e8282620004fe565b919050565b600067ffffffffffffffff821115620005715762000570620004cf565b5b602082029050919050565b600080fd5b600060ff82169050919050565b620005998162000581565b8114620005a557600080fd5b50565b600081519050620005b9816200058e565b92915050565b6000620005d6620005d08462000553565b62000534565b90508060208402830185811115620005f357620005f26200057c565b5b835b818110156200062057806200060b8882620005a8565b845260208401935050602081019050620005f5565b5050509392505050565b600082601f830112620006425762000641620004b9565b5b601862000651848285620005bf565b91505092915050565b600067ffffffffffffffff821115620006785762000677620004cf565b5b602082029050919050565b600080fd5b600067ffffffffffffffff821115620006a657620006a5620004cf565b5b620006b182620004be565b9050602081019050919050565b60005b83811015620006de578082015181840152602081019050620006c1565b60008484015250505050565b600062000701620006fb8462000688565b62000534565b90508281526020810184848401111562000720576200071f62000683565b5b6200072d848285620006be565b509392505050565b600082601f8301126200074d576200074c620004b9565b5b81516200075f848260208601620006ea565b91505092915050565b60006200077f62000779846200065a565b62000534565b905080602084028301858111156200079c576200079b6200057c565b5b835b81811015620007ea57805167ffffffffffffffff811115620007c557620007c4620004b9565b5b808601620007d4898262000735565b855260208501945050506020810190506200079e565b5050509392505050565b600082601f8301126200080c576200080b620004b9565b5b60186200081b84828562000768565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008518262000824565b9050919050565b620008638162000844565b81146200086f57600080fd5b50565b600081519050620008838162000858565b92915050565b60008060006103408486031215620008a657620008a5620004af565b5b6000620008b6868287016200062a565b93505061030084015167ffffffffffffffff811115620008db57620008da620004b4565b5b620008e986828701620007f4565b925050610320620008fd8682870162000872565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200095a57607f821691505b60208210810362000970576200096f62000912565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200099b565b620009e686836200099b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a3362000a2d62000a2784620009fe565b62000a08565b620009fe565b9050919050565b6000819050919050565b62000a4f8362000a12565b62000a6762000a5e8262000a3a565b848454620009a8565b825550505050565b600090565b62000a7e62000a6f565b62000a8b81848462000a44565b505050565b5b8181101562000ab35762000aa760008262000a74565b60018101905062000a91565b5050565b601f82111562000b025762000acc8162000976565b62000ad7846200098b565b8101602085101562000ae7578190505b62000aff62000af6856200098b565b83018262000a90565b50505b505050565b600082821c905092915050565b600062000b276000198460080262000b07565b1980831691505092915050565b600062000b42838362000b14565b9150826002028217905092915050565b62000b5d8262000907565b67ffffffffffffffff81111562000b795762000b78620004cf565b5b62000b85825462000941565b62000b9282828562000ab7565b600060209050601f83116001811462000bca576000841562000bb5578287015190505b62000bc1858262000b34565b86555062000c31565b601f19841662000bda8662000976565b60005b8281101562000c045784890151825560018201915060208501945060208101905062000bdd565b8683101562000c24578489015162000c20601f89168262000b14565b8355505b6001600288020188555050505b505050505050565b62000c448162000844565b82525050565b60008115159050919050565b62000c618162000c4a565b82525050565b600060408201905062000c7e600083018562000c39565b62000c8d602083018462000c56565b9392505050565b600082825260208201905092915050565b7f496e76616c69642070726f626162696c6974696573206c656e67746800000000600082015250565b600062000cdd601c8362000c94565b915062000cea8262000ca5565b602082019050919050565b6000602082019050818103600083015262000d108162000cce565b9050919050565b7f496e76616c69642049504653206c696e6b73206c656e67746800000000000000600082015250565b600062000d4f60198362000c94565b915062000d5c8262000d17565b602082019050919050565b6000602082019050818103600083015262000d828162000d40565b9050919050565b60805161434262000db360003960008181610d65015281816111f0015261138c01526143426000f3fe6080604052600436106101ee5760003560e01c806375794a3c1161010d578063a36ff4d8116100a0578063c87b56dd1161006f578063c87b56dd14610750578063d7526cba1461078d578063e985e9c5146107ca578063f2fde38b14610807578063f8833efd14610830576101ee565b8063a36ff4d814610694578063b88d4fde146106bf578063bf90fb4e146106e8578063c512e93a14610713576101ee565b806395d89b41116100dc57806395d89b41146105ec5780639b4c6cfb14610617578063a19954af14610640578063a22cb4651461066b576101ee565b806375794a3c146105305780637bdf25251461055b578063851244f7146105845780638da5cb5b146105c1576101ee565b8063274ac0c3116101855780636352211e116101545780636352211e1461047457806370a08231146104b1578063715018a6146104ee57806371bab66614610505576101ee565b8063274ac0c3146103a157806342842e0e146103de57806353576f5d146104075780635cb960e314610437576101ee565b80631af9db4f116101c15780631af9db4f146102c15780631cd962a2146102fe57806323b872dd1461033b5780632627dcec14610364576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612985565b61086d565b60405161022791906129cd565b60405180910390f35b34801561023c57600080fd5b5061024561094f565b6040516102529190612a78565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612ad0565b6109e1565b60405161028f9190612b3e565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612b85565b610a27565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612ad0565b610b3e565b6040516102f59190612a78565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612ad0565b610be1565b6040516103329190612c3c565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612c57565b610c95565b005b34801561037057600080fd5b5061038b60048036038101906103869190612ce0565b610cf5565b6040516103989190612d1c565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c39190612ce0565b610d0d565b6040516103d59190612b3e565b60405180910390f35b3480156103ea57600080fd5b5061040560048036038101906104009190612c57565b610d40565b005b610421600480360381019061041c9190612ad0565b610d60565b60405161042e9190612d46565b60405180910390f35b34801561044357600080fd5b5061045e60048036038101906104599190612ad0565b611048565b60405161046b9190612c3c565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190612ad0565b611072565b6040516104a89190612b3e565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190612d61565b611123565b6040516104e59190612d1c565b60405180910390f35b3480156104fa57600080fd5b506105036111da565b005b34801561051157600080fd5b5061051a6111ee565b6040516105279190612ded565b60405180910390f35b34801561053c57600080fd5b50610545611212565b6040516105529190612d1c565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190612e08565b611218565b005b34801561059057600080fd5b506105ab60048036038101906105a69190612ce0565b6112ae565b6040516105b891906129cd565b60405180910390f35b3480156105cd57600080fd5b506105d66112ce565b6040516105e39190612b3e565b60405180910390f35b3480156105f857600080fd5b506106016112f8565b60405161060e9190612a78565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612ec0565b61138a565b005b34801561064c57600080fd5b506106556116ba565b6040516106629190612d46565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612f4c565b6116c0565b005b3480156106a057600080fd5b506106a96116d6565b6040516106b69190612b3e565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e191906130bc565b6116fc565b005b3480156106f457600080fd5b506106fd61175e565b60405161070a9190612b3e565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190612ad0565b611784565b6040516107479190612c3c565b60405180910390f35b34801561075c57600080fd5b5061077760048036038101906107729190612ad0565b6117a4565b6040516107849190612a78565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613164565b6117bf565b6040516107c19190612d1c565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec91906131a4565b6117e4565b6040516107fe91906129cd565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190612d61565b611878565b005b34801561083c57600080fd5b5061085760048036038101906108529190612ad0565b6118fb565b6040516108649190613200565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610948575061094782611925565b5b9050919050565b60606000805461095e9061324a565b80601f016020809104026020016040519081016040528092919081815260200182805461098a9061324a565b80156109d75780601f106109ac576101008083540402835291602001916109d7565b820191906000526020600020905b8154815290600101906020018083116109ba57829003601f168201915b5050505050905090565b60006109ec8261198f565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a3282611072565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a99906132ed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ac16119da565b73ffffffffffffffffffffffffffffffffffffffff161480610af05750610aef81610aea6119da565b6117e4565b5b610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b269061337f565b60405180910390fd5b610b3983836119e2565b505050565b60128160188110610b4e57600080fd5b016000915090508054610b609061324a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8c9061324a565b8015610bd95780601f10610bae57610100808354040283529160200191610bd9565b820191906000526020600020905b815481529060010190602001808311610bbc57829003601f168201915b505050505081565b6000806000905060005b601860ff16811015610c685760118160188110610c0b57610c0a61339f565b5b602091828204019190069054906101000a900460ff1660ff1682610c2f91906133fd565b915081841015610c5557806017811115610c4c57610c4b612bc5565b5b92505050610c90565b8080610c6090613431565b915050610beb565b5060016018610c779190613479565b60ff166017811115610c8c57610c8b612bc5565b5b9150505b919050565b610ca6610ca06119da565b82611a9b565b610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90613520565b60405180910390fd5b610cf0838383611b30565b505050565b600e6020528060005260406000206000915090505481565b600d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d5b838383604051806020016040528060008152506116fc565b505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e6be03f600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660095430600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630639b4c6cfb60e01b8a604051602001610e039190612d1c565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610e3497969594939291906135a4565b6020604051808303816000875af1158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e77919061362f565b90506001600c600083815260200190815260200160002060006101000a81548160ff02191690831515021790555033600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600e6000838152602001908152602001600020819055506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168466038d7ea4c68000610f5d919061365c565b604051610f69906136cf565b60006040518083038185875af1925050503d8060008114610fa6576040519150601f19603f3d011682016040523d82523d6000602084013e610fab565b606091505b5050905080610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690613730565b60405180910390fd5b813373ffffffffffffffffffffffffffffffffffffffff167f555a9ffdb8e22624ae5d56952da9667a7efaf02d3ce9841ebcd1d11044774438866040516110369190612d1c565b60405180910390a38192505050919050565b6000600f600083815260200190815260200160002060009054906101000a900460ff169050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061379c565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a9061382e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111e2611d96565b6111ec6000611e14565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5481565b611220611d96565b82600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160098190555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546113079061324a565b80601f01602080910402602001604051908101604052809291908181526020018280546113339061324a565b80156113805780601f1061135557610100808354040283529160200191611380565b820191906000526020600020905b81548152906001019060200180831161136357829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f9061389a565b60405180910390fd5b600c600084815260200190815260200160002060009054906101000a900460ff16611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613906565b60405180910390fd5b6000600c600085815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600d600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600e60008681526020019081526020016000205490506000848481019061150591906139e9565b905060005b828110156116b1576000600b549050600060648484815181106115305761152f61339f565b5b60200260200101516115429190613a61565b9050600061154f82610be1565b9050600061156e82601781111561156957611568612bc5565b5b611eda565b905061157a8885611f81565b6115848482611f9f565b81600f600086815260200190815260200160002060006101000a81548160ff021916908360178111156115ba576115b9612bc5565b5b0217905550601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083601781111561161357611612612bc5565b5b601781111561162557611624612bc5565b5b8152602001908152602001600020600081548092919061164490613431565b9190505550600b600081548092919061165c90613431565b91905055507fab79897476febbd649710b1bd1dc3e93a316d3dee65f65b022ab89a4b7e206b58289604051611692929190613a92565b60405180910390a15050505080806116a990613431565b91505061150a565b50505050505050565b60095481565b6116d26116cb6119da565b838361200c565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61170d6117076119da565b83611a9b565b61174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174390613520565b60405180910390fd5b61175884848484612178565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60606117af8261198f565b6117b8826121d4565b9050919050565b6010602052816000526040600020602052806000526040600020600091509150505481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611880611d96565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690613b2d565b60405180910390fd5b6118f881611e14565b50565b6011816018811061190b57600080fd5b60209182820401919006915054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611998816122e6565b6119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061379c565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a5583611072565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611aa783611072565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ae95750611ae881856117e4565b5b80611b2757508373ffffffffffffffffffffffffffffffffffffffff16611b0f846109e1565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b5082611072565b73ffffffffffffffffffffffffffffffffffffffff1614611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d90613bbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c90613c51565b60405180910390fd5b611c20838383612352565b611c2b6000826119e2565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c7b9190613c71565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cd291906133fd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d91838383612357565b505050565b611d9e6119da565b73ffffffffffffffffffffffffffffffffffffffff16611dbc6112ce565b73ffffffffffffffffffffffffffffffffffffffff1614611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613cf1565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b606060128260188110611ef057611eef61339f565b5b018054611efc9061324a565b80601f0160208091040260200160405190810160405280929190818152602001828054611f289061324a565b8015611f755780601f10611f4a57610100808354040283529160200191611f75565b820191906000526020600020905b815481529060010190602001808311611f5857829003601f168201915b50505050509050919050565b611f9b82826040518060200160405280600081525061235c565b5050565b611fa8826122e6565b611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90613d83565b60405180910390fd5b806006600084815260200190815260200160002090816120079190613f45565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207190614063565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161216b91906129cd565b60405180910390a3505050565b612183848484611b30565b61218f848484846123b7565b6121ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c5906140f5565b60405180910390fd5b50505050565b60606121df8261198f565b60006006600084815260200190815260200160002080546121ff9061324a565b80601f016020809104026020016040519081016040528092919081815260200182805461222b9061324a565b80156122785780601f1061224d57610100808354040283529160200191612278565b820191906000526020600020905b81548152906001019060200180831161225b57829003601f168201915b50505050509050600061228961253e565b9050600081510361229e5781925050506122e1565b6000825111156122d35780826040516020016122bb929190614151565b604051602081830303815290604052925050506122e1565b6122dc84612555565b925050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b61236683836125bd565b61237360008484846123b7565b6123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9906140f5565b60405180910390fd5b505050565b60006123d88473ffffffffffffffffffffffffffffffffffffffff16612796565b15612531578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124016119da565b8786866040518563ffffffff1660e01b81526004016124239493929190614175565b6020604051808303816000875af192505050801561245f57506040513d601f19601f8201168201806040525081019061245c91906141d6565b60015b6124e1573d806000811461248f576040519150601f19603f3d011682016040523d82523d6000602084013e612494565b606091505b5060008151036124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d0906140f5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612536565b600190505b949350505050565b606060405180602001604052806000815250905090565b60606125608261198f565b600061256a61253e565b9050600081511161258a57604051806020016040528060008152506125b5565b80612594846127b9565b6040516020016125a5929190614151565b6040516020818303038152906040525b915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361262c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126239061424f565b60405180910390fd5b612635816122e6565b15612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c906142bb565b60405180910390fd5b61268160008383612352565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126d191906133fd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461279260008383612357565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606060008203612800576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612914565b600082905060005b6000821461283257808061281b90613431565b915050600a8261282b91906142db565b9150612808565b60008167ffffffffffffffff81111561284e5761284d612f91565b5b6040519080825280601f01601f1916602001820160405280156128805781602001600182028036833780820191505090505b5090505b6000851461290d576001826128999190613c71565b9150600a856128a89190613a61565b60306128b491906133fd565b60f81b8183815181106128ca576128c961339f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561290691906142db565b9450612884565b8093505050505b919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129628161292d565b811461296d57600080fd5b50565b60008135905061297f81612959565b92915050565b60006020828403121561299b5761299a612923565b5b60006129a984828501612970565b91505092915050565b60008115159050919050565b6129c7816129b2565b82525050565b60006020820190506129e260008301846129be565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a22578082015181840152602081019050612a07565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a4a826129e8565b612a5481856129f3565b9350612a64818560208601612a04565b612a6d81612a2e565b840191505092915050565b60006020820190508181036000830152612a928184612a3f565b905092915050565b6000819050919050565b612aad81612a9a565b8114612ab857600080fd5b50565b600081359050612aca81612aa4565b92915050565b600060208284031215612ae657612ae5612923565b5b6000612af484828501612abb565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b2882612afd565b9050919050565b612b3881612b1d565b82525050565b6000602082019050612b536000830184612b2f565b92915050565b612b6281612b1d565b8114612b6d57600080fd5b50565b600081359050612b7f81612b59565b92915050565b60008060408385031215612b9c57612b9b612923565b5b6000612baa85828601612b70565b9250506020612bbb85828601612abb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60188110612c0557612c04612bc5565b5b50565b6000819050612c1682612bf4565b919050565b6000612c2682612c08565b9050919050565b612c3681612c1b565b82525050565b6000602082019050612c516000830184612c2d565b92915050565b600080600060608486031215612c7057612c6f612923565b5b6000612c7e86828701612b70565b9350506020612c8f86828701612b70565b9250506040612ca086828701612abb565b9150509250925092565b6000819050919050565b612cbd81612caa565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b600060208284031215612cf657612cf5612923565b5b6000612d0484828501612ccb565b91505092915050565b612d1681612a9a565b82525050565b6000602082019050612d316000830184612d0d565b92915050565b612d4081612caa565b82525050565b6000602082019050612d5b6000830184612d37565b92915050565b600060208284031215612d7757612d76612923565b5b6000612d8584828501612b70565b91505092915050565b6000819050919050565b6000612db3612dae612da984612afd565b612d8e565b612afd565b9050919050565b6000612dc582612d98565b9050919050565b6000612dd782612dba565b9050919050565b612de781612dcc565b82525050565b6000602082019050612e026000830184612dde565b92915050565b600080600060608486031215612e2157612e20612923565b5b6000612e2f86828701612b70565b9350506020612e4086828701612ccb565b9250506040612e5186828701612b70565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612e8057612e7f612e5b565b5b8235905067ffffffffffffffff811115612e9d57612e9c612e60565b5b602083019150836001820283011115612eb957612eb8612e65565b5b9250929050565b600080600060408486031215612ed957612ed8612923565b5b6000612ee786828701612ccb565b935050602084013567ffffffffffffffff811115612f0857612f07612928565b5b612f1486828701612e6a565b92509250509250925092565b612f29816129b2565b8114612f3457600080fd5b50565b600081359050612f4681612f20565b92915050565b60008060408385031215612f6357612f62612923565b5b6000612f7185828601612b70565b9250506020612f8285828601612f37565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fc982612a2e565b810181811067ffffffffffffffff82111715612fe857612fe7612f91565b5b80604052505050565b6000612ffb612919565b90506130078282612fc0565b919050565b600067ffffffffffffffff82111561302757613026612f91565b5b61303082612a2e565b9050602081019050919050565b82818337600083830152505050565b600061305f61305a8461300c565b612ff1565b90508281526020810184848401111561307b5761307a612f8c565b5b61308684828561303d565b509392505050565b600082601f8301126130a3576130a2612e5b565b5b81356130b384826020860161304c565b91505092915050565b600080600080608085870312156130d6576130d5612923565b5b60006130e487828801612b70565b94505060206130f587828801612b70565b935050604061310687828801612abb565b925050606085013567ffffffffffffffff81111561312757613126612928565b5b6131338782880161308e565b91505092959194509250565b6018811061314c57600080fd5b50565b60008135905061315e8161313f565b92915050565b6000806040838503121561317b5761317a612923565b5b600061318985828601612b70565b925050602061319a8582860161314f565b9150509250929050565b600080604083850312156131bb576131ba612923565b5b60006131c985828601612b70565b92505060206131da85828601612b70565b9150509250929050565b600060ff82169050919050565b6131fa816131e4565b82525050565b600060208201905061321560008301846131f1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061326257607f821691505b6020821081036132755761327461321b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006132d76021836129f3565b91506132e28261327b565b604082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000613369603e836129f3565b91506133748261330d565b604082019050919050565b600060208201905081810360008301526133988161335c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061340882612a9a565b915061341383612a9a565b925082820190508082111561342b5761342a6133ce565b5b92915050565b600061343c82612a9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361346e5761346d6133ce565b5b600182019050919050565b6000613484826131e4565b915061348f836131e4565b9250828203905060ff8111156134a8576134a76133ce565b5b92915050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b600061350a602e836129f3565b9150613515826134ae565b604082019050919050565b60006020820190508181036000830152613539816134fd565b9050919050565b6135498161292d565b82525050565b600081519050919050565b600082825260208201905092915050565b60006135768261354f565b613580818561355a565b9350613590818560208601612a04565b61359981612a2e565b840191505092915050565b600060e0820190506135b9600083018a612b2f565b6135c66020830189612d37565b6135d36040830188612b2f565b6135e06060830187612b2f565b6135ed6080830186612b2f565b6135fa60a0830185613540565b81810360c083015261360c818461356b565b905098975050505050505050565b60008151905061362981612cb4565b92915050565b60006020828403121561364557613644612923565b5b60006136538482850161361a565b91505092915050565b600061366782612a9a565b915061367283612a9a565b925082820261368081612a9a565b91508282048414831517613697576136966133ce565b5b5092915050565b600081905092915050565b50565b60006136b960008361369e565b91506136c4826136a9565b600082019050919050565b60006136da826136ac565b9150819050919050565b7f466f7277617264206661696c6564000000000000000000000000000000000000600082015250565b600061371a600e836129f3565b9150613725826136e4565b602082019050919050565b600060208201905081810360008301526137498161370d565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006137866018836129f3565b915061379182613750565b602082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006138186029836129f3565b9150613823826137bc565b604082019050919050565b600060208201905081810360008301526138478161380b565b9050919050565b7f43616c6c6572206e6f74204169726e6f64652052525000000000000000000000600082015250565b60006138846016836129f3565b915061388f8261384e565b602082019050919050565b600060208201905081810360008301526138b381613877565b9050919050565b7f52657175657374204944206e6f74206b6e6f776e000000000000000000000000600082015250565b60006138f06014836129f3565b91506138fb826138ba565b602082019050919050565b6000602082019050818103600083015261391f816138e3565b9050919050565b600067ffffffffffffffff82111561394157613940612f91565b5b602082029050602081019050919050565b600061396561396084613926565b612ff1565b9050808382526020820190506020840283018581111561398857613987612e65565b5b835b818110156139b1578061399d8882612abb565b84526020840193505060208101905061398a565b5050509392505050565b600082601f8301126139d0576139cf612e5b565b5b81356139e0848260208601613952565b91505092915050565b6000602082840312156139ff576139fe612923565b5b600082013567ffffffffffffffff811115613a1d57613a1c612928565b5b613a29848285016139bb565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a6c82612a9a565b9150613a7783612a9a565b925082613a8757613a86613a32565b5b828206905092915050565b6000604082019050613aa76000830185612c2d565b613ab46020830184612b2f565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b176026836129f3565b9150613b2282613abb565b604082019050919050565b60006020820190508181036000830152613b4681613b0a565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613ba96025836129f3565b9150613bb482613b4d565b604082019050919050565b60006020820190508181036000830152613bd881613b9c565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c3b6024836129f3565b9150613c4682613bdf565b604082019050919050565b60006020820190508181036000830152613c6a81613c2e565b9050919050565b6000613c7c82612a9a565b9150613c8783612a9a565b9250828203905081811115613c9f57613c9e6133ce565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613cdb6020836129f3565b9150613ce682613ca5565b602082019050919050565b60006020820190508181036000830152613d0a81613cce565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613d6d602e836129f3565b9150613d7882613d11565b604082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613e057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613dc8565b613e0f8683613dc8565b95508019841693508086168417925050509392505050565b6000613e42613e3d613e3884612a9a565b612d8e565b612a9a565b9050919050565b6000819050919050565b613e5c83613e27565b613e70613e6882613e49565b848454613dd5565b825550505050565b600090565b613e85613e78565b613e90818484613e53565b505050565b5b81811015613eb457613ea9600082613e7d565b600181019050613e96565b5050565b601f821115613ef957613eca81613da3565b613ed384613db8565b81016020851015613ee2578190505b613ef6613eee85613db8565b830182613e95565b50505b505050565b600082821c905092915050565b6000613f1c60001984600802613efe565b1980831691505092915050565b6000613f358383613f0b565b9150826002028217905092915050565b613f4e826129e8565b67ffffffffffffffff811115613f6757613f66612f91565b5b613f71825461324a565b613f7c828285613eb8565b600060209050601f831160018114613faf5760008415613f9d578287015190505b613fa78582613f29565b86555061400f565b601f198416613fbd86613da3565b60005b82811015613fe557848901518255600182019150602085019450602081019050613fc0565b868310156140025784890151613ffe601f891682613f0b565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061404d6019836129f3565b915061405882614017565b602082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006140df6032836129f3565b91506140ea82614083565b604082019050919050565b6000602082019050818103600083015261410e816140d2565b9050919050565b600081905092915050565b600061412b826129e8565b6141358185614115565b9350614145818560208601612a04565b80840191505092915050565b600061415d8285614120565b91506141698284614120565b91508190509392505050565b600060808201905061418a6000830187612b2f565b6141976020830186612b2f565b6141a46040830185612d0d565b81810360608301526141b6818461356b565b905095945050505050565b6000815190506141d081612959565b92915050565b6000602082840312156141ec576141eb612923565b5b60006141fa848285016141c1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006142396020836129f3565b915061424482614203565b602082019050919050565b600060208201905081810360008301526142688161422c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006142a5601c836129f3565b91506142b08261426f565b602082019050919050565b600060208201905081810360008301526142d481614298565b9050919050565b60006142e682612a9a565b91506142f183612a9a565b92508261430157614300613a32565b5b82820490509291505056fea26469706673582212204e0ae472f7b96c917acc9d75cc2cd3b4c7a8a0b2628d9cb4226f3e156ad5e47464736f6c634300081100330000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000340000000000000000000000000a0ad79d995ddeeb18a14eaef56a549a04e3aa1bd00000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000007c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000008c0000000000000000000000000000000000000000000000000000000000000000131000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000137000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002313100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023132000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002313400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023135000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002313700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023138000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002323000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000232320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002323300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023234000000000000000000000000000000000000000000000000000000000000