60c0604052600a805461ffff191690553480156200001c57600080fd5b50604080518082018252600a8152695368696e7a6f2041626560b01b602080830191825283518085019094526009845268414245e38182e381b960b81b9084015281519192916200007091600391620006cf565b50805162000086906004906020840190620006cf565b50505060006200009b6200050d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60008190527f6ed4a2ad7fcc8c909e132e6944330e092422b135566df0c96615e85c6f709ad88054600160ff199182168117909255601860209081527f89b047228bcbc7dd2bd64da6fb9668f504c0478eb6fbbc20eeaab33f85fbfdda8054909216909217905560808290526040805163c45a015560e01b81529051839263c45a01559260048082019391829003018186803b1580156200019e57600080fd5b505afa158015620001b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d9919062000775565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d919062000775565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002a657600080fd5b505af1158015620002bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e1919062000775565b6001600160a01b031660a081905260008181526017602090815260408083208054600160ff199182168117909255601890935292208054909116821790556200032b919062000511565b69021e19e0c9bab2400000600955683635c9adc5dea000006008556002600d819055600e81905580808069d3c21bcecceda10000006200036c8280620007a0565b600c819055600b55601183905560128290556200038a8284620007a0565b6010819055600f55600680546001600160a01b03191673824dcd70886fd1b2fb16696a395fcb294a09899d179055601660209081527fef7a35f9aa91c506ca33654b2bd278f9011dc1e37762079c0f9391ab3e749ada805460ff199081166001908117909255306000908152604080822080548416851790557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b578054841685179055601785527fbbfda7ad0f4e5d8dda98b415b58c759a53d192d56d440cb68001dfbee73d2da5805484168517905580822080548416851790557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805484168517905560189094527f191312421effc3d64ce78eba6769c1f916a1a2ab1f491e96c6e3429726e408f28054831684179055928320805482168317905561dead9092527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd6805490921617905562000501338262000565565b50505050505062000804565b3390565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620005c15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620005dd816002546200066560201b62000a561790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200061091839062000a5662000665821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620006748385620007a0565b905083811015620006c85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620005b8565b9392505050565b828054620006dd90620007c7565b90600052602060002090601f0160209004810192826200070157600085556200074c565b82601f106200071c57805160ff19168380011785556200074c565b828001600101855582156200074c579182015b828111156200074c5782518255916020019190600101906200072f565b506200075a9291506200075e565b5090565b5b808211156200075a57600081556001016200075f565b6000602082840312156200078857600080fd5b81516001600160a01b0381168114620006c857600080fd5b60008219821115620007c257634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620007dc57607f821691505b60208210811415620007fe57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051611c226200084d60003960006103d00152600081816102e70152818161155e0152818161162601528181611662015281816116dc01526117440152611c226000f3fe60806040526004361061021e5760003560e01c806382f87d2211610123578063cdbf7455116100ab578063e194c2b21161006f578063e194c2b21461066a578063e2f4560514610680578063f2fde38b14610696578063f398d304146106b6578063f8b45b05146106e657600080fd5b8063cdbf7455146105b2578063d2943933146105c8578063d64dc9bd146105de578063dd62ed3e146105f4578063e0bf7fd11461063a57600080fd5b806395d89b41116100f257806395d89b4114610513578063a457c2d714610528578063a9059cbb14610548578063b62496f514610568578063bbc0c7421461059857600080fd5b806382f87d22146104aa5780638a8c523c146104c05780638da5cb5b146104d55780638ea5220f146104f357600080fd5b806339509351116101a65780636ddd1713116101755780636ddd1713146104085780636fc617741461042757806370a082311461043d578063715018a61461047357806375f0a8741461048a57600080fd5b8063395093511461038857806340f97913146103a857806349bd5a5e146103be5780636d7adcad146103f257600080fd5b80631694505e116101ed5780631694505e146102d557806318160ddd146103215780631a8145bb1461033657806323b872dd1461034c578063313ce5671461036c57600080fd5b806303c525731461022a57806306fdde03146102535780630855f25d14610275578063095ea7b3146102b557600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50610240600e5481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506102686106fc565b60405161024a91906117f9565b34801561028157600080fd5b506102a5610290366004611866565b60186020526000908152604090205460ff1681565b604051901515815260200161024a565b3480156102c157600080fd5b506102a56102d0366004611883565b61078e565b3480156102e157600080fd5b506103097f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b34801561032d57600080fd5b50600254610240565b34801561034257600080fd5b5061024060135481565b34801561035857600080fd5b506102a56103673660046118af565b6107a5565b34801561037857600080fd5b506040516012815260200161024a565b34801561039457600080fd5b506102a56103a3366004611883565b61080e565b3480156103b457600080fd5b5061024060105481565b3480156103ca57600080fd5b506103097f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fe57600080fd5b5061024060145481565b34801561041457600080fd5b50600a546102a590610100900460ff1681565b34801561043357600080fd5b50610240600d5481565b34801561044957600080fd5b50610240610458366004611866565b6001600160a01b031660009081526020819052604090205490565b34801561047f57600080fd5b50610488610844565b005b34801561049657600080fd5b50600654610309906001600160a01b031681565b3480156104b657600080fd5b50610240600c5481565b3480156104cc57600080fd5b506104886108c1565b3480156104e157600080fd5b506005546001600160a01b0316610309565b3480156104ff57600080fd5b50600754610309906001600160a01b031681565b34801561051f57600080fd5b50610268610900565b34801561053457600080fd5b506102a5610543366004611883565b61090f565b34801561055457600080fd5b506102a5610563366004611883565b61095e565b34801561057457600080fd5b506102a5610583366004611866565b60196020526000908152604090205460ff1681565b3480156105a457600080fd5b50600a546102a59060ff1681565b3480156105be57600080fd5b50610240600f5481565b3480156105d457600080fd5b5061024060115481565b3480156105ea57600080fd5b50610240600b5481565b34801561060057600080fd5b5061024061060f3660046118f0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064657600080fd5b506102a5610655366004611866565b60166020526000908152604090205460ff1681565b34801561067657600080fd5b5061024060125481565b34801561068c57600080fd5b5061024060085481565b3480156106a257600080fd5b506104886106b1366004611866565b61096b565b3480156106c257600080fd5b506102a56106d1366004611866565b60176020526000908152604090205460ff1681565b3480156106f257600080fd5b5061024060095481565b60606003805461070b90611929565b80601f016020809104026020016040519081016040528092919081815260200182805461073790611929565b80156107845780601f1061075957610100808354040283529160200191610784565b820191906000526020600020905b81548152906001019060200180831161076757829003601f168201915b5050505050905090565b600061079b338484610abc565b5060015b92915050565b60006107b2848484610be1565b61080484336107ff85604051806060016040528060288152602001611ba0602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611116565b610abc565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161079b9185906107ff9086610a56565b6005546001600160a01b031633146108775760405162461bcd60e51b815260040161086e90611964565b60405180910390fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146108eb5760405162461bcd60e51b815260040161086e90611964565b600a805461ffff191661010117905543601555565b60606004805461070b90611929565b600061079b33846107ff85604051806060016040528060258152602001611bc8602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611116565b600061079b338484610be1565b6005546001600160a01b031633146109955760405162461bcd60e51b815260040161086e90611964565b6001600160a01b0381166109fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086e565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080610a6383856119af565b905083811015610ab55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161086e565b9392505050565b6001600160a01b038316610b1e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161086e565b6001600160a01b038216610b7f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161086e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610c075760405162461bcd60e51b815260040161086e906119c7565b6001600160a01b038216610c2d5760405162461bcd60e51b815260040161086e90611a0c565b80610c4357610c3e83836000611150565b505050565b6005546001600160a01b03848116911614801590610c6f57506005546001600160a01b03838116911614155b8015610c8357506001600160a01b03821615155b8015610c9a57506001600160a01b03821661dead14155b8015610cb05750600554600160a01b900460ff16155b15610df357600a5460ff16610d43576001600160a01b03831660009081526016602052604090205460ff1680610cfe57506001600160a01b03821660009081526016602052604090205460ff165b610d435760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161086e565b6001600160a01b03831660009081526019602052604090205460ff168015610d8457506001600160a01b03821660009081526017602052604090205460ff16155b15610df3576009546001600160a01b038316600090815260208190526040902054610daf90836119af565b1115610df35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161086e565b3060009081526020819052604090205460085481108015908190610e1e5750600a54610100900460ff165b8015610e345750600554600160a01b900460ff16155b8015610e5957506001600160a01b03851660009081526019602052604090205460ff16155b8015610e7e57506001600160a01b03851660009081526016602052604090205460ff16155b8015610ea357506001600160a01b03841660009081526016602052604090205460ff16155b15610ed1576005805460ff60a01b1916600160a01b179055610ec3611259565b6005805460ff60a01b191690555b6005546001600160a01b03851660009081526019602052604081205460ff600160a01b9093048316159216158015610f2257506001600160a01b03871660009081526019602052604090205460ff16155b6001600160a01b03881660009081526016602052604090205490915060ff1680610f6457506001600160a01b03861660009081526016602052604090205460ff165b80610f6c5750805b15610f7657600091505b60008215611101576001600160a01b03881660009081526019602052604090205460ff168015610fa857506000600c54115b1561103657610fcd6064610fc7600c548961140490919063ffffffff16565b90611483565b9050600c54600d5482610fe09190611a4f565b610fea9190611a6e565b60136000828254610ffb91906119af565b9091555050600c54600e546110109083611a4f565b61101a9190611a6e565b6014600082825461102b91906119af565b909155506110e39050565b6001600160a01b03871660009081526019602052604090205460ff16801561106057506000601054115b156110e35761107f6064610fc76010548961140490919063ffffffff16565b9050601054601154826110929190611a4f565b61109c9190611a6e565b601360008282546110ad91906119af565b90915550506010546012546110c29083611a4f565b6110cc9190611a6e565b601460008282546110dd91906119af565b90915550505b80156110f4576110f4883083611150565b6110fe8187611a90565b95505b61110c888888611150565b5050505050505050565b6000818484111561113a5760405162461bcd60e51b815260040161086e91906117f9565b5060006111478486611a90565b95945050505050565b6001600160a01b0383166111765760405162461bcd60e51b815260040161086e906119c7565b6001600160a01b03821661119c5760405162461bcd60e51b815260040161086e90611a0c565b6111d981604051806060016040528060268152602001611b7a602691396001600160a01b0386166000908152602081905260409020549190611116565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546112089082610a56565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610bd4565b306000908152602081905260408120549050600060145460135461127d91906119af565b9050600082158061128c575081155b1561129657505050565b6008546112a4906014611a4f565b8311156112bc576008546112b9906014611a4f565b92505b6000600283601354866112cf9190611a4f565b6112d99190611a6e565b6112e39190611a6e565b905060006112f185836114c5565b9050476112fd82611507565b600061130947836114c5565b9050600061132861131a8689611a90565b601454610fc7908590611404565b905060006113368284611a90565b60006013819055601455905085158015906113515750600081115b156113a45761136086826116d6565b601354604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d80600081146113f1576040519150601f19603f3d011682016040523d82523d6000602084013e6113f6565b606091505b505050505050505050505050565b6000826114135750600061079f565b600061141f8385611a4f565b90508261142c8583611a6e565b14610ab55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161086e565b6000610ab583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117cb565b6000610ab583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611116565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061153c5761153c611aa7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b557600080fd5b505afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190611abd565b8160018151811061160057611600611aa7565b60200260200101906001600160a01b031690816001600160a01b03168152505061164b307f000000000000000000000000000000000000000000000000000000000000000084610abc565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906116a0908590600090869030904290600401611ada565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b505050505050565b611701307f000000000000000000000000000000000000000000000000000000000000000084610abc565b60065460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c4016060604051808303818588803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117c49190611b4b565b5050505050565b600081836117ec5760405162461bcd60e51b815260040161086e91906117f9565b5060006111478486611a6e565b600060208083528351808285015260005b818110156118265785810183015185820160400152820161180a565b81811115611838576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461186357600080fd5b50565b60006020828403121561187857600080fd5b8135610ab58161184e565b6000806040838503121561189657600080fd5b82356118a18161184e565b946020939093013593505050565b6000806000606084860312156118c457600080fd5b83356118cf8161184e565b925060208401356118df8161184e565b929592945050506040919091013590565b6000806040838503121561190357600080fd5b823561190e8161184e565b9150602083013561191e8161184e565b809150509250929050565b600181811c9082168061193d57607f821691505b6020821081141561195e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156119c2576119c2611999565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615611a6957611a69611999565b500290565b600082611a8b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611aa257611aa2611999565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611acf57600080fd5b8151610ab58161184e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b2a5784516001600160a01b031683529383019391830191600101611b05565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b6057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bb1c672289fe210b7cbcd21298658c0d1e1165e9d932aa73dbb1f6b443c91fad64736f6c63430008090033