0x60806040523480156200001157600080fd5b5060405162002c0038038062002c00833981016040819052620000349162000489565b6040518060400160405280601381526020017f5468652056656e64696e67204d616368696e650000000000000000000000000081525060405180604001604052806002815260200161564d60f01b81525081600290805190602001906200009d929190620003e3565b508051620000b3906003906020840190620003e3565b50506000805550620000c5336200010a565b620000d0856200015c565b620000db8462000188565b620000e683620001b4565b620000f4826101f462000247565b620000ff8162000261565b50505050506200062b565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200016662000280565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6200019262000280565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b620001be62000280565b6001600160a01b038116620001e657604051632969679960e11b815260040160405180910390fd5b600d80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f60830ccd7c35416189ce5de528630fdc808f53ccdaf8211ef20efbd48fbce12b910160405180910390a15050565b6200025162000280565b6200025d8282620002e2565b5050565b6200026b62000280565b80516200025d90600e906020840190620003e3565b600a546001600160a01b03163314620002e05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b565b6127106001600160601b0382161115620003525760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401620002d7565b6001600160a01b038216620003aa5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620002d7565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b828054620003f190620005bf565b90600052602060002090601f01602090048101928262000415576000855562000460565b82601f106200043057805160ff191683800117855562000460565b8280016001018555821562000460579182015b828111156200046057825182559160200191906001019062000443565b506200046e92915062000472565b5090565b5b808211156200046e576000815560010162000473565b600080600080600060a08688031215620004a257600080fd5b8551620004af8162000612565b80955050602080870151620004c48162000612565b6040880151909550620004d78162000612565b6060880151909450620004ea8162000612565b60808801519093506001600160401b03808211156200050857600080fd5b818901915089601f8301126200051d57600080fd5b815181811115620005325762000532620005fc565b604051601f8201601f19908116603f011681019083821181831017156200055d576200055d620005fc565b816040528281528c868487010111156200057657600080fd5b600093505b828410156200059a57848401860151818501870152928501926200057b565b82841115620005ac5760008684830101525b8096505050505050509295509295909350565b600181811c90821680620005d457607f821691505b60208210811415620005f657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200062857600080fd5b50565b6125c5806200063b6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636ac20f661161010f578063b3e82dc9116100a2578063e985e9c511610071578063e985e9c514610453578063ecf6c3411461048f578063f23a6e61146104a2578063f2fde38b146104b557600080fd5b8063b3e82dc9146103e2578063b88d4fde146103f5578063bc197c8114610408578063c87b56dd1461044057600080fd5b80638da5cb5b116100de5780638da5cb5b146103a357806395d89b41146103b4578063a22cb465146103bc578063b0bdacc6146103cf57600080fd5b80636ac20f661461036d5780636c0360eb1461038057806370a0823114610388578063715018a61461039b57600080fd5b806318160ddd1161018757806331beb6051161015657806331beb6051461032157806342842e0e1461033457806355f804b3146103475780636352211e1461035a57600080fd5b806318160ddd146102bd57806323b872dd146102c957806328aaf43f146102dc5780632a55205a146102ef57600080fd5b8063081812fc116101c3578063081812fc1461025a578063095ea7b3146102855780630ca1c5c91461029857806312a4e2b0146102aa57600080fd5b806301ffc9a7146101f557806302fa7c471461021d57806305c34df91461023257806306fdde0314610245575b600080fd5b61020861020336600461217f565b6104c8565b60405190151581526020015b60405180910390f35b61023061022b366004612140565b6104f7565b005b61023061024036600461221b565b61050d565b61024d610616565b60405161021491906123fd565b61026d610268366004612202565b6106a8565b6040516001600160a01b039091168152602001610214565b610230610293366004612114565b6106ec565b6000545b604051908152602001610214565b6102306102b83660046122aa565b61078c565b6001546000540361029c565b6102306102d7366004611fcb565b610935565b6102306102ea366004612114565b610ad0565b6103026102fd366004612288565b610ae2565b604080516001600160a01b039093168352602083019190915201610214565b61023061032f366004611eaa565b610b9f565b610230610342366004611fcb565b610c2f565b6102306103553660046121b9565b610c4f565b61026d610368366004612202565b610c6a565b61023061037b366004611eaa565b610c75565b61024d610c9f565b61029c610396366004611eaa565b610d2d565b610230610d7c565b600a546001600160a01b031661026d565b61024d610d90565b6102306103ca3660046120e1565b610d9f565b6102306103dd366004611eaa565b610e35565b600d5461026d906001600160a01b031681565b61023061040336600461200c565b610e5f565b610427610416366004611f1d565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610214565b61024d61044e366004612202565b610ea9565b610208610461366004611ee4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b61023061049d366004612315565b610f2e565b6104276104b0366004612078565b61116a565b6102306104c3366004611eaa565b611219565b60006104d3826112ae565b806104e257506104e2826112fc565b806104f157506104f182611331565b92915050565b6104ff611356565b61050982826113b0565b5050565b828260008260405160200161052491815260200190565b60405160208183030381529060405280519060200120905061059d82610597836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b906114ca565b600d546001600160a01b039081169116146105cb5760405163c1606c2f60e01b815260040160405180910390fd5b6105d68660016114ee565b857f865cea83af427fbb127e55ae9ea14dae646cceb87f9bc0e2069ecd26e881160c8560405161060691906123fd565b60405180910390a2505050505050565b606060028054610625906124fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610651906124fd565b801561069e5780601f106106735761010080835404028352916020019161069e565b820191906000526020600020905b81548152906001019060200180831161068157829003601f168201915b5050505050905090565b60006106b382611631565b6106d0576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006106f782610c6a565b9050336001600160a01b03821614610730576107138133610461565b610730576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b83826000826040516020016107a391815260200190565b60405160208183030381529060405280519060200120905061081682610597836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b600d546001600160a01b039081169116146108445760405163c1606c2f60e01b815260040160405180910390fd5b600c546040516331a9108f60e11b81526004810188905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c09190611ec7565b6001600160a01b0316146108e757604051633e8be92f60e01b815260040160405180910390fd5b6108f28760016114ee565b857fc8c60ffc702416e5cdf6d1f969fc925a8ee1f6b7725719aad0f7935b11aaf5448886604051610924929190612410565b60405180910390a250505050505050565b600061094082611658565b9050836001600160a01b0316816001600160a01b0316146109735760405162a1148160e81b815260040160405180910390fd5b6000828152600660205260409020805461099f8187335b6001600160a01b039081169116811491141790565b6109ca576109ad8633610461565b6109ca57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166109f157604051633a954ecd60e21b815260040160405180910390fd5b80156109fc57600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040902055600160e11b8316610a875760018401600081815260046020526040902054610a85576000548114610a855760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b610ad8611356565b61050982826116b9565b60008281526009602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291610b615750604080518082019091526008546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090610b85906bffffffffffffffffffffffff16876124a4565b610b8f9190612482565b91519350909150505b9250929050565b610ba7611356565b6001600160a01b038116610bce57604051632969679960e11b815260040160405180910390fd5b600d80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f60830ccd7c35416189ce5de528630fdc808f53ccdaf8211ef20efbd48fbce12b910160405180910390a15050565b610c4a83838360405180602001604052806000815250610e5f565b505050565b610c57611356565b805161050990600e906020840190611d13565b60006104f182611658565b610c7d611356565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600e8054610cac906124fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd8906124fd565b8015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b505050505081565b60006001600160a01b038216610d56576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b610d84611356565b610d8e600061170f565b565b606060038054610625906124fd565b6001600160a01b038216331415610dc95760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610e3d611356565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610e6a848484610935565b6001600160a01b0383163b15610ea357610e8684848484611761565b610ea3576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060610eb482611631565b610ed157604051630a14c4b560e41b815260040160405180910390fd5b6000610edb611859565b9050805160001415610efc5760405180602001604052806000815250610f27565b80610f0684611868565b604051602001610f17929190612392565b6040516020818303038152906040525b9392505050565b8482600082604051602001610f4591815260200190565b604051602081830303815290604052805190602001209050610fb882610597836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b600d546001600160a01b03908116911614610fe65760405163c1606c2f60e01b815260040160405180910390fd5b600c546040516331a9108f60e11b81526004810189905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561102a57600080fd5b505afa15801561103e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110629190611ec7565b6001600160a01b03161415806110fb5750600c546040516331a9108f60e11b81526004810188905233916001600160a01b031690636352211e9060240160206040518083038186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef9190611ec7565b6001600160a01b031614155b1561111957604051633e8be92f60e01b815260040160405180910390fd5b6111248860016114ee565b867f0d380315c9b5a43e53237b339ebdfa52db22638388a79c261ccb70c829111efc878a8760405161115893929190612429565b60405180910390a25050505050505050565b600b546000906001600160a01b0316331461119857604051630aab7baf60e01b815260040160405180910390fd5b600b54604051634e4037d760e11b815260048101869052602481018590526001600160a01b0390911690639c806fae90604401600060405180830381600087803b1580156111e557600080fd5b505af11580156111f9573d6000803e3d6000fd5b5050505061120785846116b9565b5063f23a6e6160e01b95945050505050565b611221611356565b6001600160a01b0381166112a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6112ab8161170f565b50565b60006301ffc9a760e01b6001600160e01b0319831614806112df57506380ac58cd60e01b6001600160e01b03198316145b806104f15750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b14806104f157506301ffc9a760e01b6001600160e01b03198316146104f1565b60006001600160e01b03198216630271189760e51b14806104f157506104f1826112fc565b600a546001600160a01b03163314610d8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611299565b6127106bffffffffffffffffffffffff821611156114365760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401611299565b6001600160a01b03821661148c5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611299565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600855565b60008060006114d985856118aa565b915091506114e6816118ed565b509392505050565b60006114f983611658565b90508060008061151786600090815260066020526040902080549091565b9150915084156115575761152c81843361098a565b6115575761153a8333610461565b61155757604051632ce44b5f60e11b815260040160405180910390fd5b801561156257600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b17600087815260046020526040902055600160e11b84166115e957600186016000818152600460205260409020546115e75760005481146115e75760008181526004602052604090208590555b505b60405186906000906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b60008054821080156104f1575050600090815260046020526040902054600160e01b161590565b6000816000548110156116a057600081815260046020526040902054600160e01b811661169e575b80610f27575060001901600081815260046020526040902054611680565b505b604051636f96cda160e11b815260040160405180910390fd5b6000546116c68383611aa8565b60408051828152602081018490526001600160a01b038516917f83ab7f3b607b676b6ba0841d532d71a635e134e5c8c3d11a0307f094f1eb118e910160405180910390a2505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906117969033908990889088906004016123c1565b602060405180830381600087803b1580156117b057600080fd5b505af19250505080156117e0575060408051601f3d908101601f191682019092526117dd9181019061219c565b60015b61183b573d80801561180e576040519150601f19603f3d011682016040523d82523d6000602084013e611813565b606091505b508051611833576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600e8054610625906124fd565b604080516080019081905280825b600183039250600a81066030018353600a90048061189357611898565b611876565b50819003601f19909101908152919050565b6000808251604114156118e15760208301516040840151606085015160001a6118d587828585611ac2565b94509450505050610b98565b50600090506002610b98565b600081600481111561190157611901612538565b141561190a5750565b600181600481111561191e5761191e612538565b141561196c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401611299565b600281600481111561198057611980612538565b14156119ce5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611299565b60038160048111156119e2576119e2612538565b1415611a3b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401611299565b6004816004811115611a4f57611a4f612538565b14156112ab5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401611299565b610509828260405180602001604052806000815250611baf565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611af95750600090506003611ba6565b8460ff16601b14158015611b1157508460ff16601c14155b15611b225750600090506004611ba6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611b76573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b9f57600060019250925050611ba6565b9150600090505b94509492505050565b611bb98383611c1c565b6001600160a01b0383163b15610c4a576000548281035b611be36000868380600101945086611761565b611c00576040516368d2bf6b60e11b815260040160405180910390fd5b818110611bd0578160005414611c1557600080fd5b5050505050565b60005481611c3d5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611cec57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611cb4565b5081611d0a57604051622e076360e81b815260040160405180910390fd5b60005550505050565b828054611d1f906124fd565b90600052602060002090601f016020900481019282611d415760008555611d87565b82601f10611d5a57805160ff1916838001178555611d87565b82800160010185558215611d87579182015b82811115611d87578251825591602001919060010190611d6c565b50611d93929150611d97565b5090565b5b80821115611d935760008155600101611d98565b600067ffffffffffffffff831115611dc657611dc661254e565b611dd9601f8401601f1916602001612451565b9050828152838383011115611ded57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611e1557600080fd5b8135602067ffffffffffffffff821115611e3157611e3161254e565b8160051b611e40828201612451565b838152828101908684018388018501891015611e5b57600080fd5b600093505b85841015611e7e578035835260019390930192918401918401611e60565b50979650505050505050565b600082601f830112611e9b57600080fd5b610f2783833560208501611dac565b600060208284031215611ebc57600080fd5b8135610f2781612564565b600060208284031215611ed957600080fd5b8151610f2781612564565b60008060408385031215611ef757600080fd5b8235611f0281612564565b91506020830135611f1281612564565b809150509250929050565b600080600080600060a08688031215611f3557600080fd5b8535611f4081612564565b94506020860135611f5081612564565b9350604086013567ffffffffffffffff80821115611f6d57600080fd5b611f7989838a01611e04565b94506060880135915080821115611f8f57600080fd5b611f9b89838a01611e04565b93506080880135915080821115611fb157600080fd5b50611fbe88828901611e8a565b9150509295509295909350565b600080600060608486031215611fe057600080fd5b8335611feb81612564565b92506020840135611ffb81612564565b929592945050506040919091013590565b6000806000806080858703121561202257600080fd5b843561202d81612564565b9350602085013561203d81612564565b925060408501359150606085013567ffffffffffffffff81111561206057600080fd5b61206c87828801611e8a565b91505092959194509250565b600080600080600060a0868803121561209057600080fd5b853561209b81612564565b945060208601356120ab81612564565b93506040860135925060608601359150608086013567ffffffffffffffff8111156120d557600080fd5b611fbe88828901611e8a565b600080604083850312156120f457600080fd5b82356120ff81612564565b915060208301358015158114611f1257600080fd5b6000806040838503121561212757600080fd5b823561213281612564565b946020939093013593505050565b6000806040838503121561215357600080fd5b823561215e81612564565b915060208301356bffffffffffffffffffffffff81168114611f1257600080fd5b60006020828403121561219157600080fd5b8135610f2781612579565b6000602082840312156121ae57600080fd5b8151610f2781612579565b6000602082840312156121cb57600080fd5b813567ffffffffffffffff8111156121e257600080fd5b8201601f810184136121f357600080fd5b61185184823560208401611dac565b60006020828403121561221457600080fd5b5035919050565b60008060006060848603121561223057600080fd5b83359250602084013567ffffffffffffffff8082111561224f57600080fd5b61225b87838801611e8a565b9350604086013591508082111561227157600080fd5b5061227e86828701611e8a565b9150509250925092565b6000806040838503121561229b57600080fd5b50508035926020909101359150565b600080600080608085870312156122c057600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122e657600080fd5b6122f288838901611e8a565b9350606087013591508082111561230857600080fd5b5061206c87828801611e8a565b600080600080600060a0868803121561232d57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561235a57600080fd5b611f9b89838a01611e8a565b6000815180845261237e8160208601602086016124d1565b601f01601f19169290920160200192915050565b600083516123a48184602088016124d1565b8351908301906123b88183602088016124d1565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526123f36080830184612366565b9695505050505050565b602081526000610f276020830184612366565b8281526040602082015260006118516040830184612366565b8381528260208201526060604082015260006124486060830184612366565b95945050505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561247a5761247a61254e565b604052919050565b60008261249f57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124cc57634e487b7160e01b600052601160045260246000fd5b500290565b60005b838110156124ec5781810151838201526020016124d4565b83811115610ea35750506000910152565b600181811c9082168061251157607f821691505b6020821081141561253257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112ab57600080fd5b6001600160e01b0319811681146112ab57600080fdfea264697066735822122091af9b2caeaed4926276fabbae2b39f8800a2e6d8d2528f67a8479c9b7787a7064736f6c634300080700330000000000000000000000006c27ea8f74cff8e1621d39005a814b6f9559862e0000000000000000000000003a2096754df385553c4252e5a82dc862e64169bb000000000000000000000000dbfc2e82dc2880320553dfa8e2db71da6c9c8b41000000000000000000000000ed2aadada6e6baf17ec4ac3a0602459b8786524300000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001b68747470733a2f2f766d2e703473642e636f6d2f746f6b656e732f0000000000