0x60806040526004361061027d5760003560e01c8063916808bb1161014f578063ac4afa38116100c1578063c7d0b70e1161007a578063c7d0b70e14610b49578063cc2e5b2814610b73578063d34b0a3e14610bac578063dd62ed3e14610bc1578063ea62167b14610bfc578063f248b86a14610c265761027d565b8063ac4afa3814610955578063ad663e67146109f0578063b0a5df9a14610a3f578063b30906d414610a7f578063bb7a1c3514610ae0578063bbbaf8c814610b1f5761027d565b80639e1a4d19116101135780639e1a4d191461083b578063a391210714610850578063a457c2d714610865578063a87430ba1461089e578063a8dcd03a146108f2578063a9059cbb1461091c5761027d565b8063916808bb1461075b578063922e92a3146107705780639355aea7146107a357806394244039146107fc57806395d89b41146108265761027d565b8063313ce567116101f35780636f9fb98a116101ac5780636f9fb98a1461066a57806370a082311461067f5780637be79cf6146106b25780637e8e3749146106dc5780638094f90d1461071c57806384e56ca2146107465761027d565b8063313ce567146104e857806333590596146104fd578063365a94e8146105365780633950935114610560578063404f1fec146105995780636386c1c7146105c35761027d565b806318160ddd1161024557806318160ddd146103d6578063181f599f146103eb5780631e7f87bc1461040057806323b872dd14610415578063245590da146104585780632f380b35146104825761027d565b80630410808e1461028457806306fdde03146102ab578063095ea7b3146103355780630cdc25d3146103825780630cfd442a146103ac575b600080fd5b005b34801561029057600080fd5b50610299610ca0565b60408051918252519081900360200190f35b3480156102b757600080fd5b506102c0610ca6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102fa5781810151838201526020016102e2565b50505050905090810190601f1680156103275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034157600080fd5b5061036e6004803603604081101561035857600080fd5b506001600160a01b038135169060200135610cc9565b604080519115158252519081900360200190f35b34801561038e57600080fd5b50610282600480360360208110156103a557600080fd5b5035610ce0565b3480156103b857600080fd5b50610282600480360360208110156103cf57600080fd5b5035610d98565b3480156103e257600080fd5b50610299610e2d565b3480156103f757600080fd5b50610299610e33565b34801561040c57600080fd5b50610299610e39565b34801561042157600080fd5b5061036e6004803603606081101561043857600080fd5b506001600160a01b03813581169160208101359091169060400135610e3f565b34801561046457600080fd5b506102826004803603602081101561047b57600080fd5b5035610eae565b34801561048e57600080fd5b506104ac600480360360208110156104a557600080fd5b5035610fbf565b6040805197885260208801969096528686019490945260608601929092521515608085015260a0840152151560c0830152519081900360e00190f35b3480156104f457600080fd5b50610299611009565b34801561050957600080fd5b5061036e6004803603604081101561052057600080fd5b50803590602001356001600160a01b031661100e565b34801561054257600080fd5b5061036e6004803603602081101561055957600080fd5b503561103d565b34801561056c57600080fd5b5061036e6004803603604081101561058357600080fd5b506001600160a01b0381351690602001356110a3565b3480156105a557600080fd5b50610299600480360360208110156105bc57600080fd5b50356110df565b3480156105cf57600080fd5b506105f6600480360360208110156105e657600080fd5b50356001600160a01b03166110f1565b6040518084815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019060200280838360005b8381101561065457818101518382015260200161063c565b5050505090500194505050505060405180910390f35b34801561067657600080fd5b50610299611186565b34801561068b57600080fd5b50610299600480360360208110156106a257600080fd5b50356001600160a01b0316611202565b3480156106be57600080fd5b50610282600480360360208110156106d557600080fd5b503561121d565b3480156106e857600080fd5b50610299600480360360408110156106ff57600080fd5b5080356001600160a01b0316906020013564ffffffffff1661126c565b34801561072857600080fd5b506102996004803603602081101561073f57600080fd5b5035611293565b34801561075257600080fd5b50610299611357565b34801561076757600080fd5b5061029961135d565b34801561077c57600080fd5b506102996004803603602081101561079357600080fd5b50356001600160a01b0316611363565b3480156107af57600080fd5b506107cd600480360360208110156107c657600080fd5b5035611375565b6040805194855260208501939093526001600160a01b0391821684840152166060830152519081900360800190f35b34801561080857600080fd5b5061036e6004803603602081101561081f57600080fd5b50356113a9565b34801561083257600080fd5b506102c06113c1565b34801561084757600080fd5b506102996113e1565b34801561085c57600080fd5b506102996113f1565b34801561087157600080fd5b5061036e6004803603604081101561088857600080fd5b506001600160a01b0381351690602001356113f7565b3480156108aa57600080fd5b506108d1600480360360208110156108c157600080fd5b50356001600160a01b031661144c565b604080519283526001600160a01b0390911660208301528051918290030190f35b3480156108fe57600080fd5b506102826004803603602081101561091557600080fd5b503561146e565b34801561092857600080fd5b5061036e6004803603604081101561093f57600080fd5b506001600160a01b038135169060200135611519565b34801561096157600080fd5b5061097f6004803603602081101561097857600080fd5b5035611526565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945264ffffffffff90921660c0890152151560e08801521515610100870152610120860152610140850152610160840152151561018083015251908190036101a00190f35b3480156109fc57600080fd5b50610a1a60048036036020811015610a1357600080fd5b503561159a565b60408051938452602084019290925264ffffffffff1682820152519081900360600190f35b348015610a4b57600080fd5b5061029960048036036040811015610a6257600080fd5b5080356001600160a01b0316906020013564ffffffffff166115ee565b348015610a8b57600080fd5b50610aa960048036036020811015610aa257600080fd5b503561162c565b604080519586526020860194909452848401929092526001600160a01b039081166060850152166080830152519081900360a00190f35b348015610aec57600080fd5b5061028260048036036060811015610b0357600080fd5b50803590602081013590604001356001600160a01b0316611667565b348015610b2b57600080fd5b5061036e60048036036020811015610b4257600080fd5b5035611818565b348015610b5557600080fd5b5061028260048036036020811015610b6c57600080fd5b5035611881565b348015610b7f57600080fd5b5061029960048036036040811015610b9657600080fd5b50803590602001356001600160a01b03166119d3565b348015610bb857600080fd5b506102996119ff565b348015610bcd57600080fd5b5061029960048036036040811015610be457600080fd5b506001600160a01b0381358116916020013516611a05565b348015610c0857600080fd5b5061036e60048036036020811015610c1f57600080fd5b5035611a30565b348015610c3257600080fd5b50610c5060048036036020811015610c4957600080fd5b5035611a4f565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610c8c578181015183820152602001610c74565b505050509050019250505060405180910390f35b60065490565b604051806040016040528060078152602001661211561413d3d360ca1b81525081565b6000610cd6338484611ab1565b5060015b92915050565b60145460ff1615610d24576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff19166001179055610d3a81611b9d565b610d8b576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20636f756c64206e6f7420656e64207374616b65000000000000604482015290519081900360640190fd5b506014805460ff19169055565b60145460ff1615610ddc576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff19166001179055610df281611e0d565b610d8b5760405162461bcd60e51b81526004018080602001828103825260218152602001806148056021913960400191505060405180910390fd5b60045490565b600c5481565b60065481565b6000610e4c8484846120ab565b610ea48433610e9f8560405180606001604052806028815260200161491c602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919063ffffffff61224b16565b611ab1565b5060019392505050565b60008111610ef0576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b33600090815260076020526040902054811115610f3e5760405162461bcd60e51b815260040180806020018281038252602281526020018061484c6022913960400191505060405180910390fd5b33600090815260076020526040902054610f5e908263ffffffff6122e216565b33600090815260076020526040902055600654610f81908263ffffffff6122e216565b600655610f8f3033836120ab565b604051819033907fb925ba840e2f36bcb317f8179bd8b5ed01aba4a22abf5f169162c0894dea87ab90600090a350565b6000908152601060205260409020805460018201546002830154600484015460088501546009860154600c909601549496939592949193600160281b90910460ff90811693921690565b600881565b60008281526010602090815260408083206001600160a01b038516845260050190915290205460ff1692915050565b600081815260106020526040812060019081015442916110999161107b91620151809161106f9163ffffffff61232b16565b9063ffffffff61238516565b6000858152601060205260409020600901549063ffffffff61232b16565b111590505b919050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cd6918590610e9f908663ffffffff61232b16565b60009081526011602052604090205490565b6001600160a01b038082166000908152600e6020818152604080842080546013845282862094845260019091015484548351818602810186019094528084529596606096889693959394929091169284919083018282801561117257602002820191906000526020600020905b81548152602001906001019080831161115e575b505050505091509250925092509193909250565b600854604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156111d157600080fd5b505afa1580156111e5573d6000803e3d6000fd5b505050506040513d60208110156111fb57600080fd5b5051905090565b6001600160a01b031660009081526020819052604090205490565b6009546001600160a01b03163314611267576040805162461bcd60e51b81526020600482015260086024820152673737ba27bbb732b960c11b604482015290519081900360640190fd5b600d55565b6000611276614681565b61128084846123de565b905061128b816125cb565b949350505050565b6000818152601060205260408120600c81015460ff166112fa576040805162461bcd60e51b815260206004820152601f60248201527f706f6f6c207374616b6520686173206e6f74207965742066696e697368656400604482015290519081900360640190fd5b33600090815260068201602052604090205461131a57600091505061109e565b8054336000908152600683016020526040812054600a840154919261128b92909161134b919063ffffffff61238516565b9063ffffffff61262516565b60055481565b600a5481565b60076020526000908152604090205481565b6000908152600f60205260409020805460018201546003830154600490930154919390926001600160a01b03908116921690565b6000908152601060205260409020600c015460ff1690565b604051806040016040528060048152602001631413d3d360e21b81525081565b60006113ec33611202565b905090565b600b5481565b6000610cd63384610e9f856040518060600160405280602581526020016149ae602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919063ffffffff61224b16565b600e60205260009081526040902080546001909101546001600160a01b031682565b60145460ff16156114b2576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff191660011790556114c881612667565b610d8b576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20636f756c64206e6f74206578697420706f6f6c000000000000604482015290519081900360640190fd5b6000610cd63384846120ab565b601060205260009081526040902080546001820154600283015460038401546004850154600786015460088701546009880154600a890154600b8a0154600c909a015498999798969795969495939464ffffffffff84169460ff600160281b8604811695600160301b90048116949392168d565b60008181526010602052604081206007810154600890910154829182916115c990309064ffffffffff16612f21565b60009586526010602052604090952060080154909564ffffffffff9091169350915050565b60006115f8614681565b61160284846123de565b9050600061160f826125cb565b60209092015168ffffffffffffffffff1690910191505092915050565b600f60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160a01b03908116911685565b818361167282611818565b6116c3576040805162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420656e7465722c20706f6f6c4964206e6f742061637469766500604482015290519081900360640190fd5b600b5482111561171a576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20706f6f6c4964206f7574206f662072616e6765000000000000604482015290519081900360640190fd5b600d54811161175a5760405162461bcd60e51b81526004018080602001828103825260308152602001806148cb6030913960400191505060405180910390fd5b60145460ff161561179e576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff191660011790556117b68585856130af565b611807576040805162461bcd60e51b815260206004820152601b60248201527f4572726f723a20636f756c64206e6f7420656e74657220706f6f6c0000000000604482015290519081900360640190fd5b50506014805460ff19169055505050565b601454600090610100900460ff166118615760405162461bcd60e51b815260040180806020018281038252602381526020018061473f6023913960400191505060405180910390fd5b50600090815260106020526040902060080154600160301b900460ff1690565b600081116118c3576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b806118cc6113e1565b101561191f576040805162461bcd60e51b815260206004820152601b60248201527f4572726f723a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b61195f61194361193683606463ffffffff61262516565b839063ffffffff6122e216565b336000908152600760205260409020549063ffffffff61232b16565b3360009081526007602052604090205561199561198661193683606463ffffffff61262516565b6006549063ffffffff61232b16565b6006556119a33330836120ab565b604051819033907f7def9f73ac6a7ac8fe4dc55f5257d48aed7e3f9d5247b0020598b87a5c369d8290600090a350565b60008281526010602090815260408083206001600160a01b038516845260060190915290205492915050565b600d5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600090815260106020526040902060080154600160281b900460ff1690565b600081815260126020908152604091829020805483518184028101840190945280845260609392830182828015611aa557602002820191906000526020600020905b815481526020019060010190808311611a91575b50505050509050919050565b6001600160a01b038316611af65760405162461bcd60e51b815260040180806020018281038252602481526020018061498a6024913960400191505060405180910390fd5b6001600160a01b038216611b3b5760405162461bcd60e51b81526004018080602001828103825260228152602001806147e36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000600b54821115611bf6576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20706f6f6c4964206f7574206f662072616e6765000000000000604482015290519081900360640190fd5b60008281526010602052604090206008810154600160281b900460ff16611c4e5760405162461bcd60e51b815260040180806020018281038252603b81526020018061486e603b913960400191505060405180910390fd5b611c578361103d565b611ca8576040805162461bcd60e51b815260206004820152601b60248201527f4572726f723a2063616e6e6f74206561726c7920756e7374616b650000000000604482015290519081900360640190fd5b6000611cb2611186565b60088054908401549192506001600160a01b03169063343009a290611cdf90309064ffffffffff16612f21565b6008850154604080516001600160e01b031960e086901b168152600481019390935264ffffffffff909116602483015251604480830192600092919082900301818387803b158015611d3057600080fd5b505af1158015611d44573d6000803e3d6000fd5b50505060088301805465ff00000000001916905550600c8201805460ff191660011790556000611d8282611d76611186565b9063ffffffff6122e216565b600a84018190558354909150611d9f90829063ffffffff6122e216565b600b840181905560038401546001850154600286015460088701546040805195865264ffffffffff909116602086015280519394929391927f4264c1c4dce9a5bdaf76353b212e051ed6a441a4c184dece2572f8510b007c8f929081900390910190a4506001949350505050565b60008181526010602052604081206002810154611e71576040805162461bcd60e51b815260206004820152601e60248201527f706f6f6c20726577617264732068617665206265656e20647261696e65640000604482015290519081900360640190fd5b6000838152601060209081526040808320338452600601909152902054611edf576040805162461bcd60e51b815260206004820152601e60248201527f796f752068617665206e6f20736861726520696e207468697320706f6f6c0000604482015290519081900360640190fd5b600c81015460ff16611ef657611ef483611b9d565b505b6000611f0184611293565b3360009081526006840160205260409020546002840154919250611f2b919063ffffffff6122e216565b6002830190815533600090815260068401602052604081205554611fb1576000848152601060205260408120818155600181018290556002810182905560038101829055600481018290556007810182905560088101805466ffffffffffffff1916905560098101829055600a8101829055600b810191909155600c01805460ff191690555b6008546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561200557600080fd5b505af1158015612019573d6000803e3d6000fd5b505050506040513d602081101561202f57600080fd5b5051612074576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b604051819033907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6590600090a35060019392505050565b6001600160a01b0383166120f05760405162461bcd60e51b81526004018080602001828103825260258152602001806149656025913960400191505060405180910390fd5b6001600160a01b0382166121355760405162461bcd60e51b81526004018080602001828103825260238152602001806147626023913960400191505060405180910390fd5b600061214882606463ffffffff61262516565b9050600061215c838363ffffffff6122e216565b90506121a181604051806060016040528060268152602001614826602691396001600160a01b038816600090815260208190526040902054919063ffffffff61224b16565b6001600160a01b0380871660009081526020819052604080822093909355908616815220546121d6908263ffffffff61232b16565b6001600160a01b0385166000908152602081905260409020556121f985836139ca565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b600081848411156122da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561229f578181015183820152602001612287565b50505050905090810190601f1680156122cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061232483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224b565b9392505050565b600082820183811015612324576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008261239457506000610cda565b828202828482816123a157fe5b04146123245760405162461bcd60e51b81526004018080602001828103825260218152602001806148fb6021913960400191505060405180910390fd5b6123e6614681565b600080600080600080600080600860009054906101000a90046001600160a01b03166001600160a01b03166333060d908c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561245d57600080fd5b505afa158015612471573d6000803e3d6000fd5b505050506040513d602081101561248757600080fd5b5051905060005b818110156125bc5760085460408051632607443b60e01b81526001600160a01b038f811660048301526024820185905291519190921691632607443b9160448083019260e0929190829003018186803b1580156124ea57600080fd5b505afa1580156124fe573d6000803e3d6000fd5b505050506040513d60e081101561251457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949e50929c50909a5098509650909450925064ffffffffff808a16908c1614156125b45750506040805160e08101825264ffffffffff909816885268ffffffffffffffffff9687166020890152949095169386019390935261ffff9182166060860152811660808501521660a0830152151560c08201529050610cda565b60010161248e565b50505050505050505092915050565b606081015160009061ffff16816125e0613ac6565b90508082106125f45760009250505061109e565b60606126008383613b64565b905061261b81866040015168ffffffffffffffffff16613d1c565b935050505061109e565b600061232483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d5e565b60006126716146bd565b506000828152600f6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546001600160a01b03908116606083018190526004909301541660808201529033146127095760405162461bcd60e51b81526004018080602001828103825260228152602001806148a96022913960400191505060405180910390fd5b60208082015160009081526010825260408082203383526005810190935290205460ff1661277e576040805162461bcd60e51b815260206004820152601e60248201527f796f7520617265206e6f74206120706f6f6c207061727469636970616e740000604482015290519081900360640190fd5b6008810154600160281b900460ff16156127df576040805162461bcd60e51b815260206004820152601c60248201527f706f6f6c206973207374616b696e672c2063616e6e6f74206578697400000000604482015290519081900360640190fd5b8151336000908152600e60205260409020546128009163ffffffff6122e216565b336000908152600e6020526040902055815160028201546128269163ffffffff6122e216565b6002820155815133600090815260068301602052604090205461284e9163ffffffff6122e216565b3360009081526006830160205260409020819055612898573360009081526005820160209081526040808320805460ff191690558482015183526011909152902080546000190190555b6000848152600f6020526040812081815560018101829055600281018290556003810180546001600160a01b031990811690915560049091018054909116905582516128eb90606463ffffffff61262516565b9050600061290082600263ffffffff61262516565b9050600061291583600463ffffffff61262516565b9050600061292a84600463ffffffff61262516565b8651909150600090612942908663ffffffff6122e216565b60055490915015612b36576008546009546005546001600160a01b039283169263a9059cbb92169061297b90600263ffffffff61262516565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156129ca57600080fd5b505af11580156129de573d6000803e3d6000fd5b505050506040513d60208110156129f457600080fd5b5051612a39576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6008546005546001600160a01b039091169063a9059cbb9073d30bc4859a79852157211e6db19de159673a67e290612a7890600263ffffffff61262516565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ac757600080fd5b505af1158015612adb573d6000803e3d6000fd5b505050506040513d6020811015612af157600080fd5b5051612b36576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60808701516001600160a01b0316612b52576005829055612c53565b612b6382600263ffffffff61262516565b60055560085460808801516001600160a01b039091169063a9059cbb90612b9185600263ffffffff61262516565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612be057600080fd5b505af1158015612bf4573d6000803e3d6000fd5b505050506040513d6020811015612c0a57600080fd5b5051612c53576040805162461bcd60e51b8152602060048201526013602482015272149959881d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b6008546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015612ca757600080fd5b505af1158015612cbb573d6000803e3d6000fd5b505050506040513d6020811015612cd157600080fd5b5051612d16576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6008546009546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018890529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015612d6f57600080fd5b505af1158015612d83573d6000803e3d6000fd5b505050506040513d6020811015612d9957600080fd5b5051612de3576040805162461bcd60e51b815260206004820152601460248201527311195d8c481d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b6008546040805163a9059cbb60e01b815273d30bc4859a79852157211e6db19de159673a67e260048201526024810186905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015612e4b57600080fd5b505af1158015612e5f573d6000803e3d6000fd5b505050506040513d6020811015612e7557600080fd5b5051612ebf576040805162461bcd60e51b815260206004820152601460248201527311195d8c881d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b8660400151876000015188606001516001600160a01b03167f998379a72dc64811ce41782d18dd7759dd22de4dd43049986376fada953be82989600301546040518082815260200191505060405180910390a450600198975050505050505050565b6000806000806000806000806000600860009054906101000a90046001600160a01b03166001600160a01b03166333060d908c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612f9a57600080fd5b505afa158015612fae573d6000803e3d6000fd5b505050506040513d6020811015612fc457600080fd5b5051905060005b818110156125bc5760085460408051632607443b60e01b81526001600160a01b038f811660048301526024820185905291519190921691632607443b9160448083019260e0929190829003018186803b15801561302757600080fd5b505afa15801561303b573d6000803e3d6000fd5b505050506040513d60e081101561305157600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949e50929c50909a5098509650909450925064ffffffffff808a16908c1614156130a7579850610cda975050505050505050565b600101612fcb565b600082815260106020526040812080548511156130fd5760405162461bcd60e51b815260040180806020018281038252603c815260200180614785603c913960400191505060405180910390fd5b6008810154600160281b900460ff1615613150576040805162461bcd60e51b815260206004820152600f60248201526e706f6f6c206973207374616b696e6760881b604482015290519081900360640190fd5b600061316386606463ffffffff61262516565b9050600061317882600263ffffffff61262516565b9050600061318d83600463ffffffff61262516565b905060006131a284600463ffffffff61262516565b905060006131b68a8663ffffffff6122e216565b60028701549091506131ce908263ffffffff61232b16565b600287015533600090815260058701602052604090205460ff16613221573360009081526005870160209081526040808320805460ff191660019081179091558c84526011909252909120805490910190555b336000908152600687016020526040902054613243908263ffffffff61232b16565b33600090815260068801602052604090205560055415613323576008546005546040805163a9059cbb60e01b81523360048201526024810192909252516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156132b457600080fd5b505af11580156132c8573d6000803e3d6000fd5b505050506040513d60208110156132de57600080fd5b5051613323576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6001600160a01b03881661333b57600582905561344e565b61334c82600263ffffffff61262516565b6005556008546001600160a01b03166323b872dd338a61337386600263ffffffff61262516565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156133db57600080fd5b505af11580156133ef573d6000803e3d6000fd5b505050506040513d602081101561340557600080fd5b505161344e576040805162461bcd60e51b8152602060048201526013602482015272149959881d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b6008546005546001600160a01b03909116906323b872dd903390309061347b90869063ffffffff61232b16565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156134e357600080fd5b505af11580156134f7573d6000803e3d6000fd5b505050506040513d602081101561350d57600080fd5b5051613552576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b600854600954604080516323b872dd60e01b81523360048201526001600160a01b03928316602482015260448101889052905191909216916323b872dd9160648083019260209291908290030181600087803b1580156135b157600080fd5b505af11580156135c5573d6000803e3d6000fd5b505050506040513d60208110156135db57600080fd5b5051613625576040805162461bcd60e51b815260206004820152601460248201527311195d8c481d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b600854604080516323b872dd60e01b815233600482015273d30bc4859a79852157211e6db19de159673a67e260248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561369357600080fd5b505af11580156136a7573d6000803e3d6000fd5b505050506040513d60208110156136bd57600080fd5b5051613707576040805162461bcd60e51b815260206004820152601460248201527311195d8c881d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b855460028701541115613862578554600287015460009161372e919063ffffffff6122e216565b9050613748613743838363ffffffff6122e216565b613dc3565b61376661375b838363ffffffff6122e216565b88600301548b613dfc565b8654600288015533600090815260068801602052604090205461378f908263ffffffff6122e216565b3360009081526006890160205260409020556137ab8a88613f08565b6137fc576040805162461bcd60e51b815260206004820152601c60248201527f4572726f723a20636f756c64206e6f74207374617274207374616b6500000000604482015290519081900360640190fd5b61380b8760040154828b61410e565b61385c576040805162461bcd60e51b815260206004820181905260248201527f4572726f723a20636f756c64206e6f7420637265617465206e657720706f6f6c604482015290519081900360640190fd5b50613960565b8554600287015414156139485761387881613dc3565b6138878187600301548a613dfc565b6138918987613f08565b6138e2576040805162461bcd60e51b815260206004820152601c60248201527f4572726f723a20636f756c64206e6f74207374617274207374616b6500000000604482015290519081900360640190fd5b6138f2866004015460008a61410e565b613943576040805162461bcd60e51b815260206004820181905260248201527f4572726f723a20636f756c64206e6f7420637265617465206e657720706f6f6c604482015290519081900360640190fd5b613960565b61395181613dc3565b6139608187600301548a613dfc565b6139698a614363565b6139ba576040805162461bcd60e51b815260206004820152601c60248201527f4572726f723a20636f756c64206e6f74206d696e7420746f6b656e7300000000604482015290519081900360640190fd5b5060019998505050505050505050565b6001600160a01b038216613a0f5760405162461bcd60e51b81526004018080602001828103825260218152602001806149446021913960400191505060405180910390fd5b613a52816040518060600160405280602281526020016147c1602291396001600160a01b038516600090815260208190526040902054919063ffffffff61224b16565b6001600160a01b038316600090815260208190526040902055600454613a7e908263ffffffff6122e216565b6004556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000613ad06146fe565b600860009054906101000a90046001600160a01b03166001600160a01b031663f04b5fa06040518163ffffffff1660e01b81526004016101a06040518083038186803b158015613b1f57600080fd5b505afa158015613b33573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101a0811015613b5957600080fd5b506080015192915050565b60085460408051633510850760e11b81526004810185905260248101849052905160609283926001600160a01b0390911691636a210a0e91604480820192600092909190829003018186803b158015613bbc57600080fd5b505afa158015613bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613bf957600080fd5b8101908080516040519392919084640100000000821115613c1957600080fd5b908301906020820185811115613c2e57600080fd5b8251866020820283011164010000000082111715613c4b57600080fd5b82525081516020918201928201910280838360005b83811015613c78578181015183820152602001613c60565b505050509050016040525050509050600081519050606081604051908082528060200260200182016040528015613cc957816020015b613cb661471d565b815260200190600190039081613cae5790505b50905060005b82811015613d1257613cf3848281518110613ce657fe5b6020026020010151614384565b828281518110613cff57fe5b6020908102919091010152600101613ccf565b5095945050505050565b815160009081805b82811015613d5557613d49868281518110613d3b57fe5b6020026020010151866143c7565b90910190600101613d24565b50949350505050565b60008183613dad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561229f578181015183820152602001612287565b506000838581613db957fe5b0495945050505050565b336000908152600e602052604090208054613de4908363ffffffff61232b16565b815560010180546001600160a01b0319163317905550565b6000613e066143e4565b33600090815260136020908152604080832080546001818101835591855283852001859055878452601283529083208054918201815583529120018190559050613e4e6146bd565b8481526020808201858152604080840185815233606086019081526001600160a01b03888116608088019081526000898152600f885285902088518082559651600182015593516002850181905592516003850180549184166001600160a01b0319928316811790915591516004909501805495909316941693909317905582518981529251909491927fb8ab617400c81f66404f4b37405e10991268e0a05e4d7f3b06b7d28076c2c69592908290030190a45050505050565b8054600282015460009114613f5d576040805162461bcd60e51b815260206004820152601660248201527514dd185ad948185b5bdd5b9d081a5b98dbdc9c9958dd60521b604482015290519081900360640190fd5b8154600183015460085460408051630a54871760e31b8152600481018590526024810184905290516001600160a01b03909216916352a438b89160448082019260009290919082900301818387803b158015613fb857600080fd5b505af1158015613fcc573d6000803e3d6000fd5b50506008546040805163033060d960e41b815230600482015290516000945061405a93506001926001600160a01b0316916333060d90916024808301926020929190829003018186803b15801561402257600080fd5b505afa158015614036573d6000803e3d6000fd5b505050506040513d602081101561404c57600080fd5b50519063ffffffff6122e216565b9050614064614681565b61406e30836143f2565b805160088801805464ffffffffff90921664ffffffffff1990921691909117808255600c5460078a01554260098a015566ffff00000000001916600160281b17905590506140ba614510565b5080516040805186815264ffffffffff90921660208301528051899286927fe6e27f56b3cdde69e5d0a9bcdef1ef34500823c80d47d320e171687080f8fbb292918290030190a35060019695505050505050565b6000808085614129575066354a6ba7a18000905060246141a1565b8560011415614145575066354a6ba7a18000905061016d6141a1565b8560021415614161575066354a6ba7a180009050610e426141a1565b6040805162461bcd60e51b815260206004820152601060248201526f696e76616c696420706f6f6c5479706560801b604482015290519081900360640190fd5b60006141ab61451e565b60008181526010602052604090208481556001810184905560028101889055600381018290556004810189905560088101805466ff0000000000001916600160301b179055909150861561426b57600082815260116020908152604080832080546001908101909155338452600585018352818420805460ff1916909117905560068401909152902054614245908863ffffffff61232b16565b33600090815260068301602052604090205561426087613dc3565b61426b878388613dfc565b60009182526010602052604090912081548155600180830154818301556002808401549083015560038084015490830155600480840154908301556007808401549083015560088084018054918401805464ffffffffff90931664ffffffffff1990931692909217808355815465ff000000000019909116600160281b9182900460ff908116151590920217808455915466ff00000000000019909216600160301b92839004821615159092029190911790915560098085015490840155600a8085015490840155600b8085015490840155600c9384015493909201805460ff19169390921615159290921790559695505050505050565b60008061437783606463ffffffff61262516565b905033610ea4818361452c565b61438c61471d565b506040805160608101825268ffffffffffffffffff8381168252604884901c16602082015260909290921c66ffffffffffffff169082015290565b6000826020015183600001518302816143dc57fe5b049392505050565b600a80546001019081905590565b6143fa614681565b60085460408051632607443b60e01b81526001600160a01b038681166004830152602482018690529151600093849384938493849384938493911691632607443b9160448082019260e092909190829003018186803b15801561445c57600080fd5b505afa158015614470573d6000803e3d6000fd5b505050506040513d60e081101561448657600080fd5b50805160208083015160408085015160608087015160808089015160a0808b015160c09b8c0151885160e081018a5264ffffffffff909c168c5268ffffffffffffffffff998a169a8c019a909a52979095169589019590955261ffff91821692880192909252928316908601529116908301521515918101919091529a9950505050505050505050565b600c80546001019081905590565b600b80546001019081905590565b806001600160a01b038316614588576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025460ff1661467c57600354600454101561467c576003546004546145b4908363ffffffff61232b16565b11156145e9576004546003546145cf9163ffffffff6122e216565b6003546004556002805460ff191660011790559050614600565b6004546145fc908263ffffffff61232b16565b6004555b6001600160a01b038316600090815260208190526040902054614629908263ffffffff61232b16565b6001600160a01b0384166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35b505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040518060a0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b604051806101a00160405280600d906020820280388339509192915050565b6040518060600160405280600081526020016000815260200160008152509056fe63616e6e6f7420656e7465722c20706f6f6c73206e6f7420696e697469616c697a656445524332303a207472616e7366657220746f20746865207a65726f2061646472657373616d6f756e74206f766572207468726573686f6c64202d206f6e6c792031206e657720706f6f6c20746f20626520637265617465642070657220747845524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f20616464726573734572726f723a20636f756c64206e6f74207769746864726177207265776172647345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654572726f723a20756e73756666696369656e742066726f7a656e2062616c616e63654572726f723a20706f6f6c206973206e6f7420796574207374616b65642c206f722068617320616c726561647920656e646564207374616b696e676e6f7420656e747279206f776e65722c206f7220616c7265616479206578697465644572726f723a2076616c7565206d7573742062652067726561746572207468616e206d696e456e747279486561727473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820ca62bd23ffec7202a2b3a5f9ecfb53da305133c5723869fed8a369af68340e9364736f6c634300050d0032
0x6080604052678ac7230489e800006003553480156200001d57600080fd5b50600980546001600160a01b0319908116331790915560088054909116732b591e99afe9f32eaa6214f7b7629768c40eeb39179055620000656001600160e01b036200006b16565b62000716565b6009546001600160a01b03163314620000e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f744f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b601454610100900460ff16156200015d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f63616e6e6f74207265696e697469616c697a6500000000000000000000000000604482015290519081900360640190fd5b60005b60038110156200018b5762000181816000806001600160e01b03620001b616565b5060010162000160565b50620001a564174876e8006001600160e01b036200046016565b6014805461ff001916610100179055565b6000808085620001d3575066354a6ba7a180009050602462000276565b8560011415620001f1575066354a6ba7a18000905061016d62000276565b85600214156200020f575066354a6ba7a180009050610e4262000276565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c696420706f6f6c5479706500000000000000000000000000000000604482015290519081900360640190fd5b60006200028b6001600160e01b03620004df16565b60008181526010602052604090208481556001810184905560028101889055600381018290556004810189905560088101805460ff60301b1916660100000000000017905590915086156200036857600082815260116020908152604080832080546001908101909155338452600585018352818420805460ff19169091179055600684018252909120546200032c9189906200232b620004ed821b17901c565b33600090815260068301602052604090205562000352876001600160e01b036200056916565b620003688783886001600160e01b03620005ae16565b60009182526010602052604090912081548155600180830154818301556002808401549083015560038084015490830155600480840154908301556007808401549083015560088084018054918401805464ffffffffff90931664ffffffffff1990931692909217808355815460ff60281b19909116650100000000009182900460ff908116151590920217808455915460ff60301b19909216660100000000000092839004821615159092029190911790915560098085015490840155600a8085015490840155600b8085015490840155600c9384015493909201805460ff19169390921615159290921790559695505050505050565b6009546001600160a01b03163314620004da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f744f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600d55565b600b80546001019081905590565b6000828201838110156200056257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b336000908152600e602090815260409091208054909162000596919084906200232b620004ed821b17901c565b815560010180546001600160a01b0319163317905550565b6000620005c36001600160e01b03620006c716565b336000908152601360209081526040808320805460018181018355918552838520018590558784526012835290832080549182018155835291200181905590506200060d620006d5565b8481526020808201858152604080840185815233606086019081526001600160a01b03888116608088019081526000898152600f885285902088518082559651600182015593516002850181905592516003850180549184166001600160a01b0319928316811790915591516004909501805495909316941693909317905582518981529251909491927fb8ab617400c81f66404f4b37405e10991268e0a05e4d7f3b06b7d28076c2c69592908290030190a45050505050565b600a80546001019081905590565b6040518060a0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b614a0780620007266000396000f3fe60806040526004361061027d5760003560e01c8063916808bb1161014f578063ac4afa38116100c1578063c7d0b70e1161007a578063c7d0b70e14610b49578063cc2e5b2814610b73578063d34b0a3e14610bac578063dd62ed3e14610bc1578063ea62167b14610bfc578063f248b86a14610c265761027d565b8063ac4afa3814610955578063ad663e67146109f0578063b0a5df9a14610a3f578063b30906d414610a7f578063bb7a1c3514610ae0578063bbbaf8c814610b1f5761027d565b80639e1a4d19116101135780639e1a4d191461083b578063a391210714610850578063a457c2d714610865578063a87430ba1461089e578063a8dcd03a146108f2578063a9059cbb1461091c5761027d565b8063916808bb1461075b578063922e92a3146107705780639355aea7146107a357806394244039146107fc57806395d89b41146108265761027d565b8063313ce567116101f35780636f9fb98a116101ac5780636f9fb98a1461066a57806370a082311461067f5780637be79cf6146106b25780637e8e3749146106dc5780638094f90d1461071c57806384e56ca2146107465761027d565b8063313ce567146104e857806333590596146104fd578063365a94e8146105365780633950935114610560578063404f1fec146105995780636386c1c7146105c35761027d565b806318160ddd1161024557806318160ddd146103d6578063181f599f146103eb5780631e7f87bc1461040057806323b872dd14610415578063245590da146104585780632f380b35146104825761027d565b80630410808e1461028457806306fdde03146102ab578063095ea7b3146103355780630cdc25d3146103825780630cfd442a146103ac575b600080fd5b005b34801561029057600080fd5b50610299610ca0565b60408051918252519081900360200190f35b3480156102b757600080fd5b506102c0610ca6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102fa5781810151838201526020016102e2565b50505050905090810190601f1680156103275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034157600080fd5b5061036e6004803603604081101561035857600080fd5b506001600160a01b038135169060200135610cc9565b604080519115158252519081900360200190f35b34801561038e57600080fd5b50610282600480360360208110156103a557600080fd5b5035610ce0565b3480156103b857600080fd5b50610282600480360360208110156103cf57600080fd5b5035610d98565b3480156103e257600080fd5b50610299610e2d565b3480156103f757600080fd5b50610299610e33565b34801561040c57600080fd5b50610299610e39565b34801561042157600080fd5b5061036e6004803603606081101561043857600080fd5b506001600160a01b03813581169160208101359091169060400135610e3f565b34801561046457600080fd5b506102826004803603602081101561047b57600080fd5b5035610eae565b34801561048e57600080fd5b506104ac600480360360208110156104a557600080fd5b5035610fbf565b6040805197885260208801969096528686019490945260608601929092521515608085015260a0840152151560c0830152519081900360e00190f35b3480156104f457600080fd5b50610299611009565b34801561050957600080fd5b5061036e6004803603604081101561052057600080fd5b50803590602001356001600160a01b031661100e565b34801561054257600080fd5b5061036e6004803603602081101561055957600080fd5b503561103d565b34801561056c57600080fd5b5061036e6004803603604081101561058357600080fd5b506001600160a01b0381351690602001356110a3565b3480156105a557600080fd5b50610299600480360360208110156105bc57600080fd5b50356110df565b3480156105cf57600080fd5b506105f6600480360360208110156105e657600080fd5b50356001600160a01b03166110f1565b6040518084815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019060200280838360005b8381101561065457818101518382015260200161063c565b5050505090500194505050505060405180910390f35b34801561067657600080fd5b50610299611186565b34801561068b57600080fd5b50610299600480360360208110156106a257600080fd5b50356001600160a01b0316611202565b3480156106be57600080fd5b50610282600480360360208110156106d557600080fd5b503561121d565b3480156106e857600080fd5b50610299600480360360408110156106ff57600080fd5b5080356001600160a01b0316906020013564ffffffffff1661126c565b34801561072857600080fd5b506102996004803603602081101561073f57600080fd5b5035611293565b34801561075257600080fd5b50610299611357565b34801561076757600080fd5b5061029961135d565b34801561077c57600080fd5b506102996004803603602081101561079357600080fd5b50356001600160a01b0316611363565b3480156107af57600080fd5b506107cd600480360360208110156107c657600080fd5b5035611375565b6040805194855260208501939093526001600160a01b0391821684840152166060830152519081900360800190f35b34801561080857600080fd5b5061036e6004803603602081101561081f57600080fd5b50356113a9565b34801561083257600080fd5b506102c06113c1565b34801561084757600080fd5b506102996113e1565b34801561085c57600080fd5b506102996113f1565b34801561087157600080fd5b5061036e6004803603604081101561088857600080fd5b506001600160a01b0381351690602001356113f7565b3480156108aa57600080fd5b506108d1600480360360208110156108c157600080fd5b50356001600160a01b031661144c565b604080519283526001600160a01b0390911660208301528051918290030190f35b3480156108fe57600080fd5b506102826004803603602081101561091557600080fd5b503561146e565b34801561092857600080fd5b5061036e6004803603604081101561093f57600080fd5b506001600160a01b038135169060200135611519565b34801561096157600080fd5b5061097f6004803603602081101561097857600080fd5b5035611526565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945264ffffffffff90921660c0890152151560e08801521515610100870152610120860152610140850152610160840152151561018083015251908190036101a00190f35b3480156109fc57600080fd5b50610a1a60048036036020811015610a1357600080fd5b503561159a565b60408051938452602084019290925264ffffffffff1682820152519081900360600190f35b348015610a4b57600080fd5b5061029960048036036040811015610a6257600080fd5b5080356001600160a01b0316906020013564ffffffffff166115ee565b348015610a8b57600080fd5b50610aa960048036036020811015610aa257600080fd5b503561162c565b604080519586526020860194909452848401929092526001600160a01b039081166060850152166080830152519081900360a00190f35b348015610aec57600080fd5b5061028260048036036060811015610b0357600080fd5b50803590602081013590604001356001600160a01b0316611667565b348015610b2b57600080fd5b5061036e60048036036020811015610b4257600080fd5b5035611818565b348015610b5557600080fd5b5061028260048036036020811015610b6c57600080fd5b5035611881565b348015610b7f57600080fd5b5061029960048036036040811015610b9657600080fd5b50803590602001356001600160a01b03166119d3565b348015610bb857600080fd5b506102996119ff565b348015610bcd57600080fd5b5061029960048036036040811015610be457600080fd5b506001600160a01b0381358116916020013516611a05565b348015610c0857600080fd5b5061036e60048036036020811015610c1f57600080fd5b5035611a30565b348015610c3257600080fd5b50610c5060048036036020811015610c4957600080fd5b5035611a4f565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610c8c578181015183820152602001610c74565b505050509050019250505060405180910390f35b60065490565b604051806040016040528060078152602001661211561413d3d360ca1b81525081565b6000610cd6338484611ab1565b5060015b92915050565b60145460ff1615610d24576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff19166001179055610d3a81611b9d565b610d8b576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20636f756c64206e6f7420656e64207374616b65000000000000604482015290519081900360640190fd5b506014805460ff19169055565b60145460ff1615610ddc576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff19166001179055610df281611e0d565b610d8b5760405162461bcd60e51b81526004018080602001828103825260218152602001806148056021913960400191505060405180910390fd5b60045490565b600c5481565b60065481565b6000610e4c8484846120ab565b610ea48433610e9f8560405180606001604052806028815260200161491c602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919063ffffffff61224b16565b611ab1565b5060019392505050565b60008111610ef0576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b33600090815260076020526040902054811115610f3e5760405162461bcd60e51b815260040180806020018281038252602281526020018061484c6022913960400191505060405180910390fd5b33600090815260076020526040902054610f5e908263ffffffff6122e216565b33600090815260076020526040902055600654610f81908263ffffffff6122e216565b600655610f8f3033836120ab565b604051819033907fb925ba840e2f36bcb317f8179bd8b5ed01aba4a22abf5f169162c0894dea87ab90600090a350565b6000908152601060205260409020805460018201546002830154600484015460088501546009860154600c909601549496939592949193600160281b90910460ff90811693921690565b600881565b60008281526010602090815260408083206001600160a01b038516845260050190915290205460ff1692915050565b600081815260106020526040812060019081015442916110999161107b91620151809161106f9163ffffffff61232b16565b9063ffffffff61238516565b6000858152601060205260409020600901549063ffffffff61232b16565b111590505b919050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cd6918590610e9f908663ffffffff61232b16565b60009081526011602052604090205490565b6001600160a01b038082166000908152600e6020818152604080842080546013845282862094845260019091015484548351818602810186019094528084529596606096889693959394929091169284919083018282801561117257602002820191906000526020600020905b81548152602001906001019080831161115e575b505050505091509250925092509193909250565b600854604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156111d157600080fd5b505afa1580156111e5573d6000803e3d6000fd5b505050506040513d60208110156111fb57600080fd5b5051905090565b6001600160a01b031660009081526020819052604090205490565b6009546001600160a01b03163314611267576040805162461bcd60e51b81526020600482015260086024820152673737ba27bbb732b960c11b604482015290519081900360640190fd5b600d55565b6000611276614681565b61128084846123de565b905061128b816125cb565b949350505050565b6000818152601060205260408120600c81015460ff166112fa576040805162461bcd60e51b815260206004820152601f60248201527f706f6f6c207374616b6520686173206e6f74207965742066696e697368656400604482015290519081900360640190fd5b33600090815260068201602052604090205461131a57600091505061109e565b8054336000908152600683016020526040812054600a840154919261128b92909161134b919063ffffffff61238516565b9063ffffffff61262516565b60055481565b600a5481565b60076020526000908152604090205481565b6000908152600f60205260409020805460018201546003830154600490930154919390926001600160a01b03908116921690565b6000908152601060205260409020600c015460ff1690565b604051806040016040528060048152602001631413d3d360e21b81525081565b60006113ec33611202565b905090565b600b5481565b6000610cd63384610e9f856040518060600160405280602581526020016149ae602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919063ffffffff61224b16565b600e60205260009081526040902080546001909101546001600160a01b031682565b60145460ff16156114b2576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff191660011790556114c881612667565b610d8b576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20636f756c64206e6f74206578697420706f6f6c000000000000604482015290519081900360640190fd5b6000610cd63384846120ab565b601060205260009081526040902080546001820154600283015460038401546004850154600786015460088701546009880154600a890154600b8a0154600c909a015498999798969795969495939464ffffffffff84169460ff600160281b8604811695600160301b90048116949392168d565b60008181526010602052604081206007810154600890910154829182916115c990309064ffffffffff16612f21565b60009586526010602052604090952060080154909564ffffffffff9091169350915050565b60006115f8614681565b61160284846123de565b9050600061160f826125cb565b60209092015168ffffffffffffffffff1690910191505092915050565b600f60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160a01b03908116911685565b818361167282611818565b6116c3576040805162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420656e7465722c20706f6f6c4964206e6f742061637469766500604482015290519081900360640190fd5b600b5482111561171a576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20706f6f6c4964206f7574206f662072616e6765000000000000604482015290519081900360640190fd5b600d54811161175a5760405162461bcd60e51b81526004018080602001828103825260308152602001806148cb6030913960400191505060405180910390fd5b60145460ff161561179e576040805162461bcd60e51b815260206004820152600960248201526853796e63206c6f636b60b81b604482015290519081900360640190fd5b6014805460ff191660011790556117b68585856130af565b611807576040805162461bcd60e51b815260206004820152601b60248201527f4572726f723a20636f756c64206e6f7420656e74657220706f6f6c0000000000604482015290519081900360640190fd5b50506014805460ff19169055505050565b601454600090610100900460ff166118615760405162461bcd60e51b815260040180806020018281038252602381526020018061473f6023913960400191505060405180910390fd5b50600090815260106020526040902060080154600160301b900460ff1690565b600081116118c3576040805162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b604482015290519081900360640190fd5b806118cc6113e1565b101561191f576040805162461bcd60e51b815260206004820152601b60248201527f4572726f723a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b61195f61194361193683606463ffffffff61262516565b839063ffffffff6122e216565b336000908152600760205260409020549063ffffffff61232b16565b3360009081526007602052604090205561199561198661193683606463ffffffff61262516565b6006549063ffffffff61232b16565b6006556119a33330836120ab565b604051819033907f7def9f73ac6a7ac8fe4dc55f5257d48aed7e3f9d5247b0020598b87a5c369d8290600090a350565b60008281526010602090815260408083206001600160a01b038516845260060190915290205492915050565b600d5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600090815260106020526040902060080154600160281b900460ff1690565b600081815260126020908152604091829020805483518184028101840190945280845260609392830182828015611aa557602002820191906000526020600020905b815481526020019060010190808311611a91575b50505050509050919050565b6001600160a01b038316611af65760405162461bcd60e51b815260040180806020018281038252602481526020018061498a6024913960400191505060405180910390fd5b6001600160a01b038216611b3b5760405162461bcd60e51b81526004018080602001828103825260228152602001806147e36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000600b54821115611bf6576040805162461bcd60e51b815260206004820152601a60248201527f4572726f723a20706f6f6c4964206f7574206f662072616e6765000000000000604482015290519081900360640190fd5b60008281526010602052604090206008810154600160281b900460ff16611c4e5760405162461bcd60e51b815260040180806020018281038252603b81526020018061486e603b913960400191505060405180910390fd5b611c578361103d565b611ca8576040805162461bcd60e51b815260206004820152601b60248201527f4572726f723a2063616e6e6f74206561726c7920756e7374616b650000000000604482015290519081900360640190fd5b6000611cb2611186565b60088054908401549192506001600160a01b03169063343009a290611cdf90309064ffffffffff16612f21565b6008850154604080516001600160e01b031960e086901b168152600481019390935264ffffffffff909116602483015251604480830192600092919082900301818387803b158015611d3057600080fd5b505af1158015611d44573d6000803e3d6000fd5b50505060088301805465ff00000000001916905550600c8201805460ff191660011790556000611d8282611d76611186565b9063ffffffff6122e216565b600a84018190558354909150611d9f90829063ffffffff6122e216565b600b840181905560038401546001850154600286015460088701546040805195865264ffffffffff909116602086015280519394929391927f4264c1c4dce9a5bdaf76353b212e051ed6a441a4c184dece2572f8510b007c8f929081900390910190a4506001949350505050565b60008181526010602052604081206002810154611e71576040805162461bcd60e51b815260206004820152601e60248201527f706f6f6c20726577617264732068617665206265656e20647261696e65640000604482015290519081900360640190fd5b6000838152601060209081526040808320338452600601909152902054611edf576040805162461bcd60e51b815260206004820152601e60248201527f796f752068617665206e6f20736861726520696e207468697320706f6f6c0000604482015290519081900360640190fd5b600c81015460ff16611ef657611ef483611b9d565b505b6000611f0184611293565b3360009081526006840160205260409020546002840154919250611f2b919063ffffffff6122e216565b6002830190815533600090815260068401602052604081205554611fb1576000848152601060205260408120818155600181018290556002810182905560038101829055600481018290556007810182905560088101805466ffffffffffffff1916905560098101829055600a8101829055600b810191909155600c01805460ff191690555b6008546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561200557600080fd5b505af1158015612019573d6000803e3d6000fd5b505050506040513d602081101561202f57600080fd5b5051612074576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b604051819033907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6590600090a35060019392505050565b6001600160a01b0383166120f05760405162461bcd60e51b81526004018080602001828103825260258152602001806149656025913960400191505060405180910390fd5b6001600160a01b0382166121355760405162461bcd60e51b81526004018080602001828103825260238152602001806147626023913960400191505060405180910390fd5b600061214882606463ffffffff61262516565b9050600061215c838363ffffffff6122e216565b90506121a181604051806060016040528060268152602001614826602691396001600160a01b038816600090815260208190526040902054919063ffffffff61224b16565b6001600160a01b0380871660009081526020819052604080822093909355908616815220546121d6908263ffffffff61232b16565b6001600160a01b0385166000908152602081905260409020556121f985836139ca565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b600081848411156122da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561229f578181015183820152602001612287565b50505050905090810190601f1680156122cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061232483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224b565b9392505050565b600082820183811015612324576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008261239457506000610cda565b828202828482816123a157fe5b04146123245760405162461bcd60e51b81526004018080602001828103825260218152602001806148fb6021913960400191505060405180910390fd5b6123e6614681565b600080600080600080600080600860009054906101000a90046001600160a01b03166001600160a01b03166333060d908c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561245d57600080fd5b505afa158015612471573d6000803e3d6000fd5b505050506040513d602081101561248757600080fd5b5051905060005b818110156125bc5760085460408051632607443b60e01b81526001600160a01b038f811660048301526024820185905291519190921691632607443b9160448083019260e0929190829003018186803b1580156124ea57600080fd5b505afa1580156124fe573d6000803e3d6000fd5b505050506040513d60e081101561251457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949e50929c50909a5098509650909450925064ffffffffff808a16908c1614156125b45750506040805160e08101825264ffffffffff909816885268ffffffffffffffffff9687166020890152949095169386019390935261ffff9182166060860152811660808501521660a0830152151560c08201529050610cda565b60010161248e565b50505050505050505092915050565b606081015160009061ffff16816125e0613ac6565b90508082106125f45760009250505061109e565b60606126008383613b64565b905061261b81866040015168ffffffffffffffffff16613d1c565b935050505061109e565b600061232483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d5e565b60006126716146bd565b506000828152600f6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546001600160a01b03908116606083018190526004909301541660808201529033146127095760405162461bcd60e51b81526004018080602001828103825260228152602001806148a96022913960400191505060405180910390fd5b60208082015160009081526010825260408082203383526005810190935290205460ff1661277e576040805162461bcd60e51b815260206004820152601e60248201527f796f7520617265206e6f74206120706f6f6c207061727469636970616e740000604482015290519081900360640190fd5b6008810154600160281b900460ff16156127df576040805162461bcd60e51b815260206004820152601c60248201527f706f6f6c206973207374616b696e672c2063616e6e6f74206578697400000000604482015290519081900360640190fd5b8151336000908152600e60205260409020546128009163ffffffff6122e216565b336000908152600e6020526040902055815160028201546128269163ffffffff6122e216565b6002820155815133600090815260068301602052604090205461284e9163ffffffff6122e216565b3360009081526006830160205260409020819055612898573360009081526005820160209081526040808320805460ff191690558482015183526011909152902080546000190190555b6000848152600f6020526040812081815560018101829055600281018290556003810180546001600160a01b031990811690915560049091018054909116905582516128eb90606463ffffffff61262516565b9050600061290082600263ffffffff61262516565b9050600061291583600463ffffffff61262516565b9050600061292a84600463ffffffff61262516565b8651909150600090612942908663ffffffff6122e216565b60055490915015612b36576008546009546005546001600160a01b039283169263a9059cbb92169061297b90600263ffffffff61262516565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156129ca57600080fd5b505af11580156129de573d6000803e3d6000fd5b505050506040513d60208110156129f457600080fd5b5051612a39576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6008546005546001600160a01b039091169063a9059cbb9073d30bc4859a79852157211e6db19de159673a67e290612a7890600263ffffffff61262516565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ac757600080fd5b505af1158015612adb573d6000803e3d6000fd5b505050506040513d6020811015612af157600080fd5b5051612b36576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60808701516001600160a01b0316612b52576005829055612c53565b612b6382600263ffffffff61262516565b60055560085460808801516001600160a01b039091169063a9059cbb90612b9185600263ffffffff61262516565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612be057600080fd5b505af1158015612bf4573d6000803e3d6000fd5b505050506040513d6020811015612c0a57600080fd5b5051612c53576040805162461bcd60e51b8152602060048201526013602482015272149959881d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b6008546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015612ca757600080fd5b505af1158015612cbb573d6000803e3d6000fd5b505050506040513d6020811015612cd157600080fd5b5051612d16576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6008546009546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018890529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015612d6f57600080fd5b505af1158015612d83573d6000803e3d6000fd5b505050506040513d6020811015612d9957600080fd5b5051612de3576040805162461bcd60e51b815260206004820152601460248201527311195d8c481d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b6008546040805163a9059cbb60e01b815273d30bc4859a79852157211e6db19de159673a67e260048201526024810186905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015612e4b57600080fd5b505af1158015612e5f573d6000803e3d6000fd5b505050506040513d6020811015612e7557600080fd5b5051612ebf576040805162461bcd60e51b815260206004820152601460248201527311195d8c881d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b8660400151876000015188606001516001600160a01b03167f998379a72dc64811ce41782d18dd7759dd22de4dd43049986376fada953be82989600301546040518082815260200191505060405180910390a450600198975050505050505050565b6000806000806000806000806000600860009054906101000a90046001600160a01b03166001600160a01b03166333060d908c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612f9a57600080fd5b505afa158015612fae573d6000803e3d6000fd5b505050506040513d6020811015612fc457600080fd5b5051905060005b818110156125bc5760085460408051632607443b60e01b81526001600160a01b038f811660048301526024820185905291519190921691632607443b9160448083019260e0929190829003018186803b15801561302757600080fd5b505afa15801561303b573d6000803e3d6000fd5b505050506040513d60e081101561305157600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949e50929c50909a5098509650909450925064ffffffffff808a16908c1614156130a7579850610cda975050505050505050565b600101612fcb565b600082815260106020526040812080548511156130fd5760405162461bcd60e51b815260040180806020018281038252603c815260200180614785603c913960400191505060405180910390fd5b6008810154600160281b900460ff1615613150576040805162461bcd60e51b815260206004820152600f60248201526e706f6f6c206973207374616b696e6760881b604482015290519081900360640190fd5b600061316386606463ffffffff61262516565b9050600061317882600263ffffffff61262516565b9050600061318d83600463ffffffff61262516565b905060006131a284600463ffffffff61262516565b905060006131b68a8663ffffffff6122e216565b60028701549091506131ce908263ffffffff61232b16565b600287015533600090815260058701602052604090205460ff16613221573360009081526005870160209081526040808320805460ff191660019081179091558c84526011909252909120805490910190555b336000908152600687016020526040902054613243908263ffffffff61232b16565b33600090815260068801602052604090205560055415613323576008546005546040805163a9059cbb60e01b81523360048201526024810192909252516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156132b457600080fd5b505af11580156132c8573d6000803e3d6000fd5b505050506040513d60208110156132de57600080fd5b5051613323576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6001600160a01b03881661333b57600582905561344e565b61334c82600263ffffffff61262516565b6005556008546001600160a01b03166323b872dd338a61337386600263ffffffff61262516565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156133db57600080fd5b505af11580156133ef573d6000803e3d6000fd5b505050506040513d602081101561340557600080fd5b505161344e576040805162461bcd60e51b8152602060048201526013602482015272149959881d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b6008546005546001600160a01b03909116906323b872dd903390309061347b90869063ffffffff61232b16565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156134e357600080fd5b505af11580156134f7573d6000803e3d6000fd5b505050506040513d602081101561350d57600080fd5b5051613552576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b600854600954604080516323b872dd60e01b81523360048201526001600160a01b03928316602482015260448101889052905191909216916323b872dd9160648083019260209291908290030181600087803b1580156135b157600080fd5b505af11580156135c5573d6000803e3d6000fd5b505050506040513d60208110156135db57600080fd5b5051613625576040805162461bcd60e51b815260206004820152601460248201527311195d8c481d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b600854604080516323b872dd60e01b815233600482015273d30bc4859a79852157211e6db19de159673a67e260248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561369357600080fd5b505af11580156136a7573d6000803e3d6000fd5b505050506040513d60208110156136bd57600080fd5b5051613707576040805162461bcd60e51b815260206004820152601460248201527311195d8c881d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b855460028701541115613862578554600287015460009161372e919063ffffffff6122e216565b9050613748613743838363ffffffff6122e216565b613dc3565b61376661375b838363ffffffff6122e216565b88600301548b613dfc565b8654600288015533600090815260068801602052604090205461378f908263ffffffff6122e216565b3360009081526006890160205260409020556137ab8a88613f08565b6137fc576040805162461bcd60e51b815260206004820152601c60248201527f4572726f723a20636f756c64206e6f74207374617274207374616b6500000000604482015290519081900360640190fd5b61380b8760040154828b61410e565b61385c576040805162461bcd60e51b815260206004820181905260248201527f4572726f723a20636f756c64206e6f7420637265617465206e657720706f6f6c604482015290519081900360640190fd5b50613960565b8554600287015414156139485761387881613dc3565b6138878187600301548a613dfc565b6138918987613f08565b6138e2576040805162461bcd60e51b815260206004820152601c60248201527f4572726f723a20636f756c64206e6f74207374617274207374616b6500000000604482015290519081900360640190fd5b6138f2866004015460008a61410e565b613943576040805162461bcd60e51b815260206004820181905260248201527f4572726f723a20636f756c64206e6f7420637265617465206e657720706f6f6c604482015290519081900360640190fd5b613960565b61395181613dc3565b6139608187600301548a613dfc565b6139698a614363565b6139ba576040805162461bcd60e51b815260206004820152601c60248201527f4572726f723a20636f756c64206e6f74206d696e7420746f6b656e7300000000604482015290519081900360640190fd5b5060019998505050505050505050565b6001600160a01b038216613a0f5760405162461bcd60e51b81526004018080602001828103825260218152602001806149446021913960400191505060405180910390fd5b613a52816040518060600160405280602281526020016147c1602291396001600160a01b038516600090815260208190526040902054919063ffffffff61224b16565b6001600160a01b038316600090815260208190526040902055600454613a7e908263ffffffff6122e216565b6004556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000613ad06146fe565b600860009054906101000a90046001600160a01b03166001600160a01b031663f04b5fa06040518163ffffffff1660e01b81526004016101a06040518083038186803b158015613b1f57600080fd5b505afa158015613b33573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101a0811015613b5957600080fd5b506080015192915050565b60085460408051633510850760e11b81526004810185905260248101849052905160609283926001600160a01b0390911691636a210a0e91604480820192600092909190829003018186803b158015613bbc57600080fd5b505afa158015613bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613bf957600080fd5b8101908080516040519392919084640100000000821115613c1957600080fd5b908301906020820185811115613c2e57600080fd5b8251866020820283011164010000000082111715613c4b57600080fd5b82525081516020918201928201910280838360005b83811015613c78578181015183820152602001613c60565b505050509050016040525050509050600081519050606081604051908082528060200260200182016040528015613cc957816020015b613cb661471d565b815260200190600190039081613cae5790505b50905060005b82811015613d1257613cf3848281518110613ce657fe5b6020026020010151614384565b828281518110613cff57fe5b6020908102919091010152600101613ccf565b5095945050505050565b815160009081805b82811015613d5557613d49868281518110613d3b57fe5b6020026020010151866143c7565b90910190600101613d24565b50949350505050565b60008183613dad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561229f578181015183820152602001612287565b506000838581613db957fe5b0495945050505050565b336000908152600e602052604090208054613de4908363ffffffff61232b16565b815560010180546001600160a01b0319163317905550565b6000613e066143e4565b33600090815260136020908152604080832080546001818101835591855283852001859055878452601283529083208054918201815583529120018190559050613e4e6146bd565b8481526020808201858152604080840185815233606086019081526001600160a01b03888116608088019081526000898152600f885285902088518082559651600182015593516002850181905592516003850180549184166001600160a01b0319928316811790915591516004909501805495909316941693909317905582518981529251909491927fb8ab617400c81f66404f4b37405e10991268e0a05e4d7f3b06b7d28076c2c69592908290030190a45050505050565b8054600282015460009114613f5d576040805162461bcd60e51b815260206004820152601660248201527514dd185ad948185b5bdd5b9d081a5b98dbdc9c9958dd60521b604482015290519081900360640190fd5b8154600183015460085460408051630a54871760e31b8152600481018590526024810184905290516001600160a01b03909216916352a438b89160448082019260009290919082900301818387803b158015613fb857600080fd5b505af1158015613fcc573d6000803e3d6000fd5b50506008546040805163033060d960e41b815230600482015290516000945061405a93506001926001600160a01b0316916333060d90916024808301926020929190829003018186803b15801561402257600080fd5b505afa158015614036573d6000803e3d6000fd5b505050506040513d602081101561404c57600080fd5b50519063ffffffff6122e216565b9050614064614681565b61406e30836143f2565b805160088801805464ffffffffff90921664ffffffffff1990921691909117808255600c5460078a01554260098a015566ffff00000000001916600160281b17905590506140ba614510565b5080516040805186815264ffffffffff90921660208301528051899286927fe6e27f56b3cdde69e5d0a9bcdef1ef34500823c80d47d320e171687080f8fbb292918290030190a35060019695505050505050565b6000808085614129575066354a6ba7a18000905060246141a1565b8560011415614145575066354a6ba7a18000905061016d6141a1565b8560021415614161575066354a6ba7a180009050610e426141a1565b6040805162461bcd60e51b815260206004820152601060248201526f696e76616c696420706f6f6c5479706560801b604482015290519081900360640190fd5b60006141ab61451e565b60008181526010602052604090208481556001810184905560028101889055600381018290556004810189905560088101805466ff0000000000001916600160301b179055909150861561426b57600082815260116020908152604080832080546001908101909155338452600585018352818420805460ff1916909117905560068401909152902054614245908863ffffffff61232b16565b33600090815260068301602052604090205561426087613dc3565b61426b878388613dfc565b60009182526010602052604090912081548155600180830154818301556002808401549083015560038084015490830155600480840154908301556007808401549083015560088084018054918401805464ffffffffff90931664ffffffffff1990931692909217808355815465ff000000000019909116600160281b9182900460ff908116151590920217808455915466ff00000000000019909216600160301b92839004821615159092029190911790915560098085015490840155600a8085015490840155600b8085015490840155600c9384015493909201805460ff19169390921615159290921790559695505050505050565b60008061437783606463ffffffff61262516565b905033610ea4818361452c565b61438c61471d565b506040805160608101825268ffffffffffffffffff8381168252604884901c16602082015260909290921c66ffffffffffffff169082015290565b6000826020015183600001518302816143dc57fe5b049392505050565b600a80546001019081905590565b6143fa614681565b60085460408051632607443b60e01b81526001600160a01b038681166004830152602482018690529151600093849384938493849384938493911691632607443b9160448082019260e092909190829003018186803b15801561445c57600080fd5b505afa158015614470573d6000803e3d6000fd5b505050506040513d60e081101561448657600080fd5b50805160208083015160408085015160608087015160808089015160a0808b015160c09b8c0151885160e081018a5264ffffffffff909c168c5268ffffffffffffffffff998a169a8c019a909a52979095169589019590955261ffff91821692880192909252928316908601529116908301521515918101919091529a9950505050505050505050565b600c80546001019081905590565b600b80546001019081905590565b806001600160a01b038316614588576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025460ff1661467c57600354600454101561467c576003546004546145b4908363ffffffff61232b16565b11156145e9576004546003546145cf9163ffffffff6122e216565b6003546004556002805460ff191660011790559050614600565b6004546145fc908263ffffffff61232b16565b6004555b6001600160a01b038316600090815260208190526040902054614629908263ffffffff61232b16565b6001600160a01b0384166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35b505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040518060a0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b604051806101a00160405280600d906020820280388339509192915050565b6040518060600160405280600081526020016000815260200160008152509056fe63616e6e6f7420656e7465722c20706f6f6c73206e6f7420696e697469616c697a656445524332303a207472616e7366657220746f20746865207a65726f2061646472657373616d6f756e74206f766572207468726573686f6c64202d206f6e6c792031206e657720706f6f6c20746f20626520637265617465642070657220747845524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f20616464726573734572726f723a20636f756c64206e6f74207769746864726177207265776172647345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654572726f723a20756e73756666696369656e742066726f7a656e2062616c616e63654572726f723a20706f6f6c206973206e6f7420796574207374616b65642c206f722068617320616c726561647920656e646564207374616b696e676e6f7420656e747279206f776e65722c206f7220616c7265616479206578697465644572726f723a2076616c7565206d7573742062652067726561746572207468616e206d696e456e747279486561727473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820ca62bd23ffec7202a2b3a5f9ecfb53da305133c5723869fed8a369af68340e9364736f6c634300050d0032