Deployed Bytecode Bytecode Opcodes Copy
0x60806040526004361061020f5760003560e01c80638d65402311610118578063d0d1ea70116100a0578063ea5f9a5d1161006f578063ea5f9a5d14610687578063f05c8582146106a7578063f1c750c3146106bc578063f2fde38b146106dc578063fdf97cb2146106fc57600080fd5b8063d0d1ea70146105f7578063d82fcf2e14610617578063dfa896e814610637578063e7ba0ceb1461066757600080fd5b8063b17bf914116100e7578063b17bf9141461052b578063b7f9a7481461054b578063c3c9757b1461056b578063cc2b9b9f146105a1578063cfd30e75146105d757600080fd5b80638d654023146104aa5780638da5cb5b146104c057806392b3634a146104de578063acad36a4146104fe57600080fd5b80635a131fb01161019b5780637c65c38b1161016a5780637c65c38b146104085780637d8bf29c1461041d5780637ecebe001461043d57806383a160311461046a5780638c36d02d1461048a57600080fd5b80635a131fb014610383578063715018a6146103a3578063734b7198146103b857806377195c8b146103d857600080fd5b8063285ee338116101e2578063285ee338146102ac5780632a55205a146102cc5780633378358b1461030b57806344334e29146103435780634dd33ce21461036357600080fd5b806301ffc9a714610214578063140d1bb7146102495780631a8828f414610277578063259728bf1461028c575b600080fd5b34801561022057600080fd5b5061023461022f36600461396b565b61071c565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b506102696102643660046139aa565b610753565b604051908152602001610240565b61028a610285366004613a09565b6107db565b005b34801561029857600080fd5b506102696102a7366004613a8c565b61097d565b3480156102b857600080fd5b506102696102c7366004613ad7565b610b91565b3480156102d857600080fd5b506102ec6102e7366004613bb7565b610e67565b604080516001600160a01b039093168352602083019190915201610240565b34801561031757600080fd5b5061032b610326366004613bd9565b610f15565b6040516001600160a01b039091168152602001610240565b34801561034f57600080fd5b5061028a61035e366004613bb7565b610fc8565b34801561036f57600080fd5b5061026961037e366004613c0e565b611080565b34801561038f57600080fd5b5061026961039e366004613c5f565b611168565b3480156103af57600080fd5b5061028a61138f565b3480156103c457600080fd5b5061028a6103d33660046139aa565b6113a3565b3480156103e457600080fd5b506102346103f3366004613bd9565b60046020526000908152604090205460ff1681565b34801561041457600080fd5b5061028a61147b565b34801561042957600080fd5b5061028a610438366004613c8b565b61155f565b34801561044957600080fd5b506102696104583660046139aa565b600a6020526000908152604090205481565b34801561047657600080fd5b50610269610485366004613c5f565b611a57565b34801561049657600080fd5b5061028a6104a53660046139aa565b611a88565b3480156104b657600080fd5b5061026960065481565b3480156104cc57600080fd5b506007546001600160a01b031661032b565b3480156104ea57600080fd5b506102696104f9366004613cc3565b611b2f565b34801561050a57600080fd5b50610269610519366004613bd9565b60016020526000908152604090205481565b34801561053757600080fd5b5061028a610546366004613d18565b611c77565b34801561055757600080fd5b5061028a610566366004613d5a565b611f92565b34801561057757600080fd5b5061032b610586366004613bd9565b6000602081905290815260409020546001600160a01b031681565b3480156105ad57600080fd5b506102696105bc3660046139aa565b6001600160a01b031660009081526002602052604090205490565b3480156105e357600080fd5b506102696105f2366004613c5f565b612048565b34801561060357600080fd5b5061028a6106123660046139aa565b612118565b34801561062357600080fd5b50610269610632366004613bd9565b61235d565b34801561064357600080fd5b50610234610652366004613bd9565b60036020526000908152604090205460ff1681565b34801561067357600080fd5b5061028a6106823660046139aa565b61240f565b34801561069357600080fd5b506102696106a23660046139aa565b6125a8565b3480156106b357600080fd5b5061032b612639565b3480156106c857600080fd5b506102696106d73660046139aa565b61265c565b3480156106e857600080fd5b5061028a6106f73660046139aa565b612783565b34801561070857600080fd5b5060055461032b906001600160a01b031681565b60006001600160e01b0319821663152a902d60e11b148061074d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b03811660009081526002602052604081205481106107935760405162461bcd60e51b815260040161078a90613d93565b60405180910390fd5b6001600160a01b038216600090815260026020526040902080546107b990600190613def565b815481106107c9576107c9613e02565b90600052602060002001549050919050565b84600061080960017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9613def565b6040805160208101929092526001600160a01b0384169082015260600160405160208183030381529060405280519060200120905060008060001b61084c835490565b14159050806108ab5760405162461bcd60e51b815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074604482015264185c99d95d60da1b606482015260840161078a565b6108bc83630c908cff60e01b6127be565b6108c557600080fd5b6000886001600160a01b031688886040516108e1929190613e18565b6000604051808303816000865af19150503d806000811461091e576040519150601f19603f3d011682016040523d82523d6000602084013e610923565b606091505b505090508061093157600080fd5b6109713087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061284892505050565b50505050505050505050565b6001600160a01b0383166000908152600260209081526040808320805482518185028101850190935280835284938301828280156109da57602002820191906000526020600020905b8154815260200190600101908083116109c6575b5050835193945050508115159050610a045760405162461bcd60e51b815260040161078a90613d93565b60008411610a675760405162461bcd60e51b815260206004820152602a60248201527f5661756c744d616e616765723a20436f756e74206d75737420626520677265616044820152690746572207468616e20360b41b606482015260840161078a565b80610a728587613e28565b1115610ac05760405162461bcd60e51b815260206004820152601b60248201527f5661756c744d616e616765723a20496e76616c69642072616e67650000000000604482015260640161078a565b845b610acc8587613e28565b811015610b8757600080848381518110610ae857610ae8613e02565b6020026020010151815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b0316639e1a4d196040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190613e3b565b610b7d9085613e28565b9350600101610ac2565b5050509392505050565b600080610bb4610bb060016000805160206155ff833981519152613def565b5490565b90506001600160a01b038116610cad57610bcc6128be565b6005546001600160a01b03163314610bf65760405162461bcd60e51b815260040161078a90613e54565b610bff86610753565b60008181526003602052604090205460ff16610c2d5760405162461bcd60e51b815260040161078a90613e8b565b6040516bffffffffffffffffffffffff19606089901b166020820152603481018790526000906054016040516020818303038152906040529050610c728682876128e8565b610c8e5760405162461bcd60e51b815260040161078a90613ecc565b610c99888888612b62565b93505050610ca76001600b55565b50610e5f565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c90610ce290339060009036908790600401613f11565b600060405180830381600087803b158015610cfc57600080fd5b505af1158015610d10573d6000803e3d6000fd5b50505050610d1c6128be565b6005546001600160a01b03163314610d465760405162461bcd60e51b815260040161078a90613e54565b610d4f87610753565b60008181526003602052604090205460ff16610d7d5760405162461bcd60e51b815260040161078a90613e8b565b6040516bffffffffffffffffffffffff1960608a901b166020820152603481018890526000906054016040516020818303038152906040529050610dc28782886128e8565b610dde5760405162461bcd60e51b815260040161078a90613ecc565b610de9898989612b62565b94505050610df76001600b55565b6040516393163a9160e01b81526001600160a01b038316906393163a9190610e2a90339060009036908790600401613f11565b600060405180830381600087803b158015610e4457600080fd5b505af1158015610e58573d6000803e3d6000fd5b5050505050505b949350505050565b60008281526009602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610edc5750604080518082019091526008546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610efb906001600160601b031687613f5b565b610f059190613f72565b91519350909150505b9250929050565b60008181526020819052604081205482906001600160a01b0316610f4b5760405162461bcd60e51b815260040161078a90613f94565b600083815260208181526040918290205482516313aedd4b60e31b815292516001600160a01b0390911692639d76ea589260048083019391928290030181865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190613fcb565b9392505050565b610fd0612f5c565b60008281526020819052604090205482906001600160a01b03166110065760405162461bcd60e51b815260040161078a90613f94565b81158061101257504282115b61106d5760405162461bcd60e51b815260206004820152602660248201527f5661756c744d616e616765723a20496e76616c69642074726164652073746172604482015265742074696d6560d01b606482015260840161078a565b5060009182526001602052604090912055565b60008061109f610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166110d8576110b7612f5c565b6110c086612f89565b91506110cc8286610fc8565b610ca782878686613309565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c9061110d90339060009036908790600401613f11565b600060405180830381600087803b15801561112757600080fd5b505af115801561113b573d6000803e3d6000fd5b50505050611147612f5c565b61115087612f89565b925061115c8387610fc8565b610df783888787613309565b600080611187610bb060016000805160206155ff833981519152613def565b90506001600160a01b03811661122c5761119f6128be565b6005546001600160a01b031633146111c95760405162461bcd60e51b815260040161078a90613e54565b6111d284610753565b60008181526003602052604090205460ff166112005760405162461bcd60e51b815260040161078a90613e8b565b60055461121990869086906001600160a01b0316612b62565b9250506112266001600b55565b5061074d565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c9061126190339060009036908790600401613f11565b600060405180830381600087803b15801561127b57600080fd5b505af115801561128f573d6000803e3d6000fd5b5050505061129b6128be565b6005546001600160a01b031633146112c55760405162461bcd60e51b815260040161078a90613e54565b6112ce85610753565b60008181526003602052604090205460ff166112fc5760405162461bcd60e51b815260040161078a90613e8b565b60055461131590879087906001600160a01b0316612b62565b9350506113226001600b55565b6040516393163a9160e01b81526001600160a01b038316906393163a919061135590339060009036908790600401613f11565b600060405180830381600087803b15801561136f57600080fd5b505af1158015611383573d6000803e3d6000fd5b50505050505092915050565b611397612f5c565b6113a160006135c2565b565b6113bf610bb0600160008051602061561f833981519152613def565b6001600160a01b0316336001600160a01b0316146113ef5760405162461bcd60e51b815260040161078a90613fe8565b6001600160a01b0381166114455760405162461bcd60e51b815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161078a565b61147861147360017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3613def565b829055565b50565b6114a9610bb060017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3613def565b6001600160a01b0316336001600160a01b0316146115095760405162461bcd60e51b815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161078a565b61152a611525600160008051602061561f833981519152613def565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b600061157d610bb060016000805160206155ff833981519152613def565b90506001600160a01b03811661178a576005546001600160a01b031633146115b75760405162461bcd60e51b815260040161078a90613e54565b6115bf6128be565b60008481526020819052604090205484906001600160a01b03166115f55760405162461bcd60e51b815260040161078a90613f94565b600085815260046020526040902054859060ff166116255760405162461bcd60e51b815260040161078a9061402c565b60006116308761235d565b6000888152602081905260409081902054905163f3fef3a360e01b81526001600160a01b03898116600483015260248201899052929350911690819063f3fef3a390604401600060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b50505050866001600160a01b0316816001600160a01b0316639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117139190613fcb565b6001600160a01b0316897fe5df19de43c8c04fd192bc68e484b2593570925fbb6ad8c07ccafbc2aa5c37a18960405161174e91815260200190565b60405180910390a46117608683613def565b6117698961235d565b1461177657611776614070565b505050506117846001600b55565b50505050565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c906117bf90339060009036908790600401613f11565b600060405180830381600087803b1580156117d957600080fd5b505af11580156117ed573d6000803e3d6000fd5b50506005546001600160a01b03163314915061181d90505760405162461bcd60e51b815260040161078a90613e54565b6118256128be565b60008581526020819052604090205485906001600160a01b031661185b5760405162461bcd60e51b815260040161078a90613f94565b600086815260046020526040902054869060ff1661188b5760405162461bcd60e51b815260040161078a9061402c565b60006118968861235d565b6000898152602081905260409081902054905163f3fef3a360e01b81526001600160a01b038a81166004830152602482018a9052929350911690819063f3fef3a390604401600060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b50505050876001600160a01b0316816001600160a01b0316639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613fcb565b6001600160a01b03168a7fe5df19de43c8c04fd192bc68e484b2593570925fbb6ad8c07ccafbc2aa5c37a18a6040516119b491815260200190565b60405180910390a46119c68783613def565b6119cf8a61235d565b146119dc576119dc614070565b505050506119ea6001600b55565b6001600160a01b0382166393163a91335b600036856040518563ffffffff1660e01b8152600401611a1e9493929190613f11565b600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050505050505050565b60026020528160005260406000208181548110611a7357600080fd5b90600052602060002001600091509150505481565b611aa4610bb0600160008051602061561f833981519152613def565b6001600160a01b0316336001600160a01b031614611ad45760405162461bcd60e51b815260040161078a90613fe8565b611af061147360016000805160206155ff833981519152613def565b6040516001600160a01b03821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b600080611b4e610bb060016000805160206155ff833981519152613def565b90506001600160a01b038116611b8357611b66612f5c565b611b6f85612f89565b9150611b7d82868686613309565b50610fc1565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c90611bb890339060009036908790600401613f11565b600060405180830381600087803b158015611bd257600080fd5b505af1158015611be6573d6000803e3d6000fd5b50505050611bf2612f5c565b611bfb86612f89565b9250611c0983878787613309565b6040516393163a9160e01b81526001600160a01b038316906393163a9190611c3c90339060009036908790600401613f11565b600060405180830381600087803b158015611c5657600080fd5b505af1158015611c6a573d6000803e3d6000fd5b5050505050509392505050565b6000611c95610bb060016000805160206155ff833981519152613def565b90506001600160a01b038116611de057611cad612f5c565b60008481526020819052604090205484906001600160a01b0316611ce35760405162461bcd60e51b815260040161078a90613f94565b60008581526003602090815260408083205460049092529091205460ff918216151586151514159116151584151514158180611d1c5750805b611d625760405162461bcd60e51b81526020600482015260176024820152765661756c744d616e616765723a204e6f204368616e676560481b604482015260640161078a565b8115611d83576000878152600360205260409020805460ff19168715151790555b8015611da4576000878152600460205260409020805460ff19168615151790555b841515861515887f6e604a8d41f83685139fa8e019c18f7d4e330db9fce7f311cdf84508b8ddab2560405160405180910390a450505050505050565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c90611e1590339060009036908790600401613f11565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b50505050611e4f612f5c565b60008581526020819052604090205485906001600160a01b0316611e855760405162461bcd60e51b815260040161078a90613f94565b60008681526003602090815260408083205460049092529091205460ff918216151587151514159116151585151514158180611ebe5750805b611f045760405162461bcd60e51b81526020600482015260176024820152765661756c744d616e616765723a204e6f204368616e676560481b604482015260640161078a565b8115611f25576000888152600360205260409020805460ff19168815151790555b8015611f46576000888152600460205260409020805460ff19168715151790555b851515871515897f6e604a8d41f83685139fa8e019c18f7d4e330db9fce7f311cdf84508b8ddab2560405160405180910390a4505050816001600160a01b03166393163a916119fb3390565b611fae610bb0600160008051602061561f833981519152613def565b6001600160a01b0316336001600160a01b031614611fde5760405162461bcd60e51b815260040161078a90613fe8565b600061200b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9613def565b6040805160208101929092526001600160a01b03851690820152606001604051602081830303815290604052805190602001209050818155505050565b600080612067610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166120945761207f612f5c565b61208884612f89565b91506112268284610fc8565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c906120c990339060009036908790600401613f11565b600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050612103612f5c565b61210c85612f89565b92506113228385610fc8565b6000612136610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166121ef5761214e612f5c565b816001600160a01b0381166121755760405162461bcd60e51b815260040161078a90614086565b826000816001600160a01b03163b116121a05760405162461bcd60e51b815260040161078a906140cc565b6005546001600160a01b0316156121c95760405162461bcd60e51b815260040161078a90614103565b5050600580546001600160a01b0319166001600160a01b03939093169290921790915550565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c9061222490339060009036908790600401613f11565b600060405180830381600087803b15801561223e57600080fd5b505af1158015612252573d6000803e3d6000fd5b5050505061225e612f5c565b826001600160a01b0381166122855760405162461bcd60e51b815260040161078a90614086565b836000816001600160a01b03163b116122b05760405162461bcd60e51b815260040161078a906140cc565b6005546001600160a01b0316156122d95760405162461bcd60e51b815260040161078a90614103565b5050600580546001600160a01b0319166001600160a01b038581169190911790915582166393163a9133600036856040518563ffffffff1660e01b81526004016123269493929190613f11565b600060405180830381600087803b15801561234057600080fd5b505af1158015612354573d6000803e3d6000fd5b50505050505050565b60008181526020819052604081205482906001600160a01b03166123935760405162461bcd60e51b815260040161078a90613f94565b60008381526020818152604091829020548251639e1a4d1960e01b815292516001600160a01b0390911692639e1a4d199260048083019391928290030181865afa1580156123e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190613e3b565b50919050565b600061242d610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166124bf57612445612f5c565b816001600160a01b03811661246c5760405162461bcd60e51b815260040161078a90614086565b826000816001600160a01b03163b116124975760405162461bcd60e51b815260040161078a906140cc565b6005546001600160a01b03166121c95760405162461bcd60e51b815260040161078a90614144565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c906124f490339060009036908790600401613f11565b600060405180830381600087803b15801561250e57600080fd5b505af1158015612522573d6000803e3d6000fd5b5050505061252e612f5c565b826001600160a01b0381166125555760405162461bcd60e51b815260040161078a90614086565b836000816001600160a01b03163b116125805760405162461bcd60e51b815260040161078a906140cc565b6005546001600160a01b03166122d95760405162461bcd60e51b815260040161078a90614144565b60008060006125b684610753565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b0316639e1a4d196040518163ffffffff1660e01b8152600401602060405180830381865afa158015612615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190613e3b565b6000612657610bb0600160008051602061561f833981519152613def565b905090565b60008061267b610bb060016000805160206155ff833981519152613def565b90506001600160a01b03811661269c57612693612f5c565b610fc183612f89565b604051631bf8659f60e21b815234906001600160a01b03831690636fe1967c906126d190339060009036908790600401613f11565b600060405180830381600087803b1580156126eb57600080fd5b505af11580156126ff573d6000803e3d6000fd5b5050505061270b612f5c565b61271484612f89565b6040516393163a9160e01b81529093506001600160a01b038316906393163a919061274a90339060009036908790600401613f11565b600060405180830381600087803b15801561276457600080fd5b505af1158015612778573d6000803e3d6000fd5b505050505050919050565b61278b612f5c565b6001600160a01b0381166127b557604051631e4fbdf760e01b81526000600482015260240161078a565b611478816135c2565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015612831575060208210155b801561283d5750600081115b979650505050505050565b6060600080846001600160a01b03168460405161286591906141a9565b600060405180830381855af49150503d80600081146128a0576040519150601f19603f3d011682016040523d82523d6000602084013e6128a5565b606091505b50915091506128b5858383613614565b95945050505050565b6002600b54036128e157604051633ee5aeb560e01b815260040160405180910390fd5b6002600b55565b6000638c34adb760e01b8161290f610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166129e3576001600160a01b0386166000908152600a6020908152604080832054905190929161299b91612952918a918691016141c5565b604051602081830303815290604052805190602001207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b905060006129a98288613670565b90506129b6836001613e28565b6001600160a01b03808b166000818152600a602052604090209290925591909116149450612b5a92505050565b60003490506001600160a01b038216636fe1967c3385604051602001612a0991906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b8152600401612a37939291906141fc565b600060405180830381600087803b158015612a5157600080fd5b505af1158015612a65573d6000803e3d6000fd5b5050506001600160a01b0388166000908152600a60209081526040808320549051909350612a9b91612952918b918691016141c5565b90506000612aa98289613670565b9050612ab6836001613e28565b6001600160a01b038b81166000818152600a6020526040902092909255918216149650841691506393163a919050335b85604051602001612af791906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b8152600401612b25939291906141fc565b600060405180830381600087803b158015612b3f57600080fd5b505af1158015612b53573d6000803e3d6000fd5b5050505050505b509392505050565b6000639423892960e01b81612b89610bb060016000805160206155ff833981519152613def565b90506001600160a01b038116612d3057612ba286610753565b92506000612baf8461235d565b600085815260208181526040918290205482516313aedd4b60e31b815292519394506001600160a01b0316928392639d76ea589260048083019391928290030181865afa158015612c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c289190613fcb565b6001600160a01b0316886001600160a01b031614612c4857612c48614070565b6040516323b872dd60e01b81526001600160a01b0387811660048301528281166024830152604482018990528916906323b872dd906064016020604051808303816000875af1158015612c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc39190614246565b50876001600160a01b0316857f1599c0fcf897af5babc2bfcf707f5dc050f841b044d97c3251ecec35b9abf80b89604051612d0091815260200190565b60405180910390a3612d128783613e28565b612d1b8661235d565b14612d2857612d28614070565b505050612b5a565b60003490506001600160a01b038216636fe1967c3385604051602001612d5691906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b8152600401612d84939291906141fc565b600060405180830381600087803b158015612d9e57600080fd5b505af1158015612db2573d6000803e3d6000fd5b50505050612dbf87610753565b93506000612dcc8561235d565b600086815260208181526040918290205482516313aedd4b60e31b815292519394506001600160a01b0316928392639d76ea589260048083019391928290030181865afa158015612e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e459190613fcb565b6001600160a01b0316896001600160a01b031614612e6557612e65614070565b6040516323b872dd60e01b81526001600160a01b0388811660048301528281166024830152604482018a90528a16906323b872dd906064016020604051808303816000875af1158015612ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee09190614246565b50886001600160a01b0316867f1599c0fcf897af5babc2bfcf707f5dc050f841b044d97c3251ecec35b9abf80b8a604051612f1d91815260200190565b60405180910390a3612f2f8883613e28565b612f388761235d565b14612f4557612f45614070565b50506001600160a01b0382166393163a9133612ae6565b6007546001600160a01b031633146113a15760405163118cdaa760e01b815233600482015260240161078a565b600063cd9f019f60e01b81612fb0610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166130df57836001600160a01b038116612fe75760405162461bcd60e51b815260040161078a90614086565b600085604051612ff69061395e565b6001600160a01b039091168152602001604051809103906000f080158015613022573d6000803e3d6000fd5b5060068054919250600061303583614263565b9091555060008181526020818152604080832080546001600160a01b0319166001600160a01b03878116919091179091558a16808452600283528184208054600181810183559186528486200186905585855260038452828520805460ff1990811683179091556004909452828520805490941617909255519297509187917f43370690aee3db5f9a62bea542bb8a6eb1898630816b6f76d49dd3b28d7f1e4891a3505050612409565b60003490506001600160a01b038216636fe1967c338560405160200161310591906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b8152600401613133939291906141fc565b600060405180830381600087803b15801561314d57600080fd5b505af1158015613161573d6000803e3d6000fd5b50879250506001600160a01b038216905061318e5760405162461bcd60e51b815260040161078a90614086565b60008660405161319d9061395e565b6001600160a01b039091168152602001604051809103906000f0801580156131c9573d6000803e3d6000fd5b506006805491925060006131dc83614263565b9091555060008181526020818152604080832080546001600160a01b0319166001600160a01b03878116919091179091558b16808452600283528184208054600181810183559186528486200186905585855260038452828520805460ff1990811683179091556004909452828520805490941617909255519298509188917f43370690aee3db5f9a62bea542bb8a6eb1898630816b6f76d49dd3b28d7f1e4891a350506001600160a01b0382166393163a9133856040516020016132a191906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b81526004016132cf939291906141fc565b600060405180830381600087803b1580156132e957600080fd5b505af11580156132fd573d6000803e3d6000fd5b50505050505050919050565b6346b000b760e01b600061332f610bb060016000805160206155ff833981519152613def565b90506001600160a01b0381166133fa57836001600160a01b0381166133665760405162461bcd60e51b815260040161078a90614086565b6127106001600160601b03851611156133915760405162461bcd60e51b815260040161078a9061427c565b61339c87868661369a565b836001600160601b0316856001600160a01b0316876001600160a01b03167f355ba69100b46aeacf777e398ee4a144e2de12625615bca95662e134f81d2f008a6040516133eb91815260200190565b60405180910390a450506135bb565b60003490506001600160a01b038216636fe1967c338560405160200161342091906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b815260040161344e939291906141fc565b600060405180830381600087803b15801561346857600080fd5b505af115801561347c573d6000803e3d6000fd5b50879250506001600160a01b03821690506134a95760405162461bcd60e51b815260040161078a90614086565b6127106001600160601b03861611156134d45760405162461bcd60e51b815260040161078a9061427c565b6134df88878761369a565b846001600160601b0316866001600160a01b0316886001600160a01b03167f355ba69100b46aeacf777e398ee4a144e2de12625615bca95662e134f81d2f008b60405161352e91815260200190565b60405180910390a4506001600160a01b0382166393163a91338560405160200161355891906141e7565b604051602081830303815290604052846040518463ffffffff1660e01b8152600401613586939291906141fc565b600060405180830381600087803b1580156135a057600080fd5b505af11580156135b4573d6000803e3d6000fd5b5050505050505b5050505050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606082613629576136248261375c565b610fc1565b815115801561364057506001600160a01b0384163b155b1561366957604051639996b31560e01b81526001600160a01b038516600482015260240161078a565b5080610fc1565b6000806000806136808686613785565b92509250925061369082826137d2565b5090949350505050565b6127106001600160601b0382168110156136e05760405163dfd1fc1b60e01b8152600481018590526001600160601b03831660248201526044810182905260640161078a565b6001600160a01b03831661371157604051634b4f842960e11b8152600481018590526000602482015260440161078a565b506040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600990529190942093519051909116600160a01b029116179055565b80511561376c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600080600083516041036137bf5760208401516040850151606086015160001a6137b18882858561388f565b9550955095505050506137cb565b50508151600091506002905b9250925092565b60008260038111156137e6576137e66142ca565b036137ef575050565b6001826003811115613803576138036142ca565b036138215760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613835576138356142ca565b036138565760405163fce698f760e01b81526004810182905260240161078a565b600382600381111561386a5761386a6142ca565b0361388b576040516335e2f38360e21b81526004810182905260240161078a565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156138ca5750600091506003905082613954565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561391e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661394a57506000925060019150829050613954565b9250600091508190505b9450945094915050565b61131e806142e183390190565b60006020828403121561397d57600080fd5b81356001600160e01b031981168114610fc157600080fd5b6001600160a01b038116811461147857600080fd5b6000602082840312156139bc57600080fd5b8135610fc181613995565b60008083601f8401126139d957600080fd5b50813567ffffffffffffffff8111156139f157600080fd5b602083019150836020828501011115610f0e57600080fd5b600080600080600060608688031215613a2157600080fd5b8535613a2c81613995565b9450602086013567ffffffffffffffff80821115613a4957600080fd5b613a5589838a016139c7565b90965094506040880135915080821115613a6e57600080fd5b50613a7b888289016139c7565b969995985093965092949392505050565b600080600060608486031215613aa157600080fd5b8335613aac81613995565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215613aed57600080fd5b8435613af881613995565b9350602085013592506040850135613b0f81613995565b9150606085013567ffffffffffffffff80821115613b2c57600080fd5b818701915087601f830112613b4057600080fd5b813581811115613b5257613b52613ac1565b604051601f8201601f19908116603f01168101908382118183101715613b7a57613b7a613ac1565b816040528281528a6020848701011115613b9357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215613bca57600080fd5b50508035926020909101359150565b600060208284031215613beb57600080fd5b5035919050565b80356001600160601b0381168114613c0957600080fd5b919050565b60008060008060808587031215613c2457600080fd5b8435613c2f81613995565b9350602085013592506040850135613c4681613995565b9150613c5460608601613bf2565b905092959194509250565b60008060408385031215613c7257600080fd5b8235613c7d81613995565b946020939093013593505050565b600080600060608486031215613ca057600080fd5b833592506020840135613cb281613995565b929592945050506040919091013590565b600080600060608486031215613cd857600080fd5b8335613ce381613995565b92506020840135613cf381613995565b9150613d0160408501613bf2565b90509250925092565b801515811461147857600080fd5b600080600060608486031215613d2d57600080fd5b833592506020840135613d3f81613d0a565b91506040840135613d4f81613d0a565b809150509250925092565b60008060408385031215613d6d57600080fd5b8235613d7881613995565b91506020830135613d8881613d0a565b809150509250929050565b60208082526026908201527f5661756c744d616e616765723a204e6f207661756c747320666f722074686973604082015265103a37b5b2b760d11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074d5761074d613dd9565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b8082018082111561074d5761074d613dd9565b600060208284031215613e4d57600080fd5b5051919050565b60208082526019908201527f5661756c744d616e616765723a204e6f74205472757374656500000000000000604082015260600190565b60208082526021908201527f5661756c744d616e616765723a204465706f73697473206172652066726f7a656040820152603760f91b606082015260800190565b60208082526025908201527f5661756c744d616e616765723a204f6e6c79206f726967696e2063616e2064656040820152641c1bdcda5d60da1b606082015260800190565b6001600160a01b038516815260606020820181905281018390528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b808202811582820484141761074d5761074d613dd9565b600082613f8f57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252601d908201527f5661756c744d616e616765723a205661756c74206e6f7420666f756e64000000604082015260600190565b600060208284031215613fdd57600080fd5b8151610fc181613995565b60208082526024908201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c20616040820152633236b4b760e11b606082015260800190565b60208082526024908201527f5661756c744d616e616765723a205769746864726177616c732061726520667260408201526337bd32b760e11b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b60208082526026908201527f5661756c744d616e616765723a205a65726f2061646472657373206e6f7420616040820152651b1b1bddd95960d21b606082015260800190565b6020808252601d908201527f5661756c744d616e616765723a20454f41206e6f7420616c6c6f776564000000604082015260600190565b60208082526021908201527f5661756c744d616e616765723a205472757374656520616c72656164792073656040820152601d60fa1b606082015260800190565b60208082526021908201527f5661756c744d616e616765723a2054727573746565206e6f74207365742079656040820152601d60fa1b606082015260800190565b60005b838110156141a0578181015183820152602001614188565b50506000910152565b600082516141bb818460208701614185565b9190910192915050565b600083516141d7818460208801614185565b9190910191825250602001919050565b6001600160e01b031991909116815260040190565b60018060a01b03841681526060602082015260008351806060840152614229816080850160208801614185565b604083019390935250601f91909101601f19160160800192915050565b60006020828403121561425857600080fd5b8151610fc181613d0a565b60006001820161427557614275613dd9565b5060010190565b6020808252602e908201527f5661756c744d616e616765723a20526f79616c74792063616e6e6f742062652060408201526d6d6f7265207468616e203130302560901b606082015260800190565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b5060405161131e38038061131e83398101604081905261002f916100c8565b60003361006561006060017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626100f8565b839055565b61009861009360017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366100f8565b829055565b5050600080546001600160a01b039092166001600160a01b0319928316179055600180549091163317905561011f565b6000602082840312156100da57600080fd5b81516001600160a01b03811681146100f157600080fd5b9392505050565b8181038181111561011957634e487b7160e01b600052601160045260246000fd5b92915050565b6111f08061012e6000396000f3fe6080604052600436106100915760003560e01c80639d76ea58116100595780639d76ea581461013d5780639e1a4d191461015d578063b7f9a74814610180578063f05c8582146101a0578063f3fef3a3146101b557600080fd5b80631a8828f414610096578063734b7198146100ab5780637c65c38b146100cb5780638a4adf24146100e05780638c36d02d1461011d575b600080fd5b6100a96100a4366004610f5a565b6101d5565b005b3480156100b757600080fd5b506100a96100c6366004610fdb565b61037c565b3480156100d757600080fd5b506100a9610458565b3480156100ec57600080fd5b50600154610100906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012957600080fd5b506100a9610138366004610fdb565b61053c565b34801561014957600080fd5b50600054610100906001600160a01b031681565b34801561016957600080fd5b506101726105f5565b604051908152602001610114565b34801561018c57600080fd5b506100a961019b366004611004565b610667565b3480156101ac57600080fd5b5061010061071d565b3480156101c157600080fd5b506100a96101d036600461103b565b61073b565b84600061020360017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9611065565b6040805160208101929092526001600160a01b0384169082015260600160405160208183030381529060405280519060200120905060008060001b610246835490565b14159050806102aa5760405162461bcd60e51b815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074604482015264185c99d95d60da1b60648201526084015b60405180910390fd5b6102bb83630c908cff60e01b61081a565b6102c457600080fd5b6000886001600160a01b031688886040516102e0929190611086565b6000604051808303816000865af19150503d806000811461031d576040519150601f19603f3d011682016040523d82523d6000602084013e610322565b606091505b505090508061033057600080fd5b6103703087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108a692505050565b50505050505050505050565b61039c610398600160008051602061119b833981519152611065565b5490565b6001600160a01b0316336001600160a01b0316146103cc5760405162461bcd60e51b81526004016102a190611096565b6001600160a01b0381166104225760405162461bcd60e51b815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f2061646472657373000060448201526064016102a1565b61045561045060017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611065565b829055565b50565b61048661039860017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611065565b6001600160a01b0316336001600160a01b0316146104e65760405162461bcd60e51b815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e0060448201526064016102a1565b610507610502600160008051602061119b833981519152611065565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b610558610398600160008051602061119b833981519152611065565b6001600160a01b0316336001600160a01b0316146105885760405162461bcd60e51b81526004016102a190611096565b6105b661045060017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662611065565b6040516001600160a01b03821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561063e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066291906110da565b905090565b610683610398600160008051602061119b833981519152611065565b6001600160a01b0316336001600160a01b0316146106b35760405162461bcd60e51b81526004016102a190611096565b60006106e060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9611065565b6040805160208101929092526001600160a01b03851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610662610398600160008051602061119b833981519152611065565b6001546001600160a01b031633146107a85760405162461bcd60e51b815260206004820152602a60248201527f5661756c743a204f6e6c79206d616e616765722063616e2063616c6c207468696044820152693990333ab731ba34b7b760b11b60648201526084016102a1565b806107b16105f5565b10156107ff5760405162461bcd60e51b815260206004820152601960248201527f5661756c743a204e6f7420656e6f7567682062616c616e63650000000000000060448201526064016102a1565b600054610816906001600160a01b0316838361091c565b5050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d9150600051905082801561088d575060208210155b80156108995750600081115b9450505050505b92915050565b6060600080846001600160a01b0316846040516108c39190611117565b600060405180830381855af49150503d80600081146108fe576040519150601f19603f3d011682016040523d82523d6000602084013e610903565b606091505b5091509150610913858383610d31565b95945050505050565b633844b70760e01b600061095461039860017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662611065565b90506001600160a01b038116610ac7576040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa1580156109ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cf91906110da565b604080518681526001600160a01b03888116602083015289168183015290519192507fe4d818e6f992efbd60db553f3edce819a199baec79a784b95c89bc8ee86f2584919081900360600190a1610a306001600160a01b0387168686610d90565b610a3a8482611065565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa291906110da565b14610ac057604051632633d48f60e21b815260040160405180910390fd5b5050610d2b565b604080516001600160e01b031984166020820152815160048183030181526024820192839052631bf8659f60e21b90925234916001600160a01b03841691636fe1967c91610b1c913391908690602801611133565b600060405180830381600087803b158015610b3657600080fd5b505af1158015610b4a573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03891691506370a0823190602401602060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb991906110da565b604080518781526001600160a01b0389811660208301528a168183015290519192507fe4d818e6f992efbd60db553f3edce819a199baec79a784b95c89bc8ee86f2584919081900360600190a1610c1a6001600160a01b0388168787610d90565b610c248582611065565b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c91906110da565b14610caa57604051632633d48f60e21b815260040160405180910390fd5b50604080516001600160e01b0319851660208201528151600481830301815260248201928390526393163a9160e01b9092526001600160a01b038416916393163a9191610cfd9133918690602801611133565b600060405180830381600087803b158015610d1757600080fd5b505af1158015610370573d6000803e3d6000fd5b50505050565b606082610d4657610d4182610de7565b610d89565b8151158015610d5d57506001600160a01b0384163b155b15610d8657604051639996b31560e01b81526001600160a01b03851660048201526024016102a1565b50805b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610de2908490610e10565b505050565b805115610df75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000610e256001600160a01b03841683610e73565b90508051600014158015610e4a575080806020019051810190610e48919061117d565b155b15610de257604051635274afe760e01b81526001600160a01b03841660048201526024016102a1565b6060610d898383600084600080856001600160a01b03168486604051610e999190611117565b60006040518083038185875af1925050503d8060008114610ed6576040519150601f19603f3d011682016040523d82523d6000602084013e610edb565b606091505b5091509150610eeb868383610d31565b9695505050505050565b80356001600160a01b0381168114610f0c57600080fd5b919050565b60008083601f840112610f2357600080fd5b50813567ffffffffffffffff811115610f3b57600080fd5b602083019150836020828501011115610f5357600080fd5b9250929050565b600080600080600060608688031215610f7257600080fd5b610f7b86610ef5565b9450602086013567ffffffffffffffff80821115610f9857600080fd5b610fa489838a01610f11565b90965094506040880135915080821115610fbd57600080fd5b50610fca88828901610f11565b969995985093965092949392505050565b600060208284031215610fed57600080fd5b610d8982610ef5565b801515811461045557600080fd5b6000806040838503121561101757600080fd5b61102083610ef5565b9150602083013561103081610ff6565b809150509250929050565b6000806040838503121561104e57600080fd5b61105783610ef5565b946020939093013593505050565b818103818111156108a057634e487b7160e01b600052601160045260246000fd5b8183823760009101908152919050565b60208082526024908201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c20616040820152633236b4b760e11b606082015260800190565b6000602082840312156110ec57600080fd5b5051919050565b60005b8381101561110e5781810151838201526020016110f6565b50506000910152565b600082516111298184602087016110f3565b9190910192915050565b60018060a01b038416815260606020820152600083518060608401526111608160808501602088016110f3565b604083019390935250601f91909101601f19160160800192915050565b60006020828403121561118f57600080fd5b8151610d8981610ff656fe29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136a26469706673582212206dc6a8fe851ff3db3d114a8d482691de6a953ae3e77d826ba0cd37d39b04022064736f6c634300081900335dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f66229982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136a264697066735822122063178fa2e43f3c4edc951752fbfe18af6cabf3dff24227c1591395721f808b1464736f6c63430008190033