//
0x60a06040523060805234801561001457600080fd5b50608051611f5561004560003960008181610293015281816102dc0152818161036501526103a50152611f556000f3fe6080604052600436106100a75760003560e01c8063a030f2df11610064578063a030f2df146101bb578063a1aeaf22146101db578063c0c53b8b146101fb578063d9b5c4a51461021b578063da74222814610248578063e36421531461026857600080fd5b80633659cfe6146100ac5780634f1ef286146100ce578063572b6c05146100e1578063749d18d71461012557806380e9f2ba14610145578063842107cd1461019b575b600080fd5b3480156100b857600080fd5b506100cc6100c736600461174b565b610288565b005b6100cc6100dc36600461183b565b61035a565b3480156100ed57600080fd5b506101106100fc36600461174b565b6097546001600160a01b0391821691161490565b60405190151581526020015b60405180910390f35b34801561013157600080fd5b506100cc6101403660046118e6565b610414565b34801561015157600080fd5b5061018d61016036600461193c565b815160208184018101805160cb825292820194820194909420919093529091526000908152604090205481565b60405190815260200161011c565b3480156101a757600080fd5b506100cc6101b63660046118e6565b610671565b3480156101c757600080fd5b506101106101d63660046118e6565b61097b565b3480156101e757600080fd5b506100cc6101f63660046119e5565b610aec565b34801561020757600080fd5b506100cc610216366004611a7e565b610e96565b34801561022757600080fd5b5060ca5461023b906001600160a01b031681565b60405161011c9190611abe565b34801561025457600080fd5b506100cc61026336600461174b565b610f8b565b34801561027457600080fd5b5060c95461023b906001600160a01b031681565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102da5760405162461bcd60e51b81526004016102d190611ad2565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661030c6110a9565b6001600160a01b0316146103325760405162461bcd60e51b81526004016102d190611b1e565b61033b816110d7565b60408051600080825260208201909252610357918391906111ec565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103a35760405162461bcd60e51b81526004016102d190611ad2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103d56110a9565b6001600160a01b0316146103fb5760405162461bcd60e51b81526004016102d190611b1e565b610404826110d7565b610410828260016111ec565b5050565b60c95460405163130d191f60e11b8152849184916001600160a01b039091169063261a323e9061044a9085908590600401611b93565b60206040518083038186803b15801561046257600080fd5b505afa158015610476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049a9190611baf565b6104b65760405162461bcd60e51b81526004016102d190611bd1565b60c9546040805162353f8560e81b815290516000926001600160a01b0316916391d1485491839163353f8500916004808301926020929190829003018186803b15801561050257600080fd5b505afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a9190611c03565b610542611333565b6040518363ffffffff1660e01b815260040161055f929190611c1c565b60206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190611baf565b90508061065e5760c9546001600160a01b03166388b2103884846105d1611333565b60006040518563ffffffff1660e01b81526004016105f29493929190611c33565b60206040518083038186803b15801561060a57600080fd5b505afa15801561061e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106429190611baf565b61065e5760405162461bcd60e51b81526004016102d190611c85565b61066986868661135b565b505050505050565b60c95460405163130d191f60e11b8152849184916001600160a01b039091169063261a323e906106a79085908590600401611b93565b60206040518083038186803b1580156106bf57600080fd5b505afa1580156106d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f79190611baf565b6107135760405162461bcd60e51b81526004016102d190611bd1565b60c9546040805162353f8560e81b815290516000926001600160a01b0316916391d1485491839163353f8500916004808301926020929190829003018186803b15801561075f57600080fd5b505afa158015610773573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107979190611c03565b61079f611333565b6040518363ffffffff1660e01b81526004016107bc929190611c1c565b60206040518083038186803b1580156107d457600080fd5b505afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c9190611baf565b9050806108bb5760c9546001600160a01b03166388b21038848461082e611333565b60006040518563ffffffff1660e01b815260040161084f9493929190611c33565b60206040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190611baf565b6108bb5760405162461bcd60e51b81526004016102d190611c85565b60ca546040516313a4120960e31b81526000916001600160a01b031690639d209048906108ec908890600401611abe565b60006040518083038186803b15801561090457600080fd5b505afa158015610918573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109409190810190611ce1565b90508060400151600014156109675760405162461bcd60e51b81526004016102d190611da7565b6109728787876113d4565b50505050505050565b60c95460405163130d191f60e11b81526000916001600160a01b03169063261a323e906109ae9087908790600401611b93565b60206040518083038186803b1580156109c657600080fd5b505afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190611baf565b610a0a57506000610ae5565b60ca546040516313a4120960e31b81526000916001600160a01b031690639d20904890610a3b908690600401611abe565b60006040518083038186803b158015610a5357600080fd5b505afa158015610a67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8f9190810190611ce1565b9050806040015160001415610aa8576000915050610ae5565b60cb8585604051610aba929190611dde565b90815260408051602092819003830190206001600160a01b0386166000908152925290205415159150505b9392505050565b60c95460405163130d191f60e11b8152879187916001600160a01b039091169063261a323e90610b229085908590600401611b93565b60206040518083038186803b158015610b3a57600080fd5b505afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b729190611baf565b610b8e5760405162461bcd60e51b81526004016102d190611bd1565b60c9546040805162353f8560e81b815290516000926001600160a01b0316916391d1485491839163353f8500916004808301926020929190829003018186803b158015610bda57600080fd5b505afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c129190611c03565b610c1a611333565b6040518363ffffffff1660e01b8152600401610c37929190611c1c565b60206040518083038186803b158015610c4f57600080fd5b505afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c879190611baf565b905080610d365760c9546001600160a01b03166388b210388484610ca9611333565b60006040518563ffffffff1660e01b8152600401610cca9493929190611c33565b60206040518083038186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190611baf565b610d365760405162461bcd60e51b81526004016102d190611c85565b60005b86811015610e3b576000888883818110610d5557610d55611dee565b9050602002016020810190610d6a919061174b565b60ca546040516313a4120960e31b81529192506000916001600160a01b0390911690639d20904890610da0908590600401611abe565b60006040518083038186803b158015610db857600080fd5b505afa158015610dcc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df49190810190611ce1565b9050806040015160001415610e1b5760405162461bcd60e51b81526004016102d190611da7565b610e268c8c846113d4565b50508080610e3390611e04565b915050610d39565b5060005b84811015610e8a57610e788a8a888885818110610e5e57610e5e611dee565b9050602002016020810190610e73919061174b565b61135b565b80610e8281611e04565b915050610e3f565b50505050505050505050565b600054610100900460ff16610eb15760005460ff1615610eb5565b303b155b610f185760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102d1565b600054610100900460ff16158015610f3a576000805461ffff19166101011790555b60c980546001600160a01b038087166001600160a01b03199283161790925560ca805492861692909116919091179055610f7382611483565b8015610f85576000805461ff00191690555b50505050565b60c9546040805162353f8560e81b815290516001600160a01b03909216916391d1485491839163353f850091600480820192602092909190829003018186803b158015610fd757600080fd5b505afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f9190611c03565b611017611333565b6040518363ffffffff1660e01b8152600401611034929190611c1c565b60206040518083038186803b15801561104c57600080fd5b505afa158015611060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110849190611baf565b6110a05760405162461bcd60e51b81526004016102d190611e2d565b610357816114bb565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60c9546040805162353f8560e81b815290516001600160a01b03909216916391d1485491839163353f850091600480820192602092909190829003018186803b15801561112357600080fd5b505afa158015611137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115b9190611c03565b611163611333565b6040518363ffffffff1660e01b8152600401611180929190611c1c565b60206040518083038186803b15801561119857600080fd5b505afa1580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190611baf565b6103575760405162461bcd60e51b81526004016102d190611e2d565b60006111f66110a9565b9050611201846114dd565b60008351118061120e5750815b1561121f5761121d8484611582565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661132c57805460ff1916600117815560405161129a90869061126b908590602401611abe565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052611582565b50805460ff191681556112ab6110a9565b6001600160a01b0316826001600160a01b0316146113235760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016102d1565b61132c8561166d565b5050505050565b6097546000906001600160a01b0316331415611356575060131936013560601c90565b503390565b60cb838360405161136d929190611dde565b90815260408051602092819003830181206001600160a01b038516600081815291909452918220919091557f264d05230c1929427b5dcfcf1c83668ac376e215a2c35cb0e2c21816bbe28d06906113c79086908690611b93565b60405180910390a2505050565b60cb83836040516113e6929190611dde565b90815260408051602092819003830190206001600160a01b03841660009081529252902054611448574260cb8484604051611422929190611dde565b90815260408051602092819003830190206001600160a01b038516600090815292529020555b806001600160a01b03167ffb989cb0d132b51483b9258c1befbe92caa5f5b046af3dfdcc617dcf425af49384846040516113c7929190611b93565b600054610100900460ff166114aa5760405162461bcd60e51b81526004016102d190611e5e565b6114b26116ad565b610357816116d6565b609780546001600160a01b0319166001600160a01b0392909216919091179055565b803b6115415760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102d1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6115e15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102d1565b600080846001600160a01b0316846040516115fc9190611ea9565b600060405180830381855af49150503d8060008114611637576040519150601f19603f3d011682016040523d82523d6000602084013e61163c565b606091505b50915091506116648282604051806060016040528060278152602001611ef9602791396116fd565b95945050505050565b611676816114dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff166116d45760405162461bcd60e51b81526004016102d190611e5e565b565b600054610100900460ff166114bb5760405162461bcd60e51b81526004016102d190611e5e565b6060831561170c575081610ae5565b82511561171c5782518084602001fd5b8160405162461bcd60e51b81526004016102d19190611ec5565b6001600160a01b038116811461035757600080fd5b60006020828403121561175d57600080fd5b8135610ae581611736565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156117a0576117a0611768565b60405290565b604051601f8201601f191681016001600160401b03811182821017156117ce576117ce611768565b604052919050565b60006001600160401b038211156117ef576117ef611768565b50601f01601f191660200190565b600061181061180b846117d6565b6117a6565b905082815283838301111561182457600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561184e57600080fd5b823561185981611736565b915060208301356001600160401b0381111561187457600080fd5b8301601f8101851361188557600080fd5b611894858235602084016117fd565b9150509250929050565b60008083601f8401126118b057600080fd5b5081356001600160401b038111156118c757600080fd5b6020830191508360208285010111156118df57600080fd5b9250929050565b6000806000604084860312156118fb57600080fd5b83356001600160401b0381111561191157600080fd5b61191d8682870161189e565b909450925050602084013561193181611736565b809150509250925092565b6000806040838503121561194f57600080fd5b82356001600160401b0381111561196557600080fd5b8301601f8101851361197657600080fd5b611985858235602084016117fd565b925050602083013561199681611736565b809150509250929050565b60008083601f8401126119b357600080fd5b5081356001600160401b038111156119ca57600080fd5b6020830191508360208260051b85010111156118df57600080fd5b600080600080600080606087890312156119fe57600080fd5b86356001600160401b0380821115611a1557600080fd5b611a218a838b0161189e565b90985096506020890135915080821115611a3a57600080fd5b611a468a838b016119a1565b90965094506040890135915080821115611a5f57600080fd5b50611a6c89828a016119a1565b979a9699509497509295939492505050565b600080600060608486031215611a9357600080fd5b8335611a9e81611736565b92506020840135611aae81611736565b9150604084013561193181611736565b6001600160a01b0391909116815260200190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611ba7602083018486611b6a565b949350505050565b600060208284031215611bc157600080fd5b81518015158114610ae557600080fd5b602080825260189082015277195c9c9bdc97dcdd1c99585b511bd95cd39bdd115e1a5cdd60421b604082015260600190565b600060208284031215611c1557600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b606081526000611c47606083018688611b6a565b6001600160a01b0385166020840152905060058310611c7657634e487b7160e01b600052602160045260246000fd5b82604083015295945050505050565b60208082526016908201527532b93937b92fb737a2b234ba2832b936b4b9b9b4b7b760511b604082015260600190565b60005b83811015611cd0578181015183820152602001611cb8565b83811115610f855750506000910152565b60006020808385031215611cf457600080fd5b82516001600160401b0380821115611d0b57600080fd5b9084019060608287031215611d1f57600080fd5b611d2761177e565b8251611d3281611736565b81528284015182811115611d4557600080fd5b83019150601f82018713611d5857600080fd5b8151611d6661180b826117d6565b8181528886838601011115611d7a57600080fd5b611d8982878301888701611cb5565b80868401525050604083015160408201528094505050505092915050565b6020808252601e908201527f6572726f725f73746f726167654e6f64654e6f74526567697374657265640000604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611e2657634e487b7160e01b600052601160045260246000fd5b5060010190565b6020808252601790820152766572726f725f6d757374426554727573746564526f6c6560481b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611ebb818460208701611cb5565b9190910192915050565b6020815260008251806020840152611ee4816040850160208701611cb5565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122008e7a6fb1ae6268d3d76940f7aae2c42559657d76b3fce8f346b548dae607f9164736f6c63430008090033