6080604052604051806101200160405280640283baec0065ffffffffffff16815260200164050775d80065ffffffffffff168152602001640a0eebb00065ffffffffffff16815260200164141dd7600065ffffffffffff16815260200164283baec00065ffffffffffff1681526020016450775d800065ffffffffffff16815260200164a0eebb000065ffffffffffff168152602001650141dd76000065ffffffffffff168152602001650283baec000065ffffffffffff168152506009906009620000cd92919062000d33565b506040518061012001604052806404a817c80064ffffffffff1681526020016409502f900064ffffffffff16815260200164174876e80064ffffffffff1681526020016419e409580064ffffffffff168152602001641d1a94a20064ffffffffff16815260200164213f8b140064ffffffffff1681526020016426d018230064ffffffffff168152602001642e90edd00064ffffffffff168152602001644d9a3a650064ffffffffff1681525060139060096200018c92919062000d82565b506000601d556000601e556000601f55348015620001a957600080fd5b50604051620025c3380380620025c383398181016040526040811015620001cf57600080fd5b8101908080519060200190929190805190602001909291905050506040518060400160405280600c81526020017f4c75636b79436f696e58524200000000000000000000000000000000000000008152506040518060400160405280600381526020017f5852420000000000000000000000000000000000000000000000000000000000815250600882600390805190602001906200027092919062000dd0565b5081600490805190602001906200028992919062000dd0565b5080600560006101000a81548160ff021916908360ff16021790555050505081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4e41504f4d494e41544f5200000000000000000000000000000000000000000060601c3018600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200040b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166509d29229e0006200048060201b60201c565b62000468600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166504cb879bb2006200065e60201b60201c565b620004786200073260201b60201c565b505062000e7f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000538600083836200083260201b60201c565b62000554816002546200083760201b620011391790919060201c565b600281905550620005b2816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200083760201b620011391790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156200070b5750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6200071557600080fd5b6200072d838383620008c060201b620012871760201c565b505050565b6009601f5414156200077d5762000771600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000b9c60201b60201c565b601d8190555062000830565b6013601f54600a81106200078d57fe5b0154601e819055506009601f54600a8110620007a557fe5b0154601d819055506001601f5401601f819055506200082f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000823630bebc200601f5462000be460201b62000c4a1790919060201c565b6200065e60201b60201c565b5b565b505050565b600080828401905083811015620008b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806200259e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180620025346023913960400191505060405180910390fd5b620009e38383836200083260201b60201c565b62000a568160405180606001604052806026815260200162002557602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c6f60201b62001079179092919060201c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000af0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200083760201b620011391790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008083141562000bf9576000905062000c69565b600082840290508284828162000c0b57fe5b041462000c64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806200257d6021913960400191505060405180910390fd5b809150505b92915050565b600083831115829062000d20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000ce457808201518184015260208101905062000cc7565b50505050905090810190601f16801562000d125780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b82600a810192821562000d6f579160200282015b8281111562000d6e578251829065ffffffffffff1690559160200191906001019062000d47565b5b50905062000d7e919062000e57565b5090565b82600a810192821562000dbd579160200282015b8281111562000dbc578251829064ffffffffff1690559160200191906001019062000d96565b5b50905062000dcc919062000e57565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000e1357805160ff191683800117855562000e44565b8280016001018555821562000e44579182015b8281111562000e4357825182559160200191906001019062000e26565b5b50905062000e53919062000e57565b5090565b62000e7c91905b8082111562000e7857600081600090555060010162000e5e565b5090565b90565b6116a58062000e8f6000396000f3fe6080604052600436106100ab5760003560e01c806370a082311161006457806370a082311461032457806395d89b4114610389578063a457c2d714610419578063a48217191461048c578063a9059cbb14610496578063dd62ed3e14610509576100ba565b806306fdde03146100bf578063095ea7b31461014f57806318160ddd146101c257806323b872dd146101ed578063313ce5671461028057806339509351146102b1576100ba565b366100ba576100b861058e565b005b600080fd5b3480156100cb57600080fd5b506100d46106ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101145780820151818401526020810190506100f9565b50505050905090810190601f1680156101415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015b57600080fd5b506101a86004803603604081101561017257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061078e565b604051808215151515815260200191505060405180910390f35b3480156101ce57600080fd5b506101d76107ac565b6040518082815260200191505060405180910390f35b3480156101f957600080fd5b506102666004803603606081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b6565b604051808215151515815260200191505060405180910390f35b34801561028c57600080fd5b5061029561088f565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102bd57600080fd5b5061030a600480360360408110156102d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a6565b604051808215151515815260200191505060405180910390f35b34801561033057600080fd5b506103736004803603602081101561034757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610959565b6040518082815260200191505060405180910390f35b34801561039557600080fd5b5061039e6109a1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103de5780820151818401526020810190506103c3565b50505050905090810190601f16801561040b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042557600080fd5b506104726004803603604081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a43565b604051808215151515815260200191505060405180910390f35b61049461058e565b005b3480156104a257600080fd5b506104ef600480360360408110156104b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b10565b604051808215151515815260200191505060405180910390f35b34801561051557600080fd5b506105786004803603604081101561052c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2e565b6040518082815260200191505060405180910390f35b6105ad3373ffffffffffffffffffffffffffffffffffffffff16610bb5565b156105b757600080fd5b6000349050600081116105c957600080fd5b60008090505b60008211156106455760006105ef601e5484610c0090919063ffffffff16565b9050601d5481111561062a57601d5482019150610619601e54601d54610c4a90919063ffffffff16565b83039250610625610cd0565b61063f565b80601d5403601d819055508082019150600092505b506105cf565b6000811161065257600080fd5b61067f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff163383610db5565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156106e7573d6000803e3d6000fd5b505050565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107845780601f1061075957610100808354040283529160200191610784565b820191906000526020600020905b81548152906001019060200180831161076757829003601f168201915b5050505050905090565b60006107a261079b610e7a565b8484610e82565b6001905092915050565b6000600254905090565b60006107c3848484610db5565b610884846107cf610e7a565b61087f856040518060600160405280602881526020016115da60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610835610e7a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110799092919063ffffffff16565b610e82565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061094f6108b3610e7a565b8461094a85600160006108c4610e7a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461113990919063ffffffff16565b610e82565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b6000610b06610a50610e7a565b84610b018560405180606001604052806025815260200161164b6025913960016000610a7a610e7a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110799092919063ffffffff16565b610e82565b6001905092915050565b6000610b24610b1d610e7a565b8484610db5565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610bf757506000801b8214155b92505050919050565b6000610c4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111c1565b905092915050565b600080831415610c5d5760009050610cca565b6000828402905082848281610c6e57fe5b0414610cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806115b96021913960400191505060405180910390fd5b809150505b92915050565b6009601f541415610d1157610d06600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610959565b601d81905550610db3565b6013601f54600a8110610d2057fe5b0154601e819055506009601f54600a8110610d3757fe5b0154601d819055506001601f5401601f81905550610db2600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dad630bebc200601f54610c4a90919063ffffffff16565b610db5565b5b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610e615750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610e6a57600080fd5b610e75838383611287565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806116276024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115716022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000838311158290611126576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110eb5780820151818401526020810190506110d0565b50505050905090810190601f1680156111185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808311829061126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611232578082015181840152602081019050611217565b50505050905090810190601f16801561125f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127957fe5b049050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561130d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806116026025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061154e6023913960400191505060405180910390fd5b61139e838383611548565b61140981604051806060016040528060268152602001611593602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110799092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061149c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461113990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220628bc4a80411a4cdd3d10c06320a15b9e782068b8ab630426799b3857c9de2ef64736f6c6343000607003345524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373000000000000000000000000b9523671f66f52358bdbdb702e1c14ffb0f2a4aa0000000000000000000000002b49ed0f50e153b1319edd0fff4ba9325e94ef09