60a06040523480156200001157600080fd5b50604051620021c4380380620021c48339810160408190526200003491620002b7565b8251839083906200004d90600290602085019062000144565b5080516200006390600390602084019062000144565b505060008055506200007533620000f2565b6001600a5580620000e65760405162461bcd60e51b815260206004820152603160248201527f52686170736f647943726561746f7247656e657261746976652f696e76616c69604482015270642d636f6c6c656374696f6e2d73697a6560781b606482015260840160405180910390fd5b60805250620003679050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000152906200032a565b90600052602060002090601f016020900481019282620001765760008555620001c1565b82601f106200019157805160ff1916838001178555620001c1565b82800160010185558215620001c1579182015b82811115620001c1578251825591602001919060010190620001a4565b50620001cf929150620001d3565b5090565b5b80821115620001cf5760008155600101620001d4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200021257600080fd5b81516001600160401b03808211156200022f576200022f620001ea565b604051601f8301601f19908116603f011681019082821181831017156200025a576200025a620001ea565b816040528381526020925086838588010111156200027757600080fd5b600091505b838210156200029b57858201830151818301840152908201906200027c565b83821115620002ad5760008385830101525b9695505050505050565b600080600060608486031215620002cd57600080fd5b83516001600160401b0380821115620002e557600080fd5b620002f38783880162000200565b945060208601519150808211156200030a57600080fd5b50620003198682870162000200565b925050604084015190509250925092565b600181811c908216806200033f57607f821691505b602082108114156200036157634e487b7160e01b600052602260045260246000fd5b50919050565b608051611e416200038360003960006107f00152611e416000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806372830dfd116100f9578063b88d4fde11610097578063dda52d5311610071578063dda52d5314610379578063e985e9c51461038c578063f2fde38b146103c8578063fd1e2962146103db57600080fd5b8063b88d4fde1461034a578063c87b56dd1461035d578063d7224ba01461037057600080fd5b80639c4dab52116100d35780639c4dab5214610313578063a22cb4651461031c578063ac4460021461032f578063b1f536fa1461033757600080fd5b806372830dfd146102e75780638da5cb5b146102fa57806395d89b411461030b57600080fd5b80632d20fb60116101665780636352211e116101405780636352211e146102b15780636c0360eb146102c457806370a08231146102cc578063715018a6146102df57600080fd5b80632d20fb601461027857806342842e0e1461028b57806355f804b31461029e57600080fd5b8063095ea7b3116101a2578063095ea7b31461023157806318160ddd1461024657806323b872dd1461025c57806327b3bf111461026f57600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063081812fc14610206575b600080fd5b6101dc6101d7366004611877565b6103ee565b60405190151581526020015b60405180910390f35b6101f9610440565b6040516101e891906118ec565b6102196102143660046118ff565b6104d2565b6040516001600160a01b0390911681526020016101e8565b61024461023f366004611934565b610516565b005b600154600054035b6040519081526020016101e8565b61024461026a36600461195e565b6105a4565b61024e600c5481565b6102446102863660046118ff565b6105af565b61024461029936600461195e565b61061b565b6102446102ac36600461199a565b610636565b6102196102bf3660046118ff565b61066c565b6101f961067e565b61024e6102da366004611a0c565b61068d565b6102446106dc565b6102446102f5366004611a27565b610712565b6009546001600160a01b0316610219565b6101f9610a3c565b61024e600b5481565b61024461032a366004611aa6565b610a4b565b610244610ae1565b61024e610345366004611a0c565b610bd2565b610244610358366004611af8565b610bdd565b6101f961036b3660046118ff565b610c2e565b61024e60085481565b6102446103873660046118ff565b610cb3565b6101dc61039a366004611bd4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6102446103d6366004611a0c565b610ce2565b6102446103e93660046118ff565b610d7d565b60006001600160e01b031982166380ac58cd60e01b148061041f57506001600160e01b03198216635b5e139f60e01b145b8061043a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461044f90611c07565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90611c07565b80156104c85780601f1061049d576101008083540402835291602001916104c8565b820191906000526020600020905b8154815290600101906020018083116104ab57829003601f168201915b5050505050905090565b60006104dd82610dac565b6104fa576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105218261066c565b9050806001600160a01b0316836001600160a01b031614156105565760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b038216148015906105765750610574813361039a565b155b15610594576040516367d9dca160e11b815260040160405180910390fd5b61059f838383610dd7565b505050565b61059f838383610e33565b6009546001600160a01b031633146105e25760405162461bcd60e51b81526004016105d990611c42565b60405180910390fd5b6002600a5414156106055760405162461bcd60e51b81526004016105d990611c77565b6002600a5561061381611023565b506001600a55565b61059f83838360405180602001604052806000815250610bdd565b6009546001600160a01b031633146106605760405162461bcd60e51b81526004016105d990611c42565b61059f600d83836117c8565b60006106778261115b565b5192915050565b6060610688611277565b905090565b60006001600160a01b0382166106b6576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6009546001600160a01b031633146107065760405162461bcd60e51b81526004016105d990611c42565b6107106000611286565b565b6002600a5414156107355760405162461bcd60e51b81526004016105d990611c77565b6002600a55600c54801580159061074b57508042115b6107995760405162461bcd60e51b815260206004820152602b6024820152600080516020611dec83398151915260448201526a642d6d696e742d74696d6560a81b60648201526084016105d9565b83803233146107ee5760405162461bcd60e51b815260206004820152602d6024820152600080516020611dec83398151915260448201526c3216b6b4b73a16b1b0b63632b960991b60648201526084016105d9565b7f0000000000000000000000000000000000000000000000000000000000000000610826836108206001546000540390565b906112d8565b11156108795760405162461bcd60e51b815260206004820152602e6024820152600080516020611dec83398151915260448201526d642d746f74616c2d737570706c7960901b60648201526084016105d9565b8061088783610820336112e4565b11156108e95760405162461bcd60e51b815260206004820152603b6024820152600080516020611dec83398151915260448201527f642d696e766f636174696f6e2d75707065722d626f756e64617279000000000060648201526084016105d9565b6000821161094d5760405162461bcd60e51b815260206004820152603b6024820152600080516020611dec83398151915260448201527f642d696e766f636174696f6e2d6c6f7765722d626f756e64617279000000000060648201526084016105d9565b85338686600b546109ce838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040516bffffffffffffffffffffffff1960608a901b166020820152603481018a9052859250605401905060405160208183030381529060405280519060200120611313565b610a205760405162461bcd60e51b815260206004820152602f6024820152600080516020611dec83398151915260448201526e3216b0b2323932b9b996b83937b7b360891b60648201526084016105d9565b610a2a338c611329565b50506001600a55505050505050505050565b60606003805461044f90611c07565b6001600160a01b038216331415610a755760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6009546001600160a01b03163314610b0b5760405162461bcd60e51b81526004016105d990611c42565b6002600a541415610b2e5760405162461bcd60e51b81526004016105d990611c77565b6002600a55604051600090339047908381818185875af1925050503d8060008114610b75576040519150601f19603f3d011682016040523d82523d6000602084013e610b7a565b606091505b50509050806106135760405162461bcd60e51b81526020600482015260306024820152600080516020611dec83398151915260448201526f642d77697468647261772d6d6f6e657960801b60648201526084016105d9565b600061043a826112e4565b610be8848484610e33565b6001600160a01b0383163b15158015610c0a5750610c088484848461136c565b155b15610c28576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060610c3982610dac565b610c5657604051630a14c4b560e41b815260040160405180910390fd5b6000610c60611277565b9050805160001415610c815760405180602001604052806000815250610cac565b80610c8b84611464565b604051602001610c9c929190611cae565b6040516020818303038152906040525b9392505050565b6009546001600160a01b03163314610cdd5760405162461bcd60e51b81526004016105d990611c42565b600c55565b6009546001600160a01b03163314610d0c5760405162461bcd60e51b81526004016105d990611c42565b6001600160a01b038116610d715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d9565b610d7a81611286565b50565b6009546001600160a01b03163314610da75760405162461bcd60e51b81526004016105d990611c42565b600b55565b600080548210801561043a575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610e3e8261115b565b9050836001600160a01b031681600001516001600160a01b031614610e755760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0386161480610e935750610e93853361039a565b80610eae575033610ea3846104d2565b6001600160a01b0316145b905080610ece57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038416610ef557604051633a954ecd60e21b815260040160405180910390fd5b610f0160008487610dd7565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116610fd7576000548214610fd7578054602086015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b80611041576040516356be441560e01b815260040160405180910390fd5b6000546110615760405163c0367cab60e01b815260040160405180910390fd5b6008548061106d575060005b600054811061108f576040516370e89b1b60e01b815260040160405180910390fd5b60005482820160001981019110156110aa5750600054600019015b815b818111611150576000818152600460205260409020546001600160a01b03161580156110ee5750600081815260046020526040902054600160e01b900460ff16155b156111485760006110fe8261115b565b805160008481526004602090815260409091208054919093015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b0390921691909117179055505b6001016110ac565b506001016008555050565b60408051606081018252600080825260208201819052918101919091528160005481101561125e57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff1615159181018290529061125c5780516001600160a01b0316156111f2579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215611257579392505050565b6111f2565b505b604051636f96cda160e11b815260040160405180910390fd5b6060600d805461044f90611c07565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610cac8284611cf3565b6001600160a01b038116600090815260056020526040812054600160401b900467ffffffffffffffff1661043a565b6000826113208584611562565b14949350505050565b61133382826115d6565b60405181815233907f0ce3610e89a4bb9ec9359763f99110ed52a4abaea0b62028a1637e242ca2768b9060200160405180910390a25050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906113a1903390899088908890600401611d0b565b602060405180830381600087803b1580156113bb57600080fd5b505af19250505080156113eb575060408051601f3d908101601f191682019092526113e891810190611d48565b60015b611446573d808015611419576040519150601f19603f3d011682016040523d82523d6000602084013e61141e565b606091505b50805161143e576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060816114885750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114b2578061149c81611d65565b91506114ab9050600a83611d96565b915061148c565b60008167ffffffffffffffff8111156114cd576114cd611ae2565b6040519080825280601f01601f1916602001820160405280156114f7576020820181803683370190505b5090505b841561145c5761150c600183611daa565b9150611519600a86611dc1565b611524906030611cf3565b60f81b81838151811061153957611539611dd5565b60200101906001600160f81b031916908160001a90535061155b600a86611d96565b94506114fb565b600081815b84518110156115ce57600085828151811061158457611584611dd5565b602002602001015190508083116115aa57600083815260208290526040902092506115bb565b600081815260208490526040902092505b50806115c681611d65565b915050611567565b509392505050565b6115f08282604051806020016040528060008152506115f4565b5050565b61059f83838360016000546001600160a01b03851661162557604051622e076360e81b815260040160405180910390fd5b836116435760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038516600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff19811667ffffffffffffffff8083168c018116918217600160401b67ffffffffffffffff1990941690921783900481168c01811690920217909155858452600490925290912080546001600160e01b031916909217600160a01b4290921691909102179055808085018380156116f057506001600160a01b0387163b15155b15611779575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611741600088848060010195508861136c565b61175e576040516368d2bf6b60e11b815260040160405180910390fd5b808214156116f657826000541461177457600080fd5b6117bf565b5b6040516001830192906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082141561177a575b5060005561101c565b8280546117d490611c07565b90600052602060002090601f0160209004810192826117f6576000855561183c565b82601f1061180f5782800160ff1982351617855561183c565b8280016001018555821561183c579182015b8281111561183c578235825591602001919060010190611821565b5061184892915061184c565b5090565b5b80821115611848576000815560010161184d565b6001600160e01b031981168114610d7a57600080fd5b60006020828403121561188957600080fd5b8135610cac81611861565b60005b838110156118af578181015183820152602001611897565b83811115610c285750506000910152565b600081518084526118d8816020860160208601611894565b601f01601f19169290920160200192915050565b602081526000610cac60208301846118c0565b60006020828403121561191157600080fd5b5035919050565b80356001600160a01b038116811461192f57600080fd5b919050565b6000806040838503121561194757600080fd5b61195083611918565b946020939093013593505050565b60008060006060848603121561197357600080fd5b61197c84611918565b925061198a60208501611918565b9150604084013590509250925092565b600080602083850312156119ad57600080fd5b823567ffffffffffffffff808211156119c557600080fd5b818501915085601f8301126119d957600080fd5b8135818111156119e857600080fd5b8660208285010111156119fa57600080fd5b60209290920196919550909350505050565b600060208284031215611a1e57600080fd5b610cac82611918565b600080600060408486031215611a3c57600080fd5b83359250602084013567ffffffffffffffff80821115611a5b57600080fd5b818601915086601f830112611a6f57600080fd5b813581811115611a7e57600080fd5b8760208260051b8501011115611a9357600080fd5b6020830194508093505050509250925092565b60008060408385031215611ab957600080fd5b611ac283611918565b915060208301358015158114611ad757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611b0e57600080fd5b611b1785611918565b9350611b2560208601611918565b925060408501359150606085013567ffffffffffffffff80821115611b4957600080fd5b818701915087601f830112611b5d57600080fd5b813581811115611b6f57611b6f611ae2565b604051601f8201601f19908116603f01168101908382118183101715611b9757611b97611ae2565b816040528281528a6020848701011115611bb057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611be757600080fd5b611bf083611918565b9150611bfe60208401611918565b90509250929050565b600181811c90821680611c1b57607f821691505b60208210811415611c3c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60008351611cc0818460208801611894565b835190830190611cd4818360208801611894565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611d0657611d06611cdd565b500190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d3e908301846118c0565b9695505050505050565b600060208284031215611d5a57600080fd5b8151610cac81611861565b6000600019821415611d7957611d79611cdd565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611da557611da5611d80565b500490565b600082821015611dbc57611dbc611cdd565b500390565b600082611dd057611dd0611d80565b500690565b634e487b7160e01b600052603260045260246000fdfe52686170736f647943726561746f7247656e657261746976652f696e76616c69a2646970667358221220b0ddc05f376ed2be9ca8b1e8e4db9f33efbd7faa57066a7f32f27cb0a59c8e1864736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000020504d4320782048656c6c6368656d7920536b656c7465726d7920436f6c6c6162000000000000000000000000000000000000000000000000000000000000000d504d432d48532d434f4c4c414200000000000000000000000000000000000000