6000600955600a805460ff1916905560e06040526036608081815290620023fb60a03980516200003891600b916020909101906200012e565b503480156200004657600080fd5b50604080518082018252601881527f52756675737468654d61737465726f664469736775697365000000000000000060208083019182528351808501909452600984526846696e64527566757360b81b908401528151919291620000ad916002916200012e565b508051620000c39060039060208401906200012e565b5050600160005550620000d633620000dc565b62000211565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200013c90620001d4565b90600052602060002090601f016020900481019282620001605760008555620001ab565b82601f106200017b57805160ff1916838001178555620001ab565b82800160010185558215620001ab579182015b82811115620001ab5782518255916020019190600101906200018e565b50620001b9929150620001bd565b5090565b5b80821115620001b95760008155600101620001be565b600181811c90821680620001e957607f821691505b602082108114156200020b57634e487b7160e01b600052602260045260246000fd5b50919050565b6121da80620002216000396000f3fe6080604052600436106101ac5760003560e01c8063715018a6116100ec578063c002d23d1161008a578063e8a3d48511610064578063e8a3d48514610485578063e985e9c51461049a578063f2fde38b146104e3578063f9020e331461050357600080fd5b8063c002d23d14610439578063c87b56dd1461044f578063d8258d951461046f57600080fd5b806395d89b41116100c657806395d89b41146103d1578063a0712d68146103e6578063a22cb465146103f9578063b88d4fde1461041957600080fd5b8063715018a61461037e5780638ba4cc3c146103935780638da5cb5b146103b357600080fd5b80633ccfd60b1161015957806349f2553a1161013357806349f2553a146102fe5780635d82cf6e1461031e5780636352211e1461033e57806370a082311461035e57600080fd5b80633ccfd60b146102a957806342842e0e146102be5780634891ad88146102de57600080fd5b8063095ea7b31161018a578063095ea7b31461024057806318160ddd1461026257806323b872dd1461028957600080fd5b806301ffc9a7146101b157806306fdde03146101e6578063081812fc14610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611c24565b61052a565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb61060f565b6040516101dd9190611c99565b34801561021457600080fd5b50610228610223366004611cac565b6106a1565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b5061026061025b366004611ce1565b6106fe565b005b34801561026e57600080fd5b5060015460005403600019015b6040519081526020016101dd565b34801561029557600080fd5b506102606102a4366004611d0b565b6107be565b3480156102b557600080fd5b506102606107c9565b3480156102ca57600080fd5b506102606102d9366004611d0b565b6108b4565b3480156102ea57600080fd5b506102606102f9366004611d47565b6108cf565b34801561030a57600080fd5b50610260610319366004611df4565b61096e565b34801561032a57600080fd5b50610260610339366004611cac565b6109db565b34801561034a57600080fd5b50610228610359366004611cac565b610a3a565b34801561036a57600080fd5b5061027b610379366004611e3d565b610a4c565b34801561038a57600080fd5b50610260610ab4565b34801561039f57600080fd5b506102606103ae366004611ce1565b610b1a565b3480156103bf57600080fd5b506008546001600160a01b0316610228565b3480156103dd57600080fd5b506101fb610be7565b6102606103f4366004611cac565b610bf6565b34801561040557600080fd5b50610260610414366004611e58565b610dc5565b34801561042557600080fd5b50610260610434366004611e94565b610e92565b34801561044557600080fd5b5061027b60095481565b34801561045b57600080fd5b506101fb61046a366004611cac565b610efc565b34801561047b57600080fd5b5061027b61044c81565b34801561049157600080fd5b506101fb610fd5565b3480156104a657600080fd5b506101d16104b5366004611f10565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b3480156104ef57600080fd5b506102606104fe366004611e3d565b610ff5565b34801561050f57600080fd5b50600a5461051d9060ff1681565b6040516101dd9190611f59565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806105bd57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061060957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461061e90611f81565b80601f016020809104026020016040519081016040528092919081815260200182805461064a90611f81565b80156106975780601f1061066c57610100808354040283529160200191610697565b820191906000526020600020905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b60006106ac826110d7565b6106e2576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061070982610a3a565b9050806001600160a01b0316836001600160a01b03161415610757576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03821614801590610777575061077581336104b5565b155b156107ae576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b9838383611129565b505050565b6107b983838361119d565b6008546001600160a01b031633146108285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b47806108765760405162461bcd60e51b815260206004820152600a60248201527f4e6f2062616c616e636500000000000000000000000000000000000000000000604482015260640161081f565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156108b0573d6000803e3d6000fd5b5050565b6107b983838360405180602001604052806000815250610e92565b6008546001600160a01b031633146109295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081f565b600a80548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561096657610966611f43565b021790555050565b6008546001600160a01b031633146109c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081f565b80516108b090600b906020840190611b5d565b6008546001600160a01b03163314610a355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081f565b600955565b6000610a4582611442565b5192915050565b60006001600160a01b038216610a8e576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b03163314610b0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081f565b610b1860006115d8565b565b6008546001600160a01b03163314610b745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081f565b61044c81610b856000546000190190565b610b8f9190611fd2565b1115610bdd5760405162461bcd60e51b815260206004820152601f60248201527f52657175657374206578636565647320636f6c6c656374696f6e2073697a6500604482015260640161081f565b6108b08282611642565b60606003805461061e90611f81565b6000600a5460ff166002811115610c0f57610c0f611f43565b1415610c5d5760405162461bcd60e51b815260206004820152601a60248201527f5a65726f436f64654e46543a2053616c657320617265206f6666000000000000604482015260640161081f565b61044c81610c6e6000546000190190565b610c789190611fd2565b1115610d125760405162461bcd60e51b815260206004820152604360248201527f5a65726f436f64654e46543a204e756d626572206f662072657175657374656460448201527f20746f6b656e732077696c6c2065786365656420636f6c6c656374696f6e207360648201527f697a650000000000000000000000000000000000000000000000000000000000608482015260a40161081f565b6009548190610d219082611fea565b341015610d965760405162461bcd60e51b815260206004820152602f60248201527f5a65726f436f64654e46543a2045746865722076616c75652073656e7420697360448201527f206e6f742073756666696369656e740000000000000000000000000000000000606482015260840161081f565b336000908152600c602052604081208054849290610db5908490611fd2565b909155506108b090503383611642565b6001600160a01b038216331415610e08576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610e9d84848461119d565b6001600160a01b0383163b15158015610ebf5750610ebd8484848461165c565b155b15610ef6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060610f07826110d7565b610f795760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161081f565b6000610f836117a8565b90506000815111610fa35760405180602001604052806000815250610fce565b80610fad846117b7565b604051602001610fbe929190612009565b6040516020818303038152906040525b9392505050565b60606040518060a001604052806065815260200161214060659139905090565b6008546001600160a01b0316331461104f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081f565b6001600160a01b0381166110cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161081f565b6110d4816115d8565b50565b6000816001111580156110eb575060005482105b80156106095750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000900460ff161590565b60008281526006602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006111a882611442565b9050836001600160a01b031681600001516001600160a01b0316146111f9576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000336001600160a01b0386161480611217575061121785336104b5565b80611232575033611227846106a1565b6001600160a01b0316145b90508061126b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112ab576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b760008487611129565b6001600160a01b03858116600090815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000080821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080547fffffffff000000000000000000000000000000000000000000000000000000001690941774010000000000000000000000000000000000000000429092169190910217835587018084529220805491939091166113f65760005482146113f6578054602086015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b60408051606081018252600080825260208201819052918101919091528180600111158015611472575060005481105b156115a657600081815260046020908152604091829020825160608101845290546001600160a01b038116825274010000000000000000000000000000000000000000810467ffffffffffffffff16928201929092527c010000000000000000000000000000000000000000000000000000000090910460ff161515918101829052906115a45780516001600160a01b031615611510579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b03811680835274010000000000000000000000000000000000000000820467ffffffffffffffff16938301939093527c0100000000000000000000000000000000000000000000000000000000900460ff161515928101929092521561159f579392505050565b611510565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6108b08282604051806020016040528060008152506118e9565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081526000906001600160a01b0385169063150b7a02906116aa903390899088908890600401612060565b6020604051808303816000875af19250505080156116e5575060408051601f3d908101601f191682019092526116e29181019061209c565b60015b611759573d808015611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b508051611751576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b6060600b805461061e90611f81565b6060816117f757505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611821578061180b816120b9565b915061181a9050600a836120ea565b91506117fb565b60008167ffffffffffffffff81111561183c5761183c611d68565b6040519080825280601f01601f191660200182016040528015611866576020820181803683370190505b5090505b84156117a05761187b6001836120fe565b9150611888600a86612115565b611893906030611fd2565b60f81b8183815181106118a8576118a8612129565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506118e2600a866120ea565b945061186a565b6107b983838360016000546001600160a01b038516611934576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8361196b576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516600081815260056020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811667ffffffffffffffff8083168c018116918217680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941690921783900481168c01811690920217909155858452600490925290912080547fffffffff000000000000000000000000000000000000000000000000000000001690921774010000000000000000000000000000000000000000429092169190910217905580808501838015611a6c57506001600160a01b0387163b15155b15611b0e575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611abd600088848060010195508861165c565b611af3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415611a72578260005414611b0957600080fd5b611b54565b5b6040516001830192906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a480821415611b0f575b5060005561143b565b828054611b6990611f81565b90600052602060002090601f016020900481019282611b8b5760008555611bd1565b82601f10611ba457805160ff1916838001178555611bd1565b82800160010185558215611bd1579182015b82811115611bd1578251825591602001919060010190611bb6565b50611bdd929150611be1565b5090565b5b80821115611bdd5760008155600101611be2565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146110d457600080fd5b600060208284031215611c3657600080fd5b8135610fce81611bf6565b60005b83811015611c5c578181015183820152602001611c44565b83811115610ef65750506000910152565b60008151808452611c85816020860160208601611c41565b601f01601f19169290920160200192915050565b602081526000610fce6020830184611c6d565b600060208284031215611cbe57600080fd5b5035919050565b80356001600160a01b0381168114611cdc57600080fd5b919050565b60008060408385031215611cf457600080fd5b611cfd83611cc5565b946020939093013593505050565b600080600060608486031215611d2057600080fd5b611d2984611cc5565b9250611d3760208501611cc5565b9150604084013590509250925092565b600060208284031215611d5957600080fd5b813560038110610fce57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611d9957611d99611d68565b604051601f8501601f19908116603f01168101908282118183101715611dc157611dc1611d68565b81604052809350858152868686011115611dda57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611e0657600080fd5b813567ffffffffffffffff811115611e1d57600080fd5b8201601f81018413611e2e57600080fd5b6117a084823560208401611d7e565b600060208284031215611e4f57600080fd5b610fce82611cc5565b60008060408385031215611e6b57600080fd5b611e7483611cc5565b915060208301358015158114611e8957600080fd5b809150509250929050565b60008060008060808587031215611eaa57600080fd5b611eb385611cc5565b9350611ec160208601611cc5565b925060408501359150606085013567ffffffffffffffff811115611ee457600080fd5b8501601f81018713611ef557600080fd5b611f0487823560208401611d7e565b91505092959194509250565b60008060408385031215611f2357600080fd5b611f2c83611cc5565b9150611f3a60208401611cc5565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310611f7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600181811c90821680611f9557607f821691505b60208210811415611fb657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611fe557611fe5611fbc565b500190565b600081600019048311821515161561200457612004611fbc565b500290565b6000835161201b818460208801611c41565b83519083019061202f818360208801611c41565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526120926080830184611c6d565b9695505050505050565b6000602082840312156120ae57600080fd5b8151610fce81611bf6565b60006000198214156120cd576120cd611fbc565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826120f9576120f96120d4565b500490565b60008282101561211057612110611fbc565b500390565b600082612124576121246120d4565b500690565b634e487b7160e01b600052603260045260246000fdfe68747470733a2f2f7a65726f636f64656e66742e617a75726577656273697465732e6e65742f6170692f6d61726b6574706c616365636f6c6c656374696f6e732f33346534373766652d363230612d343330642d393832322d303864613433333630333336a2646970667358221220a60625de25ef77e255f0caf73e4eee5e1f055aea9c66ea67b590c7bb9d04b87564736f6c634300080c0033697066733a2f2f516d536d383966734a7a397a315434776a686f66457259346d753672556476394a706676576679416b34707a6d552f