608060405234801561001057600080fd5b50614d44806100206000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c80636c0360eb1161013b578063a22cb465116100b8578063c87b56dd1161007c578063c87b56dd146104cc578063e985e9c5146104df578063f1537686146104f2578063f2fde38b14610505578063f779e66f146105185761023d565b8063a22cb4651461046d578063a244a48114610480578063afffc50214610493578063b88d4fde146104a6578063c4d66de8146104b95761023d565b806385e3a82a116100ff57806385e3a82a14610424578063870efa7c146104375780638da5cb5b1461044a57806395d89b4114610452578063a07f61881461045a5761023d565b80636c0360eb146103e657806370a08231146103ee578063715018a6146104015780637b10399914610409578063815a4940146104115761023d565b80632675e94b116101c95780634f6ccce71161018d5780634f6ccce71461038757806352749da21461039a5780635c0d107e146103ad5780636352211e146103c05780636a627842146103d35761023d565b80632675e94b146103195780632f745c591461033b5780633ab2e4ba1461034e57806342842e0e1461036157806342e6e0fe146103745761023d565b80630a8610c5116102105780630a8610c5146102b557806316529c46146102c857806318160ddd146102e957806319128fa8146102fe57806323b872dd146103065761023d565b806301ffc9a71461024257806306fdde031461026b578063081812fc14610280578063095ea7b3146102a0575b600080fd5b6102556102503660046143cd565b61052b565b6040516102629190614776565b60405180910390f35b61027361054e565b6040516102629190614781565b61029361028e36600461461e565b6105e4565b604051610262919061472f565b6102b36102ae366004614360565b610646565b005b6102b36102c33660046145ad565b61071c565b6102db6102d6366004614672565b610b78565b6040516102629291906148ef565b6102f1610ce8565b60405161026291906148cf565b610293610cf9565b6102b361031436600461423d565b610d09565b61032c610327366004614672565b610d60565b60405161026293929190614948565b6102f1610349366004614360565b610e06565b6102b361035c366004614544565b610e31565b6102b361036f36600461423d565b6111be565b61032c6103823660046146b6565b6111d9565b6102f161039536600461461e565b6113d3565b6102556103a836600461461e565b6113e9565b61032c6103bb366004614453565b611687565b6102936103ce36600461461e565b611902565b6102f16103e1366004614134565b61192a565b6102736119b6565b6102f16103fc366004614134565b611a17565b6102b3611a7f565b610293611b2b565b6102b361041f3660046143f5565b611b3a565b6102b3610432366004614134565b611bd7565b6102f1610445366004614672565b611ca4565b610293611cc1565b610273611cd0565b61032c6104683660046144c6565b611d31565b6102b361047b366004614333565b611e3d565b6102b361048e366004614134565b611f42565b6102b36104a136600461461e565b61200d565b6102b36104b436600461427d565b61207b565b6102b36104c7366004614134565b6120d9565b6102736104da36600461461e565b612210565b6102556104ed36600461416c565b612491565b6102f1610500366004614134565b6124bf565b6102b3610513366004614134565b6124db565b6102b361052636600461464e565b6125de565b6001600160e01b031981166000908152609a602052604090205460ff165b919050565b60d18054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105da5780601f106105af576101008083540402835291602001916105da565b820191906000526020600020905b8154815290600101906020018083116105bd57829003601f168201915b5050505050905090565b60006105ef8261264a565b61062a5760405162461bcd60e51b815260040180806020018281038252602c815260200180614c18602c913960400191505060405180910390fd5b50600090815260cf60205260409020546001600160a01b031690565b600061065182611902565b9050806001600160a01b0316836001600160a01b031614156106a45760405162461bcd60e51b8152600401808060200182810382526021815260200180614cbc6021913960400191505060405180910390fd5b806001600160a01b03166106b6612657565b6001600160a01b031614806106d257506106d2816104ed612657565b61070d5760405162461bcd60e51b8152600401808060200182810382526038815260200180614b1c6038913960400191505060405180910390fd5b610717838361265b565b505050565b60026004541415610762576040805162461bcd60e51b815260206004820152601f6024820152600080516020614a2e833981519152604482015290519081900360640190fd5b6002600455805161077333826126c9565b6107985760405162461bcd60e51b815260040161078f90614880565b60405180910390fd5b81516020808401516000818152600190925260409091205460ff16806107f0575060008181526001602052604090205460ff161580156107f05750600082815260026020908152604080832084845290915290205442115b610829576040805162461bcd60e51b81526020600482015260056024820152646c6f636b7360d81b604482015290519081900360640190fd5b60fe546001600160a01b03166108515760405162461bcd60e51b815260040161078f90614812565b60fe546020850151604051635cef66b360e11b81526000926001600160a01b03169163b9decd669161088691906004016148cf565b6101006040518083038186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d791906141a4565b5050505050925050506000819050600060fe60009054906101000a90046001600160a01b03166001600160a01b031663a9f1021c886000015189602001518a604001518b606001518c608001516040518663ffffffff1660e01b81526004016109449594939291906148fd565b602060405180830381600087803b15801561095e57600080fd5b505af1158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190614636565b905086608001518110156109a957600080fd5b60008760400151610a2a57826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ed57600080fd5b505afa158015610a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a259190614150565b610a9b565b826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6357600080fd5b505afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190614150565b9050610aaa818360008061276d565b875160208901516040517fb65ca58d729d89d58e1ed48a179b40d4a6b56e3e101a10085a0f43915cf1448892610ae6929091869060009061495e565b60405180910390a1610103546001600160a01b031615610b69576101035460208901516040516304927b6960e41b81526001600160a01b0390921691634927b69091610b369133906004016148d8565b600060405180830381600087803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b505050505b50506001600455505050505050565b60fe5460009081906001600160a01b0316610ba55760405162461bcd60e51b815260040161078f90614812565b60fe54604051635cef66b360e11b815260009182916001600160a01b039091169063b9decd6690610bda9089906004016148cf565b6101006040518083038186803b158015610bf357600080fd5b505afa158015610c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b91906141a4565b975050505094505050506000811115610cdf57600080836001600160a01b031663c4a7761e6040518163ffffffff1660e01b8152600401604080518083038186803b158015610c7957600080fd5b505afa158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb19190614693565b9092509050610cca83610cc4848a6127a1565b906127fa565b9550610cda83610cc4838a6127a1565b945050505b50509250929050565b6000610cf460cd612861565b905090565b610103546001600160a01b031681565b610d1a610d14612657565b826126c9565b610d555760405162461bcd60e51b8152600401808060200182810382526031815260200180614cdd6031913960400191505060405180910390fd5b61071783838361286c565b60fe546040516309211d7160e21b8152600091829182916001600160a01b03169063248475c490610d9790889088906004016148ef565b60206040518083038186803b158015610daf57600080fd5b505afa158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190614636565b9050600080610df68684610b78565b9098909750929550919350505050565b6001600160a01b038216600090815260cc60205260408120610e2890836129b8565b90505b92915050565b60026004541415610e77576040805162461bcd60e51b815260206004820152601f6024820152600080516020614a2e833981519152604482015290519081900360640190fd5b60026004558051610e8833826126c9565b610ea45760405162461bcd60e51b815260040161078f90614880565b81516020808401516000818152600190925260409091205460ff1680610efc575060008181526001602052604090205460ff16158015610efc5750600082815260026020908152604080832084845290915290205442115b610f35576040805162461bcd60e51b81526020600482015260056024820152646c6f636b7360d81b604482015290519081900360640190fd5b60fe546001600160a01b0316610f5d5760405162461bcd60e51b815260040161078f90614812565b60fe5484516020860151604080880151606089015160808a015192516346698e7560e01b815260009687966001600160a01b03909116956346698e7595610faa9592949193600401614979565b6040805180830381600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190614693565b60fe546020890151604051635cef66b360e11b81529395509193506000926001600160a01b039091169163b9decd669161103891906004016148cf565b6101006040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108991906141a4565b5050505050925050506000819050611183816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d357600080fd5b505afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190614150565b85836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561114557600080fd5b505afa158015611159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117d9190614150565b8661276d565b875160208901516040517fb65ca58d729d89d58e1ed48a179b40d4a6b56e3e101a10085a0f43915cf1448892610ae69290918890889061495e565b6107178383836040518060200160405280600081525061207b565b60fe54600090819081906001600160a01b03166112085760405162461bcd60e51b815260040161078f90614812565b60fe54604051635cef66b360e11b815260009182916001600160a01b039091169063b9decd669061123d908b906004016148cf565b6101006040518083038186803b15801561125657600080fd5b505afa15801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e91906141a4565b97505050509450505050600080836001600160a01b031663c4a7761e6040518163ffffffff1660e01b8152600401604080518083038186803b1580156112d357600080fd5b505afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190614693565b91509150826000141561132f5788955087945061132886866129c4565b96506113c6565b816113455787945061132881610cc487866127a1565b8061135b5788955061132882610cc488866127a1565b600061137961136a8b846127a1565b6113748b866127a1565b6129db565b905080156113c45761139a600161139484610cc485846129ea565b90612a47565b96506113af600161139485610cc485846129ea565b95506113c182610cc4858185896127a1565b97505b505b5050505093509350939050565b6000806113e160cd84612aa1565b509392505050565b60fe54604051635cef66b360e11b8152600091829182916001600160a01b03169063b9decd669061141e9087906004016148cf565b6101006040518083038186803b15801561143757600080fd5b505afa15801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906141a4565b505060fe54604051638469176760e01b815294985092965060009550506001600160a01b0390911692506384691767916114ae915088906004016148cf565b60606040518083038186803b1580156114c657600080fd5b505afa1580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe919061438b565b92505050600080836001600160a01b031663c4a7761e6040518163ffffffff1660e01b8152600401604080518083038186803b15801561153d57600080fd5b505afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115759190614693565b9150915061167c60ff60009054906101000a90046001600160a01b0316866001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156115cb57600080fd5b505afa1580156115df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116039190614150565b84886001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561163d57600080fd5b505afa158015611651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116759190614150565b8588612abd565b979650505050505050565b61010180546001600160a01b03191633908117909155815160009182918291906116b182826126c9565b6116cd5760405162461bcd60e51b815260040161078f90614880565b60026004541415611713576040805162461bcd60e51b815260206004820152601f6024820152600080516020614a2e833981519152604482015290519081900360640190fd5b600260045560fe546001600160a01b03166117405760405162461bcd60e51b815260040161078f90614812565b61174d86602001516113e9565b1561176a5760405162461bcd60e51b815260040161078f906147d4565b60fe54865160208801516040808a015160608b015160808c015160a08d01519351633b0a3f2b60e21b81526001600160a01b039097169663ec28fcac966117ba969095909493929160040161499c565b606060405180830381600087803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180c91906146e1565b885160208a0151929850909650919450611827919042612c76565b855160208701516040517f17de92c1076ec5855c3edd4a6084a82c184adfda177deb99d6532697cdac91cb926118609290918790614948565b60405180910390a1610103546001600160a01b0316156118e3576101035460208701516040516304927b6960e41b81526001600160a01b0390921691634927b690916118b09133906004016148d8565b600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b505050505b5050600160045561010180546001600160a01b03191690559193909250565b6000610e2b82604051806060016040528060298152602001614b7e6029913960cd9190612d3f565b6001600160a01b03811660009081526101026020526040812054156119615760405162461bcd60e51b815260040161078f9061482f565b506101008054600181019091556119788282612d56565b7f74629109564de5ce9d04dc84bb5ecd8fbb0c98843a3fbd43f057825a9255449c82826040516119a992919061475d565b60405180910390a1919050565b60d48054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105da5780601f106105af576101008083540402835291602001916105da565b60006001600160a01b038216611a5e5760405162461bcd60e51b815260040180806020018281038252602a815260200180614b54602a913960400191505060405180910390fd5b6001600160a01b038216600090815260cc60205260409020610e2b90612861565b611a87612657565b6001600160a01b0316611a98611cc1565b6001600160a01b031614611ae1576040805162461bcd60e51b81526020600482018190526024820152600080516020614c44833981519152604482015290519081900360640190fd5b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b60ff546001600160a01b031681565b60fe546001600160a01b0316611b625760405162461bcd60e51b815260040161078f90614812565b60fe546001600160a01b03163314611b8c5760405162461bcd60e51b815260040161078f906147f1565b8315611bae5761010154611bae906001600160a01b0387811691168387612e84565b8115611bd05761010154611bd0906001600160a01b0385811691168385612e84565b5050505050565b611bdf612657565b6001600160a01b0316611bf0611cc1565b6001600160a01b031614611c39576040805162461bcd60e51b81526020600482018190526024820152600080516020614c44833981519152604482015290519081900360640190fd5b610103546040517f29aede6362fd8870b2d8ea5ed4744361850be6f5a9f7ee53de2d1424855980f191611c79916001600160a01b03909116908490614743565b60405180910390a161010380546001600160a01b0319166001600160a01b0392909216919091179055565b600091825260026020908152604080842092845291905290205490565b6068546001600160a01b031690565b60d28054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105da5780601f106105af576101008083540402835291602001916105da565b61010180546001600160a01b0319163390811790915581516000918291829190611d5b82826126c9565b611d775760405162461bcd60e51b815260040161078f90614880565b60026004541415611dbd576040805162461bcd60e51b815260206004820152601f6024820152600080516020614a2e833981519152604482015290519081900360640190fd5b60026004556020860151611dd0906113e9565b15611ded5760405162461bcd60e51b815260040161078f906147d4565b60fe54865160208801516040808a015160608b015160808c015160a08d015193516381b6acc960e01b81526001600160a01b03909716966381b6acc9966117ba9690959094939291600401614920565b611e45612657565b6001600160a01b0316826001600160a01b03161415611eab576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060d06000611eb8612657565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611efc612657565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b611f4a612657565b6001600160a01b0316611f5b611cc1565b6001600160a01b031614611fa4576040805162461bcd60e51b81526020600482018190526024820152600080516020614c44833981519152604482015290519081900360640190fd5b60fe546040517f7f80a7fb71aa78377ab4d38d94a0c8fa5a555efc77d84815a835af88c9f4636391611fe3916001600160a01b03909116908490614743565b60405180910390a160fe80546001600160a01b0319166001600160a01b0392909216919091179055565b612015612657565b6001600160a01b0316612026611cc1565b6001600160a01b03161461206f576040805162461bcd60e51b81526020600482018190526024820152600080516020614c44833981519152604482015290519081900360640190fd5b61207881612ede565b50565b61208c612086612657565b836126c9565b6120c75760405162461bcd60e51b8152600401808060200182810382526031815260200180614cdd6031913960400191505060405180910390fd5b6120d384848484612f19565b50505050565b600354610100900460ff16806120f257506120f2612f6b565b80612100575060035460ff16155b61213b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015612166576003805460ff1961ff0019909116610100171660011790555b60ff80546001600160a01b0319166001600160a01b03841617905560016101005561218f612f7c565b612197612f85565b61219f613036565b6121fa6040518060400160405280601781526020017f59494e204173736574204d616e61676572205661756c740000000000000000008152506040518060400160405280600481526020016359414e4760e01b8152506130cb565b801561220c576003805461ff00191690555b5050565b606061221b8261264a565b6122565760405162461bcd60e51b815260040180806020018281038252602f815260200180614c8d602f913960400191505060405180910390fd5b600082815260d3602090815260408083208054825160026001831615610100026000190190921691909104601f8101859004850282018501909352828152929091908301828280156122e95780601f106122be576101008083540402835291602001916122e9565b820191906000526020600020905b8154815290600101906020018083116122cc57829003601f168201915b5050505050905060006122fa6119b6565b905080516000141561230e57509050610549565b8151156123cf5780826040516020018083805190602001908083835b602083106123495780518252601f19909201916020918201910161232a565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106123915780518252601f199092019160209182019101612372565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050610549565b806123d985613188565b6040516020018083805190602001908083835b6020831061240b5780518252601f1990920191602091820191016123ec565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106124535780518252601f199092019160209182019101612434565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260d06020908152604080832093909416825291909152205460ff1690565b6001600160a01b03166000908152610102602052604090205490565b6124e3612657565b6001600160a01b03166124f4611cc1565b6001600160a01b03161461253d576040805162461bcd60e51b81526020600482018190526024820152600080516020614c44833981519152604482015290519081900360640190fd5b6001600160a01b0381166125825760405162461bcd60e51b8152600401808060200182810382526026815260200180614a806026913960400191505060405180910390fd5b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b6125e6612657565b6001600160a01b03166125f7611cc1565b6001600160a01b031614612640576040805162461bcd60e51b81526020600482018190526024820152600080516020614c44833981519152604482015290519081900360640190fd5b61220c8282613263565b6000610e2b60cd836132dc565b3390565b600081815260cf6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061269082611902565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006126d48261264a565b61270f5760405162461bcd60e51b815260040180806020018281038252602c815260200180614af0602c913960400191505060405180910390fd5b600061271a83611902565b9050806001600160a01b0316846001600160a01b031614806127555750836001600160a01b031661274a846105e4565b6001600160a01b0316145b8061276557506127658185612491565b949350505050565b8215612787576127876001600160a01b03851633856132e8565b80156120d3576120d36001600160a01b03831633836132e8565b6000826127b057506000610e2b565b828202828482816127bd57fe5b0414610e285760405162461bcd60e51b8152600401808060200182810382526021815260200180614bf76021913960400191505060405180910390fd5b6000808211612850576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161285957fe5b049392505050565b6000610e2b8261333a565b826001600160a01b031661287f82611902565b6001600160a01b0316146128c45760405162461bcd60e51b8152600401808060200182810382526029815260200180614c646029913960400191505060405180910390fd5b6001600160a01b0382166129095760405162461bcd60e51b8152600401808060200182810382526024815260200180614aa66024913960400191505060405180910390fd5b61291483838361333e565b61291f60008261265b565b6001600160a01b038316600090815260cc602052604090206129419082613405565b506001600160a01b038216600090815260cc602052604090206129649082613411565b5061297160cd828461341d565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610e288383613433565b6000818310156129d45781610e28565b5090919050565b60008183106129d45781610e28565b600082821115612a41576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e28576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808080612ab08686613497565b9097909650945050505050565b600081612acc57506000612c6c565b6000612bd5612b4f600a896001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0f57600080fd5b505afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b47919061470e565b60ff16613512565b610cc4888b6001600160a01b0316638b2f0f4f8c6040518263ffffffff1660e01b8152600401612b7f919061472f565b60206040518083038186803b158015612b9757600080fd5b505afa158015612bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcf9190614636565b906127a1565b90506000612c4a612c1a600a886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0f57600080fd5b610cc4878c6001600160a01b0316638b2f0f4f8b6040518263ffffffff1660e01b8152600401612b7f919061472f565b905083612c578383612a47565b1015612c64576000612c67565b60015b925050505b9695505050505050565b60008281526001602052604090205460ff166107175760008054612c9b908390612a47565b60008581526002602090815260408083208784529091529020549091508111612cdd576000848152600260209081526040808320868452909152902054612cdf565b805b6000858152600260209081526040808320878452825291829020839055815187815290810186905280820192909252517fe59659d62a1104e86fae20067091468a746d4e2d54bbbe5ebeea6af71a4410f89181900360600190a150505050565b6000612d4c84848461357f565b90505b9392505050565b6001600160a01b038216612db1576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b612dba8161264a565b15612e0c576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b612e186000838361333e565b6001600160a01b038216600090815260cc60205260409020612e3a9082613411565b50612e4760cd828461341d565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526120d3908590613649565b60008190556040805182815290517f4c63d2fb169038d4154d6316b93f4b26b01573602cb811b1cff783e287667cdf9181900360200190a150565b612f2484848461286c565b612f30848484846136fa565b6120d35760405162461bcd60e51b8152600401808060200182810382526032815260200180614a4e6032913960400191505060405180910390fd5b6000612f7630613862565b15905090565b62093a80600055565b600354610100900460ff1680612f9e5750612f9e612f6b565b80612fac575060035460ff16155b612fe75760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613012576003805460ff1961ff0019909116610100171660011790555b61301a613868565b613022613908565b8015612078576003805461ff001916905550565b600354610100900460ff168061304f575061304f612f6b565b8061305d575060035460ff16155b6130985760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff161580156130c3576003805460ff1961ff0019909116610100171660011790555b613022613a01565b600354610100900460ff16806130e457506130e4612f6b565b806130f2575060035460ff16155b61312d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613158576003805460ff1961ff0019909116610100171660011790555b613160613868565b613168613aa7565b6131728383613b44565b8015610717576003805461ff0019169055505050565b6060816131ad57506040805180820190915260018152600360fc1b6020820152610549565b8160005b81156131c557600101600a820491506131b1565b60008167ffffffffffffffff811180156131de57600080fd5b506040519080825280601f01601f191660200182016040528015613209576020820181803683370190505b50859350905060001982015b831561325a57600a840660300160f81b8282806001900393508151811061323857fe5b60200101906001600160f81b031916908160001a905350600a84049350613215565b50949350505050565b60008281526001602090815260409182902054825185815260ff9091161515918101919091528215158183015290517f057ae73d74608fe6ebcaee8a2f24e09d88448499312fc90fcb1a5fde7f74924f9181900360600190a1600091825260016020526040909120805460ff1916911515919091179055565b6000610e288383613c29565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610717908490613649565b5490565b6001600160a01b038316156133a0576001600160a01b0383166000908152610102602052604090205481146133855760405162461bcd60e51b815260040161078f90614857565b6001600160a01b038316600090815261010260205260408120555b6001600160a01b03821615610717576001600160a01b03821660009081526101026020526040902054156133e65760405162461bcd60e51b815260040161078f906148a6565b6001600160a01b03919091166000908152610102602052604090205550565b6000610e288383613c41565b6000610e288383613d07565b6000612d4c84846001600160a01b038516613d51565b815460009082106134755760405162461bcd60e51b8152600401808060200182810382526022815260200180614a0c6022913960400191505060405180910390fd5b82600001828154811061348457fe5b9060005260206000200154905092915050565b8154600090819083106134db5760405162461bcd60e51b8152600401808060200182810382526022815260200180614bd56022913960400191505060405180910390fd5b60008460000184815481106134ec57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008161352157506001610e2b565b8160011415613531575081610e2b565b60015b821561357857613545836002613de8565b6001141561355a5761355781856127a1565b90505b61356484806127a1565b93506135718360026127fa565b9250613534565b9050610e2b565b6000828152600184016020526040812054828161361a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135df5781810151838201526020016135c7565b50505050905090810190601f16801561360c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061362d57fe5b9060005260206000209060020201600101549150509392505050565b600061369e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e4f9092919063ffffffff16565b805190915015610717578080602001905160208110156136bd57600080fd5b50516107175760405162461bcd60e51b815260040180806020018281038252602a815260200180614d0e602a913960400191505060405180910390fd5b600061370e846001600160a01b0316613862565b61371a57506001612765565b6000613828630a85bd0160e11b61372f612657565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561379657818101518382015260200161377e565b50505050905090810190601f1680156137c35780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001614a4e603291396001600160a01b0388169190613e4f565b9050600081806020019051602081101561384157600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b3b151590565b600354610100900460ff16806138815750613881612f6b565b8061388f575060035460ff16155b6138ca5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613022576003805460ff1961ff0019909116610100171660011790558015612078576003805461ff001916905550565b600354610100900460ff16806139215750613921612f6b565b8061392f575060035460ff16155b61396a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613995576003805460ff1961ff0019909116610100171660011790555b600061399f612657565b606880546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612078576003805461ff001916905550565b600354610100900460ff1680613a1a5750613a1a612f6b565b80613a28575060035460ff16155b613a635760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613a8e576003805460ff1961ff0019909116610100171660011790555b60016004558015612078576003805461ff001916905550565b600354610100900460ff1680613ac05750613ac0612f6b565b80613ace575060035460ff16155b613b095760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613b34576003805460ff1961ff0019909116610100171660011790555b6130226301ffc9a760e01b613e5e565b600354610100900460ff1680613b5d5750613b5d612f6b565b80613b6b575060035460ff16155b613ba65760405162461bcd60e51b815260040180806020018281038252602e815260200180614ba7602e913960400191505060405180910390fd5b600354610100900460ff16158015613bd1576003805460ff1961ff0019909116610100171660011790555b8251613be49060d1906020860190614093565b508151613bf89060d2906020850190614093565b50613c096380ac58cd60e01b613e5e565b613c19635b5e139f60e01b613e5e565b61317263780e9d6360e01b613e5e565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015613cfd5783546000198083019190810190600090879083908110613c7457fe5b9060005260206000200154905080876000018481548110613c9157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080613cc157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610e2b565b6000915050610e2b565b6000613d138383613c29565b613d4957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2b565b506000610e2b565b600082815260018401602052604081205480613db6575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612d4f565b82856000016001830381548110613dc957fe5b9060005260206000209060020201600101819055506000915050612d4f565b6000808211613e3e576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b818381613e4757fe5b069392505050565b6060612d4c8484600085613ee2565b6001600160e01b03198082161415613ebd576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152609a60205260409020805460ff19166001179055565b606082471015613f235760405162461bcd60e51b8152600401808060200182810382526026815260200180614aca6026913960400191505060405180910390fd5b613f2c85613862565b613f7d576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310613fbb5780518252601f199092019160209182019101613f9c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461401d576040519150601f19603f3d011682016040523d82523d6000602084013e614022565b606091505b509150915061167c8282866060831561403c575081612d4f565b82511561404c5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156135df5781810151838201526020016135c7565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826140c9576000855561410f565b82601f106140e257805160ff191683800117855561410f565b8280016001018555821561410f579182015b8281111561410f5782518255916020019190600101906140f4565b5061411b92915061411f565b5090565b5b8082111561411b5760008155600101614120565b600060208284031215614145578081fd5b8135610e28816149e8565b600060208284031215614161578081fd5b8151610e28816149e8565b6000806040838503121561417e578081fd5b8235614189816149e8565b91506020830135614199816149e8565b809150509250929050565b600080600080600080600080610100898b0312156141c0578384fd5b88516141cb816149e8565b60208a01519098506141dc816149e8565b60408a01519097506141ed816149e8565b60608a01519096506141fe816149e8565b809550506080890151935060a0890151925060c089015162ffffff81168114614225578283fd5b8092505060e089015190509295985092959890939650565b600080600060608486031215614251578283fd5b833561425c816149e8565b9250602084013561426c816149e8565b929592945050506040919091013590565b60008060008060808587031215614292578182fd5b843561429d816149e8565b93506020858101356142ae816149e8565b935060408601359250606086013567ffffffffffffffff808211156142d1578384fd5b818801915088601f8301126142e4578384fd5b8135818111156142f057fe5b614302601f8201601f191685016149c4565b91508082528984828501011115614317578485fd5b8084840185840137810190920192909252939692955090935050565b60008060408385031215614345578182fd5b8235614350816149e8565b91506020830135614199816149fd565b60008060408385031215614372578182fd5b823561437d816149e8565b946020939093013593505050565b60008060006060848603121561439f578081fd5b83516143aa816149fd565b60208501519093506143bb816149fd565b80925050604084015190509250925092565b6000602082840312156143de578081fd5b81356001600160e01b031981168114610e28578182fd5b600080600080600060a0868803121561440c578283fd5b8535614417816149e8565b945060208601359350604086013561442e816149e8565b9250606086013591506080860135614445816149e8565b809150509295509295909350565b600060c08284031215614464578081fd5b60405160c0810181811067ffffffffffffffff8211171561448157fe5b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b600060c082840312156144d7578081fd5b60405160c0810181811067ffffffffffffffff821117156144f457fe5b806040525082358152602083013560208201526040830135614515816149fd565b80604083015250606083013560608201526080830135608082015260a083013560a08201528091505092915050565b600060a08284031215614555578081fd5b60405160a0810181811067ffffffffffffffff8211171561457257fe5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600060a082840312156145be578081fd5b60405160a0810181811067ffffffffffffffff821117156145db57fe5b8060405250823581526020830135602082015260408301356145fc816149fd565b6040820152606083810135908201526080928301359281019290925250919050565b60006020828403121561462f578081fd5b5035919050565b600060208284031215614647578081fd5b5051919050565b60008060408385031215614660578182fd5b823591506020830135614199816149fd565b60008060408385031215614684578182fd5b50508035926020909101359150565b600080604083850312156146a5578182fd5b505080516020909101519092909150565b6000806000606084860312156146ca578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156146f5578081fd5b8351925060208401519150604084015190509250925092565b60006020828403121561471f578081fd5b815160ff81168114610e28578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602080835283518082850152825b818110156147ad57858101830151858201604001528201614791565b818111156147be5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526003908201526213555360ea1b604082015260600190565b60208082526007908201526636b0b730b3b2b960c91b604082015260600190565b60208082526003908201526243484960e81b604082015260600190565b6020808252600e908201526d6f6e6c79206d696e74206f6e636560901b604082015260600190565b6020808252600f908201526e1a5b9d985b1a59081d1bdad95b9259608a1b604082015260600190565b6020808252600c908201526b1b9bdd08185c1c1c9bdd995960a21b604082015260600190565b6020808252600f908201526e6f6e6c7920616363657074206f6e6560881b604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b948552602085019390935290151560408401526060830152608082015260a00190565b958652602086019490945291151560408501526060840152608083015260a082015260c00190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405181810167ffffffffffffffff811182821017156149e057fe5b604052919050565b6001600160a01b038116811461207857600080fd5b801515811461207857600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735265656e7472616e637947756172643a207265656e7472616e742063616c6c004552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000706000a