0x60806040526004361061044b5760003560e01c80638366e79a11610234578063d257b34f1161012e578063ee40166e116100b6578063f63743421161007a578063f637434214610ca1578063f66bf22914610cb7578063fb002c9714610ccd578063fbe8d4b714610ce3578063fd63914414610cfd57600080fd5b8063ee40166e14610c20578063f11a24d314610c36578063f2fde38b14610c4c578063f498cceb14610c6c578063f5648a4f14610c8c57600080fd5b8063dc3f0d0f116100fd578063dc3f0d0f14610b5e578063dc8ba8e614610b7e578063dd62ed3e14610b94578063e0bf7fd114610bda578063e2f4560514610c0a57600080fd5b8063d257b34f14610af2578063d73792a914610b12578063d85ba06314610b28578063da4f80e014610b3e57600080fd5b8063a9059cbb116101bc578063b62496f511610180578063b62496f514610a4d578063bbc0c74214610a7d578063c024666814610a9c578063c17b5b8c14610abc578063cd38890914610adc57600080fd5b8063a9059cbb146109cb578063a96444ed146109eb578063aa4bde2814610a01578063aba80fe814610a17578063ac8e332814610a2d57600080fd5b80638da5cb5b116102035780638da5cb5b1461094257806395d89b41146109605780639a7a23d614610975578063a457c2d714610995578063a62068ce146109b557600080fd5b80638366e79a146108d75780638671cb86146108f757806388e765ff146109175780638b28cd191461092d57600080fd5b80634f77f6c0116103455780636b0a894c116102cd5780637571336a116102915780637571336a1461084157806376af4d44146108615780637b20fd90146108775780638095d5641461089757806382aa7c68146108b757600080fd5b80636b0a894c146107c15780636ddd1713146107d757806370a08231146107f7578063715018a614610817578063751039fc1461082c57600080fd5b8063599035661161031457806359903566146107455780635a139dd41461076557806366d602ae1461077b5780636a486a8e146107915780636a63ce88146107a757600080fd5b80634f77f6c0146106d357806350e838e5146106e957806351f205e41461071957806358a6d5311461072e57600080fd5b80632583de65116103d3578063395093511161039757806339509351146106435780633d3d937d14610663578063452ed4f114610679578063499b8394146106995780634a62bb65146106b957600080fd5b80632583de65146105b1578063285b9747146105d15780632be32b61146105f1578063313ce5671461061157806334908e561461062d57600080fd5b806318160ddd1161041a57806318160ddd1461051a5780631a8145bb146105395780631c499ab01461054f5780632307b4411461057157806323b872dd1461059157600080fd5b806306fdde03146104575780630758d92414610482578063095ea7b3146104ba57806310d5de53146104ea57600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610d1d565b6040516104799190613892565b60405180910390f35b34801561048e57600080fd5b506012546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b3480156104c657600080fd5b506104da6104d53660046138ff565b610daf565b6040519015158152602001610479565b3480156104f657600080fd5b506104da61050536600461392b565b60286020526000908152604090205460ff1681565b34801561052657600080fd5b506002545b604051908152602001610479565b34801561054557600080fd5b5061052b60245481565b34801561055b57600080fd5b5061056f61056a366004613948565b610dc6565b005b34801561057d57600080fd5b5061056f61058c366004613a37565b610e8d565b34801561059d57600080fd5b506104da6105ac366004613af9565b610f34565b3480156105bd57600080fd5b5061056f6105cc366004613b48565b610fde565b3480156105dd57600080fd5b5061056f6105ec366004613b48565b61101b565b3480156105fd57600080fd5b5061056f61060c366004613948565b611058565b34801561061d57600080fd5b5060405160128152602001610479565b34801561063957600080fd5b5061052b60225481565b34801561064f57600080fd5b506104da61065e3660046138ff565b611110565b34801561066f57600080fd5b5061052b60115481565b34801561068557600080fd5b506013546104a2906001600160a01b031681565b3480156106a557600080fd5b5061056f6106b436600461392b565b61114c565b3480156106c557600080fd5b50601a546104da9060ff1681565b3480156106df57600080fd5b5061052b60205481565b3480156106f557600080fd5b506104da61070436600461392b565b60186020526000908152604090205460ff1681565b34801561072557600080fd5b5061056f6111ab565b34801561073a57600080fd5b5060175443106104da565b34801561075157600080fd5b5061056f610760366004613948565b6112b4565b34801561077157600080fd5b5061052b601c5481565b34801561078757600080fd5b5061052b60075481565b34801561079d57600080fd5b5061052b601f5481565b3480156107b357600080fd5b506010546104da9060ff1681565b3480156107cd57600080fd5b5061052b60195481565b3480156107e357600080fd5b50601a546104da9062010000900460ff1681565b34801561080357600080fd5b5061052b61081236600461392b565b6112fe565b34801561082357600080fd5b5061056f611319565b34801561083857600080fd5b5061056f61138d565b34801561084d57600080fd5b5061056f61085c366004613b65565b6113ec565b34801561086d57600080fd5b5061052b600b5481565b34801561088357600080fd5b5061056f610892366004613948565b6114b4565b3480156108a357600080fd5b5061056f6108b2366004613b9e565b61150b565b3480156108c357600080fd5b5061056f6108d2366004613948565b6115af565b3480156108e357600080fd5b506104da6108f2366004613bca565b611647565b34801561090357600080fd5b5061056f610912366004613948565b6117ca565b34801561092357600080fd5b5061052b60065481565b34801561093957600080fd5b5061052b611a02565b34801561094e57600080fd5b506005546001600160a01b03166104a2565b34801561096c57600080fd5b5061046c611bb3565b34801561098157600080fd5b5061056f610990366004613b65565b611bc2565b3480156109a157600080fd5b506104da6109b03660046138ff565b611cb6565b3480156109c157600080fd5b5061052b60175481565b3480156109d757600080fd5b506104da6109e63660046138ff565b611d4f565b3480156109f757600080fd5b5061052b60255481565b348015610a0d57600080fd5b5061052b60085481565b348015610a2357600080fd5b5061052b600c5481565b348015610a3957600080fd5b5061056f610a48366004613bf8565b611d5c565b348015610a5957600080fd5b506104da610a6836600461392b565b60296020526000908152604090205460ff1681565b348015610a8957600080fd5b50601a546104da90610100900460ff1681565b348015610aa857600080fd5b5061056f610ab7366004613b65565b611dfd565b348015610ac857600080fd5b5061056f610ad7366004613b9e565b611e86565b348015610ae857600080fd5b5061052b601e5481565b348015610afe57600080fd5b5061056f610b0d366004613948565b611f2a565b348015610b1e57600080fd5b5061052b60265481565b348015610b3457600080fd5b5061052b601b5481565b348015610b4a57600080fd5b5061056f610b59366004613b48565b611fb4565b348015610b6a57600080fd5b5061056f610b79366004613948565b611ff8565b348015610b8a57600080fd5b5061052b600f5481565b348015610ba057600080fd5b5061052b610baf366004613bca565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610be657600080fd5b506104da610bf536600461392b565b60276020526000908152604090205460ff1681565b348015610c1657600080fd5b5061052b60145481565b348015610c2c57600080fd5b5061052b60165481565b348015610c4257600080fd5b5061052b601d5481565b348015610c5857600080fd5b5061056f610c6736600461392b565b6120b0565b348015610c7857600080fd5b5061056f610c87366004613948565b61219b565b348015610c9857600080fd5b5061056f6121d7565b348015610cad57600080fd5b5061052b60215481565b348015610cc357600080fd5b5061052b600d5481565b348015610cd957600080fd5b5061052b60235481565b348015610cef57600080fd5b50600e546104da9060ff1681565b348015610d0957600080fd5b506104da610d1836600461392b565b61225f565b606060038054610d2c90613c7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5890613c7e565b8015610da55780601f10610d7a57610100808354040283529160200191610da5565b820191906000526020600020905b815481529060010190602001808311610d8857829003601f168201915b5050505050905090565b6000610dbc33848461226c565b5060015b92915050565b6005546001600160a01b03163314610df95760405162461bcd60e51b8152600401610df090613cb8565b60405180910390fd5b610e056012600a613de7565b6064610e1060025490565b610e1b906001613df6565b610e259190613e2b565b610e2f9190613e2b565b811015610e3b57600080fd5b610e476012600a613de7565b610e519082613df6565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610eb75760405162461bcd60e51b8152600401610df090613cb8565b8051825114610ec557600080fd5b610258825110610ed457600080fd5b60005b8251811015610f2f57610f1d33848381518110610ef657610ef6613e3f565b6020026020010151848481518110610f1057610f10613e3f565b6020026020010151612390565b80610f2781613e55565b915050610ed7565b505050565b6000610f418484846124e5565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610fc65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610df0565b610fd3853385840361226c565b506001949350505050565b6005546001600160a01b031633146110085760405162461bcd60e51b8152600401610df090613cb8565b6010805460ff1916911515919091179055565b6005546001600160a01b031633146110455760405162461bcd60e51b8152600401610df090613cb8565b600e805460ff1916911515919091179055565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610df090613cb8565b61108e6012600a613de7565b6103e861109a60025490565b6110a5906001613df6565b6110af9190613e2b565b6110b99190613e2b565b8110156110c557600080fd5b6110d16012600a613de7565b6110db9082613df6565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610e82565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610dbc918590611147908690613e6e565b61226c565b6005546001600160a01b031633146111765760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b03811661118957600080fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111d55760405162461bcd60e51b8152600401610df090613cb8565b6014546111e1306112fe565b1015611257576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610df0565b6013805460ff60a01b1916600160a01b179055611272612e80565b6013805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b031633146112de5760405162461bcd60e51b8152600401610df090613cb8565b600a81101580156112f0575060648111155b6112f957600080fd5b600f55565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146113435760405162461bcd60e51b8152600401610df090613cb8565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113b75760405162461bcd60e51b8152600401610df090613cb8565b601a805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114165760405162461bcd60e51b8152600401610df090613cb8565b80611489576013546001600160a01b03908116908316036114895760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610df0565b6001600160a01b03919091166000908152602860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114de5760405162461bcd60e51b8152600401610df090613cb8565b600181101580156114f157506105a08111155b6114fa57600080fd5b61150581603c613df6565b600c5550565b6005546001600160a01b031633146115355760405162461bcd60e51b8152600401610df090613cb8565b601c839055601d829055601e8190558061154f8385613e6e565b6115599190613e6e565b601b8190556105dc1015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610df0565b6005546001600160a01b031633146115d95760405162461bcd60e51b8152600401610df090613cb8565b601754156115e657600080fd5b601a805462ffff00191662010100179055436016819055611608908290613e6e565b601755600c546116189042613e6e565b600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146116745760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b03831661168757600080fd5b306001600160a01b0384160361169c57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190613e86565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af115801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190613e9f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146117f45760405162461bcd60e51b8152600401610df090613cb8565b603281111561180257600080fd5b61180e610e1042613ebc565b601154111561181c57600080fd5b426011556013546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188d9190613e86565b9050600061189a306112fe565b9050600060646118aa8585613df6565b6118b49190613e2b565b60135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350479291169063095ea7b3906044016020604051808303816000875af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613e9f565b50601254604051629d473b60e21b81526001600160a01b03909116906302751cec9061196d9030908690600190819084904290600401613ed3565b60408051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af9190613f0e565b50506000836119bd306112fe565b6119c79190613ebc565b905080156119dc576119dc3061dead83612390565b60006119e88347613ebc565b905080156119f9576119f98161304c565b50505050505050565b604080516002808252606082018352600092839291906020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a949190613f32565b81600081518110611aa757611aa7613e3f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611adb57611adb613e3f565b6001600160a01b0392909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050601254600d5460405163d06ca61f60e01b81529293506001600160a01b039091169163d06ca61f91611b4a918690600401613f93565b600060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b8f9190810190613fb4565b905080600181518110611ba457611ba4613e3f565b60200260200101519250505090565b606060048054610d2c90613c7e565b6005546001600160a01b03163314611bec5760405162461bcd60e51b8152600401610df090613cb8565b6013546001600160a01b0390811690831603611c705760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610df0565b611c7a8282613196565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611d385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df0565b611d45338585840361226c565b5060019392505050565b6000610dbc3384846124e5565b6005546001600160a01b03163314611d865760405162461bcd60e51b8152600401610df090613cb8565b60005b82811015611df7578160186000868685818110611da857611da8613e3f565b9050602002016020810190611dbd919061392b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611def81613e55565b915050611d89565b50505050565b6005546001600160a01b03163314611e275760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611eb05760405162461bcd60e51b8152600401610df090613cb8565b60208390556021829055602281905580611eca8385613e6e565b611ed49190613e6e565b601f8190556107d01015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610df0565b6005546001600160a01b03163314611f545760405162461bcd60e51b8152600401610df090613cb8565b620186a0611f6160025490565b611f6c906001613df6565b611f769190613e2b565b811015611f8257600080fd5b6103e8611f8e60025490565b611f99906001613df6565b611fa39190613e2b565b811115611faf57600080fd5b601455565b6005546001600160a01b03163314611fde5760405162461bcd60e51b8152600401610df090613cb8565b601a80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146120225760405162461bcd60e51b8152600401610df090613cb8565b61202e6012600a613de7565b6103e861203a60025490565b612045906001613df6565b61204f9190613e2b565b6120599190613e2b565b81101561206557600080fd5b6120716012600a613de7565b61207b9082613df6565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e82565b6005546001600160a01b031633146120da5760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b03811661213f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146121c55760405162461bcd60e51b8152600401610df090613cb8565b600081116121d257600080fd5b600d55565b6005546001600160a01b031633146122015760405162461bcd60e51b8152600401610df090613cb8565b60006122156005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114611df7576040519150601f19603f3d011682016040523d82523d6000602084013e611df7565b6000610dc06009836131c4565b6001600160a01b0383166122ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610df0565b6001600160a01b03821661232f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166123b65760405162461bcd60e51b8152600401610df090614045565b6001600160a01b0382166123dc5760405162461bcd60e51b8152600401610df09061408a565b6001600160a01b038316600090815260208190526040902054818110156124545760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df0565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061248b908490613e6e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124d791815260200190565b60405180910390a350505050565b6001600160a01b03831661250b5760405162461bcd60e51b8152600401610df090614045565b6001600160a01b0382166125315760405162461bcd60e51b8152600401610df09061408a565b600081116125905760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e73666572206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610df0565b601a54610100900460ff16612623576001600160a01b03831660009081526027602052604090205460ff16806125de57506001600160a01b03821660009081526027602052604090205460ff165b6126235760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610df0565b601754431015801561263757506000601754115b15612707576001600160a01b03831660009081526018602052604090205460ff16158061267157506005546001600160a01b038381169116145b8061268657506001600160a01b03821661dead145b6127075760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610df0565b601a5460ff16156128c9576005546001600160a01b0384811691161480159061273e57506005546001600160a01b03838116911614155b801561275257506001600160a01b03821615155b801561276957506001600160a01b03821661dead14155b801561278e57506001600160a01b03831660009081526027602052604090205460ff16155b80156127b357506001600160a01b03821660009081526027602052604090205460ff16155b156128c9576001600160a01b03831660009081526029602052604090205460ff1680156127f957506001600160a01b03821660009081526028602052604090205460ff16155b156128335760065481111561280d57600080fd5b600854612819836112fe565b6128239083613e6e565b111561282e57600080fd5b6128c9565b6001600160a01b03821660009081526029602052604090205460ff16801561287457506001600160a01b03831660009081526028602052604090205460ff16155b156128885760075481111561282e57600080fd5b6001600160a01b03821660009081526028602052604090205460ff166128c9576008546128b4836112fe565b6128be9083613e6e565b11156128c957600080fd5b60006128d4306112fe565b601454909150811080159081906128f35750601a5462010000900460ff165b80156129095750601354600160a01b900460ff16155b801561292e57506001600160a01b03851660009081526029602052604090205460ff16155b801561295357506001600160a01b03851660009081526027602052604090205460ff16155b801561297857506001600160a01b03841660009081526027602052604090205460ff16155b156129a6576013805460ff60a01b1916600160a01b179055612998612e80565b6013805460ff60a01b191690555b60105460ff16156129fb57600b5442101580156129cb57506703782dace9d900004710155b80156129e0575060016129de60096131e9565b115b156129f3576129ee846131f3565b6129fb565b6129fb61331a565b6001600160a01b03851660009081526027602052604090205460019060ff1680612a3d57506001600160a01b03851660009081526027602052604090205460ff165b15612a46575060005b60008115612e4757601754431080612a8c5750670c7d713b49da0000600654612a6f9190613ebc565b8510158015612a8c5750436017546005612a899190613e6e565b10155b8015612ab057506001600160a01b03871660009081526029602052604090205460ff165b8015612ad557506001600160a01b03861660009081526029602052604090205460ff16155b8015612ae357506000601b54115b15612c58576017544310612b0a57600160066000828254612b049190613ebc565b90915550505b6001600160a01b03861660009081526018602052604090205460ff16612ba5576001600160a01b0386166000908152601860205260408120805460ff191660019081179091556019805491929091612b63908490613e6e565b90915550506040516001600160a01b03871681527fc69d77aec5786ffcf6525c771a49f6299726bb8f4a25ae2723602cd7a28fc1dd9060200160405180910390a15b602654601b54612bb59087613df6565b612bbf9190613e2b565b9050601b54601d5482612bd29190613df6565b612bdc9190613e2b565b60246000828254612bed9190613e6e565b9091555050601b54601c54612c029083613df6565b612c0c9190613e2b565b60236000828254612c1d9190613e6e565b9091555050601b54601e54612c329083613df6565b612c3c9190613e2b565b60256000828254612c4d9190613e6e565b90915550612e299050565b6001600160a01b03861660009081526029602052604090205460ff168015612c8257506000601f54115b15612d1457602654601f54612c979087613df6565b612ca19190613e2b565b9050601f5460215482612cb49190613df6565b612cbe9190613e2b565b60246000828254612ccf9190613e6e565b9091555050601f54602054612ce49083613df6565b612cee9190613e2b565b60236000828254612cff9190613e6e565b9091555050601f54602254612c329083613df6565b6001600160a01b03871660009081526029602052604090205460ff168015612d3e57506000601b54115b15612e2957602654601b54612d539087613df6565b612d5d9190613e2b565b9050601b54601d5482612d709190613df6565b612d7a9190613e2b565b60246000828254612d8b9190613e6e565b9091555050601b54601c54612da09083613df6565b612daa9190613e2b565b60236000828254612dbb9190613e6e565b9091555050601b54601e54612dd09083613df6565b612dda9190613e2b565b60256000828254612deb9190613e6e565b9091555050600e5460ff161580612e085750612e05611a02565b85115b15612e2957612e186009876131c4565b612e2957612e2760098761337b565b505b8015612e3a57612e3a873083612390565b612e448186613ebc565b94505b612e52878787612390565b612e5d6009886131c4565b8015612e665750815b156119f957612e76600988613390565b5050505050505050565b6000612e8b306112fe565b90506000602554602354602454612ea29190613e6e565b612eac9190613e6e565b9050811580612eb9575080155b15612ec2575050565b601454612ed090600a613df6565b821115612ee857601454612ee590600a613df6565b91505b60008060028360245486612efc9190613df6565b612f069190613e2b565b612f109190613e2b565b905047612f25612f208387613ebc565b6133a5565b6000612f318247613ebc565b9050600081905060006002602454612f499190613e2b565b612f539088613ebc565b602354612f609085613df6565b612f6a9190613e2b565b905060006002602454612f7d9190613e2b565b612f879089613ebc565b602554612f949086613df6565b612f9e9190613e2b565b9050612faa8183613e6e565b612fb49084613ebc565b60006024819055602381905560255592508515801590612fd45750600083115b15612fe357612fe386846134f7565b8115613041576015546040516001600160a01b03909116908390600081818185875af1925050503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b50909750505b505050505050505050565b6040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190613f32565b816000815181106130ed576130ed613e3f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061312157613121613e3f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590849061316990600090869061dead9042906004016140cd565b6000604051808303818588803b15801561318257600080fd5b505af11580156119f9573d6000803e3d6000fd5b6001600160a01b0382166000908152602960205260409020805460ff1916821515179055611c7a8282613596565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6000610dc0825490565b6000600c54426132039190613e6e565b600b55600061326361325b82600161321b60096131e9565b6132259190613ebc565b61322e876112fe565b61323961dead6112fe565b613242306112fe565b61324c9190613e6e565b6132569190613e6e565b6135f9565b60099061371a565b905060006064600f54476132779190613df6565b6132819190613e2b565b9050816001600160a01b03168160405160006040518083038185875af1925050503d80600081146132ce576040519150601f19603f3d011682016040523d82523d6000602084013e6132d3565b606091505b50909350508215611df7576040516001600160a01b0383169082907fbd73dd3a978f545a338a5be0f5f49671a6a8dd2c5d8ba117281ff20ad917c93b90600090a350505050565b600080613328600247613e2b565b50506040516000903090819083908181818181875af1925050503d806000811461336e576040519150601f19603f3d011682016040523d82523d6000602084013e613373565b606091505b505050505050565b60006131e2836001600160a01b038416613726565b60006131e2836001600160a01b038416613775565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106133da576133da613e3f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134579190613f32565b8160018151811061346a5761346a613e3f565b6001600160a01b039283166020918202929092010152601254613490913091168461226c565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906134c9908590600090869030904290600401614102565b600060405180830381600087803b1580156134e357600080fd5b505af1158015613373573d6000803e3d6000fd5b60125461350f9030906001600160a01b03168461226c565b60125460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061354c9030908790600090819084904290600401613ed3565b60606040518083038185885af115801561356a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061358f919061413e565b5050505050565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040516bffffffffffffffffffffffff193360601b16602082015260009081908390439042906034016040516020818303038152906040528051906020012060001c6136459190613e2b565b6040516bffffffffffffffffffffffff194160601b166020820152459042906034016040516020818303038152906040528051906020012060001c61368a9190613e2b565b6136944442613e6e565b61369e9190613e6e565b6136a89190613e6e565b6136b29190613e6e565b6136bc9190613e6e565b6136c69190613e6e565b6040516020016136d891815260200190565b60408051601f1981840301815291905280516020909101209050846136fd8186613ebc565b613707908361416c565b6137119190613e6e565b95945050505050565b60006131e28383613868565b600081815260018301602052604081205461376d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610dc0565b506000610dc0565b6000818152600183016020526040812054801561385e576000613799600183613ebc565b85549091506000906137ad90600190613ebc565b90508181146138125760008660000182815481106137cd576137cd613e3f565b90600052602060002001549050808760000184815481106137f0576137f0613e3f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061382357613823614180565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610dc0565b6000915050610dc0565b600082600001828154811061387f5761387f613e3f565b9060005260206000200154905092915050565b600060208083528351808285015260005b818110156138bf578581018301518582016040015282016138a3565b818111156138d1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146138fc57600080fd5b50565b6000806040838503121561391257600080fd5b823561391d816138e7565b946020939093013593505050565b60006020828403121561393d57600080fd5b81356131e2816138e7565b60006020828403121561395a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139a0576139a0613961565b604052919050565b600067ffffffffffffffff8211156139c2576139c2613961565b5060051b60200190565b600082601f8301126139dd57600080fd5b813560206139f26139ed836139a8565b613977565b82815260059290921b84018101918181019086841115613a1157600080fd5b8286015b84811015613a2c5780358352918301918301613a15565b509695505050505050565b60008060408385031215613a4a57600080fd5b823567ffffffffffffffff80821115613a6257600080fd5b818501915085601f830112613a7657600080fd5b81356020613a866139ed836139a8565b82815260059290921b84018101918181019089841115613aa557600080fd5b948201945b83861015613acc578535613abd816138e7565b82529482019490820190613aaa565b96505086013592505080821115613ae257600080fd5b50613aef858286016139cc565b9150509250929050565b600080600060608486031215613b0e57600080fd5b8335613b19816138e7565b92506020840135613b29816138e7565b929592945050506040919091013590565b80151581146138fc57600080fd5b600060208284031215613b5a57600080fd5b81356131e281613b3a565b60008060408385031215613b7857600080fd5b8235613b83816138e7565b91506020830135613b9381613b3a565b809150509250929050565b600080600060608486031215613bb357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613bdd57600080fd5b8235613be8816138e7565b91506020830135613b93816138e7565b600080600060408486031215613c0d57600080fd5b833567ffffffffffffffff80821115613c2557600080fd5b818601915086601f830112613c3957600080fd5b813581811115613c4857600080fd5b8760208260051b8501011115613c5d57600080fd5b60209283019550935050840135613c7381613b3a565b809150509250925092565b600181811c90821680613c9257607f821691505b602082108103613cb257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d3e578160001904821115613d2457613d24613ced565b80851615613d3157918102915b93841c9390800290613d08565b509250929050565b600082613d5557506001610dc0565b81613d6257506000610dc0565b8160018114613d785760028114613d8257613d9e565b6001915050610dc0565b60ff841115613d9357613d93613ced565b50506001821b610dc0565b5060208310610133831016604e8410600b8410161715613dc1575081810a610dc0565b613dcb8383613d03565b8060001904821115613ddf57613ddf613ced565b029392505050565b60006131e260ff841683613d46565b6000816000190483118215151615613e1057613e10613ced565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613e3a57613e3a613e15565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201613e6757613e67613ced565b5060010190565b60008219821115613e8157613e81613ced565b500190565b600060208284031215613e9857600080fd5b5051919050565b600060208284031215613eb157600080fd5b81516131e281613b3a565b600082821015613ece57613ece613ced565b500390565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060408385031215613f2157600080fd5b505080516020909101519092909150565b600060208284031215613f4457600080fd5b81516131e2816138e7565b600081518084526020808501945080840160005b83811015613f885781516001600160a01b031687529582019590820190600101613f63565b509495945050505050565b828152604060208201526000613fac6040830184613f4f565b949350505050565b60006020808385031215613fc757600080fd5b825167ffffffffffffffff811115613fde57600080fd5b8301601f81018513613fef57600080fd5b8051613ffd6139ed826139a8565b81815260059190911b8201830190838101908783111561401c57600080fd5b928401925b8284101561403a57835182529284019290840190614021565b979650505050505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8481526080602082015260006140e66080830186613f4f565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061412160a0830186613f4f565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561415357600080fd5b8351925060208401519150604084015190509250925092565b60008261417b5761417b613e15565b500690565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220723d6813fa488467d77aa57179ee0c2650253a2c5e422c081a7937dc1e587cab64736f6c634300080f0033
0x6080604052610708600c5567016345785d8a0000600d55600e8054600160ff1991821681179092556064600f5560108054909116821790556000601655601a805462ffffff191690911790556127106026553480156200005e57600080fd5b506040518060400160405280600a8152602001692632b83932b1b430bab760b11b815250604051806040016040528060048152602001634c55434b60e01b8152508160039081620000b0919062000819565b506004620000bf828262000819565b5050506000620000d4620004fd60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060128054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821681179092556015805473394546aef949f1bac7b3059bf8fe3b5e8c275cef9216821790556040805163c45a015560e01b81529051919291829163c45a01559160048083019260209291908290030181865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d19190620008e5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002459190620008e5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b99190620008e5565b601380546001600160a01b0319166001600160a01b03929092169182179055620002e590600162000501565b601354620002fe906001600160a01b0316600162000564565b6b0282b82666abfd3da90000006103e86200031b8260026200092d565b6200032791906200094f565b6006556103e86200033a8260026200092d565b6200034691906200094f565b6007556064620003588260026200092d565b6200036491906200094f565b600855620186a0620003788260196200092d565b6200038491906200094f565b6014556000601c819055601d81905561012c601e81905590620003a8908062000972565b620003b4919062000972565b601b55610ce4602081905560218190556022819055620003d5818062000972565b620003e1919062000972565b601f55620003f183600162000501565b620003fe33600162000501565b60155462000417906001600160a01b0316600162000501565b6200042430600162000501565b6200043361dead600162000501565b6012546200044c906001600160a01b0316600162000501565b62000459836001620005d0565b62000466336001620005d0565b6015546200047f906001600160a01b03166001620005d0565b6200048c306001620005d0565b6200049b61dead6001620005d0565b601254620004b4906001600160a01b03166001620005d0565b620004cb336aa509878ced1012ffc800006200068f565b33600090815260208190526040902054620004f4908490620004ee90846200098d565b6200068f565b505050620009a7565b3390565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602960205260409020805460ff191682151517905562000594828262000501565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620006305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006e75760405162461bcd60e51b815260206004820152601a60248201527f45524332303a20746f20746865207a65726f2061646472657373000000000000604482015260640162000627565b8060026000828254620006fb919062000972565b90915550506001600160a01b038216600090815260208190526040812080548392906200072a90849062000972565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200079f57607f821691505b602082108103620007c057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200081457600081815260208120601f850160051c81016020861015620007ef5750805b601f850160051c820191505b818110156200081057828155600101620007fb565b5050505b505050565b81516001600160401b0381111562000835576200083562000774565b6200084d816200084684546200078a565b84620007c6565b602080601f8311600181146200088557600084156200086c5750858301515b600019600386901b1c1916600185901b17855562000810565b600085815260208120601f198616915b82811015620008b65788860151825594840194600190910190840162000895565b5085821015620008d55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008f857600080fd5b81516001600160a01b03811681146200091057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200094a576200094a62000917565b500290565b6000826200096d57634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000988576200098862000917565b500190565b600082821015620009a257620009a262000917565b500390565b6141cc80620009b76000396000f3fe60806040526004361061044b5760003560e01c80638366e79a11610234578063d257b34f1161012e578063ee40166e116100b6578063f63743421161007a578063f637434214610ca1578063f66bf22914610cb7578063fb002c9714610ccd578063fbe8d4b714610ce3578063fd63914414610cfd57600080fd5b8063ee40166e14610c20578063f11a24d314610c36578063f2fde38b14610c4c578063f498cceb14610c6c578063f5648a4f14610c8c57600080fd5b8063dc3f0d0f116100fd578063dc3f0d0f14610b5e578063dc8ba8e614610b7e578063dd62ed3e14610b94578063e0bf7fd114610bda578063e2f4560514610c0a57600080fd5b8063d257b34f14610af2578063d73792a914610b12578063d85ba06314610b28578063da4f80e014610b3e57600080fd5b8063a9059cbb116101bc578063b62496f511610180578063b62496f514610a4d578063bbc0c74214610a7d578063c024666814610a9c578063c17b5b8c14610abc578063cd38890914610adc57600080fd5b8063a9059cbb146109cb578063a96444ed146109eb578063aa4bde2814610a01578063aba80fe814610a17578063ac8e332814610a2d57600080fd5b80638da5cb5b116102035780638da5cb5b1461094257806395d89b41146109605780639a7a23d614610975578063a457c2d714610995578063a62068ce146109b557600080fd5b80638366e79a146108d75780638671cb86146108f757806388e765ff146109175780638b28cd191461092d57600080fd5b80634f77f6c0116103455780636b0a894c116102cd5780637571336a116102915780637571336a1461084157806376af4d44146108615780637b20fd90146108775780638095d5641461089757806382aa7c68146108b757600080fd5b80636b0a894c146107c15780636ddd1713146107d757806370a08231146107f7578063715018a614610817578063751039fc1461082c57600080fd5b8063599035661161031457806359903566146107455780635a139dd41461076557806366d602ae1461077b5780636a486a8e146107915780636a63ce88146107a757600080fd5b80634f77f6c0146106d357806350e838e5146106e957806351f205e41461071957806358a6d5311461072e57600080fd5b80632583de65116103d3578063395093511161039757806339509351146106435780633d3d937d14610663578063452ed4f114610679578063499b8394146106995780634a62bb65146106b957600080fd5b80632583de65146105b1578063285b9747146105d15780632be32b61146105f1578063313ce5671461061157806334908e561461062d57600080fd5b806318160ddd1161041a57806318160ddd1461051a5780631a8145bb146105395780631c499ab01461054f5780632307b4411461057157806323b872dd1461059157600080fd5b806306fdde03146104575780630758d92414610482578063095ea7b3146104ba57806310d5de53146104ea57600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610d1d565b6040516104799190613892565b60405180910390f35b34801561048e57600080fd5b506012546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b3480156104c657600080fd5b506104da6104d53660046138ff565b610daf565b6040519015158152602001610479565b3480156104f657600080fd5b506104da61050536600461392b565b60286020526000908152604090205460ff1681565b34801561052657600080fd5b506002545b604051908152602001610479565b34801561054557600080fd5b5061052b60245481565b34801561055b57600080fd5b5061056f61056a366004613948565b610dc6565b005b34801561057d57600080fd5b5061056f61058c366004613a37565b610e8d565b34801561059d57600080fd5b506104da6105ac366004613af9565b610f34565b3480156105bd57600080fd5b5061056f6105cc366004613b48565b610fde565b3480156105dd57600080fd5b5061056f6105ec366004613b48565b61101b565b3480156105fd57600080fd5b5061056f61060c366004613948565b611058565b34801561061d57600080fd5b5060405160128152602001610479565b34801561063957600080fd5b5061052b60225481565b34801561064f57600080fd5b506104da61065e3660046138ff565b611110565b34801561066f57600080fd5b5061052b60115481565b34801561068557600080fd5b506013546104a2906001600160a01b031681565b3480156106a557600080fd5b5061056f6106b436600461392b565b61114c565b3480156106c557600080fd5b50601a546104da9060ff1681565b3480156106df57600080fd5b5061052b60205481565b3480156106f557600080fd5b506104da61070436600461392b565b60186020526000908152604090205460ff1681565b34801561072557600080fd5b5061056f6111ab565b34801561073a57600080fd5b5060175443106104da565b34801561075157600080fd5b5061056f610760366004613948565b6112b4565b34801561077157600080fd5b5061052b601c5481565b34801561078757600080fd5b5061052b60075481565b34801561079d57600080fd5b5061052b601f5481565b3480156107b357600080fd5b506010546104da9060ff1681565b3480156107cd57600080fd5b5061052b60195481565b3480156107e357600080fd5b50601a546104da9062010000900460ff1681565b34801561080357600080fd5b5061052b61081236600461392b565b6112fe565b34801561082357600080fd5b5061056f611319565b34801561083857600080fd5b5061056f61138d565b34801561084d57600080fd5b5061056f61085c366004613b65565b6113ec565b34801561086d57600080fd5b5061052b600b5481565b34801561088357600080fd5b5061056f610892366004613948565b6114b4565b3480156108a357600080fd5b5061056f6108b2366004613b9e565b61150b565b3480156108c357600080fd5b5061056f6108d2366004613948565b6115af565b3480156108e357600080fd5b506104da6108f2366004613bca565b611647565b34801561090357600080fd5b5061056f610912366004613948565b6117ca565b34801561092357600080fd5b5061052b60065481565b34801561093957600080fd5b5061052b611a02565b34801561094e57600080fd5b506005546001600160a01b03166104a2565b34801561096c57600080fd5b5061046c611bb3565b34801561098157600080fd5b5061056f610990366004613b65565b611bc2565b3480156109a157600080fd5b506104da6109b03660046138ff565b611cb6565b3480156109c157600080fd5b5061052b60175481565b3480156109d757600080fd5b506104da6109e63660046138ff565b611d4f565b3480156109f757600080fd5b5061052b60255481565b348015610a0d57600080fd5b5061052b60085481565b348015610a2357600080fd5b5061052b600c5481565b348015610a3957600080fd5b5061056f610a48366004613bf8565b611d5c565b348015610a5957600080fd5b506104da610a6836600461392b565b60296020526000908152604090205460ff1681565b348015610a8957600080fd5b50601a546104da90610100900460ff1681565b348015610aa857600080fd5b5061056f610ab7366004613b65565b611dfd565b348015610ac857600080fd5b5061056f610ad7366004613b9e565b611e86565b348015610ae857600080fd5b5061052b601e5481565b348015610afe57600080fd5b5061056f610b0d366004613948565b611f2a565b348015610b1e57600080fd5b5061052b60265481565b348015610b3457600080fd5b5061052b601b5481565b348015610b4a57600080fd5b5061056f610b59366004613b48565b611fb4565b348015610b6a57600080fd5b5061056f610b79366004613948565b611ff8565b348015610b8a57600080fd5b5061052b600f5481565b348015610ba057600080fd5b5061052b610baf366004613bca565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610be657600080fd5b506104da610bf536600461392b565b60276020526000908152604090205460ff1681565b348015610c1657600080fd5b5061052b60145481565b348015610c2c57600080fd5b5061052b60165481565b348015610c4257600080fd5b5061052b601d5481565b348015610c5857600080fd5b5061056f610c6736600461392b565b6120b0565b348015610c7857600080fd5b5061056f610c87366004613948565b61219b565b348015610c9857600080fd5b5061056f6121d7565b348015610cad57600080fd5b5061052b60215481565b348015610cc357600080fd5b5061052b600d5481565b348015610cd957600080fd5b5061052b60235481565b348015610cef57600080fd5b50600e546104da9060ff1681565b348015610d0957600080fd5b506104da610d1836600461392b565b61225f565b606060038054610d2c90613c7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5890613c7e565b8015610da55780601f10610d7a57610100808354040283529160200191610da5565b820191906000526020600020905b815481529060010190602001808311610d8857829003601f168201915b5050505050905090565b6000610dbc33848461226c565b5060015b92915050565b6005546001600160a01b03163314610df95760405162461bcd60e51b8152600401610df090613cb8565b60405180910390fd5b610e056012600a613de7565b6064610e1060025490565b610e1b906001613df6565b610e259190613e2b565b610e2f9190613e2b565b811015610e3b57600080fd5b610e476012600a613de7565b610e519082613df6565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610eb75760405162461bcd60e51b8152600401610df090613cb8565b8051825114610ec557600080fd5b610258825110610ed457600080fd5b60005b8251811015610f2f57610f1d33848381518110610ef657610ef6613e3f565b6020026020010151848481518110610f1057610f10613e3f565b6020026020010151612390565b80610f2781613e55565b915050610ed7565b505050565b6000610f418484846124e5565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610fc65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610df0565b610fd3853385840361226c565b506001949350505050565b6005546001600160a01b031633146110085760405162461bcd60e51b8152600401610df090613cb8565b6010805460ff1916911515919091179055565b6005546001600160a01b031633146110455760405162461bcd60e51b8152600401610df090613cb8565b600e805460ff1916911515919091179055565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610df090613cb8565b61108e6012600a613de7565b6103e861109a60025490565b6110a5906001613df6565b6110af9190613e2b565b6110b99190613e2b565b8110156110c557600080fd5b6110d16012600a613de7565b6110db9082613df6565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610e82565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610dbc918590611147908690613e6e565b61226c565b6005546001600160a01b031633146111765760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b03811661118957600080fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111d55760405162461bcd60e51b8152600401610df090613cb8565b6014546111e1306112fe565b1015611257576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610df0565b6013805460ff60a01b1916600160a01b179055611272612e80565b6013805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b031633146112de5760405162461bcd60e51b8152600401610df090613cb8565b600a81101580156112f0575060648111155b6112f957600080fd5b600f55565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146113435760405162461bcd60e51b8152600401610df090613cb8565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113b75760405162461bcd60e51b8152600401610df090613cb8565b601a805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114165760405162461bcd60e51b8152600401610df090613cb8565b80611489576013546001600160a01b03908116908316036114895760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610df0565b6001600160a01b03919091166000908152602860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114de5760405162461bcd60e51b8152600401610df090613cb8565b600181101580156114f157506105a08111155b6114fa57600080fd5b61150581603c613df6565b600c5550565b6005546001600160a01b031633146115355760405162461bcd60e51b8152600401610df090613cb8565b601c839055601d829055601e8190558061154f8385613e6e565b6115599190613e6e565b601b8190556105dc1015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610df0565b6005546001600160a01b031633146115d95760405162461bcd60e51b8152600401610df090613cb8565b601754156115e657600080fd5b601a805462ffff00191662010100179055436016819055611608908290613e6e565b601755600c546116189042613e6e565b600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146116745760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b03831661168757600080fd5b306001600160a01b0384160361169c57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190613e86565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af115801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190613e9f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146117f45760405162461bcd60e51b8152600401610df090613cb8565b603281111561180257600080fd5b61180e610e1042613ebc565b601154111561181c57600080fd5b426011556013546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188d9190613e86565b9050600061189a306112fe565b9050600060646118aa8585613df6565b6118b49190613e2b565b60135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350479291169063095ea7b3906044016020604051808303816000875af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613e9f565b50601254604051629d473b60e21b81526001600160a01b03909116906302751cec9061196d9030908690600190819084904290600401613ed3565b60408051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af9190613f0e565b50506000836119bd306112fe565b6119c79190613ebc565b905080156119dc576119dc3061dead83612390565b60006119e88347613ebc565b905080156119f9576119f98161304c565b50505050505050565b604080516002808252606082018352600092839291906020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a949190613f32565b81600081518110611aa757611aa7613e3f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611adb57611adb613e3f565b6001600160a01b0392909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050601254600d5460405163d06ca61f60e01b81529293506001600160a01b039091169163d06ca61f91611b4a918690600401613f93565b600060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b8f9190810190613fb4565b905080600181518110611ba457611ba4613e3f565b60200260200101519250505090565b606060048054610d2c90613c7e565b6005546001600160a01b03163314611bec5760405162461bcd60e51b8152600401610df090613cb8565b6013546001600160a01b0390811690831603611c705760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610df0565b611c7a8282613196565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611d385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df0565b611d45338585840361226c565b5060019392505050565b6000610dbc3384846124e5565b6005546001600160a01b03163314611d865760405162461bcd60e51b8152600401610df090613cb8565b60005b82811015611df7578160186000868685818110611da857611da8613e3f565b9050602002016020810190611dbd919061392b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611def81613e55565b915050611d89565b50505050565b6005546001600160a01b03163314611e275760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611eb05760405162461bcd60e51b8152600401610df090613cb8565b60208390556021829055602281905580611eca8385613e6e565b611ed49190613e6e565b601f8190556107d01015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610df0565b6005546001600160a01b03163314611f545760405162461bcd60e51b8152600401610df090613cb8565b620186a0611f6160025490565b611f6c906001613df6565b611f769190613e2b565b811015611f8257600080fd5b6103e8611f8e60025490565b611f99906001613df6565b611fa39190613e2b565b811115611faf57600080fd5b601455565b6005546001600160a01b03163314611fde5760405162461bcd60e51b8152600401610df090613cb8565b601a80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146120225760405162461bcd60e51b8152600401610df090613cb8565b61202e6012600a613de7565b6103e861203a60025490565b612045906001613df6565b61204f9190613e2b565b6120599190613e2b565b81101561206557600080fd5b6120716012600a613de7565b61207b9082613df6565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e82565b6005546001600160a01b031633146120da5760405162461bcd60e51b8152600401610df090613cb8565b6001600160a01b03811661213f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146121c55760405162461bcd60e51b8152600401610df090613cb8565b600081116121d257600080fd5b600d55565b6005546001600160a01b031633146122015760405162461bcd60e51b8152600401610df090613cb8565b60006122156005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114611df7576040519150601f19603f3d011682016040523d82523d6000602084013e611df7565b6000610dc06009836131c4565b6001600160a01b0383166122ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610df0565b6001600160a01b03821661232f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166123b65760405162461bcd60e51b8152600401610df090614045565b6001600160a01b0382166123dc5760405162461bcd60e51b8152600401610df09061408a565b6001600160a01b038316600090815260208190526040902054818110156124545760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df0565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061248b908490613e6e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124d791815260200190565b60405180910390a350505050565b6001600160a01b03831661250b5760405162461bcd60e51b8152600401610df090614045565b6001600160a01b0382166125315760405162461bcd60e51b8152600401610df09061408a565b600081116125905760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e73666572206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610df0565b601a54610100900460ff16612623576001600160a01b03831660009081526027602052604090205460ff16806125de57506001600160a01b03821660009081526027602052604090205460ff165b6126235760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610df0565b601754431015801561263757506000601754115b15612707576001600160a01b03831660009081526018602052604090205460ff16158061267157506005546001600160a01b038381169116145b8061268657506001600160a01b03821661dead145b6127075760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610df0565b601a5460ff16156128c9576005546001600160a01b0384811691161480159061273e57506005546001600160a01b03838116911614155b801561275257506001600160a01b03821615155b801561276957506001600160a01b03821661dead14155b801561278e57506001600160a01b03831660009081526027602052604090205460ff16155b80156127b357506001600160a01b03821660009081526027602052604090205460ff16155b156128c9576001600160a01b03831660009081526029602052604090205460ff1680156127f957506001600160a01b03821660009081526028602052604090205460ff16155b156128335760065481111561280d57600080fd5b600854612819836112fe565b6128239083613e6e565b111561282e57600080fd5b6128c9565b6001600160a01b03821660009081526029602052604090205460ff16801561287457506001600160a01b03831660009081526028602052604090205460ff16155b156128885760075481111561282e57600080fd5b6001600160a01b03821660009081526028602052604090205460ff166128c9576008546128b4836112fe565b6128be9083613e6e565b11156128c957600080fd5b60006128d4306112fe565b601454909150811080159081906128f35750601a5462010000900460ff165b80156129095750601354600160a01b900460ff16155b801561292e57506001600160a01b03851660009081526029602052604090205460ff16155b801561295357506001600160a01b03851660009081526027602052604090205460ff16155b801561297857506001600160a01b03841660009081526027602052604090205460ff16155b156129a6576013805460ff60a01b1916600160a01b179055612998612e80565b6013805460ff60a01b191690555b60105460ff16156129fb57600b5442101580156129cb57506703782dace9d900004710155b80156129e0575060016129de60096131e9565b115b156129f3576129ee846131f3565b6129fb565b6129fb61331a565b6001600160a01b03851660009081526027602052604090205460019060ff1680612a3d57506001600160a01b03851660009081526027602052604090205460ff165b15612a46575060005b60008115612e4757601754431080612a8c5750670c7d713b49da0000600654612a6f9190613ebc565b8510158015612a8c5750436017546005612a899190613e6e565b10155b8015612ab057506001600160a01b03871660009081526029602052604090205460ff165b8015612ad557506001600160a01b03861660009081526029602052604090205460ff16155b8015612ae357506000601b54115b15612c58576017544310612b0a57600160066000828254612b049190613ebc565b90915550505b6001600160a01b03861660009081526018602052604090205460ff16612ba5576001600160a01b0386166000908152601860205260408120805460ff191660019081179091556019805491929091612b63908490613e6e565b90915550506040516001600160a01b03871681527fc69d77aec5786ffcf6525c771a49f6299726bb8f4a25ae2723602cd7a28fc1dd9060200160405180910390a15b602654601b54612bb59087613df6565b612bbf9190613e2b565b9050601b54601d5482612bd29190613df6565b612bdc9190613e2b565b60246000828254612bed9190613e6e565b9091555050601b54601c54612c029083613df6565b612c0c9190613e2b565b60236000828254612c1d9190613e6e565b9091555050601b54601e54612c329083613df6565b612c3c9190613e2b565b60256000828254612c4d9190613e6e565b90915550612e299050565b6001600160a01b03861660009081526029602052604090205460ff168015612c8257506000601f54115b15612d1457602654601f54612c979087613df6565b612ca19190613e2b565b9050601f5460215482612cb49190613df6565b612cbe9190613e2b565b60246000828254612ccf9190613e6e565b9091555050601f54602054612ce49083613df6565b612cee9190613e2b565b60236000828254612cff9190613e6e565b9091555050601f54602254612c329083613df6565b6001600160a01b03871660009081526029602052604090205460ff168015612d3e57506000601b54115b15612e2957602654601b54612d539087613df6565b612d5d9190613e2b565b9050601b54601d5482612d709190613df6565b612d7a9190613e2b565b60246000828254612d8b9190613e6e565b9091555050601b54601c54612da09083613df6565b612daa9190613e2b565b60236000828254612dbb9190613e6e565b9091555050601b54601e54612dd09083613df6565b612dda9190613e2b565b60256000828254612deb9190613e6e565b9091555050600e5460ff161580612e085750612e05611a02565b85115b15612e2957612e186009876131c4565b612e2957612e2760098761337b565b505b8015612e3a57612e3a873083612390565b612e448186613ebc565b94505b612e52878787612390565b612e5d6009886131c4565b8015612e665750815b156119f957612e76600988613390565b5050505050505050565b6000612e8b306112fe565b90506000602554602354602454612ea29190613e6e565b612eac9190613e6e565b9050811580612eb9575080155b15612ec2575050565b601454612ed090600a613df6565b821115612ee857601454612ee590600a613df6565b91505b60008060028360245486612efc9190613df6565b612f069190613e2b565b612f109190613e2b565b905047612f25612f208387613ebc565b6133a5565b6000612f318247613ebc565b9050600081905060006002602454612f499190613e2b565b612f539088613ebc565b602354612f609085613df6565b612f6a9190613e2b565b905060006002602454612f7d9190613e2b565b612f879089613ebc565b602554612f949086613df6565b612f9e9190613e2b565b9050612faa8183613e6e565b612fb49084613ebc565b60006024819055602381905560255592508515801590612fd45750600083115b15612fe357612fe386846134f7565b8115613041576015546040516001600160a01b03909116908390600081818185875af1925050503d8060008114613036576040519150601f19603f3d011682016040523d82523d6000602084013e61303b565b606091505b50909750505b505050505050505050565b6040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190613f32565b816000815181106130ed576130ed613e3f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061312157613121613e3f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590849061316990600090869061dead9042906004016140cd565b6000604051808303818588803b15801561318257600080fd5b505af11580156119f9573d6000803e3d6000fd5b6001600160a01b0382166000908152602960205260409020805460ff1916821515179055611c7a8282613596565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6000610dc0825490565b6000600c54426132039190613e6e565b600b55600061326361325b82600161321b60096131e9565b6132259190613ebc565b61322e876112fe565b61323961dead6112fe565b613242306112fe565b61324c9190613e6e565b6132569190613e6e565b6135f9565b60099061371a565b905060006064600f54476132779190613df6565b6132819190613e2b565b9050816001600160a01b03168160405160006040518083038185875af1925050503d80600081146132ce576040519150601f19603f3d011682016040523d82523d6000602084013e6132d3565b606091505b50909350508215611df7576040516001600160a01b0383169082907fbd73dd3a978f545a338a5be0f5f49671a6a8dd2c5d8ba117281ff20ad917c93b90600090a350505050565b600080613328600247613e2b565b50506040516000903090819083908181818181875af1925050503d806000811461336e576040519150601f19603f3d011682016040523d82523d6000602084013e613373565b606091505b505050505050565b60006131e2836001600160a01b038416613726565b60006131e2836001600160a01b038416613775565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106133da576133da613e3f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134579190613f32565b8160018151811061346a5761346a613e3f565b6001600160a01b039283166020918202929092010152601254613490913091168461226c565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906134c9908590600090869030904290600401614102565b600060405180830381600087803b1580156134e357600080fd5b505af1158015613373573d6000803e3d6000fd5b60125461350f9030906001600160a01b03168461226c565b60125460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061354c9030908790600090819084904290600401613ed3565b60606040518083038185885af115801561356a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061358f919061413e565b5050505050565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040516bffffffffffffffffffffffff193360601b16602082015260009081908390439042906034016040516020818303038152906040528051906020012060001c6136459190613e2b565b6040516bffffffffffffffffffffffff194160601b166020820152459042906034016040516020818303038152906040528051906020012060001c61368a9190613e2b565b6136944442613e6e565b61369e9190613e6e565b6136a89190613e6e565b6136b29190613e6e565b6136bc9190613e6e565b6136c69190613e6e565b6040516020016136d891815260200190565b60408051601f1981840301815291905280516020909101209050846136fd8186613ebc565b613707908361416c565b6137119190613e6e565b95945050505050565b60006131e28383613868565b600081815260018301602052604081205461376d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610dc0565b506000610dc0565b6000818152600183016020526040812054801561385e576000613799600183613ebc565b85549091506000906137ad90600190613ebc565b90508181146138125760008660000182815481106137cd576137cd613e3f565b90600052602060002001549050808760000184815481106137f0576137f0613e3f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061382357613823614180565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610dc0565b6000915050610dc0565b600082600001828154811061387f5761387f613e3f565b9060005260206000200154905092915050565b600060208083528351808285015260005b818110156138bf578581018301518582016040015282016138a3565b818111156138d1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146138fc57600080fd5b50565b6000806040838503121561391257600080fd5b823561391d816138e7565b946020939093013593505050565b60006020828403121561393d57600080fd5b81356131e2816138e7565b60006020828403121561395a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139a0576139a0613961565b604052919050565b600067ffffffffffffffff8211156139c2576139c2613961565b5060051b60200190565b600082601f8301126139dd57600080fd5b813560206139f26139ed836139a8565b613977565b82815260059290921b84018101918181019086841115613a1157600080fd5b8286015b84811015613a2c5780358352918301918301613a15565b509695505050505050565b60008060408385031215613a4a57600080fd5b823567ffffffffffffffff80821115613a6257600080fd5b818501915085601f830112613a7657600080fd5b81356020613a866139ed836139a8565b82815260059290921b84018101918181019089841115613aa557600080fd5b948201945b83861015613acc578535613abd816138e7565b82529482019490820190613aaa565b96505086013592505080821115613ae257600080fd5b50613aef858286016139cc565b9150509250929050565b600080600060608486031215613b0e57600080fd5b8335613b19816138e7565b92506020840135613b29816138e7565b929592945050506040919091013590565b80151581146138fc57600080fd5b600060208284031215613b5a57600080fd5b81356131e281613b3a565b60008060408385031215613b7857600080fd5b8235613b83816138e7565b91506020830135613b9381613b3a565b809150509250929050565b600080600060608486031215613bb357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613bdd57600080fd5b8235613be8816138e7565b91506020830135613b93816138e7565b600080600060408486031215613c0d57600080fd5b833567ffffffffffffffff80821115613c2557600080fd5b818601915086601f830112613c3957600080fd5b813581811115613c4857600080fd5b8760208260051b8501011115613c5d57600080fd5b60209283019550935050840135613c7381613b3a565b809150509250925092565b600181811c90821680613c9257607f821691505b602082108103613cb257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d3e578160001904821115613d2457613d24613ced565b80851615613d3157918102915b93841c9390800290613d08565b509250929050565b600082613d5557506001610dc0565b81613d6257506000610dc0565b8160018114613d785760028114613d8257613d9e565b6001915050610dc0565b60ff841115613d9357613d93613ced565b50506001821b610dc0565b5060208310610133831016604e8410600b8410161715613dc1575081810a610dc0565b613dcb8383613d03565b8060001904821115613ddf57613ddf613ced565b029392505050565b60006131e260ff841683613d46565b6000816000190483118215151615613e1057613e10613ced565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613e3a57613e3a613e15565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201613e6757613e67613ced565b5060010190565b60008219821115613e8157613e81613ced565b500190565b600060208284031215613e9857600080fd5b5051919050565b600060208284031215613eb157600080fd5b81516131e281613b3a565b600082821015613ece57613ece613ced565b500390565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060408385031215613f2157600080fd5b505080516020909101519092909150565b600060208284031215613f4457600080fd5b81516131e2816138e7565b600081518084526020808501945080840160005b83811015613f885781516001600160a01b031687529582019590820190600101613f63565b509495945050505050565b828152604060208201526000613fac6040830184613f4f565b949350505050565b60006020808385031215613fc757600080fd5b825167ffffffffffffffff811115613fde57600080fd5b8301601f81018513613fef57600080fd5b8051613ffd6139ed826139a8565b81815260059190911b8201830190838101908783111561401c57600080fd5b928401925b8284101561403a57835182529284019290840190614021565b979650505050505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8481526080602082015260006140e66080830186613f4f565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061412160a0830186613f4f565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561415357600080fd5b8351925060208401519150604084015190509250925092565b60008261417b5761417b613e15565b500690565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220723d6813fa488467d77aa57179ee0c2650253a2c5e422c081a7937dc1e587cab64736f6c634300080f0033