0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516152296200011f60003960008181610a4601528181610adc01528181610be401528181610c7a0152610d7501526152296000f3fe6080604052600436106102c65760003560e01c8063766cb70c11610177578063a7229fd9116100d5578063e06a1e7e11610084578063f56a6c6911610061578063f56a6c691461082f578063f82a83c7146108a5578063f8453e7c146108c557005b8063e06a1e7e146107cf578063f2fde38b146107ef578063f3cc660c1461080f57005b8063cc13233f116100b2578063cc13233f1461076f578063ce88b4391461078f578063d06904da146107af57005b8063a7229fd914610719578063ac90511414610739578063b3ab15fb1461074f57005b80638da5cb5b11610131578063a3763a061161010e578063a3763a06146106b6578063a4062250146106d6578063a4ee47781461070357005b80638da5cb5b1461065857806391c7fdf1146106765780639904dac71461069657005b80637e9c08911161015f5780637e9c0891146105d55780637efad8e01461062c578063866d84281461064357005b8063766cb70c1461059557806378fea92e146105b557005b806359f61dbc116102245780636b3774f7116101de578063715018a6116101bb578063715018a6146105405780637600f3f214610555578063762347591461057557005b80636b3774f7146104ea5780636d0652751461050a5780636e3f20df1461052a57005b80635cadd08d1161020c5780635cadd08d1461048a57806362c250db146104aa578063678f3ef3146104ca57005b806359f61dbc1461044f5780635ace58131461046257005b806330f8d8a41161028057806337c392351161025d57806337c39235146104075780634f1ef2861461042757806352d1902d1461043a57005b806330f8d8a4146103a75780633352b608146103c75780633659cfe6146103e757005b806316633d79116102ae57806316633d791461032c5780631a3e54571461035157806330ea2ea21461039157005b80630be9b2fc146102cf578063127effb2146102ef57005b366102cd57005b005b3480156102db57600080fd5b506102cd6102ea3660046143e9565b6108e5565b3480156102fb57600080fd5b5060ca5461030f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033857600080fd5b50610343620186a081565b604051908152602001610323565b34801561035d57600080fd5b5061038161036c3660046143e9565b60cb6020526000908152604090205460ff1681565b6040519015158152602001610323565b34801561039d57600080fd5b5061034360d35481565b3480156103b357600080fd5b506102cd6103c23660046143e9565b6109b7565b3480156103d357600080fd5b5060d15461030f906001600160a01b031681565b3480156103f357600080fd5b506102cd6104023660046143e9565b610a3b565b34801561041357600080fd5b5060c95461030f906001600160a01b031681565b6102cd610435366004614466565b610bd9565b34801561044657600080fd5b50610343610d68565b6102cd61045d36600461450e565b610e2d565b34801561046e57600080fd5b5061030f731111111254eeb25477b68fb85ed929f73a96058281565b34801561049657600080fd5b506102cd6104a53660046143e9565b6115df565b3480156104b657600080fd5b506102cd6104c5366004614539565b611626565b3480156104d657600080fd5b506102cd6104e53660046143e9565b6116c0565b3480156104f657600080fd5b506102cd610505366004614584565b61170a565b34801561051657600080fd5b506102cd6105253660046145dc565b611797565b34801561053657600080fd5b5061034360d05481565b34801561054c57600080fd5b506102cd6117fd565b34801561056157600080fd5b5060cd5461030f906001600160a01b031681565b34801561058157600080fd5b506102cd610590366004614627565b611811565b3480156105a157600080fd5b506102cd6105b036600461450e565b611924565b3480156105c157600080fd5b506102cd6105d03660046143e9565b6119b4565b3480156105e157600080fd5b506106116105f03660046143e9565b60cf6020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610323565b34801561063857600080fd5b50610343620f424081565b34801561064f57600080fd5b50610343603281565b34801561066457600080fd5b506097546001600160a01b031661030f565b34801561068257600080fd5b506102cd61069136600461450e565b611a20565b3480156106a257600080fd5b506102cd6106b1366004614678565b611b07565b3480156106c257600080fd5b506102cd6106d13660046146f3565b611bb8565b3480156106e257600080fd5b506106f66106f1366004614774565b611c18565b60405161032391906147b6565b34801561070f57600080fd5b5061034360d25481565b34801561072557600080fd5b506102cd610734366004614834565b611f64565b34801561074557600080fd5b5061034361271081565b34801561075b57600080fd5b506102cd61076a3660046143e9565b6120a9565b34801561077b57600080fd5b506102cd61078a366004614875565b612115565b34801561079b57600080fd5b506102cd6107aa3660046148a3565b612170565b3480156107bb57600080fd5b506102cd6107ca3660046148de565b612232565b3480156107db57600080fd5b506102cd6107ea366004614900565b61227d565b3480156107fb57600080fd5b506102cd61080a3660046143e9565b612334565b34801561081b57600080fd5b506102cd61082a3660046143e9565b6123c1565b34801561083b57600080fd5b5061087e61084a36600461494c565b60ce6020526000908152604090205463ffffffff808216916401000000008104821691680100000000000000009091041683565b6040805163ffffffff94851681529284166020840152921691810191909152606001610323565b3480156108b157600080fd5b506102cd6108c0366004614969565b612414565b3480156108d157600080fd5b506102cd6108e03660046149aa565b6124d9565b6108ed6127ef565b6001600160a01b0381166109485760405162461bcd60e51b815260206004820152600c60248201527f696e76616c69642061726773000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60d180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915560405190815233907f1c142d0dd2951f5e7b8d8568415fcc3e1a0f346595bb62d207800d8e61cf24ec906020015b60405180910390a250565b6109bf6127ef565b60cd546040517f80d6a7920000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152909116906380d6a792906024015b600060405180830381600087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b5050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ada5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b357f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610bb15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f78790000000000000000000000000000000000000000606482015260840161093f565b610bba81612849565b60408051600080825260208201909252610bd691839190612851565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610c785760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cd37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610d4f5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f78790000000000000000000000000000000000000000606482015260840161093f565b610d5882612849565b610d6482826001612851565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161093f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6097546001600160a01b0316331480610e50575060ca546001600160a01b031633145b610e9c5760405162461bcd60e51b815260206004820152601260248201527f4e6f74206f776e65722f6f70657261746f720000000000000000000000000000604482015260640161093f565b60d354610ea957600260d3555b60d15460d3546040517f4fe7009100000000000000000000000000000000000000000000000000000000815260048101919091526000916001600160a01b031690634fe7009190602401606060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f349190614aa9565b805160d1546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03918216602482015292935060009291169063dd62ed3e90604401602060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc89190614b14565b905082811015610fee5760d1548251610fee916001600160a01b039182169116856129f1565b81516001600160a01b03908116600090815260cf602090815260408083208151606080820184528254825260018301549482019490945260029091015481830152865191517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292949093929116906370a0823190602401602060405180830381865afa15801561108a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ae9190614b14565b9050858110156111005760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420656e6f75676820555344430000000000000000000000000000000000604482015260640161093f565b6040820151602083015183516000929161111991614b5c565b6111239190614b5c565b9050868110611286578251600090829061113d908a614b74565b6111479190614bb1565b905060008285604001518a61115c9190614b74565b6111669190614bb1565b9050600081611175848c614bec565b61117f9190614bec565b89516001600160a01b0316600090815260cf60205260408120805492935085929091906111ad908490614bec565b909155505088516001600160a01b0316600090815260cf6020526040812060010180548392906111de908490614bec565b909155505088516001600160a01b0316600090815260cf60205260408120600201805484929061120f908490614bec565b909155505060408051602081018590529081018290526060810183905260800160408051601f198184030181528282528583526020830184905290820184905297507f9c10b5e3c26bec848c28f597af8907ed4c626d1bacfe2ec76796717cf522cd159060600160405180910390a1505050611353565b8251604084015160008161129a848c614bec565b6112a49190614bec565b89516001600160a01b03908116600090815260cf602090815260408083208390558d51841683528083206001018390558d5190931682528282206002019190915581519081018690529081018290526060810184905290915060800160408051601f198184030181528282528583526020830184905290820184905297507f9c10b5e3c26bec848c28f597af8907ed4c626d1bacfe2ec76796717cf522cd159060600160405180910390a15050505b505060d1546040517f518d9643160cfd6fe469bfbd3ba66fc8035a68a30000000000000000000000006020820152600092506001600160a01b0390911690630a5123699060669060019060340160408051601f19818403018152606083018252620186a08352600060208481019190915282518084018452600281527f3078000000000000000000000000000000000000000000000000000000000000918101919091528383015290517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526114369493928991600401614c84565b6040805180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190614cdc565b509050478111156114c95760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420656e6f75676820455448000000000000000000000000000000000000604482015260640161093f565b60d15460d35460d2546001600160a01b0390921691639fbf10fc91849160669190308b6114f581612b30565b60408051606081018252620186a08152600060208083019190915282518084018452600281527f3078000000000000000000000000000000000000000000000000000000000000818301528284015291517f518d9643160cfd6fe469bfbd3ba66fc8035a68a300000000000000000000000092810192909252906034016040516020818303038152906040528c6040518b63ffffffff1660e01b81526004016115a699989796959493929190614d00565b6000604051808303818588803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b50505050505050505050565b6115e76127ef565b6001600160a01b0316600090815260cb6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b61162e6127ef565b60cd546040517f7e8435e60000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015263ffffffff80861660248401528416604483015290911690637e8435e6906064015b600060405180830381600087803b1580156116a357600080fd5b505af11580156116b7573d6000803e3d6000fd5b50505050505050565b6116c86127ef565b6001600160a01b0316600090815260cb6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6117126127ef565b60cd546040517f11ff5e8d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152909116906311ff5e8d906044015b600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505050565b61179f6127ef565b60cd546040517f8ff38e8000000000000000000000000000000000000000000000000000000000815262ffffff85166004820152831515602482015282151560448201526001600160a01b0390911690638ff38e8090606401611689565b6118056127ef565b61180f6000612b7b565b565b6118196127ef565b6001600160a01b038516600090815260cf602052604081208054859290611841908490614bec565b90915550506001600160a01b038516600090815260cf602052604081206001018054849290611871908490614bec565b90915550506001600160a01b038516600090815260cf6020526040812060020180548392906118a1908490614bec565b9091555060009050816118b48486614b5c565b6118be9190614b5c565b90506118cb868683612be5565b60408051858152602081018590529081018390526001600160a01b0380881691908716907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9060600160405180910390a3505050505050565b61192c6127ef565b612710811061197d5760405162461bcd60e51b815260206004820152601060248201527f696e76616c696420736c69707061676500000000000000000000000000000000604482015260640161093f565b60d081905560405181815233907f1ffad795b81fd50d1c8d2358d2f76b8990007d5ae2a57cbc7c94359adabe4c1c906020016109ac565b6119bc6127ef565b60cd80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915560405133907fc20c65049011a6670d196cac81e87c8d03aee6b22ffddad3b2b342ba20319af090600090a350565b611a286127ef565b60c960009054906101000a90046001600160a01b03166001600160a01b0316633a1b62956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190614b14565b811115611aee5760405162461bcd60e51b815260206004820152600860248201527f746f6f206d756368000000000000000000000000000000000000000000000000604482015260640161093f565b60ca54610bd6906000906001600160a01b031683612be5565b6097546001600160a01b0316331480611b2a575060ca546001600160a01b031633145b611b765760405162461bcd60e51b815260206004820152601260248201527f4e6f74206f776e65722f6f70657261746f720000000000000000000000000000604482015260640161093f565b60005b82811015611bb257611ba2848483818110611b9657611b96614d7e565b90506060020183612d7f565b611bab81614dad565b9050611b79565b50505050565b611bc06127ef565b60cd546040517f8a7c195f00000000000000000000000000000000000000000000000000000000815262ffffff84166004820152600283900b60248201526001600160a01b0390911690638a7c195f90604401611761565b606060008267ffffffffffffffff811115611c3557611c35614406565b604051908082528060200260200182016040528015611cac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611c535790505b50905060005b83811015611f5c576000858583818110611cce57611cce614d7e565b9050602002016020810190611ce391906143e9565b9050858583818110611cf757611cf7614d7e565b9050602002016020810190611d0c91906143e9565b838381518110611d1e57611d1e614d7e565b6020026020010151600001906001600160a01b031690816001600160a01b031681525050806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190614de6565b838381518110611db657611db6614d7e565b6020026020010151602001906001600160a01b031690816001600160a01b031681525050806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3c9190614de6565b838381518110611e4e57611e4e614d7e565b6020026020010151606001906001600160a01b031690816001600160a01b0316815250506000816001600160a01b0316631ad8b03b6040518163ffffffff1660e01b81526004016040805180830381865afa158015611eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed59190614e21565b905080600001516fffffffffffffffffffffffffffffffff16848481518110611f0057611f00614d7e565b6020026020010151604001818152505080602001516fffffffffffffffffffffffffffffffff16848481518110611f3957611f39614d7e565b60200260200101516080018181525050505080611f5590614dad565b9050611cb2565b509392505050565b611f6c6127ef565b6001600160a01b03831615612099576001600160a01b038316600090815260cf602052604081206002810154600182015491549091611faa91614b5c565b611fb49190614b5c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038616906370a0823190602401602060405180830381865afa158015612017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203b9190614b14565b90506120478383614b5c565b8110156120965760405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e74000000000000000000000000000000000000604482015260640161093f565b50505b6120a4838383612be5565b505050565b6120b16127ef565b60ca80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915560405133907fc6ff2811ce7460679e9eea69d68b93be8399fc2613c2579c8fdb999c1083272290600090a350565b61211d6127ef565b60cd546040517fe4a86a990000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283151560248301529091169063e4a86a9990604401611761565b60008161217d8486614b5c565b6121879190614b5c565b905061219e6001600160a01b0386163330846132b4565b6001600160a01b038516600090815260cf6020526040812080548692906121c6908490614b5c565b90915550506001600160a01b038516600090815260cf6020526040812060010180548592906121f6908490614b5c565b90915550506001600160a01b038516600090815260cf602052604081206002018054849290612226908490614b5c565b90915550505050505050565b61223a6127ef565b60d382905560d281905560405181815233907f0254d35329441db8f2424f451270e7a3a7237c93782fef846118ff3a293a14159060200160405180910390a25050565b6097546001600160a01b03163314806122a0575060ca546001600160a01b031633145b6122ec5760405162461bcd60e51b815260206004820152601260248201527f4e6f74206f776e65722f6f70657261746f720000000000000000000000000000604482015260640161093f565b60005b82811015611bb25761232484848381811061230c5761230c614d7e565b905060200281019061231e9190614e80565b83613305565b61232d81614dad565b90506122ef565b61233c6127ef565b6001600160a01b0381166123b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161093f565b610bd681612b7b565b6123c96127ef565b60cd546040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152909116906313af403590602401610a06565b61241c6127ef565b600061242e6060830160408401614ebe565b61243e6040840160208501614ebe565b61244b6020850185614ebe565b6124559190614edb565b61245f9190614edb565b9050620f42408163ffffffff16146124b95760405162461bcd60e51b815260206004820152600c60248201527f696e76616c696420726174650000000000000000000000000000000000000000604482015260640161093f565b62ffffff8316600090815260ce602052604090208290610a348282614f03565b600054610100900460ff16158080156124f95750600054600160ff909116105b806125135750303b158015612513575060005460ff166001145b6125855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161093f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156125e357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6125eb61399f565b6125f3613a24565b60cd80546001600160a01b038088167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560ca805487841690831617905560c980549286169290911691909117905560005b82518110156126cc57600160cb600085848151811061266c5761266c614d7e565b6020908102919091018101516001600160a01b0316825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556126c581614dad565b905061264b565b50856001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561270b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272f9190614de6565b60cc80546001600160a01b03929092167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617905560d1805490911673ecc19e177d24551aa7ed6bc6fe566eca726cc8a9179055801561178f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b6097546001600160a01b0316331461180f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093f565b610bd66127ef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612884576120a483613aa1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128de575060408051601f3d908101601f191682019092526128db91810190614b14565b60015b6129505760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161093f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146129e55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161093f565b506120a4838383613b77565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7e9190614b14565b9050611bb2847f095ea7b30000000000000000000000000000000000000000000000000000000085612ab08686614b5c565b6040516001600160a01b03909216602483015260448201526064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613b9c565b60d05460009015612b685761271060d054612710612b4e9190614bec565b612b589084614b74565b612b629190614bb1565b92915050565b612710612b4e603282614bec565b919050565b609780546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216612c3b5760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726563697069656e74000000000000000000000000000000604482015260640161093f565b80612c4557505050565b6001600160a01b038316612d6b574780821115612cc85760cc546001600160a01b0316632e1a7d4d612c778385614bec565b6040518263ffffffff1660e01b8152600401612c9591815260200190565b600060405180830381600087803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b505050505b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114612d15576040519150601f19603f3d011682016040523d82523d6000602084013e612d1a565b606091505b5050905080610a345760405162461bcd60e51b815260206004820152600b60248201527f63616c6c206661696c6564000000000000000000000000000000000000000000604482015260640161093f565b6120a46001600160a01b0384168383613c84565b6000612d8e60208401846143e9565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df49190614de6565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5a9190614de6565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec09190614fd9565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f479190614b14565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fce9190614b14565b90506001600160a01b0386166385b6672930612ff060408c0160208d01614ff6565b61300060608d0160408e01614ff6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0390931660048401526fffffffffffffffffffffffffffffffff918216602484015216604482015260640160408051808303816000875af1925050508015613098575060408051601f3d908101601f1916820190925261309591810190615013565b60015b613165576001600160a01b0386167f9eb7315baede846644ede57820ab67759b2df1d7e2722c8926ea0707dd74c57b6130d760408b0160208c01614ff6565b6130e760608c0160408d01614ff6565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520160405180910390a2866131605760405162461bcd60e51b815260206004820152601260248201527f636f6c6c65637420666565206661696c65640000000000000000000000000000604482015260640161093f565b6132aa565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa1580156131c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131eb9190614b14565b905060006131f98483614bec565b9050613206878683613ccd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015613266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328a9190614b14565b905060006132988583614bec565b90506132a5888883613ccd565b505050505b5050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611bb29085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612acc565b3061331660a08401608085016143e9565b6001600160a01b03161461336c5760405162461bcd60e51b815260206004820152600c60248201527f696e76616c696420646573630000000000000000000000000000000000000000604482015260640161093f565b60cb600061338060608501604086016143e9565b6001600160a01b0316815260208101919091526040016000205460ff166133e95760405162461bcd60e51b815260206004820152600c60248201527f696e76616c696420646573630000000000000000000000000000000000000000604482015260640161093f565b60006133fb60408401602085016143e9565b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152731111111254eeb25477b68fb85ed929f73a96058260248201526001600160a01b03919091169063dd62ed3e90604401602060405180830381865afa158015613474573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134989190614b14565b905060a08301358110156134e3576134e3731111111254eeb25477b68fb85ed929f73a96058260a08501356134d360408701602088016143e9565b6001600160a01b031691906129f1565b60006134f560408501602086016143e9565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015613554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135789190614b14565b9050600061358c60608601604087016143e9565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156135eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360f9190614b14565b6040805160008082526020820190925291925050731111111254eeb25477b68fb85ed929f73a9605826312aa3caf61364a60208901896143e9565b602089018461365d6101008c018c615042565b6040518663ffffffff1660e01b815260040161367d9594939291906150d2565b60408051808303816000875af19250505080156136b7575060408051601f3d908101601f191682019092526136b491810190614cdc565b60015b61377f576136cb60608701604088016143e9565b6001600160a01b03166136e460408801602089016143e9565b6001600160a01b03167f2b94ee9046683054ebf9872372ca7e5ee9ffa27af09c8d664e371c95fde6a4e2886020016080013560405161372591815260200190565b60405180910390a38461377a5760405162461bcd60e51b815260206004820152600b60248201527f73776170206661696c6564000000000000000000000000000000000000000000604482015260640161093f565b61178f565b506000905061379460408801602089016143e9565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138179190614b14565b9050600061382b6060890160408a016143e9565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561388a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ae9190614b14565b905060c08801356138bf8583614bec565b101561390d5760405162461bcd60e51b815260206004820152601160248201527f72657475726e206e6f7420656e6f756768000000000000000000000000000000604482015260640161093f565b600060cf8161392260408c0160208d016143e9565b6001600160a01b03168152602080820192909252604090810160002081516060810183528154815260018201548185015260029091015481830152925061397991613971918c01908c016143e9565b828886613e1d565b61399461398c60608b0160408c016143e9565b828785613e1d565b505050505050505050565b600054610100900460ff16613a1c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161093f565b61180f6140c6565b600054610100900460ff1661180f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161093f565b6001600160a01b0381163b613b1e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161093f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b613b808361414c565b600082511180613b8d5750805b156120a457611bb2838361418c565b6000613bf1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166141b89092919063ffffffff16565b9050805160001480613c12575080806020019051810190613c12919061518a565b6120a45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161093f565b6040516001600160a01b0383166024820152604481018290526120a49084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612acc565b62ffffff8216600090815260ce602090815260408083208151606081018352905463ffffffff80821683526401000000008204811694830194909452680100000000000000009004909216908201819052909190620f424090613d31908590614b74565b613d3b9190614bb1565b6001600160a01b038616600090815260cf6020526040812060020180549293508392909190613d6b908490614b5c565b90915550508151600090620f424090613d8b90869063ffffffff16614b74565b613d959190614bb1565b6001600160a01b038716600090815260cf6020526040812080549293508392909190613dc2908490614b5c565b909155506000905081613dd58487614bec565b613ddf9190614bec565b6001600160a01b038816600090815260cf6020526040812060010180549293508392909190613e0f908490614b5c565b909155505050505050505050565b81811415613e2a57611bb2565b60208301518351604085015160009291613e4391614b5c565b613e4d9190614b5c565b905080613ea55782821115613e9f576000613e688484614bec565b6001600160a01b038716600090815260cf6020526040812060010180549293508392909190613e98908490614b5c565b9091555050505b50611bb2565b82821115613f9f576000613eb98484614bec565b905081818660400151613ecc9190614b74565b613ed69190614bb1565b6001600160a01b038716600090815260cf602052604081206002018054909190613f01908490614b5c565b909155505084518290613f15908390614b74565b613f1f9190614bb1565b6001600160a01b038716600090815260cf602052604081208054909190613f47908490614b5c565b909155505060208501518290613f5e908390614b74565b613f689190614bb1565b6001600160a01b038716600090815260cf602052604081206001018054909190613f93908490614b5c565b90915550610a34915050565b6000613fab8385614bec565b9050818110156140985781818660400151613fc69190614b74565b613fd09190614bb1565b6001600160a01b038716600090815260cf602052604081206002018054909190613ffb908490614bec565b90915550508451829061400f908390614b74565b6140199190614bb1565b6001600160a01b038716600090815260cf602052604081208054909190614041908490614bec565b909155505060208501518290614058908390614b74565b6140629190614bb1565b6001600160a01b038716600090815260cf60205260408120600101805490919061408d908490614bec565b9091555061178f9050565b6001600160a01b038616600090815260cf602052604081206002810182905581815560010155505050505050565b600054610100900460ff166141435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161093f565b61180f33612b7b565b61415581613aa1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606141b183836040518060600160405280602781526020016151cd602791396141cf565b9392505050565b60606141c78484600085614247565b949350505050565b6060600080856001600160a01b0316856040516141ec91906151a7565b600060405180830381855af49150503d8060008114614227576040519150601f19603f3d011682016040523d82523d6000602084013e61422c565b606091505b509150915061423d86838387614339565b9695505050505050565b6060824710156142bf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161093f565b600080866001600160a01b031685876040516142db91906151a7565b60006040518083038185875af1925050503d8060008114614318576040519150601f19603f3d011682016040523d82523d6000602084013e61431d565b606091505b509150915061432e87838387614339565b979650505050505050565b606083156143a557825161439e576001600160a01b0385163b61439e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161093f565b50816141c7565b6141c783838151156143ba5781518083602001fd5b8060405162461bcd60e51b815260040161093f91906151b9565b6001600160a01b0381168114610bd657600080fd5b6000602082840312156143fb57600080fd5b81356141b1816143d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561445e5761445e614406565b604052919050565b6000806040838503121561447957600080fd5b8235614484816143d4565b915060208381013567ffffffffffffffff808211156144a257600080fd5b818601915086601f8301126144b657600080fd5b8135818111156144c8576144c8614406565b6144da84601f19601f84011601614435565b915080825287848285010111156144f057600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561452057600080fd5b5035919050565b63ffffffff81168114610bd657600080fd5b60008060006060848603121561454e57600080fd5b8335614559816143d4565b9250602084013561456981614527565b9150604084013561457981614527565b809150509250925092565b6000806040838503121561459757600080fd5b82356145a2816143d4565b915060208301356145b2816143d4565b809150509250929050565b62ffffff81168114610bd657600080fd5b8015158114610bd657600080fd5b6000806000606084860312156145f157600080fd5b83356145fc816145bd565b9250602084013561460c816145ce565b91506040840135614579816145ce565b8035612b76816143d4565b600080600080600060a0868803121561463f57600080fd5b853561464a816143d4565b9450602086013561465a816143d4565b94979496505050506040830135926060810135926080909101359150565b60008060006040848603121561468d57600080fd5b833567ffffffffffffffff808211156146a557600080fd5b818601915086601f8301126146b957600080fd5b8135818111156146c857600080fd5b8760206060830285010111156146dd57600080fd5b60209283019550935050840135614579816145ce565b6000806040838503121561470657600080fd5b8235614711816145bd565b91506020830135600281900b81146145b257600080fd5b60008083601f84011261473a57600080fd5b50813567ffffffffffffffff81111561475257600080fd5b6020830191508360208260051b850101111561476d57600080fd5b9250929050565b6000806020838503121561478757600080fd5b823567ffffffffffffffff81111561479e57600080fd5b6147aa85828601614728565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b8281101561482757815180516001600160a01b039081168652878201518116888701528682015187870152606080830151909116908601526080908101519085015260a090930192908501906001016147d3565b5091979650505050505050565b60008060006060848603121561484957600080fd5b8335614854816143d4565b92506020840135614864816143d4565b929592945050506040919091013590565b6000806040838503121561488857600080fd5b8235614893816143d4565b915060208301356145b2816145ce565b600080600080608085870312156148b957600080fd5b84356148c4816143d4565b966020860135965060408601359560600135945092505050565b600080604083850312156148f157600080fd5b50508035926020909101359150565b60008060006040848603121561491557600080fd5b833567ffffffffffffffff81111561492c57600080fd5b61493886828701614728565b9094509250506020840135614579816145ce565b60006020828403121561495e57600080fd5b81356141b1816145bd565b600080828403608081121561497d57600080fd5b8335614988816145bd565b92506060601f198201121561499c57600080fd5b506020830190509250929050565b600080600080600060a086880312156149c257600080fd5b85356149cd816143d4565b94506020868101356149de816143d4565b945060408701356149ee816143d4565b935060608701356149fe816143d4565b9250608087013567ffffffffffffffff80821115614a1b57600080fd5b818901915089601f830112614a2f57600080fd5b813581811115614a4157614a41614406565b8060051b9150614a52848301614435565b818152918301840191848101908c841115614a6c57600080fd5b938501935b83851015614a965784359250614a86836143d4565b8282529385019390850190614a71565b8096505050505050509295509295909350565b600060608284031215614abb57600080fd5b6040516060810181811067ffffffffffffffff82111715614ade57614ade614406565b6040528251614aec816143d4565b81526020830151614afc816143d4565b60208201526040928301519281019290925250919050565b600060208284031215614b2657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614b6f57614b6f614b2d565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bac57614bac614b2d565b500290565b600082614be7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015614bfe57614bfe614b2d565b500390565b60005b83811015614c1e578181015183820152602001614c06565b83811115611bb25750506000910152565b60008151808452614c47816020860160208601614c03565b601f01601f19169290920160200192915050565b805182526020810151602083015260006040820151606060408501526141c76060850182614c2f565b61ffff8616815260ff8516602082015260a060408201526000614caa60a0830186614c2f565b8281036060840152614cbc8186614c2f565b90508281036080840152614cd08185614c5b565b98975050505050505050565b60008060408385031215614cef57600080fd5b505080516020909101519092909150565b600061012061ffff8c1683528a60208401528960408401526001600160a01b03891660608401528760808401528660a08401528060c0840152614d4581840187614c5b565b905082810360e0840152614d598186614c2f565b9050828103610100840152614d6e8185614c2f565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ddf57614ddf614b2d565b5060010190565b600060208284031215614df857600080fd5b81516141b1816143d4565b6fffffffffffffffffffffffffffffffff81168114610bd657600080fd5b600060408284031215614e3357600080fd5b6040516040810181811067ffffffffffffffff82111715614e5657614e56614406565b6040528251614e6481614e03565b81526020830151614e7481614e03565b60208201529392505050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112614eb457600080fd5b9190910192915050565b600060208284031215614ed057600080fd5b81356141b181614527565b600063ffffffff808316818516808303821115614efa57614efa614b2d565b01949350505050565b8135614f0e81614527565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135614f4e81614527565b67ffffffff000000008160201b16905080837fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008416171784556040850135614f9581614527565b6bffffffff00000000000000008160401b16847fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008516178317178555505050505050565b600060208284031215614feb57600080fd5b81516141b1816145bd565b60006020828403121561500857600080fd5b81356141b181614e03565b6000806040838503121561502657600080fd5b825161503181614e03565b60208401519092506145b281614e03565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261507757600080fd5b83018035915067ffffffffffffffff82111561509257600080fd5b60200191503681900382131561476d57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006101406001600160a01b03808916845287356150ef816143d4565b8181166020860152506020880135615106816143d4565b818116604086015250604088013561511d816143d4565b818116606086015250506151336060880161461c565b6001600160a01b038116608085015250608087013560a084015260a087013560c084015260c087013560e08401528061010084015261517481840187614c2f565b9050828103610120840152614cd08185876150a7565b60006020828403121561519c57600080fd5b81516141b1816145ce565b60008251614eb4818460208701614c03565b6020815260006141b16020830184614c2f56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122065723ac47030fc0185dc02e48ee1b536abb4c371421edfa8990990268f6a6fc864736f6c634300080a0033