60a060405269d3c21bcecceda100000060095569043c33c1937564800000600a5569043c33c1937564800000600b5569021e19e0c9bab2400000600c556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff02191690831515021790555060146010556014601155600a60125560016013553480156200009357600080fd5b5060405162004bd238038062004bd28339818101604052810190620000b99190620007be565b6040518060400160405280601081526020017f45617379205765627369746520426f74000000000000000000000000000000008152506040518060400160405280600581526020017f5745424f54000000000000000000000000000000000000000000000000000000815250816003908162000136919062000a6a565b50806004908162000148919062000a6a565b5050506200016b6200015f6200032e60201b60201c565b6200033660201b60201c565b73fcd3842f85ed87ba2889b4d35893403796e67ff173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620001c86080516001620003fc60201b60201c565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200021c816001620003fc60201b60201c565b6200022c6200032e60201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200028e620002806200046760201b60201c565b60016200049160201b60201c565b620002a18160016200049160201b60201c565b620002b43060016200049160201b60201c565b620002c961dead60016200049160201b60201c565b620002eb620002dd6200046760201b60201c565b6001620003fc60201b60201c565b620002fe306001620003fc60201b60201c565b6200031361dead6001620003fc60201b60201c565b62000327306009546200054c60201b60201c565b5062000d18565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200040c620006b960201b60201c565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004a1620006b960201b60201c565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000540919062000b6e565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b59062000bec565b60405180910390fd5b620005d2600083836200074a60201b60201c565b8060026000828254620005e6919062000c3d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000699919062000c89565b60405180910390a3620006b5600083836200074f60201b60201c565b5050565b620006c96200032e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006ef6200046760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073f9062000cf6565b60405180910390fd5b565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007868262000759565b9050919050565b620007988162000779565b8114620007a457600080fd5b50565b600081519050620007b8816200078d565b92915050565b600060208284031215620007d757620007d662000754565b5b6000620007e784828501620007a7565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087257607f821691505b6020821081036200088857620008876200082a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008b3565b620008fe8683620008b3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200094b620009456200093f8462000916565b62000920565b62000916565b9050919050565b6000819050919050565b62000967836200092a565b6200097f620009768262000952565b848454620008c0565b825550505050565b600090565b6200099662000987565b620009a38184846200095c565b505050565b5b81811015620009cb57620009bf6000826200098c565b600181019050620009a9565b5050565b601f82111562000a1a57620009e4816200088e565b620009ef84620008a3565b81016020851015620009ff578190505b62000a1762000a0e85620008a3565b830182620009a8565b50505b505050565b600082821c905092915050565b600062000a3f6000198460080262000a1f565b1980831691505092915050565b600062000a5a838362000a2c565b9150826002028217905092915050565b62000a7582620007f0565b67ffffffffffffffff81111562000a915762000a90620007fb565b5b62000a9d825462000859565b62000aaa828285620009cf565b600060209050601f83116001811462000ae2576000841562000acd578287015190505b62000ad9858262000a4c565b86555062000b49565b601f19841662000af2866200088e565b60005b8281101562000b1c5784890151825560018201915060208501945060208101905062000af5565b8683101562000b3c578489015162000b38601f89168262000a2c565b8355505b6001600288020188555050505b505050505050565b60008115159050919050565b62000b688162000b51565b82525050565b600060208201905062000b85600083018462000b5d565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000bd4601f8362000b8b565b915062000be18262000b9c565b602082019050919050565b6000602082019050818103600083015262000c078162000bc5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c4a8262000916565b915062000c578362000916565b925082820190508082111562000c725762000c7162000c0e565b5b92915050565b62000c838162000916565b82525050565b600060208201905062000ca0600083018462000c78565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000cde60208362000b8b565b915062000ceb8262000ca6565b602082019050919050565b6000602082019050818103600083015262000d118162000ccf565b9050919050565b608051613e6662000d6c60003960008181610a2701528181610b2501528181610bd001528181610d5d01528181610dc401528181610e670152818161248c0152818161256d01526125940152613e666000f3fe6080604052600436106102085760003560e01c806389291a8f11610118578063c9567bf9116100a0578063dd8546521161006f578063dd85465214610752578063e2f456051461077d578063f2fde38b146107a8578063f8b45b05146107d1578063ffb54a99146107fc5761020f565b8063c9567bf9146106a8578063ca703075146106bf578063cf9522fd146106ea578063dd62ed3e146107155761020f565b8063a457c2d7116100e7578063a457c2d7146105b1578063a9059cbb146105ee578063afa4f3b21461062b578063c024666814610654578063c8c8ebe41461067d5761020f565b806389291a8f1461051b5780638da5cb5b1461053257806395d89b411461055d5780639a7a23d6146105885761020f565b8063395093511161019b57806370a082311161016a57806370a082311461045e578063715018a61461049b5780637571336a146104b25780638129fc1c146104db578063881dce60146104f25761020f565b8063395093511461038e5780634fbee193146103cb578063583e0568146104085780636ddd1713146104335761020f565b806323b872dd116101d757806323b872dd146102d2578063311028af1461030f578063313ce5671461033a5780633295bc6d146103655761020f565b806306fdde0314610214578063095ea7b31461023f5780630c6b67371461027c57806318160ddd146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610827565b6040516102369190612b04565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190612bbf565b6108b9565b6040516102739190612c1a565b60405180910390f35b34801561028857600080fd5b506102916108dc565b60405161029e9190612c44565b60405180910390f35b3480156102b357600080fd5b506102bc6108e2565b6040516102c99190612c44565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190612c5f565b6108ec565b6040516103069190612c1a565b60405180910390f35b34801561031b57600080fd5b5061032461091b565b6040516103319190612c44565b60405180910390f35b34801561034657600080fd5b5061034f610921565b60405161035c9190612cce565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d1f565b61092a565b005b34801561039a57600080fd5b506103b560048036038101906103b09190612bbf565b610998565b6040516103c29190612c1a565b60405180910390f35b3480156103d757600080fd5b506103f260048036038101906103ed9190612d4c565b6109cf565b6040516103ff9190612c1a565b60405180910390f35b34801561041457600080fd5b5061041d610a25565b60405161042a9190612dd8565b60405180910390f35b34801561043f57600080fd5b50610448610a49565b6040516104559190612c1a565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190612d4c565b610a5c565b6040516104929190612c44565b60405180910390f35b3480156104a757600080fd5b506104b0610aa4565b005b3480156104be57600080fd5b506104d960048036038101906104d49190612e1f565b610ab8565b005b3480156104e757600080fd5b506104f0610b1b565b005b3480156104fe57600080fd5b5061051960048036038101906105149190612e5f565b610f70565b005b34801561052757600080fd5b50610530611058565b005b34801561053e57600080fd5b506105476110ec565b6040516105549190612e9b565b60405180910390f35b34801561056957600080fd5b50610572611116565b60405161057f9190612b04565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa9190612e1f565b6111a8565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190612bbf565b61124e565b6040516105e59190612c1a565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190612bbf565b6112c5565b6040516106229190612c1a565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190612e5f565b6112e8565b005b34801561066057600080fd5b5061067b60048036038101906106769190612e1f565b61130d565b005b34801561068957600080fd5b506106926113be565b60405161069f9190612c44565b60405180910390f35b3480156106b457600080fd5b506106bd6113c4565b005b3480156106cb57600080fd5b506106d4611454565b6040516106e19190612c44565b60405180910390f35b3480156106f657600080fd5b506106ff61145a565b60405161070c9190612c44565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190612eb6565b611460565b6040516107499190612c44565b60405180910390f35b34801561075e57600080fd5b506107676114e7565b6040516107749190612c44565b60405180910390f35b34801561078957600080fd5b506107926114ed565b60405161079f9190612c44565b60405180910390f35b3480156107b457600080fd5b506107cf60048036038101906107ca9190612d4c565b6114f3565b005b3480156107dd57600080fd5b506107e6611576565b6040516107f39190612c44565b60405180910390f35b34801561080857600080fd5b5061081161157c565b60405161081e9190612c1a565b60405180910390f35b60606003805461083690612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461086290612f25565b80156108af5780601f10610884576101008083540402835291602001916108af565b820191906000526020600020905b81548152906001019060200180831161089257829003601f168201915b5050505050905090565b6000806108c461158f565b90506108d1818585611597565b600191505092915050565b600e5481565b6000600254905090565b6000806108f761158f565b9050610904858285611760565b61090f8585856117ec565b60019150509392505050565b60095481565b60006012905090565b61093261215a565b61093b816121d8565b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190612fa2565b60405180910390fd5b60006109846108e2565b905080600a8190555080600b819055505050565b6000806109a361158f565b90506109c48185856109b58589611460565b6109bf9190612ff1565b611597565b600191505092915050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aac61215a565b610ab6600061220a565b565b610ac061215a565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610b2361215a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061303a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d919061303a565b6040518363ffffffff1660e01b8152600401610c7a929190613067565b6020604051808303816000875af1158015610c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbd919061303a565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d2a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016122d0565b610d57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610ab8565b610d84307f0000000000000000000000000000000000000000000000000000000000000000600954611597565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e21929190613090565b6020604051808303816000875af1158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6491906130ce565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eb9604160095461237190919063ffffffff16565b600080610ec46110ec565b426040518863ffffffff1660e01b8152600401610ee696959493929190613136565b60606040518083038185885af1158015610f04573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f2991906131ac565b505050610f6e30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f69600a600c546123d790919063ffffffff16565b6117ec565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fb161158f565b73ffffffffffffffffffffffffffffffffffffffff1614610fd157600080fd5b6000610fdb6108e2565b90506000610fe830610a5c565b9050600060648484610ffa91906131ff565b6110049190613270565b905080821015611049576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611040906132ed565b60405180910390fd5b611052816123ed565b50505050565b61106061215a565b600047116110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90613359565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156110e9573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461112590612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461115190612f25565b801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b5050505050905090565b6111b061215a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611237906133eb565b60405180910390fd5b61124a82826122d0565b5050565b60008061125961158f565b905060006112678286611460565b9050838110156112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a39061347d565b60405180910390fd5b6112b98286868403611597565b60019250505092915050565b6000806112d061158f565b90506112dd8185856117ec565b600191505092915050565b6112f061215a565b670de0b6b3a76400008161130491906131ff565b600c8190555050565b61131561215a565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113b29190612c1a565b60405180910390a25050565b600a5481565b6113cc61215a565b600f60009054906101000a900460ff161561141c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611413906134e9565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff021916908315150217905550565b600d5481565b60115481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b600c5481565b6114fb61215a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361156a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115619061357b565b60405180910390fd5b6115738161220a565b50565b600b5481565b600f60009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd9061360d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c9061369f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117539190612c44565b60405180910390a3505050565b600061176c8484611460565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117e657818110156117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf9061370b565b60405180910390fd5b6117e58484848403611597565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361185b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118529061379d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061382f565b60405180910390fd5b601254600d54106118de5760056010819055505b601354600e54106118f25760056011819055505b6000810361190b576119068383600061264c565b612155565b6119136110ec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198157506119516110ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119ba5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119f4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a0d5750600860149054906101000a900460ff16155b15611e2057600f60009054906101000a900460ff16611b0757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ac75750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afd9061389b565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611baa5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6957600a54811115611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb9061392d565b60405180910390fd5b600b54611c0083610a5c565b82611c0b9190612ff1565b1115611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4390613999565b60405180910390fd5b600d6000815480929190611c5f906139b9565b9190505550611e1f565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d0c5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d7357600a54811115611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d90613a73565b60405180910390fd5b600e6000815480929190611d69906139b9565b9190505550611e1e565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e1d57600b54611dd083610a5c565b82611ddb9190612ff1565b1115611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613999565b60405180910390fd5b5b5b5b5b6000611e2b30610a5c565b905060008082119050808015611e4d5750600f60019054906101000a900460ff165b8015611e665750600860149054906101000a900460ff16155b8015611ebc5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f125750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f685750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fad576001600860146101000a81548160ff021916908315150217905550611f91836128c2565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120635750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561206d57600090505b6000811561214557601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120f6576120ef60646120e1601154886123d790919063ffffffff16565b612a5490919063ffffffff16565b9050612121565b61211e6064612110601054886123d790919063ffffffff16565b612a5490919063ffffffff16565b90505b60008111156121365761213587308361264c565b5b80856121429190613a93565b94505b61215087878761264c565b505050505b505050565b61216261158f565b73ffffffffffffffffffffffffffffffffffffffff166121806110ec565b73ffffffffffffffffffffffffffffffffffffffff16146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90613b13565b60405180910390fd5b565b600081336040516020016121ec9190613b7b565b60405160208183030381529060405280519060200120149050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600060648211156123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae90613c08565b60405180910390fd5b606482846123c591906131ff565b6123cf9190613270565b905092915050565b600081836123e591906131ff565b905092915050565b6000600267ffffffffffffffff81111561240a57612409613c28565b5b6040519080825280602002602001820160405280156124385781602001602082028036833780820191505090505b50905030816000815181106124505761244f613c57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612519919061303a565b8160018151811061252d5761252c613c57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612592307f000000000000000000000000000000000000000000000000000000000000000084611597565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612616959493929190613d44565b600060405180830381600087803b15801561263057600080fd5b505af1158015612644573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29061379d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361272a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127219061382f565b60405180910390fd5b612735838383612a6a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613e10565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128a99190612c44565b60405180910390a36128bc848484612a6f565b50505050565b60006128cd30610a5c565b905060008082036128df575050612a51565b60006011546010546128f19190612ff1565b0361296d576000821180156129075750600c5482105b1561291457819050612968565b600061293e6064612930601154876123d790919063ffffffff16565b612a5490919063ffffffff16565b9050808461294c9190613a93565b9350600c5484111561296257600c549150612966565b8391505b505b612a45565b600082118015612991575061298e6002600c54612a5490919063ffffffff16565b82105b1561299d575050612a51565b6000821180156129c157506129be6002600c54612a5490919063ffffffff16565b82115b80156129ce5750600c5482105b156129f0576129e96002600c54612a5490919063ffffffff16565b9050612a44565b6000612a1a6064612a0c601154876123d790919063ffffffff16565b612a5490919063ffffffff16565b90508084612a289190613a93565b9350600c54841115612a3e57600c549150612a42565b8391505b505b5b612a4e816123ed565b50505b50565b60008183612a629190613270565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aae578082015181840152602081019050612a93565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ad682612a74565b612ae08185612a7f565b9350612af0818560208601612a90565b612af981612aba565b840191505092915050565b60006020820190508181036000830152612b1e8184612acb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5682612b2b565b9050919050565b612b6681612b4b565b8114612b7157600080fd5b50565b600081359050612b8381612b5d565b92915050565b6000819050919050565b612b9c81612b89565b8114612ba757600080fd5b50565b600081359050612bb981612b93565b92915050565b60008060408385031215612bd657612bd5612b26565b5b6000612be485828601612b74565b9250506020612bf585828601612baa565b9150509250929050565b60008115159050919050565b612c1481612bff565b82525050565b6000602082019050612c2f6000830184612c0b565b92915050565b612c3e81612b89565b82525050565b6000602082019050612c596000830184612c35565b92915050565b600080600060608486031215612c7857612c77612b26565b5b6000612c8686828701612b74565b9350506020612c9786828701612b74565b9250506040612ca886828701612baa565b9150509250925092565b600060ff82169050919050565b612cc881612cb2565b82525050565b6000602082019050612ce36000830184612cbf565b92915050565b6000819050919050565b612cfc81612ce9565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b600060208284031215612d3557612d34612b26565b5b6000612d4384828501612d0a565b91505092915050565b600060208284031215612d6257612d61612b26565b5b6000612d7084828501612b74565b91505092915050565b6000819050919050565b6000612d9e612d99612d9484612b2b565b612d79565b612b2b565b9050919050565b6000612db082612d83565b9050919050565b6000612dc282612da5565b9050919050565b612dd281612db7565b82525050565b6000602082019050612ded6000830184612dc9565b92915050565b612dfc81612bff565b8114612e0757600080fd5b50565b600081359050612e1981612df3565b92915050565b60008060408385031215612e3657612e35612b26565b5b6000612e4485828601612b74565b9250506020612e5585828601612e0a565b9150509250929050565b600060208284031215612e7557612e74612b26565b5b6000612e8384828501612baa565b91505092915050565b612e9581612b4b565b82525050565b6000602082019050612eb06000830184612e8c565b92915050565b60008060408385031215612ecd57612ecc612b26565b5b6000612edb85828601612b74565b9250506020612eec85828601612b74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f3d57607f821691505b602082108103612f5057612f4f612ef6565b5b50919050565b7f546f6b656e20697320747261646561626c650000000000000000000000000000600082015250565b6000612f8c601283612a7f565b9150612f9782612f56565b602082019050919050565b60006020820190508181036000830152612fbb81612f7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ffc82612b89565b915061300783612b89565b925082820190508082111561301f5761301e612fc2565b5b92915050565b60008151905061303481612b5d565b92915050565b6000602082840312156130505761304f612b26565b5b600061305e84828501613025565b91505092915050565b600060408201905061307c6000830185612e8c565b6130896020830184612e8c565b9392505050565b60006040820190506130a56000830185612e8c565b6130b26020830184612c35565b9392505050565b6000815190506130c881612df3565b92915050565b6000602082840312156130e4576130e3612b26565b5b60006130f2848285016130b9565b91505092915050565b6000819050919050565b600061312061311b613116846130fb565b612d79565b612b89565b9050919050565b61313081613105565b82525050565b600060c08201905061314b6000830189612e8c565b6131586020830188612c35565b6131656040830187613127565b6131726060830186613127565b61317f6080830185612e8c565b61318c60a0830184612c35565b979650505050505050565b6000815190506131a681612b93565b92915050565b6000806000606084860312156131c5576131c4612b26565b5b60006131d386828701613197565b93505060206131e486828701613197565b92505060406131f586828701613197565b9150509250925092565b600061320a82612b89565b915061321583612b89565b925082820261322381612b89565b9150828204841483151761323a57613239612fc2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061327b82612b89565b915061328683612b89565b92508261329657613295613241565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b60006132d7601183612a7f565b91506132e2826132a1565b602082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000613343601683612a7f565b915061334e8261330d565b602082019050919050565b6000602082019050818103600083015261337281613336565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006133d5603983612a7f565b91506133e082613379565b604082019050919050565b60006020820190508181036000830152613404816133c8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613467602583612a7f565b91506134728261340b565b604082019050919050565b600060208201905081810360008301526134968161345a565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006134d3601783612a7f565b91506134de8261349d565b602082019050919050565b60006020820190508181036000830152613502816134c6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613565602683612a7f565b915061357082613509565b604082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135f7602483612a7f565b91506136028261359b565b604082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613689602283612a7f565b91506136948261362d565b604082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006136f5601d83612a7f565b9150613700826136bf565b602082019050919050565b60006020820190508181036000830152613724816136e8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613787602583612a7f565b91506137928261372b565b604082019050919050565b600060208201905081810360008301526137b68161377a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613819602383612a7f565b9150613824826137bd565b604082019050919050565b600060208201905081810360008301526138488161380c565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613885601683612a7f565b91506138908261384f565b602082019050919050565b600060208201905081810360008301526138b481613878565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613917603583612a7f565b9150613922826138bb565b604082019050919050565b600060208201905081810360008301526139468161390a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613983601383612a7f565b915061398e8261394d565b602082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b60006139c482612b89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139f6576139f5612fc2565b5b600182019050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a5d603683612a7f565b9150613a6882613a01565b604082019050919050565b60006020820190508181036000830152613a8c81613a50565b9050919050565b6000613a9e82612b89565b9150613aa983612b89565b9250828203905081811115613ac157613ac0612fc2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afd602083612a7f565b9150613b0882613ac7565b602082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b60008160601b9050919050565b6000613b4b82613b33565b9050919050565b6000613b5d82613b40565b9050919050565b613b75613b7082612b4b565b613b52565b82525050565b6000613b878284613b64565b60148201915081905092915050565b7f50657263656e74616765206d757374206265206265747765656e203020616e6460008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf2602483612a7f565b9150613bfd82613b96565b604082019050919050565b60006020820190508181036000830152613c2181613be5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbb81612b4b565b82525050565b6000613ccd8383613cb2565b60208301905092915050565b6000602082019050919050565b6000613cf182613c86565b613cfb8185613c91565b9350613d0683613ca2565b8060005b83811015613d37578151613d1e8882613cc1565b9750613d2983613cd9565b925050600181019050613d0a565b5085935050505092915050565b600060a082019050613d596000830188612c35565b613d666020830187613127565b8181036040830152613d788186613ce6565b9050613d876060830185612e8c565b613d946080830184612c35565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dfa602683612a7f565b9150613e0582613d9e565b604082019050919050565b60006020820190508181036000830152613e2981613ded565b905091905056fea26469706673582212208c0abf04c82039dfa644e3c221f03dc6034a7ee39c127c0215eaeab3ecc3368664736f6c63430008120033000000000000000000000000b923bd4962cfcfde549411860daed8151edd7ca9