60806040526a01fa505ea6031248600000600655620334506008556014600b553480156200002c57600080fd5b5060405162002bfb38038062002bfb833981810160405260408110156200005257600080fd5b8101908080519060200190929190805190602001909291905050506040518060400160405280600581526020017f50726f78790000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50525859000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000f192919062000516565b5080600490805190602001906200010a92919062000516565b506012600560006101000a81548160ff021916908360ff160217905550505060006200013b6200028460201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001ec60126200028c60201b60201c565b8060078190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654620002aa60201b60201c565b600a600081548092919060010191905055505050620005cc565b600033905090565b80600560006101000a81548160ff021916908360ff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200034e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000362600083836200048860201b60201c565b6200037e816002546200048d60201b620019691790919060201c565b600281905550620003dc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200048d60201b620019691790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200050c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200054e57600085556200059a565b82601f106200056957805160ff19168380011785556200059a565b828001600101855582156200059a579182015b82811115620005995782518255916020019190600101906200057c565b5b509050620005a99190620005ad565b5090565b5b80821115620005c8576000816000905550600101620005ae565b5090565b61261f80620005dc6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806379cc67901161010f578063a457c2d7116100a2578063efdc8e2a11610071578063efdc8e2a1461086d578063f2fde38b1461089b578063f35e4a6e146108df578063f49816611461090d576101e5565b8063a457c2d71461070f578063a83ef51514610773578063a9059cbb14610791578063dd62ed3e146107f5576101e5565b806395d89b41116100de57806395d89b41146106445780639a65ea26146106c75780639b207cfb146106d15780639cf5c3f5146106f1576101e5565b806379cc679014610584578063857ba7ad146105d25780638da5cb5b146105f057806395a4765214610624576101e5565b806339509351116101875780634626402b116101565780634626402b146104d057806363797b821461050457806370a0823114610522578063715018a61461057a576101e5565b806339509351146103d257806340c10f191461043657806342966c681461048457806342c71d2b146104b2576101e5565b806318160ddd116101c357806318160ddd146102f15780631dbbc71b1461030f57806323b872dd1461032d578063313ce567146103b1576101e5565b806305d2035b146101ea57806306fdde031461020a578063095ea7b31461028d575b600080fd5b6101f261093b565b60405180821515815260200191505060405180910390f35b610212610949565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610252578082015181840152602081019050610237565b50505050905090810190601f16801561027f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d9600480360360408110156102a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109eb565b60405180821515815260200191505060405180910390f35b6102f9610a09565b6040518082815260200191505060405180910390f35b610317610a13565b6040518082815260200191505060405180910390f35b6103996004803603606081101561034357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a19565b60405180821515815260200191505060405180910390f35b6103b9610af2565b604051808260ff16815260200191505060405180910390f35b61041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b09565b60405180821515815260200191505060405180910390f35b6104826004803603604081101561044c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bbc565b005b6104b06004803603602081101561049a57600080fd5b8101908080359060200190929190505050610c94565b005b6104ba610ca8565b6040518082815260200191505060405180910390f35b6104d8610cc4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61050c610cea565b6040518082815260200191505060405180910390f35b6105646004803603602081101561053857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cf0565b6040518082815260200191505060405180910390f35b610582610d38565b005b6105d06004803603604081101561059a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec3565b005b6105da610f25565b6040518082815260200191505060405180910390f35b6105f8610f2b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61062c610f55565b60405180821515815260200191505060405180910390f35b61064c610f75565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561068c578082015181840152602081019050610671565b50505050905090810190601f1680156106b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106cf611017565b005b6106d961122c565b60405180821515815260200191505060405180910390f35b6106f961123f565b6040518082815260200191505060405180910390f35b61075b6004803603604081101561072557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611245565b60405180821515815260200191505060405180910390f35b61077b611312565b6040518082815260200191505060405180910390f35b6107dd600480360360408110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611318565b60405180821515815260200191505060405180910390f35b6108576004803603604081101561080b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611336565b6040518082815260200191505060405180910390f35b6108996004803603602081101561088357600080fd5b81019080803590602001909291905050506113bd565b005b6108dd600480360360208110156108b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d2565b005b61090b600480360360208110156108f557600080fd5b81019080803590602001909291905050506116e2565b005b6109396004803603602081101561092357600080fd5b8101908080359060200190929190505050611854565b005b6000600b54600a5411905090565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109e15780601f106109b6576101008083540402835291602001916109e1565b820191906000526020600020905b8154815290600101906020018083116109c457829003601f168201915b5050505050905090565b60006109ff6109f86119f1565b84846119f9565b6001905092915050565b6000600254905090565b600b5481565b6000610a26848484611bf0565b610ae784610a326119f1565b610ae28560405180606001604052806028815260200161250f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a986119f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb19092919063ffffffff16565b6119f9565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000610bb2610b166119f1565b84610bad8560016000610b276119f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196990919063ffffffff16565b6119f9565b6001905092915050565b610bc46119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610c908282611f71565b5050565b610ca5610c9f6119f1565b82612138565b50565b6000610cbf600754436122fc90919063ffffffff16565b905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d406119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610f028260405180606001604052806024815260200161253760249139610ef386610eee6119f1565b611336565b611eb19092919063ffffffff16565b9050610f1683610f106119f1565b836119f9565b610f208383612138565b505050565b60065481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600854610f6f600754436122fc90919063ffffffff16565b11905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561100d5780601f10610fe25761010080835404028352916020019161100d565b820191906000526020600020905b815481529060010190602001808311610ff057829003601f168201915b5050505050905090565b61101f6119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6110e961093b565b1561115c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4572723a204d696e74696e672046696e6973686564000000000000000000000081525060200191505060405180910390fd5b611164610f55565b6111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4572723a204d696e74696e67206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b436007819055506111f6600a60096006540261234690919063ffffffff16565b60068190555061122a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654611f71565b565b600c60009054906101000a900460ff1681565b60075481565b60006113086112526119f1565b84611303856040518060600160405280602581526020016125c5602591396001600061127c6119f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb19092919063ffffffff16565b6119f9565b6001905092915050565b60085481565b600061132c6113256119f1565b8484611bf0565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113c56119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f4192efc584bb87e0e6d8a052e4acbd9bc95a6c1987458ff4fa12782f8f29d503600b5482604051808381526020018281526020019250505060405180910390a180600b8190555050565b6114da6119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806124a16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116ea6119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600c60009054906101000a900460ff161561182f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f737461727420626c6f636b20616c72656164792073657400000000000000000081525060200191505060405180910390fd5b806007819055506001600c60006101000a81548160ff02191690831515021790555050565b61185c6119f1565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f5319c5a8662c777d9ff77ae451f0c2dfafafd8eb928417e69ee481fc6fd910a760085482604051808381526020018281526020019250505060405180910390a18060088190555050565b6000808284019050838110156119e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806125a16024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124c76022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061257c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061245c6023913960400191505060405180910390fd5b611d07838383612390565b611d72816040518060600160405280602681526020016124e9602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb19092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e05816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611f5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f23578082015181840152602081019050611f08565b50505050905090810190601f168015611f505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61202060008383612390565b6120358160025461196990919063ffffffff16565b60028190555061208c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061255b6021913960400191505060405180910390fd5b6121ca82600083612390565b6122358160405180606001604052806022815260200161247f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb19092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061228c816002546122fc90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061233e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eb1565b905092915050565b600061238883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612395565b905092915050565b505050565b60008083118290612441576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124065780820151818401526020810190506123eb565b50505050905090810190601f1680156124335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161244d57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039b7334ef626f3d35c66dfa01092ec0d79ebc582483a0ea1b8205e507de80e7364736f6c63430007060033000000000000000000000000d1f4ec7ff772bc382c2345cc4f57dc4bf13685a90000000000000000000000000000000000000000000000000000000000bf87a3