0x6080604052600436106102b25760003560e01c80635d098b3811610175578063a69df4b5116100dc578063dd46706411610095578063ea2f0b371161006f578063ea2f0b3714610861578063ec28438a14610881578063f2fde38b146108a1578063ffc78635146108c157600080fd5b8063dd467064146107db578063dd62ed3e146107fb578063ded5b7ed1461084157600080fd5b8063a69df4b51461073b578063a9059cbb14610750578063b6c5232414610770578063c0b0fda214610785578063c49b9a801461079b578063cea26958146107bb57600080fd5b80637d1db4a51161012e5780637d1db4a51461067957806388f820201461068f5780638da5cb5b146106c85780638ee88c53146106e657806395d89b4114610706578063a457c2d71461071b57600080fd5b80635d098b38146105d95780636bc87c3a146105f957806370a082311461060f578063715018a61461062f578063741af87f1461064457806375f0a8741461065957600080fd5b80633950935111610219578063457c194c116101d2578063457c194c1461050a57806349bd5a5e1461052a5780634a74bb021461054a5780635134f6ab1461056b57806352390c02146105805780635342acb4146105a057600080fd5b806339509351146104545780633b124fe7146104745780633bd5d1731461048a57806341cb87fc146104aa578063437823ec146104ca5780634549b039146104ea57600080fd5b806318160ddd1161026b57806318160ddd146103a757806322976e0d146103bc57806323b872dd146103d25780632d838119146103f2578063313ce567146104125780633685d4191461043457600080fd5b8063061c82d0146102be57806306fdde03146102e057806307efbfdc1461030b578063095ea7b31461032057806313114a9d146103505780631694505e1461036f57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d9366004612a23565b6108d6565b005b3480156102ec57600080fd5b506102f561090e565b6040516103029190612a3c565b60405180910390f35b34801561031757600080fd5b506102de6109a0565b34801561032c57600080fd5b5061034061033b366004612aa9565b6109f1565b6040519015158152602001610302565b34801561035c57600080fd5b50600b545b604051908152602001610302565b34801561037b57600080fd5b5060195461038f906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b3480156103b357600080fd5b50600954610361565b3480156103c857600080fd5b5061036160155481565b3480156103de57600080fd5b506103406103ed366004612ad5565b610a08565b3480156103fe57600080fd5b5061036161040d366004612a23565b610a71565b34801561041e57600080fd5b50600e5460405160ff9091168152602001610302565b34801561044057600080fd5b506102de61044f366004612b16565b610af5565b34801561046057600080fd5b5061034061046f366004612aa9565b610cac565b34801561048057600080fd5b50610361600f5481565b34801561049657600080fd5b506102de6104a5366004612a23565b610ce2565b3480156104b657600080fd5b506102de6104c5366004612b16565b610dcc565b3480156104d657600080fd5b506102de6104e5366004612b16565b610f9e565b3480156104f657600080fd5b50610361610505366004612b48565b610fec565b34801561051657600080fd5b506102de610525366004612a23565b611079565b34801561053657600080fd5b50601a5461038f906001600160a01b031681565b34801561055657600080fd5b50601a5461034090600160a81b900460ff1681565b34801561057757600080fd5b506102de6110a8565b34801561058c57600080fd5b506102de61059b366004612b16565b6110fa565b3480156105ac57600080fd5b506103406105bb366004612b16565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105e557600080fd5b506102de6105f4366004612b16565b6112c5565b34801561060557600080fd5b5061036160115481565b34801561061b57600080fd5b5061036161062a366004612b16565b611311565b34801561063b57600080fd5b506102de611370565b34801561065057600080fd5b506102de6113d2565b34801561066557600080fd5b5060165461038f906001600160a01b031681565b34801561068557600080fd5b5061036160185481565b34801561069b57600080fd5b506103406106aa366004612b16565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106d457600080fd5b506000546001600160a01b031661038f565b3480156106f257600080fd5b506102de610701366004612a23565b611469565b34801561071257600080fd5b506102f5611498565b34801561072757600080fd5b50610340610736366004612aa9565b6114a7565b34801561074757600080fd5b506102de6114f6565b34801561075c57600080fd5b5061034061076b366004612aa9565b6115fc565b34801561077c57600080fd5b50600254610361565b34801561079157600080fd5b5061036160135481565b3480156107a757600080fd5b506102de6107b6366004612b74565b611609565b3480156107c757600080fd5b506102de6107d6366004612a23565b61168b565b3480156107e757600080fd5b506102de6107f6366004612a23565b6116ba565b34801561080757600080fd5b50610361610816366004612b8f565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561084d57600080fd5b506102de61085c366004612a23565b61173f565b34801561086d57600080fd5b506102de61087c366004612b16565b61176e565b34801561088d57600080fd5b506102de61089c366004612a23565b6117b9565b3480156108ad57600080fd5b506102de6108bc366004612b16565b6117f7565b3480156108cd57600080fd5b506102de6118cf565b6000546001600160a01b031633146109095760405162461bcd60e51b815260040161090090612bc8565b60405180910390fd5b600f55565b6060600c805461091d90612bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461094990612bfd565b80156109965780601f1061096b57610100808354040283529160200191610996565b820191906000526020600020905b81548152906001019060200180831161097957829003601f168201915b5050505050905090565b6000546001600160a01b031633146109ca5760405162461bcd60e51b815260040161090090612bc8565b6109d46001611609565b6003600f819055601155600460155567016345785d8a0000601855565b60006109fe338484611965565b5060015b92915050565b6000610a15848484611a89565b610a678433610a6285604051806060016040528060288152602001612dc2602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611c63565b611965565b5060019392505050565b6000600a54821115610ad85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610900565b6000610ae2611c9d565b9050610aee8382611cc0565b9392505050565b6000546001600160a01b03163314610b1f5760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b03811660009081526007602052604090205460ff16610b875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610900565b60005b600854811015610ca857816001600160a01b031660088281548110610bb157610bb1612c38565b6000918252602090912001546001600160a01b03161415610c965760088054610bdc90600190612c64565b81548110610bec57610bec612c38565b600091825260209091200154600880546001600160a01b039092169183908110610c1857610c18612c38565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610c7057610c70612c7b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ca081612c91565b915050610b8a565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916109fe918590610a629086611d02565b3360008181526007602052604090205460ff1615610d575760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610900565b6000610d6283611d61565b505050506001600160a01b038416600090815260036020526040902054919250610d8e91905082611db0565b6001600160a01b038316600090815260036020526040902055600a54610db49082611db0565b600a55600b54610dc49084611d02565b600b55505050565b6000546001600160a01b03163314610df65760405162461bcd60e51b815260040161090090612bc8565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3457600080fd5b505afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c9190612cac565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec9190612cac565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c9190612cac565b601a80546001600160a01b039283166001600160a01b0319918216179091556019805493909216921691909117905550565b6000546001600160a01b03163314610fc85760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006009548311156110405760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610900565b8161105f57600061105084611d61565b50939550610a02945050505050565b600061106a84611d61565b50929550610a02945050505050565b6000546001600160a01b031633146110a35760405162461bcd60e51b815260040161090090612bc8565b601555565b6000546001600160a01b031633146110d25760405162461bcd60e51b815260040161090090612bc8565b6110dc6000611609565b6000600f8190556011819055601555683635c9adc5dea00000601855565b6000546001600160a01b031633146111245760405162461bcd60e51b815260040161090090612bc8565b7310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b038216141561119c5760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c7564652050616e63616b6520726f757465604482015261391760f11b6064820152608401610900565b6001600160a01b03811660009081526007602052604090205460ff16156112055760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610900565b6001600160a01b0381166000908152600360205260409020541561125f576001600160a01b03811660009081526003602052604090205461124590610a71565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146112ef5760405162461bcd60e51b815260040161090090612bc8565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561134e57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610a0290610a71565b6000546001600160a01b0316331461139a5760405162461bcd60e51b815260040161090090612bc8565b600080546040516001600160a01b0390911690600080516020612dea833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113fc5760405162461bcd60e51b815260040161090090612bc8565b6000600f8190556010819055601181905560128190556013819055601481905560158190556017819055601a805460ff60a01b191690556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906020015b60405180910390a1565b6000546001600160a01b031633146114935760405162461bcd60e51b815260040161090090612bc8565b601155565b6060600d805461091d90612bfd565b60006109fe3384610a6285604051806060016040528060258152602001612e0a602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611c63565b6001546001600160a01b0316331461155c5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610900565b60025442116115ad5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610900565b600154600080546040516001600160a01b039384169390911691600080516020612dea83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60006109fe338484611a89565b6000546001600160a01b031633146116335760405162461bcd60e51b815260040161090090612bc8565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061168090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146116b55760405162461bcd60e51b815260040161090090612bc8565b601355565b6000546001600160a01b031633146116e45760405162461bcd60e51b815260040161090090612bc8565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556117138142612cc9565b600255600080546040516001600160a01b0390911690600080516020612dea833981519152908390a350565b6000546001600160a01b031633146117695760405162461bcd60e51b815260040161090090612bc8565b601b55565b6000546001600160a01b031633146117985760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146117e35760405162461bcd60e51b815260040161090090612bc8565b6117f181633b9aca00612ce1565b60185550565b6000546001600160a01b031633146118215760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b0381166118865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610900565b600080546040516001600160a01b0380851693921691600080516020612dea83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f95760405162461bcd60e51b815260040161090090612bc8565b6003600f819055601081905560118190556012819055600060135560145560046015819055601755601a805460ff60a01b1916600160a01b179055604051600181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200161145f565b6001600160a01b0383166119c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610900565b6001600160a01b038216611a285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610900565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611aed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610900565b60008111611b4f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610900565b6000546001600160a01b03848116911614801590611b7b57506000546001600160a01b03838116911614155b15611be357601854811115611be35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610900565b6000611bee30611311565b601b5490915081108015908190611c0f5750601a54600160a01b900460ff16155b8015611c295750601a546001600160a01b03868116911614155b8015611c3e5750601a54600160a81b900460ff165b15611c5157601b549150611c5182611df2565b611c5c858585611e99565b5050505050565b60008184841115611c875760405162461bcd60e51b81526004016109009190612a3c565b506000611c948486612c64565b95945050505050565b6000806000611caa61215b565b9092509050611cb98282611cc0565b9250505090565b6000610aee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122dd565b600080611d0f8385612cc9565b905083811015610aee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610900565b6000806000806000806000806000611d788a61230b565b9250925092506000806000611d968d8686611d91611c9d565b612347565b919f909e50909c50959a5093985091965092945050505050565b6000610aee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c63565b601a805460ff60a01b1916600160a01b1790556000611e12826002611cc0565b90506000611e208383611db0565b905047611e2c83612397565b6000611e384783611db0565b9050611e448382612500565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601a805460ff60a01b19169055505050565b6001600160a01b03831660009081526006602052604090205460ff1680611ed857506001600160a01b03821660009081526006602052604090205460ff165b15611ee557611ee56125dd565b6000611f076064611f016013548561263990919063ffffffff16565b90611cc0565b90506000611f256064611f016015548661263990919063ffffffff16565b6001600160a01b03861660009081526007602052604090205490915060ff168015611f6957506001600160a01b03841660009081526007602052604090205460ff16155b15611f9157611f8c8585611f8784611f818888611db0565b90611db0565b6126b8565b6120be565b6001600160a01b03851660009081526007602052604090205460ff16158015611fd257506001600160a01b03841660009081526007602052604090205460ff165b15611fef57611f8c8585611fea84611f818888611db0565b6127de565b6001600160a01b03851660009081526007602052604090205460ff1615801561203157506001600160a01b03841660009081526007602052604090205460ff16155b1561204e57611f8c858561204984611f818888611db0565b612887565b6001600160a01b03851660009081526007602052604090205460ff16801561208e57506001600160a01b03841660009081526007602052604090205460ff165b156120ab57611f8c85856120a684611f818888611db0565b6128cb565b6120be858561204984611f818888611db0565b6000600f81905560118190556120d690869084612887565b6016546120ee9086906001600160a01b031683612887565b601054600f556012546011556001600160a01b03851660009081526006602052604090205460ff168061213957506001600160a01b03841660009081526006602052604090205460ff165b15611c5c57611c5c601054600f55601254601155601454601355601754601555565b600a546009546000918291825b6008548110156122ad5782600360006008848154811061218a5761218a612c38565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806121f557508160046000600884815481106121ce576121ce612c38565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561220b57600a54600954945094505050509091565b612251600360006008848154811061222557612225612c38565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611db0565b9250612299600460006008848154811061226d5761226d612c38565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611db0565b9150806122a581612c91565b915050612168565b50600954600a546122bd91611cc0565b8210156122d457600a546009549350935050509091565b90939092509050565b600081836122fe5760405162461bcd60e51b81526004016109009190612a3c565b506000611c948486612d00565b60008060008061231a8561293e565b905060006123278661295a565b9050600061233982611f818986611db0565b979296509094509092505050565b60008080806123568886612639565b905060006123648887612639565b905060006123728888612639565b9050600061238482611f818686611db0565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123cc576123cc612c38565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561242057600080fd5b505afa158015612434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124589190612cac565b8160018151811061246b5761246b612c38565b6001600160a01b0392831660209182029290920101526019546124919130911684611965565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac947906124ca908590600090869030904290600401612d22565b600060405180830381600087803b1580156124e457600080fd5b505af11580156124f8573d6000803e3d6000fd5b505050505050565b6019546125189030906001600160a01b031684611965565b6019546001600160a01b031663f305d7198230856000806125416000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156125a457600080fd5b505af11580156125b8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c5c9190612d93565b600f541580156125ed5750601154155b80156125f95750601554155b80156126055750601354155b1561260c57565b600f8054601055601180546012556013805460145560158054601755600093849055918390559082905555565b60008261264857506000610a02565b60006126548385612ce1565b9050826126618583612d00565b14610aee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610900565b6000806000806000806126ca87611d61565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506126fc9088611db0565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461272b9087611db0565b6001600160a01b03808b1660009081526003602052604080822093909355908a168152205461275a9086611d02565b6001600160a01b03891660009081526003602052604090205561277c81612976565b61278684836129ff565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127cb91815260200190565b60405180910390a3505050505050505050565b6000806000806000806127f087611d61565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506128229087611db0565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546128589084611d02565b6001600160a01b03891660009081526004602090815260408083209390935560039052205461275a9086611d02565b60008060008060008061289987611d61565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061272b9087611db0565b6000806000806000806128dd87611d61565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061290f9088611db0565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546128229087611db0565b6000610a026064611f01600f548561263990919063ffffffff16565b6000610a026064611f016011548561263990919063ffffffff16565b6000612980611c9d565b9050600061298e8383612639565b306000908152600360205260409020549091506129ab9082611d02565b3060009081526003602090815260408083209390935560079052205460ff16156129fa57306000908152600460205260409020546129e99084611d02565b306000908152600460205260409020555b505050565b600a54612a0c9083611db0565b600a55600b54612a1c9082611d02565b600b555050565b600060208284031215612a3557600080fd5b5035919050565b600060208083528351808285015260005b81811015612a6957858101830151858201604001528201612a4d565b81811115612a7b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612aa657600080fd5b50565b60008060408385031215612abc57600080fd5b8235612ac781612a91565b946020939093013593505050565b600080600060608486031215612aea57600080fd5b8335612af581612a91565b92506020840135612b0581612a91565b929592945050506040919091013590565b600060208284031215612b2857600080fd5b8135610aee81612a91565b80358015158114612b4357600080fd5b919050565b60008060408385031215612b5b57600080fd5b82359150612b6b60208401612b33565b90509250929050565b600060208284031215612b8657600080fd5b610aee82612b33565b60008060408385031215612ba257600080fd5b8235612bad81612a91565b91506020830135612bbd81612a91565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612c1157607f821691505b60208210811415612c3257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612c7657612c76612c4e565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612ca557612ca5612c4e565b5060010190565b600060208284031215612cbe57600080fd5b8151610aee81612a91565b60008219821115612cdc57612cdc612c4e565b500190565b6000816000190483118215151615612cfb57612cfb612c4e565b500290565b600082612d1d57634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d725784516001600160a01b031683529383019391830191600101612d4d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612da857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072fe83ce6868dc2674ce041fb8efd8695c4f97790ef64ad4c83dc54091b6750364736f6c63430008090033
0x6080604052683635c9adc5dea0000060098190556200002190600019620004b2565b6200002f90600019620004d5565b600a55604080518082019091526008808252674170706120496e7560c01b60209092019182526200006391600c916200040c565b50604080518082019091526004808252634150504160e01b60209092019182526200009191600d916200040c565b50600e805460ff191660091790556003600f81905560108190556011819055601255600060138190556014556004601581905560175567016345785d8a0000601855601a805460ff60a81b1916600160a81b179055670de0b6b3a7640000601b55348015620000ff57600080fd5b50604051620033de380380620033de8339810160408190526200012291620004fb565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a543360009081526003602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b158015620001c557600080fd5b505afa158015620001da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002009190620004fb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024957600080fd5b505afa1580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002849190620004fb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002cd57600080fd5b505af1158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620004fb565b601a80546001600160a01b03199081166001600160a01b039384161790915560198054909116918316919091179055600160066000620003506000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600690935291208054909216600117909155601680549184166001600160a01b0319909216919091179055620003b43390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620003fc91815260200190565b60405180910390a350506200056a565b8280546200041a906200052d565b90600052602060002090601f0160209004810192826200043e576000855562000489565b82601f106200045957805160ff191683800117855562000489565b8280016001018555821562000489579182015b82811115620004895782518255916020019190600101906200046c565b50620004979291506200049b565b5090565b5b808211156200049757600081556001016200049c565b600082620004d057634e487b7160e01b600052601260045260246000fd5b500690565b600082821015620004f657634e487b7160e01b600052601160045260246000fd5b500390565b6000602082840312156200050e57600080fd5b81516001600160a01b03811681146200052657600080fd5b9392505050565b600181811c908216806200054257607f821691505b602082108114156200056457634e487b7160e01b600052602260045260246000fd5b50919050565b612e64806200057a6000396000f3fe6080604052600436106102b25760003560e01c80635d098b3811610175578063a69df4b5116100dc578063dd46706411610095578063ea2f0b371161006f578063ea2f0b3714610861578063ec28438a14610881578063f2fde38b146108a1578063ffc78635146108c157600080fd5b8063dd467064146107db578063dd62ed3e146107fb578063ded5b7ed1461084157600080fd5b8063a69df4b51461073b578063a9059cbb14610750578063b6c5232414610770578063c0b0fda214610785578063c49b9a801461079b578063cea26958146107bb57600080fd5b80637d1db4a51161012e5780637d1db4a51461067957806388f820201461068f5780638da5cb5b146106c85780638ee88c53146106e657806395d89b4114610706578063a457c2d71461071b57600080fd5b80635d098b38146105d95780636bc87c3a146105f957806370a082311461060f578063715018a61461062f578063741af87f1461064457806375f0a8741461065957600080fd5b80633950935111610219578063457c194c116101d2578063457c194c1461050a57806349bd5a5e1461052a5780634a74bb021461054a5780635134f6ab1461056b57806352390c02146105805780635342acb4146105a057600080fd5b806339509351146104545780633b124fe7146104745780633bd5d1731461048a57806341cb87fc146104aa578063437823ec146104ca5780634549b039146104ea57600080fd5b806318160ddd1161026b57806318160ddd146103a757806322976e0d146103bc57806323b872dd146103d25780632d838119146103f2578063313ce567146104125780633685d4191461043457600080fd5b8063061c82d0146102be57806306fdde03146102e057806307efbfdc1461030b578063095ea7b31461032057806313114a9d146103505780631694505e1461036f57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d9366004612a23565b6108d6565b005b3480156102ec57600080fd5b506102f561090e565b6040516103029190612a3c565b60405180910390f35b34801561031757600080fd5b506102de6109a0565b34801561032c57600080fd5b5061034061033b366004612aa9565b6109f1565b6040519015158152602001610302565b34801561035c57600080fd5b50600b545b604051908152602001610302565b34801561037b57600080fd5b5060195461038f906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b3480156103b357600080fd5b50600954610361565b3480156103c857600080fd5b5061036160155481565b3480156103de57600080fd5b506103406103ed366004612ad5565b610a08565b3480156103fe57600080fd5b5061036161040d366004612a23565b610a71565b34801561041e57600080fd5b50600e5460405160ff9091168152602001610302565b34801561044057600080fd5b506102de61044f366004612b16565b610af5565b34801561046057600080fd5b5061034061046f366004612aa9565b610cac565b34801561048057600080fd5b50610361600f5481565b34801561049657600080fd5b506102de6104a5366004612a23565b610ce2565b3480156104b657600080fd5b506102de6104c5366004612b16565b610dcc565b3480156104d657600080fd5b506102de6104e5366004612b16565b610f9e565b3480156104f657600080fd5b50610361610505366004612b48565b610fec565b34801561051657600080fd5b506102de610525366004612a23565b611079565b34801561053657600080fd5b50601a5461038f906001600160a01b031681565b34801561055657600080fd5b50601a5461034090600160a81b900460ff1681565b34801561057757600080fd5b506102de6110a8565b34801561058c57600080fd5b506102de61059b366004612b16565b6110fa565b3480156105ac57600080fd5b506103406105bb366004612b16565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105e557600080fd5b506102de6105f4366004612b16565b6112c5565b34801561060557600080fd5b5061036160115481565b34801561061b57600080fd5b5061036161062a366004612b16565b611311565b34801561063b57600080fd5b506102de611370565b34801561065057600080fd5b506102de6113d2565b34801561066557600080fd5b5060165461038f906001600160a01b031681565b34801561068557600080fd5b5061036160185481565b34801561069b57600080fd5b506103406106aa366004612b16565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106d457600080fd5b506000546001600160a01b031661038f565b3480156106f257600080fd5b506102de610701366004612a23565b611469565b34801561071257600080fd5b506102f5611498565b34801561072757600080fd5b50610340610736366004612aa9565b6114a7565b34801561074757600080fd5b506102de6114f6565b34801561075c57600080fd5b5061034061076b366004612aa9565b6115fc565b34801561077c57600080fd5b50600254610361565b34801561079157600080fd5b5061036160135481565b3480156107a757600080fd5b506102de6107b6366004612b74565b611609565b3480156107c757600080fd5b506102de6107d6366004612a23565b61168b565b3480156107e757600080fd5b506102de6107f6366004612a23565b6116ba565b34801561080757600080fd5b50610361610816366004612b8f565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561084d57600080fd5b506102de61085c366004612a23565b61173f565b34801561086d57600080fd5b506102de61087c366004612b16565b61176e565b34801561088d57600080fd5b506102de61089c366004612a23565b6117b9565b3480156108ad57600080fd5b506102de6108bc366004612b16565b6117f7565b3480156108cd57600080fd5b506102de6118cf565b6000546001600160a01b031633146109095760405162461bcd60e51b815260040161090090612bc8565b60405180910390fd5b600f55565b6060600c805461091d90612bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461094990612bfd565b80156109965780601f1061096b57610100808354040283529160200191610996565b820191906000526020600020905b81548152906001019060200180831161097957829003601f168201915b5050505050905090565b6000546001600160a01b031633146109ca5760405162461bcd60e51b815260040161090090612bc8565b6109d46001611609565b6003600f819055601155600460155567016345785d8a0000601855565b60006109fe338484611965565b5060015b92915050565b6000610a15848484611a89565b610a678433610a6285604051806060016040528060288152602001612dc2602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611c63565b611965565b5060019392505050565b6000600a54821115610ad85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610900565b6000610ae2611c9d565b9050610aee8382611cc0565b9392505050565b6000546001600160a01b03163314610b1f5760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b03811660009081526007602052604090205460ff16610b875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610900565b60005b600854811015610ca857816001600160a01b031660088281548110610bb157610bb1612c38565b6000918252602090912001546001600160a01b03161415610c965760088054610bdc90600190612c64565b81548110610bec57610bec612c38565b600091825260209091200154600880546001600160a01b039092169183908110610c1857610c18612c38565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610c7057610c70612c7b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ca081612c91565b915050610b8a565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916109fe918590610a629086611d02565b3360008181526007602052604090205460ff1615610d575760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610900565b6000610d6283611d61565b505050506001600160a01b038416600090815260036020526040902054919250610d8e91905082611db0565b6001600160a01b038316600090815260036020526040902055600a54610db49082611db0565b600a55600b54610dc49084611d02565b600b55505050565b6000546001600160a01b03163314610df65760405162461bcd60e51b815260040161090090612bc8565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3457600080fd5b505afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c9190612cac565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec9190612cac565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c9190612cac565b601a80546001600160a01b039283166001600160a01b0319918216179091556019805493909216921691909117905550565b6000546001600160a01b03163314610fc85760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006009548311156110405760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610900565b8161105f57600061105084611d61565b50939550610a02945050505050565b600061106a84611d61565b50929550610a02945050505050565b6000546001600160a01b031633146110a35760405162461bcd60e51b815260040161090090612bc8565b601555565b6000546001600160a01b031633146110d25760405162461bcd60e51b815260040161090090612bc8565b6110dc6000611609565b6000600f8190556011819055601555683635c9adc5dea00000601855565b6000546001600160a01b031633146111245760405162461bcd60e51b815260040161090090612bc8565b7310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b038216141561119c5760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c7564652050616e63616b6520726f757465604482015261391760f11b6064820152608401610900565b6001600160a01b03811660009081526007602052604090205460ff16156112055760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610900565b6001600160a01b0381166000908152600360205260409020541561125f576001600160a01b03811660009081526003602052604090205461124590610a71565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146112ef5760405162461bcd60e51b815260040161090090612bc8565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561134e57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610a0290610a71565b6000546001600160a01b0316331461139a5760405162461bcd60e51b815260040161090090612bc8565b600080546040516001600160a01b0390911690600080516020612dea833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113fc5760405162461bcd60e51b815260040161090090612bc8565b6000600f8190556010819055601181905560128190556013819055601481905560158190556017819055601a805460ff60a01b191690556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906020015b60405180910390a1565b6000546001600160a01b031633146114935760405162461bcd60e51b815260040161090090612bc8565b601155565b6060600d805461091d90612bfd565b60006109fe3384610a6285604051806060016040528060258152602001612e0a602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611c63565b6001546001600160a01b0316331461155c5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610900565b60025442116115ad5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610900565b600154600080546040516001600160a01b039384169390911691600080516020612dea83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60006109fe338484611a89565b6000546001600160a01b031633146116335760405162461bcd60e51b815260040161090090612bc8565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061168090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146116b55760405162461bcd60e51b815260040161090090612bc8565b601355565b6000546001600160a01b031633146116e45760405162461bcd60e51b815260040161090090612bc8565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556117138142612cc9565b600255600080546040516001600160a01b0390911690600080516020612dea833981519152908390a350565b6000546001600160a01b031633146117695760405162461bcd60e51b815260040161090090612bc8565b601b55565b6000546001600160a01b031633146117985760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146117e35760405162461bcd60e51b815260040161090090612bc8565b6117f181633b9aca00612ce1565b60185550565b6000546001600160a01b031633146118215760405162461bcd60e51b815260040161090090612bc8565b6001600160a01b0381166118865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610900565b600080546040516001600160a01b0380851693921691600080516020612dea83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f95760405162461bcd60e51b815260040161090090612bc8565b6003600f819055601081905560118190556012819055600060135560145560046015819055601755601a805460ff60a01b1916600160a01b179055604051600181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200161145f565b6001600160a01b0383166119c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610900565b6001600160a01b038216611a285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610900565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611aed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610900565b60008111611b4f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610900565b6000546001600160a01b03848116911614801590611b7b57506000546001600160a01b03838116911614155b15611be357601854811115611be35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610900565b6000611bee30611311565b601b5490915081108015908190611c0f5750601a54600160a01b900460ff16155b8015611c295750601a546001600160a01b03868116911614155b8015611c3e5750601a54600160a81b900460ff165b15611c5157601b549150611c5182611df2565b611c5c858585611e99565b5050505050565b60008184841115611c875760405162461bcd60e51b81526004016109009190612a3c565b506000611c948486612c64565b95945050505050565b6000806000611caa61215b565b9092509050611cb98282611cc0565b9250505090565b6000610aee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122dd565b600080611d0f8385612cc9565b905083811015610aee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610900565b6000806000806000806000806000611d788a61230b565b9250925092506000806000611d968d8686611d91611c9d565b612347565b919f909e50909c50959a5093985091965092945050505050565b6000610aee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c63565b601a805460ff60a01b1916600160a01b1790556000611e12826002611cc0565b90506000611e208383611db0565b905047611e2c83612397565b6000611e384783611db0565b9050611e448382612500565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601a805460ff60a01b19169055505050565b6001600160a01b03831660009081526006602052604090205460ff1680611ed857506001600160a01b03821660009081526006602052604090205460ff165b15611ee557611ee56125dd565b6000611f076064611f016013548561263990919063ffffffff16565b90611cc0565b90506000611f256064611f016015548661263990919063ffffffff16565b6001600160a01b03861660009081526007602052604090205490915060ff168015611f6957506001600160a01b03841660009081526007602052604090205460ff16155b15611f9157611f8c8585611f8784611f818888611db0565b90611db0565b6126b8565b6120be565b6001600160a01b03851660009081526007602052604090205460ff16158015611fd257506001600160a01b03841660009081526007602052604090205460ff165b15611fef57611f8c8585611fea84611f818888611db0565b6127de565b6001600160a01b03851660009081526007602052604090205460ff1615801561203157506001600160a01b03841660009081526007602052604090205460ff16155b1561204e57611f8c858561204984611f818888611db0565b612887565b6001600160a01b03851660009081526007602052604090205460ff16801561208e57506001600160a01b03841660009081526007602052604090205460ff165b156120ab57611f8c85856120a684611f818888611db0565b6128cb565b6120be858561204984611f818888611db0565b6000600f81905560118190556120d690869084612887565b6016546120ee9086906001600160a01b031683612887565b601054600f556012546011556001600160a01b03851660009081526006602052604090205460ff168061213957506001600160a01b03841660009081526006602052604090205460ff165b15611c5c57611c5c601054600f55601254601155601454601355601754601555565b600a546009546000918291825b6008548110156122ad5782600360006008848154811061218a5761218a612c38565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806121f557508160046000600884815481106121ce576121ce612c38565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561220b57600a54600954945094505050509091565b612251600360006008848154811061222557612225612c38565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611db0565b9250612299600460006008848154811061226d5761226d612c38565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611db0565b9150806122a581612c91565b915050612168565b50600954600a546122bd91611cc0565b8210156122d457600a546009549350935050509091565b90939092509050565b600081836122fe5760405162461bcd60e51b81526004016109009190612a3c565b506000611c948486612d00565b60008060008061231a8561293e565b905060006123278661295a565b9050600061233982611f818986611db0565b979296509094509092505050565b60008080806123568886612639565b905060006123648887612639565b905060006123728888612639565b9050600061238482611f818686611db0565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123cc576123cc612c38565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561242057600080fd5b505afa158015612434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124589190612cac565b8160018151811061246b5761246b612c38565b6001600160a01b0392831660209182029290920101526019546124919130911684611965565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac947906124ca908590600090869030904290600401612d22565b600060405180830381600087803b1580156124e457600080fd5b505af11580156124f8573d6000803e3d6000fd5b505050505050565b6019546125189030906001600160a01b031684611965565b6019546001600160a01b031663f305d7198230856000806125416000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156125a457600080fd5b505af11580156125b8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c5c9190612d93565b600f541580156125ed5750601154155b80156125f95750601554155b80156126055750601354155b1561260c57565b600f8054601055601180546012556013805460145560158054601755600093849055918390559082905555565b60008261264857506000610a02565b60006126548385612ce1565b9050826126618583612d00565b14610aee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610900565b6000806000806000806126ca87611d61565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506126fc9088611db0565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461272b9087611db0565b6001600160a01b03808b1660009081526003602052604080822093909355908a168152205461275a9086611d02565b6001600160a01b03891660009081526003602052604090205561277c81612976565b61278684836129ff565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127cb91815260200190565b60405180910390a3505050505050505050565b6000806000806000806127f087611d61565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506128229087611db0565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546128589084611d02565b6001600160a01b03891660009081526004602090815260408083209390935560039052205461275a9086611d02565b60008060008060008061289987611d61565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061272b9087611db0565b6000806000806000806128dd87611d61565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061290f9088611db0565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546128229087611db0565b6000610a026064611f01600f548561263990919063ffffffff16565b6000610a026064611f016011548561263990919063ffffffff16565b6000612980611c9d565b9050600061298e8383612639565b306000908152600360205260409020549091506129ab9082611d02565b3060009081526003602090815260408083209390935560079052205460ff16156129fa57306000908152600460205260409020546129e99084611d02565b306000908152600460205260409020555b505050565b600a54612a0c9083611db0565b600a55600b54612a1c9082611d02565b600b555050565b600060208284031215612a3557600080fd5b5035919050565b600060208083528351808285015260005b81811015612a6957858101830151858201604001528201612a4d565b81811115612a7b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612aa657600080fd5b50565b60008060408385031215612abc57600080fd5b8235612ac781612a91565b946020939093013593505050565b600080600060608486031215612aea57600080fd5b8335612af581612a91565b92506020840135612b0581612a91565b929592945050506040919091013590565b600060208284031215612b2857600080fd5b8135610aee81612a91565b80358015158114612b4357600080fd5b919050565b60008060408385031215612b5b57600080fd5b82359150612b6b60208401612b33565b90509250929050565b600060208284031215612b8657600080fd5b610aee82612b33565b60008060408385031215612ba257600080fd5b8235612bad81612a91565b91506020830135612bbd81612a91565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612c1157607f821691505b60208210811415612c3257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612c7657612c76612c4e565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612ca557612ca5612c4e565b5060010190565b600060208284031215612cbe57600080fd5b8151610aee81612a91565b60008219821115612cdc57612cdc612c4e565b500190565b6000816000190483118215151615612cfb57612cfb612c4e565b500290565b600082612d1d57634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d725784516001600160a01b031683529383019391830191600101612d4d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612da857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072fe83ce6868dc2674ce041fb8efd8695c4f97790ef64ad4c83dc54091b6750364736f6c634300080900330000000000000000000000007135ab20796eb0395e1fda38624cfaebae568398