0x6101006040523480156200001257600080fd5b5060405162001ba538038062001ba583398101604081905262000035916200015a565b838383836001600160a01b038316620000805760405162461bcd60e51b8152602060048201526008602482015267111052481b9d5b1b60c21b60448201526064015b60405180910390fd5b6001600160a01b038216620000c45760405162461bcd60e51b81526020600482015260096024820152681554d110c81b9d5b1b60ba1b604482015260640162000077565b6001600160a01b038116620001085760405162461bcd60e51b81526020600482015260096024820152681554d115081b9d5b1b60ba1b604482015260640162000077565b6001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e05250620001b692505050565b80516001600160a01b03811681146200015557600080fd5b919050565b6000806000806080858703121562000170578384fd5b6200017b856200013d565b93506200018b602086016200013d565b92506200019b604086016200013d565b9150620001ab606086016200013d565b905092959194509250565b60805160601c60a05160601c60c05160601c60e05160601c6119a262000203600039600061022d0152600081816101f1015261028a015260006101b601526000610e7d01526119a26000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639cc350be14610030575b600080fd5b61004361003e366004611403565b610045565b005b600080805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49547f4638dd49816562b7bd690c45fb41f5a91a31307f754a373a0341dd7fb00ca9e1919060ff161580156100b8575060008281526001602052604090205460ff161515811515145b6100c182610420565b906100e85760405162461bcd60e51b81526004016100df91906116bd565b60405180910390fd5b5060006100fe8888886100f9610489565b6104ba565b90506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561013b57600080fd5b505afa15801561014f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017391906115ff565b9050600061018282600a6117d7565b600484015461019b906001600160801b0316898961083f565b6101a59190611882565b6101b090600a611882565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b0316148061022557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b0316145b8061026157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b0316145b1561026d57508061031f565b6000600c015460405163c05b1ec360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528d81166024830152604482018590529091169063c05b1ec39060640160206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906115e7565b90505b808460030154111561037e5760405162461bcd60e51b815260206004820152602260248201527f54656c6c65723a20696e73756666696369656e74204e4654206c6f616e2073696044820152617a6560f01b60648201526084016100df565b600184015460048501546103b2916001600160a01b0316906103a8906001600160801b031661086d565b86600301546109a4565b600484018054600160e11b60ff60e01b198216179091556003850154604080519182526001602083015233926001600160801b0316917fd3d2f140ab34e898d34ecc0f8cb23c37effe528d7936fbc4ece4f5152c841d35910160405180910390a35050505050505050505050565b606081610455576040518060400160405280601081526020016f14185d5cd8589b194e881c185d5cd95960821b815250610483565b6040518060400160405280601481526020017314185d5cd8589b194e881b9bdd081c185d5cd95960621b8152505b92915050565b60006104b47fc569b6795dc870bfed19bcc450a5911d47252b4d64836342a62e8c4a39e12eac610a16565b54919050565b60006001600160a01b0385166105125760405162461bcd60e51b815260206004820152601d60248201527f54656c6c65723a206173736574206c6f616e206173736574206e756c6c00000060448201526064016100df565b8263ffffffff16610521610a2d565b101561057a5760405162461bcd60e51b815260206004820152602260248201527f54656c6c65723a206d6178206c6f616e206475726174696f6e20657863656564604482015261195960f21b60648201526084016100df565b6001600160a01b03851660009081526003602090815260408083207f83b40eb469a0678431fc4a0b7aa01cfc7df278115c36fcd0c4f77e9811288328845260010190915290205461ffff166105ce86610a58565b6001600160a01b031663ecfd3519866040518263ffffffff1660e01b81526004016105fb91815260200190565b602060405180830381600087803b15801561061557600080fd5b505af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d91906115c5565b61ffff1611156106b15760405162461bcd60e51b815260206004820152602960248201527f54656c6c65723a206d617820737570706c792d746f2d6465627420726174696f60448201526808195e18d95959195960ba1b60648201526084016100df565b60006106e37f0553069f1f0518e59f8623c18c83a1f987f2a0544d563e98dd803a7078142a8580546001810190915590565b90506106ee81610a95565b6004810180548254336001600160a01b03199182161784556001840180549091166001600160a01b038b16179055600383018890556001600160801b03841679ffff0000000000000000ffffffffffffffffffffffffffffffff1990911617600160c01b61ffff8716021767ffffffffffffffff60801b1916600160a01b4263ffffffff9081169190910263ffffffff60801b191691909117600160801b918816919091021790559150846107a282610ac5565b5560038201546107b3908290610aed565b6107bc82610ac5565b60019081019190915582546001600160a01b031660009081527f0553069f1f0518e59f8623c18c83a1f987f2a0544d563e98dd803a7078142a8c60209081526040822080548085018255908352912060028204018054919092166010026101000a6001600160801b03818102199092169390911602919091179055949350505050565b6000808061084f8486018661161b565b915060ff169150610861868383610b02565b925050505b9392505050565b600080600701546040516327662c6960e11b815260206004820152600060248201526001600160a01b0390911690634ecc58d290604401602060405180830381600087803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f691906113e7565b9050806001600160a01b031663e1c7392a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50505050806109737f0553069f1f0518e59f8623c18c83a1f987f2a0544d563e98dd803a7078142a8590565b6000938452600401602052604090922080546001600160a01b0319166001600160a01b039093169290921790915590565b6109ad83610a58565b60405163e920b1e160e01b81526001600160a01b03848116600483015260248201849052919091169063e920b1e190604401600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b50505050505050565b6000805b6000928352600201602052506040902090565b60006104b47fee99212d4b9f607ce22114cd74d9a2d87dfd61b2fbf4d89855f88b3ba9b6c974610a16565b6001600160a01b0390811660009081527f0553069f1f0518e59f8623c18c83a1f987f2a0544d563e98dd803a7078142a8d60205260409020541690565b60009081527f0553069f1f0518e59f8623c18c83a1f987f2a0544d563e98dd803a7078142a866020526040902090565b60007f0553069f1f0518e59f8623c18c83a1f987f2a0544d563e98dd803a7078142a85610a1a565b6000610866610afb84610c7e565b8390610cfe565b60008060018085161415610c5f57600083806020019051810190610b2691906114a5565b905060005b8151811015610c5c57610b6687838381518110610b5857634e487b7160e01b600052603260045260246000fd5b602002602001015133610d1b565b7f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2a95482516001600160a01b03909116906324db57f890849084908110610bbc57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610be291815260200190565b60206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3291906115e7565b610c3c9085611741565b9350610c488484611741565b925080610c54816118e8565b915050610b2b565b50505b80610c6b868686610dae565b610c759190611741565b95945050505050565b600080610c8a83610a95565b60040154600160c01b900461ffff161115610cf9576301e13380610cad83610a95565b60040154600160c01b900461ffff16610cc584610a95565b60040154610ce09190600160801b900463ffffffff166118a1565b610cea919061176d565b905061ffff8116610cf9575060015b919050565b6000612710610d1161ffff841685611882565b6108669190611759565b610d258282610fa1565b610d715760405162461bcd60e51b815260206004820152601f60248201527f54656c6c65723a20626f72726f776572206e6674206e6f74207374616b65640060448201526064016100df565b60008381527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2a860205260409020610da89083610fe2565b50505050565b6000806060808561ffff1660021415610de35784806020019051810190610dd591906114e0565b600194509092509050610e0d565b60028087161415610e0d5784806020019051810190610e029190611541565b600195509093509150505b8215610f975760005b8251811015610f9557610e7988848381518110610e4357634e487b7160e01b600052603260045260246000fd5b6020026020010151848481518110610e6b57634e487b7160e01b600052603260045260246000fd5b602002602001015133610fee565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166324db57f8858481518110610eca57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610ef091815260200190565b60206040518083038186803b158015610f0857600080fd5b505afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906115e7565b9050828281518110610f6257634e487b7160e01b600052603260045260246000fd5b602002602001015181610f759190611882565b610f7f9087611741565b9550508080610f8d906118e8565b915050610e16565b505b5050509392505050565b6001600160a01b03811660009081527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2a76020526040812061086690846110b9565b600061086683836110c5565b610ff9838383611114565b6110455760405162461bcd60e51b815260206004820152601f60248201527f54656c6c65723a20626f72726f776572206e6674206e6f74207374616b65640060448201526064016100df565b60008481527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2ac6020526040902061107c9084610fe2565b505060009283527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2ad60209081526040808520938552929052912055565b60006108668383611247565b600081815260018301602052604081205461110c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610483565b506000610483565b6001600160a01b03811660009081527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2ab602090815260408083208684529091529020548211801590610866576001600160a01b03821660009081527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2ab60209081526040808320878452909152812080548592906111b29084906118d1565b90915550506001600160a01b03821660009081527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2ab60209081526040808320878452909152902054610866576001600160a01b03821660009081527f36ec560bcbaf142f58499b90035254e32b3f3563174bc96dc2b2724bafa4c2aa6020526040902061123f90856110b9565b509392505050565b6000818152600183016020526040812054801561135a57600061126b6001836118d1565b855490915060009061127f906001906118d1565b90508181146113005760008660000182815481106112ad57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106112de57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061131f57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610483565b6000915050610483565b600082601f830112611374578081fd5b8151602067ffffffffffffffff8211156113905761139061192f565b8160051b61139f828201611710565b8381528281019086840183880185018910156113b9578687fd5b8693505b858410156113db5780518352600193909301929184019184016113bd565b50979650505050505050565b6000602082840312156113f8578081fd5b815161086681611945565b60008060008060006080868803121561141a578081fd5b853561142581611945565b945060208601359350604086013563ffffffff81168114611444578182fd5b9250606086013567ffffffffffffffff80821115611460578283fd5b818801915088601f830112611473578283fd5b813581811115611481578384fd5b896020828501011115611492578384fd5b9699959850939650602001949392505050565b6000602082840312156114b6578081fd5b815167ffffffffffffffff8111156114cc578182fd5b6114d884828501611364565b949350505050565b600080604083850312156114f2578182fd5b825167ffffffffffffffff80821115611509578384fd5b61151586838701611364565b9350602085015191508082111561152a578283fd5b5061153785828601611364565b9150509250929050565b600080600060608486031215611555578283fd5b835167ffffffffffffffff8082111561156c578485fd5b61157887838801611364565b9450602086015191508082111561158d578384fd5b61159987838801611364565b935060408601519150808211156115ae578283fd5b506115bb86828701611364565b9150509250925092565b6000602082840312156115d6578081fd5b815161ffff81168114610866578182fd5b6000602082840312156115f8578081fd5b5051919050565b600060208284031215611610578081fd5b81516108668161195d565b6000806040838503121561162d578182fd5b82356116388161195d565b915060208381013567ffffffffffffffff80821115611655578384fd5b818601915086601f830112611668578384fd5b81358181111561167a5761167a61192f565b61168c601f8201601f19168501611710565b915080825287848285010111156116a1578485fd5b8084840185840137810190920192909252919491935090915050565b6000602080835283518082850152825b818110156116e9578581018301518582016040015282016116cd565b818111156116fa5783604083870101525b50601f01601f1916929092016040019392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156117395761173961192f565b604052919050565b6000821982111561175457611754611903565b500190565b60008261176857611768611919565b500490565b600067ffffffffffffffff8084168061178857611788611919565b92169190910492915050565b600181815b808511156117cf5781600019048211156117b5576117b5611903565b808516156117c257918102915b93841c9390800290611799565b509250929050565b600061086660ff8416836000826117f057506001610483565b816117fd57506000610483565b8160018114611813576002811461181d57611839565b6001915050610483565b60ff84111561182e5761182e611903565b50506001821b610483565b5060208310610133831016604e8410600b841016171561185c575081810a610483565b6118668383611794565b806000190482111561187a5761187a611903565b029392505050565b600081600019048311821515161561189c5761189c611903565b500290565b600067ffffffffffffffff808316818516818304811182151516156118c8576118c8611903565b02949350505050565b6000828210156118e3576118e3611903565b500390565b60006000198214156118fc576118fc611903565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461195a57600080fd5b50565b60ff8116811461195a57600080fdfea2646970667358221220a5e7ed9f5336fb8e8b24c3ade0f31a8c0c78e55d3f2680dad86c05b524b1b0cd64736f6c634300080400330000000000000000000000008f9bbbb0282699921372a134b63799a48c7d17fc0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7