60806040526008805460ff191690553480156200001b57600080fd5b50604080516020808201808452600080845284519283019094529281528151919290916200004c9160039162000078565b5080516200006290600490602084019062000078565b50506005805460ff19166012179055506200011d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000bb57805160ff1916838001178555620000eb565b82800160010185558215620000eb579182015b82811115620000eb578251825591602001919060010190620000ce565b50620000f9929150620000fd565b5090565b6200011a91905b80821115620000f9576000815560010162000104565b90565b612619806200012d6000396000f3fe6080604052600436106101f95760003560e01c806340c10f191161010d578063a217fddf116100a0578063ca15c8731161006f578063ca15c87314610810578063cf2c52cb1461083a578063d547741f146108c5578063dd62ed3e146108fe578063de7ea79d14610939576101f9565b8063a217fddf14610774578063a3b0b5a314610789578063a457c2d71461079e578063a9059cbb146107d7576101f9565b80638acfcaf7116100dc5780638acfcaf7146106c55780639010d07c146106da57806391d148541461072657806395d89b411461075f576101f9565b806340c10f19146105c95780635353a2d814610602578063626381a01461067d57806370a0823114610692576101f9565b806323b872dd116101905780632f2ff15d1161015f5780632f2ff15d146104de578063313ce567146105175780633408e4701461054257806336568abe146105575780633950935114610590576101f9565b806323b872dd14610412578063248a9ca3146104555780632d0335ab1461047f5780632e1a7d4d146104b2576101f9565b80630dd7531a116101cc5780630dd7531a146103ac5780630f7e5970146103c157806318160ddd146103d657806320379ee5146103fd576101f9565b806306fdde03146101fe578063095ea7b3146102885780630b54817c146102d55780630c53c51c146102ea575b600080fd5b34801561020a57600080fd5b50610213610a16565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024d578181015183820152602001610235565b50505050905090810190601f16801561027a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029457600080fd5b506102c1600480360360408110156102ab57600080fd5b506001600160a01b038135169060200135610aad565b604080519115158252519081900360200190f35b3480156102e157600080fd5b50610213610acb565b610213600480360360a081101561030057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561032a57600080fd5b82018360208201111561033c57600080fd5b803590602001918460018302840111600160201b8311171561035d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff16610ae8565b3480156103b857600080fd5b50610213610deb565b3480156103cd57600080fd5b50610213610e08565b3480156103e257600080fd5b506103eb610e25565b60408051918252519081900360200190f35b34801561040957600080fd5b506103eb610e2b565b34801561041e57600080fd5b506102c16004803603606081101561043557600080fd5b506001600160a01b03813581169160208101359091169060400135610e31565b34801561046157600080fd5b506103eb6004803603602081101561047857600080fd5b5035610ebe565b34801561048b57600080fd5b506103eb600480360360208110156104a257600080fd5b50356001600160a01b0316610ed3565b3480156104be57600080fd5b506104dc600480360360208110156104d557600080fd5b5035610eee565b005b3480156104ea57600080fd5b506104dc6004803603604081101561050157600080fd5b50803590602001356001600160a01b0316610f02565b34801561052357600080fd5b5061052c610f6e565b6040805160ff9092168252519081900360200190f35b34801561054e57600080fd5b506103eb610f77565b34801561056357600080fd5b506104dc6004803603604081101561057a57600080fd5b50803590602001356001600160a01b0316610f7b565b34801561059c57600080fd5b506102c1600480360360408110156105b357600080fd5b506001600160a01b038135169060200135610fdc565b3480156105d557600080fd5b506104dc600480360360408110156105ec57600080fd5b506001600160a01b038135169060200135611030565b34801561060e57600080fd5b506104dc6004803603602081101561062557600080fd5b810190602081018135600160201b81111561063f57600080fd5b82018360208201111561065157600080fd5b803590602001918460018302840111600160201b8311171561067257600080fd5b509092509050611047565b34801561068957600080fd5b506103eb611192565b34801561069e57600080fd5b506103eb600480360360208110156106b557600080fd5b50356001600160a01b0316611197565b3480156106d157600080fd5b506103eb6111b2565b3480156106e657600080fd5b5061070a600480360360408110156106fd57600080fd5b50803590602001356111b7565b604080516001600160a01b039092168252519081900360200190f35b34801561073257600080fd5b506102c16004803603604081101561074957600080fd5b50803590602001356001600160a01b03166111dc565b34801561076b57600080fd5b506102136111fa565b34801561078057600080fd5b506103eb61125b565b34801561079557600080fd5b506103eb611260565b3480156107aa57600080fd5b506102c1600480360360408110156107c157600080fd5b506001600160a01b038135169060200135611286565b3480156107e357600080fd5b506102c1600480360360408110156107fa57600080fd5b506001600160a01b0381351690602001356112f4565b34801561081c57600080fd5b506103eb6004803603602081101561083357600080fd5b5035611308565b34801561084657600080fd5b506104dc6004803603604081101561085d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561088757600080fd5b82018360208201111561089957600080fd5b803590602001918460018302840111600160201b831117156108ba57600080fd5b50909250905061131f565b3480156108d157600080fd5b506104dc600480360360408110156108e857600080fd5b50803590602001356001600160a01b03166113dc565b34801561090a57600080fd5b506103eb6004803603604081101561092157600080fd5b506001600160a01b0381358116916020013516611435565b34801561094557600080fd5b506104dc6004803603608081101561095c57600080fd5b810190602081018135600160201b81111561097657600080fd5b82018360208201111561098857600080fd5b803590602001918460018302840111600160201b831117156109a957600080fd5b919390929091602081019035600160201b8111156109c657600080fd5b8201836020820111156109d857600080fd5b803590602001918460018302840111600160201b831117156109f957600080fd5b9193509150803560ff1690602001356001600160a01b0316611460565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610aa25780601f10610a7757610100808354040283529160200191610aa2565b820191906000526020600020905b815481529060010190602001808311610a8557829003601f168201915b505050505090505b90565b6000610ac1610aba61161d565b848461162c565b5060015b92915050565b604051806040016040528060018152602001608960f81b81525081565b6060610af2612255565b50604080516060810182526001600160a01b0388166000818152600a602090815290849020548352820152908101869052610b308782878787611718565b610b6b5760405162461bcd60e51b81526004018080602001828103825260218152602001806125056021913960400191505060405180910390fd5b6001600160a01b0387166000908152600a6020526040902054610b9590600163ffffffff6117f516565b6001600160a01b0388166000818152600a602090815260408083209490945583519283523383820181905260609484018581528b51958501959095528a517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b958d9592948d94919260808501928601918190849084905b83811015610c24578181015183820152602001610c0c565b50505050905090810190601f168015610c515780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160006060306001600160a01b0316888a6040516020018083805190602001908083835b60208310610ca25780518252601f199092019160209182019101610c83565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b8152601401925050506040516020818303038152906040526040518082805190602001908083835b60208310610d215780518252601f199092019160209182019101610d02565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d83576040519150601f19603f3d011682016040523d82523d6000602084013e610d88565b606091505b509150915081610ddf576040805162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015290519081900360640190fd5b98975050505050505050565b604051806040016040528060018152602001600160f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b60025490565b60095490565b6000610e3e84848461184f565b610eb484610e4a61161d565b610eaf856040518060600160405280602881526020016124dd602891396001600160a01b038a16600090815260016020526040812090610e8861161d565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6119b616565b61162c565b5060019392505050565b60009081526006602052604090206002015490565b6001600160a01b03166000908152600a602052604090205490565b610eff610ef961161d565b82611a4d565b50565b600082815260066020526040902060020154610f2590610f2061161d565b6111dc565b610f605760405162461bcd60e51b815260040180806020018281038252602f81526020018061235d602f913960400191505060405180910390fd5b610f6a8282611b55565b5050565b60055460ff1690565b4690565b610f8361161d565b6001600160a01b0316816001600160a01b031614610fd25760405162461bcd60e51b815260040180806020018281038252602f8152602001806125b5602f913960400191505060405180910390fd5b610f6a8282611bc4565b6000610ac1610fe961161d565b84610eaf8560016000610ffa61161d565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6117f516565b6000811161103d57600080fd5b610f6a8282611c33565b600061105581610f2061161d565b6007906110f55760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156110e65780601f106110bb576101008083540402835291602001916110e6565b820191906000526020600020905b8154815290600101906020018083116110c957829003601f168201915b50509250505060405180910390fd5b5061113583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d2f92505050565b61118d83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b60208201529150611d429050565b505050565b608981565b6001600160a01b031660009081526020819052604090205490565b600181565b60008281526006602052604081206111d5908363ffffffff611dcd16565b9392505050565b60008281526006602052604081206111d5908363ffffffff611dd916565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610aa25780601f10610a7757610100808354040283529160200191610aa2565b600081565b604080516d4445504f5349544f525f524f4c4560901b8152905190819003600e01902081565b6000610ac161129361161d565b84610eaf8560405180606001604052806025815260200161259060259139600160006112bd61161d565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6119b616565b6000610ac161130161161d565b848461184f565b6000818152600660205260408120610ac590611dee565b604080516d4445504f5349544f525f524f4c4560901b8152905190819003600e01902061134e81610f2061161d565b6007906113b45760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156110e65780601f106110bb576101008083540402835291602001916110e6565b506000838360208110156113c757600080fd5b503590506113d58582611c33565b5050505050565b6000828152600660205260409020600201546113fa90610f2061161d565b610fd25760405162461bcd60e51b81526004018080602001828103825260308152602001806124886030913960400191505060405180910390fd5b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60085460ff16156114a9576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b6114e886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d2f92505050565b61152784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611df992505050565b61153082611e0c565b611571848460405160200180806410da1a5b1960da1b8152506005018383808284378083019250505092505050604051602081830303815290604052611e22565b611583600061157e61161d565b610f60565b604080516d4445504f5349544f525f524f4c4560901b8152905190819003600e0190206115b09082610f60565b61160886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b60208201529150611ec09050565b50506008805460ff1916600117905550505050565b6000611627611f24565b905090565b6001600160a01b0383166116715760405162461bcd60e51b815260040180806020018281038252602481526020018061256c6024913960400191505060405180910390fd5b6001600160a01b0382166116b65760405162461bcd60e51b81526004018080602001828103825260228152602001806123f16022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60006001600160a01b03861661175f5760405162461bcd60e51b81526004018080602001828103825260258152602001806124b86025913960400191505060405180910390fd5b600161177261176d87611f81565b61200d565b83868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156117cc573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b6000828201838110156111d5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166118945760405162461bcd60e51b81526004018080602001828103825260258152602001806125476025913960400191505060405180910390fd5b6001600160a01b0382166118d95760405162461bcd60e51b815260040180806020018281038252602381526020018061233a6023913960400191505060405180910390fd5b6118e483838361118d565b61192781604051806060016040528060268152602001612462602691396001600160a01b038616600090815260208190526040902054919063ffffffff6119b616565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461195c908263ffffffff6117f516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611a455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a0a5781810151838201526020016119f2565b50505050905090810190601f168015611a375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216611a925760405162461bcd60e51b81526004018080602001828103825260218152602001806125266021913960400191505060405180910390fd5b611a9e8260008361118d565b611ae18160405180606001604052806022815260200161238c602291396001600160a01b038516600090815260208190526040902054919063ffffffff6119b616565b6001600160a01b038316600090815260208190526040902055600254611b0d908263ffffffff61205916565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000828152600660205260409020611b73908263ffffffff61209b16565b15610f6a57611b8061161d565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600660205260409020611be2908263ffffffff6120b016565b15610f6a57611bef61161d565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6001600160a01b038216611c8e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611c9a6000838361118d565b600254611cad908263ffffffff6117f516565b6002556001600160a01b038216600090815260208190526040902054611cd9908263ffffffff6117f516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8051610f6a90600390602084019061227f565b6040518060800160405280604f8152602001612413604f9139805190602001208280519060200120828051906020012030611d7b610f77565b604080516020808201979097528082019590955260608501939093526001600160a01b03909116608084015260a0808401919091528151808403909101815260c0909201905280519101206009555050565b60006111d583836120c5565b60006111d5836001600160a01b038416612129565b6000610ac582612141565b8051610f6a90600490602084019061227f565b6005805460ff191660ff92909216919091179055565b806040516020018082805190602001908083835b60208310611e555780518252601f199092019160209182019101611e36565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e530000000000009190930190815260408051808303600519018152601a90920190528051610f6a955060079450920191905061227f565b60085460ff1615611f09576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b611f138282611d42565b50506008805460ff19166001179055565b600033301415611f7c5760606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169150610aaa9050565b503390565b60006040518060800160405280604381526020016123ae60439139805190602001208260000151836020015184604001518051906020012060405160200180858152602001848152602001836001600160a01b03166001600160a01b03168152602001828152602001945050505050604051602081830303815290604052805190602001209050919050565b6000612017610e2b565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60006111d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119b6565b60006111d5836001600160a01b038416612145565b60006111d5836001600160a01b03841661218f565b815460009082106121075760405162461bcd60e51b81526004018080602001828103825260228152602001806123186022913960400191505060405180910390fd5b82600001828154811061211657fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60006121518383612129565b61218757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ac5565b506000610ac5565b6000818152600183016020526040812054801561224b57835460001980830191908101906000908790839081106121c257fe5b90600052602060002001549050808760000184815481106121df57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061220f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ac5565b6000915050610ac5565b60405180606001604052806000815260200160006001600160a01b03168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122c057805160ff19168380011785556122ed565b828001600101855582156122ed579182015b828111156122ed5782518255916020019190600101906122d2565b506122f99291506122fd565b5090565b610aaa91905b808211156122f9576000815560010161230356fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e63654d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e61747572652945524332303a20617070726f766520746f20746865207a65726f2061646472657373454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c742945524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5349474e455245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655369676e657220616e64207369676e617475726520646f206e6f74206d6174636845524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220606df7a1a8328f0fa54aa812220b360ff345ef814a1e7a6b6760368f1ffbf9fc64736f6c63430006060033