60806040523480156200001157600080fd5b506040516200273d3803806200273d833981016040819052620000349162000574565b600754600e90849060ff161580156200005557506001600160a01b03851615155b15620002705784600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620000bc57600080fd5b505afa158015620000d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000fb9190810190620004d6565b6040516020016200010d919062000638565b6040516020818303038152906040526003908051906020019062000133929190620003e9565b50806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200016e57600080fd5b505afa15801562000183573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001ad9190810190620004d6565b604051602001620001bf91906200066b565b60405160208183030381529060405260049080519060200190620001e5929190620003e9565b50806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022057600080fd5b505afa15801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000615565b6005805460ff191660ff929092169190911790555b82600760006101000a81548160ff0219169083151502179055508b8260010181905550838260000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a826003018190555089826004018190555087826005018190555088826006018190555086826008018190555085826009018190555042826007018190555033600a60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600681905550600a60009054906101000a90046001600160a01b03166001600160a01b0316633fc8cef36040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200037a57600080fd5b505af11580156200038f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b59190620004b2565b600b80546001600160a01b0319166001600160a01b039290921691909117905550620006ca9b505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200042157600085556200046c565b82601f106200043c57805160ff19168380011785556200046c565b828001600101855582156200046c579182015b828111156200046c5782518255916020019190600101906200044f565b506200047a9291506200047e565b5090565b5b808211156200047a57600081556001016200047f565b80516001600160a01b0381168114620004ad57600080fd5b919050565b600060208284031215620004c4578081fd5b620004cf8262000495565b9392505050565b600060208284031215620004e8578081fd5b81516001600160401b0380821115620004ff578283fd5b818401915084601f83011262000513578283fd5b8151818111156200052057fe5b604051601f8201601f1916810160200183811182821017156200053f57fe5b60405281815283820160200187101562000557578485fd5b6200056a82602083016020870162000697565b9695505050505050565b60008060008060008060008060008060006101608c8e03121562000596578687fd5b8b519a5060208c0151995060408c0151985060608c0151975060808c0151965060a08c0151955060c08c0151945060e08c01519350620005da6101008d0162000495565b9250620005eb6101208d0162000495565b91506101408c0151801515811462000601578182fd5b809150509295989b509295989b9093969950565b60006020828403121562000627578081fd5b815160ff81168114620004cf578182fd5b60006802339a837b7b61016960bd1b825282516200065e81600985016020870162000697565b9190910160090192915050565b600061667360f01b825282516200068a81600285016020870162000697565b9190910160020192915050565b60005b83811015620006b45781810151838201526020016200069a565b83811115620006c4576000848401525b50505050565b61206380620006da6000396000f3fe6080604052600436106101845760003560e01c80637f79496c116100d1578063a9059cbb1161008a578063e231bff011610064578063e231bff01461044d578063e565ffce14610462578063f0dda65c14610482578063f0ea4bfc146104a2576101af565b8063a9059cbb146103f8578063c45a015514610418578063dd62ed3e1461042d576101af565b80637f79496c14610346578063877cd0ca1461036c5780638c6e9fc41461039957806395d89b41146103ae5780639d76ea58146103c3578063a87430ba146103d8576101af565b80632ce5c2841161013e5780633e0dc34e116101185780633e0dc34e146102da5780633fc8cef3146102ef5780636a5e26501461031157806370a0823114610326576101af565b80632ce5c284146102835780632eb5b08a14610298578063313ce567146102b8576101af565b8062e56747146101b457806306fdde03146101ea578063095ea7b31461020c57806318160ddd1461022c5780631d2dbe931461024e57806323b872dd14610263576101af565b366101af57600b546001600160a01b031661019d6104b7565b6001600160a01b0316146101ad57fe5b005b600080fd5b3480156101c057600080fd5b506101d46101cf366004611813565b6104bb565b6040516101e19190611adf565b60405180910390f35b3480156101f657600080fd5b506101ff610832565b6040516101e19190611b2d565b34801561021857600080fd5b506101d461022736600461189a565b6108c8565b34801561023857600080fd5b506102416108e6565b6040516101e19190611f39565b34801561025a57600080fd5b506102416108ec565b34801561026f57600080fd5b506101d461027e36600461185f565b6108f2565b34801561028f57600080fd5b506101d4610979565b3480156102a457600080fd5b506102416102b33660046118c3565b610987565b3480156102c457600080fd5b506102cd610a72565b6040516101e19190611f67565b3480156102e657600080fd5b50610241610a7b565b3480156102fb57600080fd5b50610304610a81565b6040516101e19190611a2c565b34801561031d57600080fd5b506101d4610a90565b34801561033257600080fd5b50610241610341366004611813565b610a99565b34801561035257600080fd5b5061035b610ab4565b6040516101e1959493929190611aea565b34801561037857600080fd5b50610381610ada565b6040516101e19c9b9a99989796959493929190611a64565b3480156103a557600080fd5b506101d4610b1d565b3480156103ba57600080fd5b506101ff610b89565b3480156103cf57600080fd5b50610304610bea565b3480156103e457600080fd5b506101d46103f3366004611813565b610bf9565b34801561040457600080fd5b506101d461041336600461189a565b610c0e565b34801561042457600080fd5b50610304610c22565b34801561043957600080fd5b5061024161044836600461182d565b610c31565b34801561045957600080fd5b506101d4610c5c565b34801561046e57600080fd5b5061024161047d3660046118c3565b610c6b565b34801561048e57600080fd5b506101ad61049d36600461189a565b610f6d565b3480156104ae57600080fd5b50610241611010565b3390565b600a546000906001600160a01b031633146104f15760405162461bcd60e51b81526004016104e890611be5565b60405180910390fd5b600754600e9062010000900460ff161561051d5760405162461bcd60e51b81526004016104e890611ca5565b806009015442116105405760405162461bcd60e51b81526004016104e890611d64565b6007805462ff00001961ff00199091166101001716620100001790556005810154600854106107b4578054600b546001600160a01b039081169116141561066857600b5481546040516370a0823160e01b81526001600160a01b0392831692632e1a7d4d9216906370a08231906105bb903090600401611a2c565b60206040518083038186803b1580156105d357600080fd5b505afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b919061199d565b6040518263ffffffff1660e01b81526004016106279190611f39565b600060405180830381600087803b15801561064157600080fd5b505af1158015610655573d6000803e3d6000fd5b505050506106638347611016565b6106f2565b80546040516370a0823160e01b81526106f2916001600160a01b031690859082906370a082319061069d903090600401611a2c565b60206040518083038186803b1580156106b557600080fd5b505afa1580156106c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ed919061199d565b6110a8565b600854816006015411156107af57600061079361070d6108e6565b600d546040516370a0823160e01b81526001600160a01b03909116906370a082319061073d903090600401611a2c565b60206040518083038186803b15801561075557600080fd5b505afa158015610769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078d919061199d565b90611196565b600d549091506107ad906001600160a01b031685836110a8565b505b6107ea565b600d546040516370a0823160e01b81526107ea916001600160a01b031690859082906370a082319061069d903090600401611a2c565b600115157fee8b2c7b96c2bc5c784811d3f82a0dd8918c67f69fd690d3dd76ac0c0faf609b60085460405161081f9190611f39565b60405180910390a260019150505b919050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108be5780601f10610893576101008083540402835291602001916108be565b820191906000526020600020905b8154815290600101906020018083116108a157829003601f168201915b5050505050905090565b60006108dc6108d56104b7565b84846111df565b5060015b92915050565b60025490565b60095481565b60006108ff848484611293565b61096f8461090b6104b7565b61096a85604051806060016040528060288152602001612006602891396001600160a01b038a166000908152600160205260408120906109496104b7565b6001600160a01b031681526020810191909152604001600020549190611395565b6111df565b5060019392505050565b600754610100900460ff1681565b601754600090600e90829081906109a190620151806113c1565b905060005b8651811015610a675760008782815181106109bd57fe5b6020026020010151905060006109e6828985815181106109d957fe5b60200260200101516113e6565b6001600160a01b0381166000908152600c602052604090205490915060ff16158015610a16575081866003015411155b8015610a26575081866004015410155b8015610a3f5750610a3785836113c1565b866006015410155b8015610a4b5750834211155b15610a5d57610a5a85836113c1565b94505b50506001016109a6565b509095945050505050565b60055460ff1690565b60065481565b600b546001600160a01b031681565b60075460ff1681565b6001600160a01b031660009081526020819052604090205490565b60075460085460095460ff61010084048116936201000081048216939116919091929394565b600e54600d54600f546011546012546013546014546008546015546016546017546009546001600160a01b039b8c169b9a909a1699909192939495969798999a9b565b600a546000906001600160a01b03163314610b4a5760405162461bcd60e51b81526004016104e890611be5565b6007805460ff191660019081179091556040517f60101a7b5303c86b2a34d2f34e2d0181ec043ef961a25ee4654a16f4fcc1740790600090a250600190565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108be5780601f10610893576101008083540402835291602001916108be565b600d546001600160a01b031681565b600c6020526000908152604090205460ff1681565b60006108dc610c1b6104b7565b8484611293565b600a546001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60075462010000900460ff1681565b600a546000906001600160a01b03163314610c985760405162461bcd60e51b81526004016104e890611be5565b60075462010000900460ff1615610cc15760405162461bcd60e51b81526004016104e890611ca5565b600754610100900460ff1615610ce95760405162461bcd60e51b81526004016104e890611d64565b600854600e8054600f54601154601254601454601754959660009690956001600160a01b031694939291908790610d2390620151806113c1565b905060005b8c51811015610eb85760008d8281518110610d3f57fe5b602002602001015190506000610d5b828f85815181106109d957fe5b6001600160a01b0381166000908152600c602052604090205490915060ff16158015610d875750818711155b8015610d935750818610155b8015610da85750610da48a836113c1565b8510155b8015610db45750834211155b15610eae57600a54600654604051634017d5ab60e01b81526001600160a01b0390921691634017d5ab91610df0918d9086908890600401611f42565b600060405180830381600087803b158015610e0a57600080fd5b505af1158015610e1e573d6000803e3d6000fd5b50505050610e35828b6113c190919063ffffffff16565b6001600160a01b0382166000908152600c60205260409020805460ff19166001179055600754909a5060ff1615610e9057600d54610e8b906001600160a01b0316826106ed88610e85878e611437565b90611471565b610ea7565b610ea781610ea287610e85868d611437565b6114b3565b6001909a01995b5050600101610d28565b508860050154871015610edd5760405162461bcd60e51b81526004016104e890611e2c565b6008879055600954610eef90896113c1565b6009556006890154871415610f14574260098a01556007805461ff0019166101001790555b600760019054906101000a900460ff1615157ff230b19b6e04597c1d8861fd21d521e3deeb09413d983e96f70bfaabc402188f88604051610f559190611f39565b60405180910390a250949a9950505050505050505050565b600554600d546040516323b872dd60e01b815260ff909216600a0a92909202916001600160a01b0316906323b872dd90610faf90339030908690600401611a40565b602060405180830381600087803b158015610fc957600080fd5b505af1158015610fdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611001919061197d565b5061100c82826114b3565b5050565b60085481565b604080516000808252602082019092526001600160a01b03841690839060405161104091906119df565b60006040518083038185875af1925050503d806000811461107d576040519150601f19603f3d011682016040523d82523d6000602084013e611082565b606091505b50509050806110a35760405162461bcd60e51b81526004016104e890611c51565b505050565b60006060846001600160a01b031663a9059cbb85856040516024016110ce929190611ac6565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161110791906119df565b6000604051808303816000865af19150503d8060008114611144576040519150601f19603f3d011682016040523d82523d6000602084013e611149565b606091505b5091509150818015611173575080511580611173575080806020019051810190611173919061197d565b61118f5760405162461bcd60e51b81526004016104e890611eb5565b5050505050565b60006111d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611395565b9392505050565b6001600160a01b0383166112055760405162461bcd60e51b81526004016104e890611e71565b6001600160a01b03821661122b5760405162461bcd60e51b81526004016104e890611ba3565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611286908590611f39565b60405180910390a3505050565b6001600160a01b0383166112b95760405162461bcd60e51b81526004016104e890611de7565b6001600160a01b0382166112df5760405162461bcd60e51b81526004016104e890611b60565b60075460ff166113015760405162461bcd60e51b81526004016104e890611cec565b61130b8382611567565b600d5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061133d9085908590600401611ac6565b602060405180830381600087803b15801561135757600080fd5b505af115801561136b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138f919061197d565b50505050565b600081848411156113b95760405162461bcd60e51b81526004016104e89190611b2d565b505050900390565b6000828201838110156111d85760405162461bcd60e51b81526004016104e890611c1a565b60008061142330856113f6611631565b604051602001611408939291906119b5565b60405160208183030381529060405280519060200120611635565b905061142f8184611665565b949350505050565b600082611446575060006108e0565b8282028284828161145357fe5b04146111d85760405162461bcd60e51b81526004016104e890611d23565b60006111d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116d6565b6001600160a01b0382166114d95760405162461bcd60e51b81526004016104e890611f02565b6002546114e690826113c1565b6002556001600160a01b03821660009081526020819052604090205461150c90826113c1565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061155b908590611f39565b60405180910390a35050565b6001600160a01b03821661158d5760405162461bcd60e51b81526004016104e890611da6565b6115ca81604051806060016040528060228152602001611fe4602291396001600160a01b0385166000908152602081905260409020549190611395565b6001600160a01b0383166000908152602081905260409020556002546115f09082611196565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061155b908590611f39565b4690565b60008160405160200161164891906119fb565b604051602081830303815290604052805190602001209050919050565b6000806000806116748561170d565b604080516000815260200190819052929550909350915060019061169f908890869086908690611b0f565b6020604051602081039080840390855afa1580156116c1573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600081836116f75760405162461bcd60e51b81526004016104e89190611b2d565b50600083858161170357fe5b0495945050505050565b6000806000835160411461172057600080fd5b5050506020810151604082015160609092015160001a92909190565b80356001600160a01b038116811461082d57600080fd5b6000601f8381840112611764578182fd5b823561177761177282611f99565b611f75565b818152925060208084019085810160005b84811015611807578135880189603f8201126117a357600080fd5b8381013567ffffffffffffffff8111156117b957fe5b6117ca818901601f19168601611f75565b81815260408c818486010111156117e057600080fd5b82818501888401375060009181018601919091528552509282019290820190600101611788565b50505050505092915050565b600060208284031215611824578081fd5b6111d88261173c565b6000806040838503121561183f578081fd5b6118488361173c565b91506118566020840161173c565b90509250929050565b600080600060608486031215611873578081fd5b61187c8461173c565b925061188a6020850161173c565b9150604084013590509250925092565b600080604083850312156118ac578182fd5b6118b58361173c565b946020939093013593505050565b600080604083850312156118d5578182fd5b823567ffffffffffffffff808211156118ec578384fd5b818501915085601f8301126118ff578384fd5b813561190d61177282611f99565b80828252602080830192508086018a82838702890101111561192d578889fd5b8896505b8487101561194f578035845260019690960195928101928101611931565b509096508701359350505080821115611966578283fd5b5061197385828601611753565b9150509250929050565b60006020828403121561198e578081fd5b815180151581146111d8578182fd5b6000602082840312156119ae578081fd5b5051919050565b60609390931b6bffffffffffffffffffffffff191683526014830191909152603482015260540190565b600082516119f1818460208701611fb7565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039c8d1681529a909b1660208b015260408a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b9415158552921515602085015290151560408401526060830152608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152611b4c816040850160208701611fb7565b601f01601f19169190910160400192915050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f46616c636f6e537761704c32506f6f6c3a204e6f7420417574686f72697a6564604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526034908201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60408201527308115512081d1c985b9cd9995c8819985a5b195960621b606082015260800190565b60208082526027908201527f46616c636f6e537761704c32506f6f6c3a20506f6f6c20616c72656164792052604082015266195919595b595960ca1b606082015260800190565b6020808252601f908201527f46616c636f6e537761704c32506f6f6c3a20546f6b656e73204c6f636b656400604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f46616c636f6e537761704c32506f6f6c3a20506f6f6c20696e2050726f677265604082015261737360f01b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526025908201527f46616c636f6e537761704c32506f6f6c3a20536f6674436170206e6f742052656040820152641858da195960da1b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602d908201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260408201526c185b9cd9995c8819985a5b1959609a1b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b9384526001600160a01b03928316602085015291166040830152606082015260800190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715611f9157fe5b604052919050565b600067ffffffffffffffff821115611fad57fe5b5060209081020190565b60005b83811015611fd2578181015183820152602001611fba565b8381111561138f575050600091015256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202177ae5bef02aff0c00d7e5b80859341e7591952095ab0664a5a63ad76e0764f64736f6c634300070400330000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000001a784379d99db42000000000000000000000000000000000000000000000000000000000000017d784000000000000000000000000000000000000000000000000000000000017d784000000000000000000000000000000000000000000000000000000000ba43b74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006010206000000000000000000000000000000000000000000000000000000000601171e00000000000000000000000005479d565e549f3ecdbde4ab836d02d86e0d6a8c7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000