60806040523480156200001157600080fd5b506040516200240838038062002408833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b506040525050508181848260039080519060200190620001cd929190620003da565b508151620001e3906004906020850190620003da565b506005805460ff191660ff929092169190911790555050600a80546001600160a01b0319166001600160a01b0387811691909117918290556040805163076b7fbb60e51b81529051929091169163ed6ff76091600480820192602092909190829003018186803b1580156200025757600080fd5b505afa1580156200026c573d6000803e3d6000fd5b505050506040513d60208110156200028357600080fd5b5051600b80546001600160a01b0319166001600160a01b03928316179055600a5460408051630261bf8b60e01b815290519190921691630261bf8b916004808301926020929190829003018186803b158015620002df57600080fd5b505afa158015620002f4573d6000803e3d6000fd5b505050506040513d60208110156200030b57600080fd5b5051600c80546001600160a01b0319166001600160a01b03928316179055600a5460408051632f58b80d60e01b815290519190921691632f58b80d916004808301926020929190829003018186803b1580156200036757600080fd5b505afa1580156200037c573d6000803e3d6000fd5b505050506040513d60208110156200039357600080fd5b5051600d80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200047f92505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041d57805160ff19168380011785556200044d565b828001600101855582156200044d579182015b828111156200044d57825182559160200191906001019062000430565b506200045b9291506200045f565b5090565b6200047c91905b808211156200045b576000815560010162000466565b90565b611f79806200048f6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b0316610648565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b0316610655565b61028b6106f4565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107b6565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107d5565b61030161082c565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610835565b6102216004803603604081101561035b57600080fd5b506001600160a01b03813516906020013561089b565b61025b6004803603604081101561038757600080fd5b506001600160a01b0381351690602001356108d7565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b03166109cc565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b0381351690602001356109ea565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610a85565b6103c3610b38565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610b4c565b610180610c21565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610c82565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610cbe565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610ccb565b61028b610cd6565b61025b6004803603602081101561050957600080fd5b5035610cdc565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610f16565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610f41565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610f5c565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061063e338484610fb5565b5060015b92915050565b61065233826110a1565b50565b6001600160a01b03811633141561069d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611d8d6025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b6000806106ff611290565b90508061071057600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b0936107ab93169163d15e0053916024808301926020929190829003018186803b15801561076a57600080fd5b505afa15801561077e573d6000803e3d6000fd5b505050506040513d602081101561079457600080fd5b505161079f84611296565b9063ffffffff6112ac16565b6112f7565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e2848484611310565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461082291869161081d908663ffffffff61137f16565b610fb5565b5060019392505050565b60055460ff1690565b6001600160a01b0382811660009081526009602052604090205416331461088d5760405162461bcd60e51b815260040180806020018281038252603a815260200180611f0b603a913960400191505060405180910390fd5b61089782826110a1565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161063e91859061081d908663ffffffff6113dc16565b600c546001600160a01b031633146109205760405162461bcd60e51b8152600401808060200182810382526032815260200180611ed96032913960400191505060405180910390fd5b600080600061092e85611436565b93509350935050610940858386611527565b61094a858561165e565b600061095c848663ffffffff61137f16565b61096c5761096986611737565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109a457856109a7565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600d54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610a5257600080fd5b505afa158015610a66573d6000803e3d6000fd5b505050506040513d6020811015610a7c57600080fd5b50519392505050565b600080610a91836117e9565b6001600160a01b03841660009081526008602052604090205490915081158015610ab9575080155b15610ac9576000925050506107d0565b6001600160a01b0384811660009081526007602052604090205416610b1a57610b1181610b0586610b00868463ffffffff6113dc16565b611804565b9063ffffffff61137f16565b925050506107d0565b610b11610b2b82610b058785611804565b839063ffffffff6113dc16565b60055461010090046001600160a01b031681565b600c546001600160a01b03163314610b955760405162461bcd60e51b8152600401808060200182810382526032815260200180611ed96032913960400191505060405180910390fd5b600080610ba184611436565b935093505050610bc584610bbe85856113dc90919063ffffffff16565b6000611527565b610bcf84846118b9565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161063e91859061081d908663ffffffff61137f16565b600061063e338484611310565b6000610642826117e9565b60001981565b60008111610d31576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610d3f33611436565b91955093509150849050600019811415610d565750825b83811115610d955760405162461bcd60e51b8152600401808060200182810382526032815260200180611d396032913960400191505060405180910390fd5b610d9f33826109ea565b610df0576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610dfb338483611527565b610e05338261165e565b6000610e17858363ffffffff61137f16565b610e2757610e2433611737565b90505b600c546005546001600160a01b0391821691639895e3d8916101009004163385610e578a8263ffffffff61137f16565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610ec657600080fd5b505af1158015610eda573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109a457866109a7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600c546001600160a01b03163314610fa55760405162461bcd60e51b8152600401808060200182810382526032815260200180611ed96032913960400191505060405180910390fd5b610fb08383836119a9565b505050565b6001600160a01b038316610ffa5760405162461bcd60e51b8152600401808060200182810382526024815260200180611eb56024913960400191505060405180910390fd5b6001600160a01b03821661103f5760405162461bcd60e51b8152600401808060200182810382526022815260200180611d6b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156110fe5760405162461bcd60e51b815260040180806020018281038252602a815260200180611dd3602a913960400191505060405180910390fd5b60008060008061110d87611436565b9350935093509350600083116111545760405162461bcd60e51b8152600401808060200182810382526042815260200180611dfd6042913960600191505060405180910390fd5b6001600160a01b0385161561116f5761116f87600086611527565b866001600160a01b0316866001600160a01b031614156111fb576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a35050505050610897565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112379088908590611527565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064282633b9aca0063ffffffff611ad816565b60006112f06b033b2e3c9fd0803ce80000006112e46112d1868663ffffffff611ad816565b6b019d971e4fe8401e74000000906113dc565b9063ffffffff611b3116565b9392505050565b6000631dcd65006112f0633b9aca006112e483866113dc565b828161131c82826109ea565b61136d576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b6113788585856119a9565b5050505050565b6000828211156113d6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156112f0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000611447866117e9565b9050600061145882610b0589610a85565b905061146487826118b9565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b1580156114bd57600080fd5b505afa1580156114d1573d6000803e3d6000fd5b505050506040513d60208110156114e757600080fd5b50516001600160a01b0389166000908152600660205260409020819055905082611517818463ffffffff6113dc16565b9099909850919650945092505050565b6001600160a01b03808416600090815260076020526040902054168061154d5750610fb0565b60008061155983611436565b6001600160a01b038716600090815260086020526040902054919550935061158f9250869150610b05908863ffffffff6113dc16565b6001600160a01b03808516600090815260086020908152604080832094909455600790529190912054168015611602576001600160a01b0381166000908152600860205260409020546115e8908463ffffffff6113dc16565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b0382166116a35760405162461bcd60e51b8152600401808060200182810382526021815260200180611e6f6021913960400191505060405180910390fd5b6002546116b6908263ffffffff61137f16565b6002556001600160a01b0382166000908152602081905260409020546116e2908263ffffffff61137f16565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b0382166000908152600860205260409020546117e157506001600160a01b03811660009081526006602052604081205560016107d0565b5060006107d0565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b815261010090910487166004820152925194956112f0956107ab9593946118ad94939092169263d15e00539260248082019391829003018186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b505161079f87611296565b9063ffffffff611b9b16565b6001600160a01b038216611914576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611927908263ffffffff6113dc16565b6002556001600160a01b038216600090815260208190526040902054611953908263ffffffff6113dc16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081116119e85760405162461bcd60e51b8152600401808060200182810382526030815260200180611e3f6030913960400191505060405180910390fd5b60008060006119f686611436565b93509350935050600080611a0987611436565b935093505050611a1a888588611527565b611a2e87610bbe848963ffffffff6113dc16565b611a39888888611bd3565b6000611a4b868863ffffffff61137f16565b611a5b57611a5889611737565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611a9e5789611aa1565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611ae757506000610642565b82820282848281611af457fe5b04146112f05760405162461bcd60e51b8152600401808060200182810382526021815260200180611db26021913960400191505060405180910390fd5b6000808211611b87576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481611b9257fe5b04949350505050565b600060028204611bcb836112e4611bbe876b033b2e3c9fd0803ce8000000611ad8565b849063ffffffff6113dc16565b949350505050565b6001600160a01b038316611c185760405162461bcd60e51b8152600401808060200182810382526025815260200180611e906025913960400191505060405180910390fd5b6001600160a01b038216611c5d5760405162461bcd60e51b8152600401808060200182810382526023815260200180611d166023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054611c86908263ffffffff61137f16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611cbb908263ffffffff6113dc16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f2061646472657373557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a265627a7a723158207029b8e2a8a6dcf81be1753ab59bc1690f3f41e58fae43086d4df87ae569744a64736f6c634300050e003200000000000000000000000024a42fd28c976a61df5d00d0599c34c4f90748c8000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001a4161766520496e7465726573742062656172696e67205553445400000000000000000000000000000000000000000000000000000000000000000000000000056155534454000000000000000000000000000000000000000000000000000000