60806040523480156200001157600080fd5b506040518060400160405280600381526020017f534d5800000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f534d580000000000000000000000000000000000000000000000000000000000815250600082828282600090805190602001906200009b92919062000510565b508160019080519060200190620000b492919062000510565b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200016033826200016c60201b60201c565b505050505050620005b6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180620041d16023913960400191505060405180910390fd5b6200020582620003a360201b60201c565b62000221816002546200048760201b620027391790919060201c565b6002819055506200028081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200048760201b620027391790919060201c565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620003395762000332816003546200048760201b620027391790919060201c565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60005b6007805490508110156200048357600060078281548110620003c457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200045b57600080fd5b505af115801562000470573d6000803e3d6000fd5b50505050508080600101915050620003a6565b5050565b60008082840190508381101562000506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200055357805160ff191683800117855562000584565b8280016001018555821562000584579182015b828111156200058357825182559160200191906001019062000566565b5b50905062000593919062000597565b5090565b5b80821115620005b257600081600090555060010162000598565b5090565b613c0b80620005c66000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80636228907711610130578063a9059cbb116100b8578063cf456ae71161007c578063cf456ae714610df8578063cfad57a214610e48578063dd62ed3e14610e8c578063dfbaefb114610f04578063fb30d91614610f2457610227565b8063a9059cbb14610b47578063a923fc4014610bab578063aa271e1a14610cfd578063af640d0f14610d57578063c93be63614610dda57610227565b80639554381a116100ff5780639554381a1461096857806395d89b41146109c2578063996f11ee14610a455780639cb7de4b14610aa95780639dc29fac14610af957610227565b8063622890771461086a57806370480275146108ae57806370a08231146108f2578063817b1cd21461094a57610227565b806327e235e3116101b357806346ea87af1161018257806346ea87af146106b857806352cd38d91461071257806355b6ed5c1461076a5780635a47a1a7146107e2578063602172671461081257610227565b806327e235e314610597578063313ce567146105ef57806340c10f1914610610578063429b62e51461065e57610227565b80631785f53c116101fa5780631785f53c146103b557806318160ddd146103f95780631e83409a1461041757806323b872dd1461045b578063276eab4e146104df57610227565b806301e336671461022c57806306fdde031461029a578063095ea7b31461031d57806312d43a5114610381575b600080fd5b6102986004803603606081101561024257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f68565b005b6102a261105b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e25780820151818401526020810190506102c7565b50505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103696004803603604081101561033357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f9565b60405180821515815260200191505060405180910390f35b610389611110565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f7600480360360208110156103cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611136565b005b610401611254565b6040518082815260200191505060405180910390f35b6104596004803603602081101561042d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125a565b005b6104c76004803603606081101561047157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061137b565b60405180821515815260200191505060405180910390f35b610595600480360360208110156104f557600080fd5b810190808035906020019064010000000081111561051257600080fd5b82018360208201111561052457600080fd5b8035906020019184602083028401116401000000008311171561054657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506114b3565b005b6105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611590565b6040518082815260200191505060405180910390f35b6105f76115a8565b604051808260ff16815260200191505060405180910390f35b61065c6004803603604081101561062657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115ad565b005b6106a06004803603602081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167a565b60405180821515815260200191505060405180910390f35b6106fa600480360360208110156106ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169a565b60405180821515815260200191505060405180910390f35b61073e6004803603602081101561072857600080fd5b81019080803590602001909291905050506116ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107cc6004803603604081101561078057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116f6565b6040518082815260200191505060405180910390f35b610810600480360360208110156107f857600080fd5b8101908080351515906020019092919050505061171b565b005b6108546004803603602081101561082857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117fb565b6040518082815260200191505060405180910390f35b6108ac6004803603602081101561088057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a0565b005b6108f0600480360360208110156108c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac0565b005b6109346004803603602081101561090857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bde565b6040518082815260200191505060405180910390f35b610952611c27565b6040518082815260200191505060405180910390f35b6109aa6004803603602081101561097e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c45565b60405180821515815260200191505060405180910390f35b6109ca611c65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a0a5780820151818401526020810190506109ef565b50505050905090810190601f168015610a375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aa760048036036040811015610a5b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d03565b005b610af760048036036040811015610abf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611ee4565b005b610b4560048036036040811015610b0f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612002565b005b610b9360048036036040811015610b5d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120cf565b60405180821515815260200191505060405180910390f35b610cfb60048036036040811015610bc157600080fd5b8101908080359060200190640100000000811115610bde57600080fd5b820183602082011115610bf057600080fd5b80359060200191846001830284011164010000000083111715610c1257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c7557600080fd5b820183602082011115610c8757600080fd5b80359060200191846001830284011164010000000083111715610ca957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506120e6565b005b610d3f60048036036020811015610d1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121db565b60405180821515815260200191505060405180910390f35b610d5f6121fb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d9f578082015181840152602081019050610d84565b50505050905090810190601f168015610dcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610de2612238565b6040518082815260200191505060405180910390f35b610e4660048036036040811015610e0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061223e565b005b610e8a60048036036020811015610e5e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061235c565b005b610eee60048036036040811015610ea257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612463565b6040518082815260200191505060405180910390f35b610f0c6124ea565b60405180821515815260200191505060405180910390f35b610f6660048036036020811015610f3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124fd565b005b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b61105682828573ffffffffffffffffffffffffffffffffffffffff166127c19092919063ffffffff16565b505050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110f15780601f106110c6576101008083540402835291602001916110f1565b820191906000526020600020905b8154815290600101906020018083116110d457829003601f168201915b505050505081565b6000611106338484612863565b6001905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60025481565b60005b6007805490508110156113775760006007828154811061127957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34233856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561132d57600080fd5b505af1158015611341573d6000803e3d6000fd5b505050506040513d602081101561135757600080fd5b81019080805190602001909291905050505050808060010191505061125d565b5050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113e3576113da848484612a5a565b600190506114ac565b600061148e836040518060600160405280602c8152602001613a72602c9139600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eba9092919063ffffffff16565b905061149b853383612863565b6114a6858585612a5a565b60019150505b9392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b806007908051906020019061158c92919061387a565b5050565b60056020528060005260406000206000915090505481565b601281565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000081525060200191505060405180910390fd5b6116768282612f7a565b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b600781815481106116c757fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052816000526040600020602052806000526040600020600091509150505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611858576000905061189b565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661195f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613b166022913960400191505060405180910390fd5b611a0b81613191565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ab7600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460035461273990919063ffffffff16565b60038190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c4060035460025461327090919063ffffffff16565b905090565b60086020528060005260406000206000915054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cfb5780601f10611cd057610100808354040283529160200191611cfb565b820191906000526020600020905b815481529060010190602001808311611cde57829003601f168201915b505050505081565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611dc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b60005b600780549050811015611edf57600060078281548110611de157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34285856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611e9557600080fd5b505af1158015611ea9573d6000803e3d6000fd5b505050506040513d6020811015611ebf57600080fd5b810190808051906020019092919050505050508080600101915050611dc5565b505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000081525060200191505060405180910390fd5b6120cb82826132ba565b5050565b60006120dc338484612a5a565b6001905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b81600090805190602001906121bf929190613904565b5080600190805190602001906121d6929190613904565b505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600381526020017f534d580000000000000000000000000000000000000000000000000000000000815250905090565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f42617365546f6b656e3a20666f7262696464656e00000000000000000000000081525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b6564000081525060200191505060405180910390fd5b61268481613191565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612730600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460035461327090919063ffffffff16565b60038190555050565b6000808284019050838110156127b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61285e8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506134eb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ac46028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a4c6026913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613bad6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613a026027913960400191505060405180910390fd5b600a60009054906101000a900460ff1615612c1e57600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806139dd6025913960400191505060405180910390fd5b5b612c2783613191565b612c3082613191565b612c9c816040518060600160405280602a8152602001613aec602a9139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eba9092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273990919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612de257612ddb8160035461327090919063ffffffff16565b6003819055505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e5057612e498160035461273990919063ffffffff16565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612f67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f2c578082015181840152602081019050612f11565b50505050905090810190601f168015612f595780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613a296023913960400191505060405180910390fd5b61300982613191565b61301e8160025461273990919063ffffffff16565b60028190555061307681600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273990919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613127576131208160035461273990919063ffffffff16565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60005b60078054905081101561326c576000600782815481106131b057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561324657600080fd5b505af115801561325a573d6000803e3d6000fd5b50505050508080600101915050613194565b5050565b60006132b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612eba565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b886025913960400191505060405180910390fd5b61334982613191565b6133b581604051806060016040528060268152602001613b3860269139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eba9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061340d8160025461327090919063ffffffff16565b600281905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156134815761347a8160035461327090919063ffffffff16565b6003819055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b606061354d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135da9092919063ffffffff16565b90506000815111156135d55780806020019051602081101561356e57600080fd5b81019080805190602001909291905050506135d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613b5e602a913960400191505060405180910390fd5b5b505050565b60606135e984846000856135f2565b90509392505050565b60608247101561364d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a9e6026913960400191505060405180910390fd5b6136568561379b565b6136c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061371857805182526020820191506020810190506020830392506136f5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461377a576040519150601f19603f3d011682016040523d82523d6000602084013e61377f565b606091505b509150915061378f8282866137ae565b92505050949350505050565b600080823b905060008111915050919050565b606083156137be57829050613873565b6000835111156137d15782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561383857808201518184015260208101905061381d565b50505050905090810190601f1680156138655780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b8280548282559060005260206000209081019282156138f3579160200282015b828111156138f25782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061389a565b5b5090506139009190613984565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061394557805160ff1916838001178555613973565b82800160010185558215613973579182015b82811115613972578251825591602001919060010190613957565b5b50905061398091906139bf565b5090565b5b808211156139bb57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613985565b5090565b5b808211156139d85760008160009055506001016139c0565b509056fe42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c697374656442617365546f6b656e3a207472616e7366657220746f20746865207a65726f206164647265737342617365546f6b656e3a206d696e7420746f20746865207a65726f206164647265737342617365546f6b656e3a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c42617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e636542617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b656442617365546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e63655361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656442617365546f6b656e3a206275726e2066726f6d20746865207a65726f206164647265737342617365546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373a2646970667358221220306577a7d28b62abb44e2ebecacd5f5202b36151a33f86a276410b0d9667ce0f64736f6c634300060c003342617365546f6b656e3a206d696e7420746f20746865207a65726f2061646472657373