0x6080604052600436106103b6575f3560e01c80636e9fa864116101e9578063bf474bed11610108578063eb429bf81161009d578063f3a395fc1161006d578063f3a395fc14610b6e578063f429389014610b9c578063f5648a4f14610bb0578063f7685a0214610bc4575f80fd5b8063eb429bf814610aee578063eb77dbb114610b19578063f2a6227f14610b2e578063f2b4c32514610b59575f80fd5b8063c9567bf9116100d8578063c9567bf914610a57578063d677d03e14610a6b578063dd62ed3e14610a96578063e8078d9414610ada575f80fd5b8063bf474bed146109c9578063c1ae5e72146109de578063c232ae4d14610a0c578063c876d0b914610a37575f80fd5b80638f9a55c01161017e578063a9059cbb1161014e578063a9059cbb14610941578063abb284e914610960578063bbab0ff11461097f578063be68e0271461099e575f80fd5b80638f9a55c0146108cd5780638fbd8f27146108e257806395d89b4114610901578063a1780c181461092d575f80fd5b80637d1db4a5116101b95780637d1db4a51461085e57806381cd58e51461087357806384d8a902146108925780638da5cb5b146108b1575f80fd5b80636e9fa864146107e357806370a0823114610802578063715018a614610836578063751039fc1461084a575f80fd5b8063298a8328116102d55780633e7130601161026a578063580a155a1161023a578063580a155a1461075357806366b6090f146107815780636a4d84f9146107965780636e2ed3c4146107b5575f80fd5b80633e713060146106c657806351a2f687146106db57806352d3c14e146106fa57806354ca45d814610725575f80fd5b80633520b3a4116102a55780633520b3a41461064557806337e294d51461065a5780633a3dec9e146106795780633b32edd414610698575f80fd5b8063298a8328146105d45780632ace2af5146105e95780632d4bbb0514610617578063313ce5671461062a575f80fd5b80630faee56f1161034b5780631cc34b981161031b5780631cc34b981461057657806321e09b341461058b57806323b872dd146105a057806324aede52146105bf575f80fd5b80630faee56f1461050157806311a63e171461051657806318160ddd1461054d57806319dde7b714610561575f80fd5b806308150133116103865780630815013314610475578063095ea7b3146104985780630c0e3d4a146104b75780630d2d697a146104d6575f80fd5b8063039aa9cf146103c15780630634087d1461040457806306b091f91461041a57806306fdde0314610439575f80fd5b366103bd57005b5f80fd5b3480156103cc575f80fd5b506103ef6103db366004613930565b60066020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561040f575f80fd5b50610418610bd9565b005b348015610425575f80fd5b5061041861043436600461396b565b610c1b565b348015610444575f80fd5b5060408051808201909152600b81526a48756e67657247616d657360a81b60208201525b6040516103fb91906139e2565b348015610480575f80fd5b5061048a60225481565b6040519081526020016103fb565b3480156104a3575f80fd5b506103ef6104b236600461396b565b610ca3565b3480156104c2575f80fd5b506104186104d13660046139f4565b610cb9565b3480156104e1575f80fd5b5061048a6104f0366004613a14565b60096020525f908152604090205481565b34801561050c575f80fd5b5061048a60205481565b348015610521575f80fd5b50601254610535906001600160a01b031681565b6040516001600160a01b0390911681526020016103fb565b348015610558575f80fd5b50601c5461048a565b34801561056c575f80fd5b5061048a60255481565b348015610581575f80fd5b5061048a60235481565b348015610596575f80fd5b5061048a602c5481565b3480156105ab575f80fd5b506103ef6105ba366004613a2f565b610cfc565b3480156105ca575f80fd5b5061048a60295481565b3480156105df575f80fd5b5061048a602b5481565b3480156105f4575f80fd5b506103ef610603366004613930565b5f9081526004602052604090205460ff1690565b6104186106253660046139f4565b610d63565b348015610635575f80fd5b50604051600981526020016103fb565b348015610650575f80fd5b5061048a60215481565b348015610665575f80fd5b50601154610535906001600160a01b031681565b348015610684575f80fd5b50610418610693366004613ad5565b610f0b565b3480156106a3575f80fd5b506103ef6106b2366004613930565b5f9081526006602052604090205460ff1690565b3480156106d1575f80fd5b5061048a60245481565b3480156106e6575f80fd5b50601054610535906001600160a01b031681565b348015610705575f80fd5b5061048a610714366004613a14565b600b6020525f908152604090205481565b348015610730575f80fd5b506103ef61073f366004613930565b60076020525f908152604090205460ff1681565b34801561075e575f80fd5b506103ef61076d366004613930565b60056020525f908152604090205460ff1681565b34801561078c575f80fd5b5061048a60285481565b3480156107a1575f80fd5b506104186107b03660046139f4565b61102e565b3480156107c0575f80fd5b506103ef6107cf366004613930565b5f9081526007602052604090205460ff1690565b3480156107ee575f80fd5b506104186107fd366004613c4d565b611071565b34801561080d575f80fd5b5061048a61081c366004613a14565b6001600160a01b03165f9081526001602052604090205490565b348015610841575f80fd5b506104186112e9565b348015610855575f80fd5b5061041861135a565b348015610869575f80fd5b5061048a601d5481565b34801561087e575f80fd5b5061041861088d366004613d31565b61138d565b34801561089d575f80fd5b506104186108ac366004613930565b611b52565b3480156108bc575f80fd5b505f546001600160a01b0316610535565b3480156108d8575f80fd5b5061048a601e5481565b3480156108ed575f80fd5b506104186108fc3660046139f4565b611c29565b34801561090c575f80fd5b5060408051808201909152600481526348474d5360e01b6020820152610468565b348015610938575f80fd5b50610418611c6c565b34801561094c575f80fd5b506103ef61095b36600461396b565b611cb9565b34801561096b575f80fd5b5061041861097a3660046139f4565b611cc5565b34801561098a575f80fd5b50601354610535906001600160a01b031681565b3480156109a9575f80fd5b5061048a6109b8366004613a14565b600a6020525f908152604090205481565b3480156109d4575f80fd5b5061048a601f5481565b3480156109e9575f80fd5b506103ef6109f8366004613930565b5f9081526005602052604090205460ff1690565b348015610a17575f80fd5b5061048a610a26366004613a14565b600d6020525f908152604090205481565b348015610a42575f80fd5b50602e546103ef90600160b81b900460ff1681565b348015610a62575f80fd5b50610418611d08565b348015610a76575f80fd5b5061048a610a85366004613a14565b600c6020525f908152604090205481565b348015610aa1575f80fd5b5061048a610ab0366004613da2565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610ae5575f80fd5b50610418611da0565b348015610af9575f80fd5b5061048a610b08366004613930565b600f6020525f908152604090205481565b348015610b24575f80fd5b5061048a60275481565b348015610b39575f80fd5b5061048a610b48366004613a14565b600e6020525f908152604090205481565b348015610b64575f80fd5b5061048a602a5481565b348015610b79575f80fd5b506103ef610b88366004613930565b60046020525f908152604090205460ff1681565b348015610ba7575f80fd5b5061041861208a565b348015610bbb575f80fd5b506104186120c6565b348015610bcf575f80fd5b5061048a60265481565b6010546001600160a01b03163314610bef575f80fd5b60188054905f610bff8380613ded565b909155505060198054905f610c148380613ded565b9091555050565b6010546001600160a01b03163314610c31575f80fd5b305f90815260016020526040902054811115610c945760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420656e6f75676820746f6b656e7320696e20636f6e747261637400000060448201526064015b60405180910390fd5b610c9f308383612112565b5050565b5f610caf338484612757565b5060015b92915050565b6010546001600160a01b03163314610ccf575f80fd5b6028829055610ce060036009613e00565b610ceb90600a613ef9565b610cf59082613f07565b602c555050565b5f610d08848484612112565b610d598433610d548560405180606001604052806028815260200161419e602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061287b565b612757565b5060019392505050565b5f821180610d7057505f81115b610dbc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e2030006044820152606401610c8b565b610dc86009600a613ef9565b610dd29082613f07565b341015610e215760405162461bcd60e51b815260206004820152601960248201527f496e636f72726563742045544820616d6f756e742073656e74000000000000006044820152606401610c8b565b8115610eac57335f90815260016020526040902054821115610e7e5760405162461bcd60e51b81526020600482015260166024820152754e6f7420656e6f7567682048474d5320746f6b656e7360501b6044820152606401610c8b565b610e8833836128b3565b335f9081526009602052604081208054849290610ea6908490613f1e565b90915550505b8015610edf57335f908152600a602052604081208054839290610ed0908490613f1e565b90915550610edf905034612a3a565b6040517fed21248cb703b524cc0029bb8669df941baca560163a3bc6ad184e7e9c268070905f90a15050565b6010546001600160a01b03163314610f565760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610c8b565b5f5b81811015610fda57836001828651610f709190613ded565b610f7a9190613ded565b81518110610f8a57610f8a613f31565b60200260200101516001600160a01b03166108fc8490811502906040515f60405180830381858888f19350505050158015610fc7573d5f803e3d5ffd5b5080610fd281613f45565b915050610f58565b5082604051610fe99190613f5d565b6040805191829003822084835260208301849052917f8b3eb1b796c23a273d8117d01e4a5e074356865b5f1bc15b881fb60bd02e50bd910160405180910390a2505050565b6010546001600160a01b03163314611044575f80fd5b602682905561105560036009613e00565b61106090600a613ef9565b61106a9082613f07565b602a555050565b6010546001600160a01b031633146110e15760405162461bcd60e51b815260206004820152602d60248201527f4f6e6c79206d61696e74656e616e636557616c6c65742063616e2063616c6c2060448201526c3a3434b990333ab731ba34b7b760991b6064820152608401610c8b565b825184511461114b5760405162461bcd60e51b815260206004820152603060248201527f4d69736d61746368656420706f74696f6e4e616d657320616e6420616d6f756e60448201526f0e8e640c2e4e4c2f2e640d8cadccee8d60831b6064820152608401610c8b565b83515f60218190556022819055602381905560245561116a8282613ded565b90505f5b818110156111c4576111b286828151811061118b5761118b613f31565b60200260200101518683815181106111a5576111a5613f31565b6020026020010151612b8d565b806111bc81613f45565b91505061116e565b50805b855181101561121f5761120d8682815181106111e5576111e5613f31565b60200260200101518683815181106111ff576111ff613f31565b602002602001015186612d37565b8061121781613f45565b9150506111c7565b506021541561125157611251604051806040016040528060048152602001635854524160e01b81525060215485612fb5565b6022541561128357611283604051806040016040528060058152602001641093d3d4d560da1b81525060225485612fb5565b602354156112b1576112b1604051806040016040528060018152602001602b60f91b81525060235485612fb5565b602454156112e2576112e2604051806040016040528060048152602001630534b49560e41b81525060245485612fb5565b5050505050565b5f546001600160a01b031633146113125760405162461bcd60e51b8152600401610c8b90613f9b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146113835760405162461bcd60e51b8152600401610c8b90613f9b565b61138b6135a3565b565b6010546001600160a01b031633146113a3575f80fd5b604051635854524160e01b602082015260240160405160208183030381529060405280519060200120816040516020016113dd9190613fd0565b60405160208183030381529060405280519060200120036115845781516001600160a01b0384165f908152600b602052604090205410156114305760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760045f84838151811061145057611450613f31565b60209081029190910181015182528101919091526040015f205460ff16156114b05760405162461bcd60e51b8152602060048201526013602482015272416c726561647920616374697665205854524160681b6044820152606401610c8b565b600160045f8584815181106114c7576114c7613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f866001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115259190613ded565b925050819055506001600f5f85848151811061154357611543613f31565b602002602001015181526020019081526020015f205f8282546115669190613f1e565b9091555081905061157681613f45565b915050611432565b50505050565b604051641093d3d4d560da1b602082015260250160405160208183030381529060405280519060200120816040516020016115bf9190613fd0565b60405160208183030381529060405280519060200120036117615781516001600160a01b0384165f908152600c602052604090205410156116125760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760065f84838151811061163257611632613f31565b60209081029190910181015182528101919091526040015f205460ff16156116935760405162461bcd60e51b8152602060048201526014602482015273105b1c9958591e481858dd1a5d99481093d3d4d560621b6044820152606401610c8b565b600160065f8584815181106116aa576116aa613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f866001600160a01b03166001600160a01b031681526020019081526020015f205f8282546117089190613ded565b925050819055506001600f5f85848151811061172657611726613f31565b602002602001015181526020019081526020015f205f8282546117499190613f1e565b9091555081905061175981613f45565b915050611614565b604051602b60f91b602082015260210160405160208183030381529060405280519060200120816040516020016117989190613fd0565b60405160208183030381529060405280519060200120036119365781516001600160a01b0384165f908152600d602052604090205410156117eb5760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760055f84838151811061180b5761180b613f31565b60209081029190910181015182528101919091526040015f205460ff16156118685760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c9030b1ba34bb32902b60811b6044820152606401610c8b565b600160055f85848151811061187f5761187f613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f866001600160a01b03166001600160a01b031681526020019081526020015f205f8282546118dd9190613ded565b925050819055506001600f5f8584815181106118fb576118fb613f31565b602002602001015181526020019081526020015f205f82825461191e9190613f1e565b9091555081905061192e81613f45565b9150506117ed565b604051630534b49560e41b602082015260240160405160208183030381529060405280519060200120816040516020016119709190613fd0565b6040516020818303038152906040528051906020012003611b115781516001600160a01b0384165f908152600e602052604090205410156119c35760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760075f8483815181106119e3576119e3613f31565b60209081029190910181015182528101919091526040015f205460ff1615611a435760405162461bcd60e51b81526020600482015260136024820152720416c72656164792061637469766520534b495606c1b6044820152606401610c8b565b600160075f858481518110611a5a57611a5a613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f866001600160a01b03166001600160a01b031681526020019081526020015f205f828254611ab89190613ded565b925050819055506001600f5f858481518110611ad657611ad6613f31565b602002602001015181526020019081526020015f205f828254611af99190613f1e565b90915550819050611b0981613f45565b9150506119c5565b60405162461bcd60e51b815260206004820152601160248201527057726f6e6720506f74696f6e204e616d6560781b6044820152606401610c8b565b505050565b6010546001600160a01b03163314611b9d5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610c8b565b60015b818111611bfd575f818152600460209081526040808320805460ff19908116909155600583528184208054821690556006835281842080548216905560079092529091208054909116905580611bf581613f45565b915050611ba0565b506040517f22229ac981ba35e4851e4876bf3e8c431568fa66038fbcdfeaac37bd197f7bec905f90a150565b6010546001600160a01b03163314611c3f575f80fd5b6025829055611c5060036009613e00565b611c5b90600a613ef9565b611c659082613f07565b6029555050565b6012546001600160a01b0316336001600160a01b031614611c8b575f80fd5b305f908152600160205260409020548015611ca957611ca98161361b565b478015610c9f57610c9f81612a3a565b5f610caf338484612112565b6010546001600160a01b03163314611cdb575f80fd5b6027829055611cec60036009613e00565b611cf790600a613ef9565b611d019082613f07565b602b555050565b5f546001600160a01b03163314611d315760405162461bcd60e51b8152600401610c8b90613f9b565b602e54600160a01b900460ff1615611d8b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610c8b565b602e805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314611dc95760405162461bcd60e51b8152600401610c8b90613f9b565b602e805460ff60c01b1916600160c01b179055602d546001600160a01b0316611e1357602d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790555b602e546001600160a01b0316611fa957602d5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e97919061402f565b6001600160a01b031663c9c6539630602d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1a919061402f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611f64573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f88919061402f565b602e80546001600160a01b0319166001600160a01b03929092169190911790555b305f81815260016020526040902054602d549091611fd0916001600160a01b031683612757565b602d54601c545f80546040805163f305d71960e01b815230600482015260248101879052604481019490945260648401929092526001600160a01b0390811660848401524260a4840152905192169163f305d71991479160c4808301926060929190829003018185885af115801561204a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061206f919061404a565b5050602e805462ff00ff60b01b1916600160b01b1790555050565b5f546001600160a01b031633146120b35760405162461bcd60e51b8152600401610c8b90613f9b565b4780156120c3576120c381612a3a565b50565b6010546001600160a01b031633146120dc575f80fd5b6012546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156120c3573d5f803e3d5ffd5b6001600160a01b0383166121765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c8b565b6001600160a01b0382166121d85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c8b565b5f81116122395760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c8b565b602e545f90600160c01b900460ff1661229c57602e54600160a01b900460ff1661229c5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610c8b565b5f546001600160a01b038581169116148015906122c657505f546001600160a01b03848116911614155b1561261a576122f760646122f1601854601b54116122e6576014546122ea565b6016545b859061378b565b90613810565b602e54909150600160b81b900460ff16156123e457602d546001600160a01b038481169116148015906123385750602e546001600160a01b03848116911614155b156123e457325f9081526008602052604090205443116123d25760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c8b565b325f9081526008602052604090204390555b602e546001600160a01b03858116911614801561240f5750602d546001600160a01b03848116911614155b801561243357506001600160a01b0383165f9081526003602052604090205460ff16155b1561251957601d5482111561248a5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610c8b565b601e54826124ac856001600160a01b03165f9081526001602052604090205490565b6124b69190613f1e565b11156125045760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610c8b565b601b8054905f61251383613f45565b91905055505b602e546001600160a01b03848116911614801561253f57506001600160a01b0384163014155b1561256c5761256960646122f1601954601b541161255f576015546122ea565b601754859061378b565b90505b305f90815260016020526040902054602e54600160a81b900460ff161580156125a25750602e546001600160a01b038581169116145b80156125b75750602e54600160b01b900460ff165b80156125c45750601f5481115b80156125d35750601a54601b54115b15612618575f4790506125f96125f4856125ef85602054613851565b613851565b61361b565b5f6126044783613865565b905080156126155761261581612a3a565b50505b505b801561269257305f9081526001602052604090205461263990826138a6565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126899085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546126b49083613865565b6001600160a01b0385165f908152600160205260409020556126f76126d98383613865565b6001600160a01b0385165f90815260016020526040902054906138a6565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127408585613865565b60405190815260200160405180910390a350505050565b6001600160a01b0383166127b95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c8b565b6001600160a01b03821661281a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c8b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f818484111561289e5760405162461bcd60e51b8152600401610c8b91906139e2565b505f6128aa8486613ded565b95945050505050565b6001600160a01b0382166129135760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c8b565b61291f6009600a613ef9565b6129299082613f07565b6001600160a01b0383165f90815260016020526040812080549293508392909190612955908490613ded565b9250508190555080601c5f82825461296d9190613ded565b9091555050601c54601d819055601e556040518181526001600160a01b038316907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a26040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a37f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601c54604051612a2e91815260200190565b60405180910390a15050565b5f8111612a895760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610c8b565b80471015612ad95760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152606401610c8b565b5f612ae5600583614075565b6013546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015612b1d573d5f803e3d5ffd5b506011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612b55573d5f803e3d5ffd5b506010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611b4d573d5f803e3d5ffd5b604051635854524160e01b60208201526024016040516020818303038152906040528051906020012082604051602001612bc79190613fd0565b6040516020818303038152906040528051906020012003612bfe578060215f828254612bf39190613f1e565b90915550610c9f9050565b604051641093d3d4d560da1b60208201526025016040516020818303038152906040528051906020012082604051602001612c399190613fd0565b6040516020818303038152906040528051906020012003612c65578060225f828254612bf39190613f1e565b604051602b60f91b60208201526021016040516020818303038152906040528051906020012082604051602001612c9c9190613fd0565b6040516020818303038152906040528051906020012003612cc8578060235f828254612bf39190613f1e565b604051630534b49560e41b60208201526024016040516020818303038152906040528051906020012082604051602001612d029190613fd0565b6040516020818303038152906040528051906020012003610c9f578060245f828254612d2e9190613f1e565b90915550505050565b604051635854524160e01b60208201526024016040516020818303038152906040528051906020012083604051602001612d719190613fd0565b6040516020818303038152906040528051906020012003612dbe576001600160a01b0381165f908152600b602052604081208054849290612db3908490613f1e565b90915550612f6e9050565b604051641093d3d4d560da1b60208201526025016040516020818303038152906040528051906020012083604051602001612df99190613fd0565b6040516020818303038152906040528051906020012003612e3b576001600160a01b0381165f908152600c602052604081208054849290612db3908490613f1e565b604051602b60f91b60208201526021016040516020818303038152906040528051906020012083604051602001612e729190613fd0565b6040516020818303038152906040528051906020012003612eb4576001600160a01b0381165f908152600d602052604081208054849290612db3908490613f1e565b604051630534b49560e41b60208201526024016040516020818303038152906040528051906020012083604051602001612eee9190613fd0565b6040516020818303038152906040528051906020012003612f30576001600160a01b0381165f908152600e602052604081208054849290612db3908490613f1e565b60405162461bcd60e51b8152602060048201526013602482015272496e76616c696420506f74696f6e204e616d6560681b6044820152606401610c8b565b806001600160a01b0316336001600160a01b03167f3d57eec5ab68ae7c8f1ed6299a36d8e6f61253e0f24ac6aba38bc3fcbe7bc7ae855f8060405161286e93929190614094565b815f03612fc157505050565b5f80604051602001612fdd90635854524160e01b815260040190565b60405160208183030381529060405280519060200120856040516020016130049190613fd0565b604051602081830303815290604052805190602001200361317f5760255461302c908561378b565b60295490925061303c908561378b565b6001600160a01b0384165f908152600960205260409020549091508211156130765760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156130ad5760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f90815260096020526040812080548492906130d4908490613ded565b90915550506001600160a01b0383165f908152600a602052604081208054839290613100908490613ded565b90915550506001600160a01b0383165f908152600b60205260408120805486929061312c908490613f1e565b90915550506040516001600160a01b0384169033907f3d57eec5ab68ae7c8f1ed6299a36d8e6f61253e0f24ac6aba38bc3fcbe7bc7ae9061317290899086908890614094565b60405180910390a36112e2565b604051641093d3d4d560da1b602082015260250160405160208183030381529060405280519060200120856040516020016131ba9190613fd0565b60405160208183030381529060405280519060200120036132e2576026546131e2908561378b565b602a549092506131f2908561378b565b6001600160a01b0384165f9081526009602052604090205490915082111561322c5760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156132635760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f908152600960205260408120805484929061328a908490613ded565b90915550506001600160a01b0383165f908152600a6020526040812080548392906132b6908490613ded565b90915550506001600160a01b0383165f908152600c60205260408120805486929061312c908490613f1e565b604051602b60f91b602082015260210160405160208183030381529060405280519060200120856040516020016133199190613fd0565b604051602081830303815290604052805190602001200361344157602754613341908561378b565b602b54909250613351908561378b565b6001600160a01b0384165f9081526009602052604090205490915082111561338b5760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156133c25760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f90815260096020526040812080548492906133e9908490613ded565b90915550506001600160a01b0383165f908152600a602052604081208054839290613415908490613ded565b90915550506001600160a01b0383165f908152600d60205260408120805486929061312c908490613f1e565b604051630534b49560e41b6020820152602401604051602081830303815290604052805190602001208560405160200161347b9190613fd0565b6040516020818303038152906040528051906020012003612f30576028546134a3908561378b565b602c549092506134b3908561378b565b6001600160a01b0384165f908152600960205260409020549091508211156134ed5760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156135245760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f908152600960205260408120805484929061354b908490613ded565b90915550506001600160a01b0383165f908152600a602052604081208054839290613577908490613ded565b90915550506001600160a01b0383165f908152600e60205260408120805486929061312c908490613f1e565b5f546001600160a01b031633146135cc5760405162461bcd60e51b8152600401610c8b90613f9b565b601c54601d819055601e819055602e805460ff60b81b191690556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b602e805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061366157613661613f31565b6001600160a01b03928316602091820292909201810191909152602d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156136b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136dc919061402f565b816001815181106136ef576136ef613f31565b6001600160a01b039283166020918202929092010152602d546137159130911684612757565b602d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061374d9085905f9086903090429060040161412e565b5f604051808303815f87803b158015613764575f80fd5b505af1158015613776573d5f803e3d5ffd5b5050602e805460ff60a81b1916905550505050565b5f825f0361379a57505f610cb3565b5f6137a58385613f07565b9050826137b28583614075565b146138095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c8b565b9392505050565b5f61380983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613904565b5f81831161385f5782613809565b50919050565b5f61380983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061287b565b5f806138b28385613f1e565b9050838110156138095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c8b565b5f81836139245760405162461bcd60e51b8152600401610c8b91906139e2565b505f6128aa8486614075565b5f60208284031215613940575f80fd5b5035919050565b6001600160a01b03811681146120c3575f80fd5b803561396681613947565b919050565b5f806040838503121561397c575f80fd5b823561398781613947565b946020939093013593505050565b5f5b838110156139af578181015183820152602001613997565b50505f910152565b5f81518084526139ce816020860160208601613995565b601f01601f19169290920160200192915050565b602081525f61380960208301846139b7565b5f8060408385031215613a05575f80fd5b50508035926020909101359150565b5f60208284031215613a24575f80fd5b813561380981613947565b5f805f60608486031215613a41575f80fd5b8335613a4c81613947565b92506020840135613a5c81613947565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613aaa57613aaa613a6d565b604052919050565b5f67ffffffffffffffff821115613acb57613acb613a6d565b5060051b60200190565b5f805f60608486031215613ae7575f80fd5b833567ffffffffffffffff811115613afd575f80fd5b8401601f81018613613b0d575f80fd5b80356020613b22613b1d83613ab2565b613a81565b82815260059290921b83018101918181019089841115613b40575f80fd5b938201935b83851015613b67578435613b5881613947565b82529382019390820190613b45565b999188013598505060409096013595945050505050565b5f82601f830112613b8d575f80fd5b813567ffffffffffffffff811115613ba757613ba7613a6d565b613bba601f8201601f1916602001613a81565b818152846020838601011115613bce575f80fd5b816020850160208301375f918101602001919091529392505050565b5f82601f830112613bf9575f80fd5b81356020613c09613b1d83613ab2565b82815260059290921b84018101918181019086841115613c27575f80fd5b8286015b84811015613c425780358352918301918301613c2b565b509695505050505050565b5f805f8060808587031215613c60575f80fd5b843567ffffffffffffffff80821115613c77575f80fd5b818701915087601f830112613c8a575f80fd5b81356020613c9a613b1d83613ab2565b82815260059290921b8401810191818101908b841115613cb8575f80fd5b8286015b84811015613cef57803586811115613cd3575f8081fd5b613ce18e86838b0101613b7e565b845250918301918301613cbc565b5098505088013592505080821115613d05575f80fd5b50613d1287828801613bea565b935050613d216040860161395b565b9396929550929360600135925050565b5f805f60608486031215613d43575f80fd5b8335613d4e81613947565b9250602084013567ffffffffffffffff80821115613d6a575f80fd5b613d7687838801613bea565b93506040860135915080821115613d8b575f80fd5b50613d9886828701613b7e565b9150509250925092565b5f8060408385031215613db3575f80fd5b8235613dbe81613947565b91506020830135613dce81613947565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cb357610cb3613dd9565b60ff8281168282160390811115610cb357610cb3613dd9565b600181815b80851115613e5357815f1904821115613e3957613e39613dd9565b80851615613e4657918102915b93841c9390800290613e1e565b509250929050565b5f82613e6957506001610cb3565b81613e7557505f610cb3565b8160018114613e8b5760028114613e9557613eb1565b6001915050610cb3565b60ff841115613ea657613ea6613dd9565b50506001821b610cb3565b5060208310610133831016604e8410600b8410161715613ed4575081810a610cb3565b613ede8383613e19565b805f1904821115613ef157613ef1613dd9565b029392505050565b5f61380960ff841683613e5b565b8082028115828204841417610cb357610cb3613dd9565b80820180821115610cb357610cb3613dd9565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613f5657613f56613dd9565b5060010190565b81515f9082906020808601845b83811015613f8f5781516001600160a01b031685529382019390820190600101613f6a565b50929695505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f8251613fe1818460208701613995565b9190910192915050565b60208082526024908201527f42616c616e636520646f6573206e6f74206861766520656e6f75676820506f74604082015263696f6e7360e01b606082015260800190565b5f6020828403121561403f575f80fd5b815161380981613947565b5f805f6060848603121561405c575f80fd5b8351925060208401519150604084015190509250925092565b5f8261408f57634e487b7160e01b5f52601260045260245ffd5b500490565b606081525f6140a660608301866139b7565b60208301949094525060400152919050565b60208082526021908201527f42616c616e636520646f6573206e6f74206861766520656e6f7567682048474d6040820152605360f81b606082015260800190565b6020808252818101527f42616c616e636520646f6573206e6f74206861766520656e6f75676820455448604082015260600190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561417c5784516001600160a01b031683529383019391830191600101614157565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cee669f4f37d2f85b03746042bb0c0820013afa266a8b2fd7cf85fd8306fe72064736f6c63430008150033
0x608060405260136014556019601555600560165560056017556013601855601980556019601a555f601b556009600a6200003a91906200044c565b6200004a90633b9aca0062000463565b601c556200005b6009600a6200044c565b6200006a906298968062000463565b601d556200007b6009600a6200044c565b6200008b906301312d0062000463565b601e556200009c6009600a6200044c565b620000ab90620f424062000463565b601f55620000bc6009600a6200044c565b620000cb906298968062000463565b6020556161a86025556161a86026556161a86027556161a860285560036009620000f691906200047d565b6200010390600a6200044c565b6200011090601462000463565b6029555f602a5562000125600360096200047d565b6200013290600a6200044c565b6200013f90600962000463565b602b5562000150600360096200047d565b6200015d90600a6200044c565b6200016a90600c62000463565b602c55602e805463ffffffff60a81b1916600160b81b1790553480156200018f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35033601280546001600160a01b03929092166001600160a01b031992831617905560138054821673e63129686f9ae07bf4a733c41a424cb54444abc817905560118054821673ee31a88b55dc7f69dd3d9f5e0b77bd5cabd8a41f1790556010805490911673bebdd8b641965e7618a39b1b2c5b1a64625aa84c179055601c54305f908152600160208190526040822092909255600390620002775f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308082526003855283822080548716600190811790915560135484168352848320805488168217905560115484168352848320805488168217905560105490931682528382208054909616831790955584815292528082205490517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200032f9190815260200190565b60405180910390a362000499565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200039157815f19048211156200037557620003756200033d565b808516156200038357918102915b93841c939080029062000356565b509250929050565b5f82620003a95750600162000446565b81620003b757505f62000446565b8160018114620003d05760028114620003db57620003fb565b600191505062000446565b60ff841115620003ef57620003ef6200033d565b50506001821b62000446565b5060208310610133831016604e8410600b841016171562000420575081810a62000446565b6200042c838362000351565b805f19048211156200044257620004426200033d565b0290505b92915050565b5f6200045c60ff84168362000399565b9392505050565b80820281158282048414176200044657620004466200033d565b60ff82811682821603908111156200044657620004466200033d565b6141fb80620004a75f395ff3fe6080604052600436106103b6575f3560e01c80636e9fa864116101e9578063bf474bed11610108578063eb429bf81161009d578063f3a395fc1161006d578063f3a395fc14610b6e578063f429389014610b9c578063f5648a4f14610bb0578063f7685a0214610bc4575f80fd5b8063eb429bf814610aee578063eb77dbb114610b19578063f2a6227f14610b2e578063f2b4c32514610b59575f80fd5b8063c9567bf9116100d8578063c9567bf914610a57578063d677d03e14610a6b578063dd62ed3e14610a96578063e8078d9414610ada575f80fd5b8063bf474bed146109c9578063c1ae5e72146109de578063c232ae4d14610a0c578063c876d0b914610a37575f80fd5b80638f9a55c01161017e578063a9059cbb1161014e578063a9059cbb14610941578063abb284e914610960578063bbab0ff11461097f578063be68e0271461099e575f80fd5b80638f9a55c0146108cd5780638fbd8f27146108e257806395d89b4114610901578063a1780c181461092d575f80fd5b80637d1db4a5116101b95780637d1db4a51461085e57806381cd58e51461087357806384d8a902146108925780638da5cb5b146108b1575f80fd5b80636e9fa864146107e357806370a0823114610802578063715018a614610836578063751039fc1461084a575f80fd5b8063298a8328116102d55780633e7130601161026a578063580a155a1161023a578063580a155a1461075357806366b6090f146107815780636a4d84f9146107965780636e2ed3c4146107b5575f80fd5b80633e713060146106c657806351a2f687146106db57806352d3c14e146106fa57806354ca45d814610725575f80fd5b80633520b3a4116102a55780633520b3a41461064557806337e294d51461065a5780633a3dec9e146106795780633b32edd414610698575f80fd5b8063298a8328146105d45780632ace2af5146105e95780632d4bbb0514610617578063313ce5671461062a575f80fd5b80630faee56f1161034b5780631cc34b981161031b5780631cc34b981461057657806321e09b341461058b57806323b872dd146105a057806324aede52146105bf575f80fd5b80630faee56f1461050157806311a63e171461051657806318160ddd1461054d57806319dde7b714610561575f80fd5b806308150133116103865780630815013314610475578063095ea7b3146104985780630c0e3d4a146104b75780630d2d697a146104d6575f80fd5b8063039aa9cf146103c15780630634087d1461040457806306b091f91461041a57806306fdde0314610439575f80fd5b366103bd57005b5f80fd5b3480156103cc575f80fd5b506103ef6103db366004613930565b60066020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561040f575f80fd5b50610418610bd9565b005b348015610425575f80fd5b5061041861043436600461396b565b610c1b565b348015610444575f80fd5b5060408051808201909152600b81526a48756e67657247616d657360a81b60208201525b6040516103fb91906139e2565b348015610480575f80fd5b5061048a60225481565b6040519081526020016103fb565b3480156104a3575f80fd5b506103ef6104b236600461396b565b610ca3565b3480156104c2575f80fd5b506104186104d13660046139f4565b610cb9565b3480156104e1575f80fd5b5061048a6104f0366004613a14565b60096020525f908152604090205481565b34801561050c575f80fd5b5061048a60205481565b348015610521575f80fd5b50601254610535906001600160a01b031681565b6040516001600160a01b0390911681526020016103fb565b348015610558575f80fd5b50601c5461048a565b34801561056c575f80fd5b5061048a60255481565b348015610581575f80fd5b5061048a60235481565b348015610596575f80fd5b5061048a602c5481565b3480156105ab575f80fd5b506103ef6105ba366004613a2f565b610cfc565b3480156105ca575f80fd5b5061048a60295481565b3480156105df575f80fd5b5061048a602b5481565b3480156105f4575f80fd5b506103ef610603366004613930565b5f9081526004602052604090205460ff1690565b6104186106253660046139f4565b610d63565b348015610635575f80fd5b50604051600981526020016103fb565b348015610650575f80fd5b5061048a60215481565b348015610665575f80fd5b50601154610535906001600160a01b031681565b348015610684575f80fd5b50610418610693366004613ad5565b610f0b565b3480156106a3575f80fd5b506103ef6106b2366004613930565b5f9081526006602052604090205460ff1690565b3480156106d1575f80fd5b5061048a60245481565b3480156106e6575f80fd5b50601054610535906001600160a01b031681565b348015610705575f80fd5b5061048a610714366004613a14565b600b6020525f908152604090205481565b348015610730575f80fd5b506103ef61073f366004613930565b60076020525f908152604090205460ff1681565b34801561075e575f80fd5b506103ef61076d366004613930565b60056020525f908152604090205460ff1681565b34801561078c575f80fd5b5061048a60285481565b3480156107a1575f80fd5b506104186107b03660046139f4565b61102e565b3480156107c0575f80fd5b506103ef6107cf366004613930565b5f9081526007602052604090205460ff1690565b3480156107ee575f80fd5b506104186107fd366004613c4d565b611071565b34801561080d575f80fd5b5061048a61081c366004613a14565b6001600160a01b03165f9081526001602052604090205490565b348015610841575f80fd5b506104186112e9565b348015610855575f80fd5b5061041861135a565b348015610869575f80fd5b5061048a601d5481565b34801561087e575f80fd5b5061041861088d366004613d31565b61138d565b34801561089d575f80fd5b506104186108ac366004613930565b611b52565b3480156108bc575f80fd5b505f546001600160a01b0316610535565b3480156108d8575f80fd5b5061048a601e5481565b3480156108ed575f80fd5b506104186108fc3660046139f4565b611c29565b34801561090c575f80fd5b5060408051808201909152600481526348474d5360e01b6020820152610468565b348015610938575f80fd5b50610418611c6c565b34801561094c575f80fd5b506103ef61095b36600461396b565b611cb9565b34801561096b575f80fd5b5061041861097a3660046139f4565b611cc5565b34801561098a575f80fd5b50601354610535906001600160a01b031681565b3480156109a9575f80fd5b5061048a6109b8366004613a14565b600a6020525f908152604090205481565b3480156109d4575f80fd5b5061048a601f5481565b3480156109e9575f80fd5b506103ef6109f8366004613930565b5f9081526005602052604090205460ff1690565b348015610a17575f80fd5b5061048a610a26366004613a14565b600d6020525f908152604090205481565b348015610a42575f80fd5b50602e546103ef90600160b81b900460ff1681565b348015610a62575f80fd5b50610418611d08565b348015610a76575f80fd5b5061048a610a85366004613a14565b600c6020525f908152604090205481565b348015610aa1575f80fd5b5061048a610ab0366004613da2565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610ae5575f80fd5b50610418611da0565b348015610af9575f80fd5b5061048a610b08366004613930565b600f6020525f908152604090205481565b348015610b24575f80fd5b5061048a60275481565b348015610b39575f80fd5b5061048a610b48366004613a14565b600e6020525f908152604090205481565b348015610b64575f80fd5b5061048a602a5481565b348015610b79575f80fd5b506103ef610b88366004613930565b60046020525f908152604090205460ff1681565b348015610ba7575f80fd5b5061041861208a565b348015610bbb575f80fd5b506104186120c6565b348015610bcf575f80fd5b5061048a60265481565b6010546001600160a01b03163314610bef575f80fd5b60188054905f610bff8380613ded565b909155505060198054905f610c148380613ded565b9091555050565b6010546001600160a01b03163314610c31575f80fd5b305f90815260016020526040902054811115610c945760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420656e6f75676820746f6b656e7320696e20636f6e747261637400000060448201526064015b60405180910390fd5b610c9f308383612112565b5050565b5f610caf338484612757565b5060015b92915050565b6010546001600160a01b03163314610ccf575f80fd5b6028829055610ce060036009613e00565b610ceb90600a613ef9565b610cf59082613f07565b602c555050565b5f610d08848484612112565b610d598433610d548560405180606001604052806028815260200161419e602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061287b565b612757565b5060019392505050565b5f821180610d7057505f81115b610dbc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e2030006044820152606401610c8b565b610dc86009600a613ef9565b610dd29082613f07565b341015610e215760405162461bcd60e51b815260206004820152601960248201527f496e636f72726563742045544820616d6f756e742073656e74000000000000006044820152606401610c8b565b8115610eac57335f90815260016020526040902054821115610e7e5760405162461bcd60e51b81526020600482015260166024820152754e6f7420656e6f7567682048474d5320746f6b656e7360501b6044820152606401610c8b565b610e8833836128b3565b335f9081526009602052604081208054849290610ea6908490613f1e565b90915550505b8015610edf57335f908152600a602052604081208054839290610ed0908490613f1e565b90915550610edf905034612a3a565b6040517fed21248cb703b524cc0029bb8669df941baca560163a3bc6ad184e7e9c268070905f90a15050565b6010546001600160a01b03163314610f565760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610c8b565b5f5b81811015610fda57836001828651610f709190613ded565b610f7a9190613ded565b81518110610f8a57610f8a613f31565b60200260200101516001600160a01b03166108fc8490811502906040515f60405180830381858888f19350505050158015610fc7573d5f803e3d5ffd5b5080610fd281613f45565b915050610f58565b5082604051610fe99190613f5d565b6040805191829003822084835260208301849052917f8b3eb1b796c23a273d8117d01e4a5e074356865b5f1bc15b881fb60bd02e50bd910160405180910390a2505050565b6010546001600160a01b03163314611044575f80fd5b602682905561105560036009613e00565b61106090600a613ef9565b61106a9082613f07565b602a555050565b6010546001600160a01b031633146110e15760405162461bcd60e51b815260206004820152602d60248201527f4f6e6c79206d61696e74656e616e636557616c6c65742063616e2063616c6c2060448201526c3a3434b990333ab731ba34b7b760991b6064820152608401610c8b565b825184511461114b5760405162461bcd60e51b815260206004820152603060248201527f4d69736d61746368656420706f74696f6e4e616d657320616e6420616d6f756e60448201526f0e8e640c2e4e4c2f2e640d8cadccee8d60831b6064820152608401610c8b565b83515f60218190556022819055602381905560245561116a8282613ded565b90505f5b818110156111c4576111b286828151811061118b5761118b613f31565b60200260200101518683815181106111a5576111a5613f31565b6020026020010151612b8d565b806111bc81613f45565b91505061116e565b50805b855181101561121f5761120d8682815181106111e5576111e5613f31565b60200260200101518683815181106111ff576111ff613f31565b602002602001015186612d37565b8061121781613f45565b9150506111c7565b506021541561125157611251604051806040016040528060048152602001635854524160e01b81525060215485612fb5565b6022541561128357611283604051806040016040528060058152602001641093d3d4d560da1b81525060225485612fb5565b602354156112b1576112b1604051806040016040528060018152602001602b60f91b81525060235485612fb5565b602454156112e2576112e2604051806040016040528060048152602001630534b49560e41b81525060245485612fb5565b5050505050565b5f546001600160a01b031633146113125760405162461bcd60e51b8152600401610c8b90613f9b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146113835760405162461bcd60e51b8152600401610c8b90613f9b565b61138b6135a3565b565b6010546001600160a01b031633146113a3575f80fd5b604051635854524160e01b602082015260240160405160208183030381529060405280519060200120816040516020016113dd9190613fd0565b60405160208183030381529060405280519060200120036115845781516001600160a01b0384165f908152600b602052604090205410156114305760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760045f84838151811061145057611450613f31565b60209081029190910181015182528101919091526040015f205460ff16156114b05760405162461bcd60e51b8152602060048201526013602482015272416c726561647920616374697665205854524160681b6044820152606401610c8b565b600160045f8584815181106114c7576114c7613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f866001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115259190613ded565b925050819055506001600f5f85848151811061154357611543613f31565b602002602001015181526020019081526020015f205f8282546115669190613f1e565b9091555081905061157681613f45565b915050611432565b50505050565b604051641093d3d4d560da1b602082015260250160405160208183030381529060405280519060200120816040516020016115bf9190613fd0565b60405160208183030381529060405280519060200120036117615781516001600160a01b0384165f908152600c602052604090205410156116125760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760065f84838151811061163257611632613f31565b60209081029190910181015182528101919091526040015f205460ff16156116935760405162461bcd60e51b8152602060048201526014602482015273105b1c9958591e481858dd1a5d99481093d3d4d560621b6044820152606401610c8b565b600160065f8584815181106116aa576116aa613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f866001600160a01b03166001600160a01b031681526020019081526020015f205f8282546117089190613ded565b925050819055506001600f5f85848151811061172657611726613f31565b602002602001015181526020019081526020015f205f8282546117499190613f1e565b9091555081905061175981613f45565b915050611614565b604051602b60f91b602082015260210160405160208183030381529060405280519060200120816040516020016117989190613fd0565b60405160208183030381529060405280519060200120036119365781516001600160a01b0384165f908152600d602052604090205410156117eb5760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760055f84838151811061180b5761180b613f31565b60209081029190910181015182528101919091526040015f205460ff16156118685760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c9030b1ba34bb32902b60811b6044820152606401610c8b565b600160055f85848151811061187f5761187f613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f866001600160a01b03166001600160a01b031681526020019081526020015f205f8282546118dd9190613ded565b925050819055506001600f5f8584815181106118fb576118fb613f31565b602002602001015181526020019081526020015f205f82825461191e9190613f1e565b9091555081905061192e81613f45565b9150506117ed565b604051630534b49560e41b602082015260240160405160208183030381529060405280519060200120816040516020016119709190613fd0565b6040516020818303038152906040528051906020012003611b115781516001600160a01b0384165f908152600e602052604090205410156119c35760405162461bcd60e51b8152600401610c8b90613feb565b5f5b825181101561157e5760075f8483815181106119e3576119e3613f31565b60209081029190910181015182528101919091526040015f205460ff1615611a435760405162461bcd60e51b81526020600482015260136024820152720416c72656164792061637469766520534b495606c1b6044820152606401610c8b565b600160075f858481518110611a5a57611a5a613f31565b602002602001015181526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f866001600160a01b03166001600160a01b031681526020019081526020015f205f828254611ab89190613ded565b925050819055506001600f5f858481518110611ad657611ad6613f31565b602002602001015181526020019081526020015f205f828254611af99190613f1e565b90915550819050611b0981613f45565b9150506119c5565b60405162461bcd60e51b815260206004820152601160248201527057726f6e6720506f74696f6e204e616d6560781b6044820152606401610c8b565b505050565b6010546001600160a01b03163314611b9d5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610c8b565b60015b818111611bfd575f818152600460209081526040808320805460ff19908116909155600583528184208054821690556006835281842080548216905560079092529091208054909116905580611bf581613f45565b915050611ba0565b506040517f22229ac981ba35e4851e4876bf3e8c431568fa66038fbcdfeaac37bd197f7bec905f90a150565b6010546001600160a01b03163314611c3f575f80fd5b6025829055611c5060036009613e00565b611c5b90600a613ef9565b611c659082613f07565b6029555050565b6012546001600160a01b0316336001600160a01b031614611c8b575f80fd5b305f908152600160205260409020548015611ca957611ca98161361b565b478015610c9f57610c9f81612a3a565b5f610caf338484612112565b6010546001600160a01b03163314611cdb575f80fd5b6027829055611cec60036009613e00565b611cf790600a613ef9565b611d019082613f07565b602b555050565b5f546001600160a01b03163314611d315760405162461bcd60e51b8152600401610c8b90613f9b565b602e54600160a01b900460ff1615611d8b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610c8b565b602e805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314611dc95760405162461bcd60e51b8152600401610c8b90613f9b565b602e805460ff60c01b1916600160c01b179055602d546001600160a01b0316611e1357602d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790555b602e546001600160a01b0316611fa957602d5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e97919061402f565b6001600160a01b031663c9c6539630602d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1a919061402f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611f64573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f88919061402f565b602e80546001600160a01b0319166001600160a01b03929092169190911790555b305f81815260016020526040902054602d549091611fd0916001600160a01b031683612757565b602d54601c545f80546040805163f305d71960e01b815230600482015260248101879052604481019490945260648401929092526001600160a01b0390811660848401524260a4840152905192169163f305d71991479160c4808301926060929190829003018185885af115801561204a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061206f919061404a565b5050602e805462ff00ff60b01b1916600160b01b1790555050565b5f546001600160a01b031633146120b35760405162461bcd60e51b8152600401610c8b90613f9b565b4780156120c3576120c381612a3a565b50565b6010546001600160a01b031633146120dc575f80fd5b6012546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156120c3573d5f803e3d5ffd5b6001600160a01b0383166121765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c8b565b6001600160a01b0382166121d85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c8b565b5f81116122395760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c8b565b602e545f90600160c01b900460ff1661229c57602e54600160a01b900460ff1661229c5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610c8b565b5f546001600160a01b038581169116148015906122c657505f546001600160a01b03848116911614155b1561261a576122f760646122f1601854601b54116122e6576014546122ea565b6016545b859061378b565b90613810565b602e54909150600160b81b900460ff16156123e457602d546001600160a01b038481169116148015906123385750602e546001600160a01b03848116911614155b156123e457325f9081526008602052604090205443116123d25760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c8b565b325f9081526008602052604090204390555b602e546001600160a01b03858116911614801561240f5750602d546001600160a01b03848116911614155b801561243357506001600160a01b0383165f9081526003602052604090205460ff16155b1561251957601d5482111561248a5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610c8b565b601e54826124ac856001600160a01b03165f9081526001602052604090205490565b6124b69190613f1e565b11156125045760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610c8b565b601b8054905f61251383613f45565b91905055505b602e546001600160a01b03848116911614801561253f57506001600160a01b0384163014155b1561256c5761256960646122f1601954601b541161255f576015546122ea565b601754859061378b565b90505b305f90815260016020526040902054602e54600160a81b900460ff161580156125a25750602e546001600160a01b038581169116145b80156125b75750602e54600160b01b900460ff165b80156125c45750601f5481115b80156125d35750601a54601b54115b15612618575f4790506125f96125f4856125ef85602054613851565b613851565b61361b565b5f6126044783613865565b905080156126155761261581612a3a565b50505b505b801561269257305f9081526001602052604090205461263990826138a6565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126899085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546126b49083613865565b6001600160a01b0385165f908152600160205260409020556126f76126d98383613865565b6001600160a01b0385165f90815260016020526040902054906138a6565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127408585613865565b60405190815260200160405180910390a350505050565b6001600160a01b0383166127b95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c8b565b6001600160a01b03821661281a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c8b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f818484111561289e5760405162461bcd60e51b8152600401610c8b91906139e2565b505f6128aa8486613ded565b95945050505050565b6001600160a01b0382166129135760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c8b565b61291f6009600a613ef9565b6129299082613f07565b6001600160a01b0383165f90815260016020526040812080549293508392909190612955908490613ded565b9250508190555080601c5f82825461296d9190613ded565b9091555050601c54601d819055601e556040518181526001600160a01b038316907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a26040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a37f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601c54604051612a2e91815260200190565b60405180910390a15050565b5f8111612a895760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610c8b565b80471015612ad95760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152606401610c8b565b5f612ae5600583614075565b6013546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015612b1d573d5f803e3d5ffd5b506011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612b55573d5f803e3d5ffd5b506010546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611b4d573d5f803e3d5ffd5b604051635854524160e01b60208201526024016040516020818303038152906040528051906020012082604051602001612bc79190613fd0565b6040516020818303038152906040528051906020012003612bfe578060215f828254612bf39190613f1e565b90915550610c9f9050565b604051641093d3d4d560da1b60208201526025016040516020818303038152906040528051906020012082604051602001612c399190613fd0565b6040516020818303038152906040528051906020012003612c65578060225f828254612bf39190613f1e565b604051602b60f91b60208201526021016040516020818303038152906040528051906020012082604051602001612c9c9190613fd0565b6040516020818303038152906040528051906020012003612cc8578060235f828254612bf39190613f1e565b604051630534b49560e41b60208201526024016040516020818303038152906040528051906020012082604051602001612d029190613fd0565b6040516020818303038152906040528051906020012003610c9f578060245f828254612d2e9190613f1e565b90915550505050565b604051635854524160e01b60208201526024016040516020818303038152906040528051906020012083604051602001612d719190613fd0565b6040516020818303038152906040528051906020012003612dbe576001600160a01b0381165f908152600b602052604081208054849290612db3908490613f1e565b90915550612f6e9050565b604051641093d3d4d560da1b60208201526025016040516020818303038152906040528051906020012083604051602001612df99190613fd0565b6040516020818303038152906040528051906020012003612e3b576001600160a01b0381165f908152600c602052604081208054849290612db3908490613f1e565b604051602b60f91b60208201526021016040516020818303038152906040528051906020012083604051602001612e729190613fd0565b6040516020818303038152906040528051906020012003612eb4576001600160a01b0381165f908152600d602052604081208054849290612db3908490613f1e565b604051630534b49560e41b60208201526024016040516020818303038152906040528051906020012083604051602001612eee9190613fd0565b6040516020818303038152906040528051906020012003612f30576001600160a01b0381165f908152600e602052604081208054849290612db3908490613f1e565b60405162461bcd60e51b8152602060048201526013602482015272496e76616c696420506f74696f6e204e616d6560681b6044820152606401610c8b565b806001600160a01b0316336001600160a01b03167f3d57eec5ab68ae7c8f1ed6299a36d8e6f61253e0f24ac6aba38bc3fcbe7bc7ae855f8060405161286e93929190614094565b815f03612fc157505050565b5f80604051602001612fdd90635854524160e01b815260040190565b60405160208183030381529060405280519060200120856040516020016130049190613fd0565b604051602081830303815290604052805190602001200361317f5760255461302c908561378b565b60295490925061303c908561378b565b6001600160a01b0384165f908152600960205260409020549091508211156130765760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156130ad5760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f90815260096020526040812080548492906130d4908490613ded565b90915550506001600160a01b0383165f908152600a602052604081208054839290613100908490613ded565b90915550506001600160a01b0383165f908152600b60205260408120805486929061312c908490613f1e565b90915550506040516001600160a01b0384169033907f3d57eec5ab68ae7c8f1ed6299a36d8e6f61253e0f24ac6aba38bc3fcbe7bc7ae9061317290899086908890614094565b60405180910390a36112e2565b604051641093d3d4d560da1b602082015260250160405160208183030381529060405280519060200120856040516020016131ba9190613fd0565b60405160208183030381529060405280519060200120036132e2576026546131e2908561378b565b602a549092506131f2908561378b565b6001600160a01b0384165f9081526009602052604090205490915082111561322c5760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156132635760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f908152600960205260408120805484929061328a908490613ded565b90915550506001600160a01b0383165f908152600a6020526040812080548392906132b6908490613ded565b90915550506001600160a01b0383165f908152600c60205260408120805486929061312c908490613f1e565b604051602b60f91b602082015260210160405160208183030381529060405280519060200120856040516020016133199190613fd0565b604051602081830303815290604052805190602001200361344157602754613341908561378b565b602b54909250613351908561378b565b6001600160a01b0384165f9081526009602052604090205490915082111561338b5760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156133c25760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f90815260096020526040812080548492906133e9908490613ded565b90915550506001600160a01b0383165f908152600a602052604081208054839290613415908490613ded565b90915550506001600160a01b0383165f908152600d60205260408120805486929061312c908490613f1e565b604051630534b49560e41b6020820152602401604051602081830303815290604052805190602001208560405160200161347b9190613fd0565b6040516020818303038152906040528051906020012003612f30576028546134a3908561378b565b602c549092506134b3908561378b565b6001600160a01b0384165f908152600960205260409020549091508211156134ed5760405162461bcd60e51b8152600401610c8b906140b8565b6001600160a01b0383165f908152600a60205260409020548111156135245760405162461bcd60e51b8152600401610c8b906140f9565b6001600160a01b0383165f908152600960205260408120805484929061354b908490613ded565b90915550506001600160a01b0383165f908152600a602052604081208054839290613577908490613ded565b90915550506001600160a01b0383165f908152600e60205260408120805486929061312c908490613f1e565b5f546001600160a01b031633146135cc5760405162461bcd60e51b8152600401610c8b90613f9b565b601c54601d819055601e819055602e805460ff60b81b191690556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b602e805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061366157613661613f31565b6001600160a01b03928316602091820292909201810191909152602d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156136b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136dc919061402f565b816001815181106136ef576136ef613f31565b6001600160a01b039283166020918202929092010152602d546137159130911684612757565b602d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061374d9085905f9086903090429060040161412e565b5f604051808303815f87803b158015613764575f80fd5b505af1158015613776573d5f803e3d5ffd5b5050602e805460ff60a81b1916905550505050565b5f825f0361379a57505f610cb3565b5f6137a58385613f07565b9050826137b28583614075565b146138095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c8b565b9392505050565b5f61380983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613904565b5f81831161385f5782613809565b50919050565b5f61380983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061287b565b5f806138b28385613f1e565b9050838110156138095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c8b565b5f81836139245760405162461bcd60e51b8152600401610c8b91906139e2565b505f6128aa8486614075565b5f60208284031215613940575f80fd5b5035919050565b6001600160a01b03811681146120c3575f80fd5b803561396681613947565b919050565b5f806040838503121561397c575f80fd5b823561398781613947565b946020939093013593505050565b5f5b838110156139af578181015183820152602001613997565b50505f910152565b5f81518084526139ce816020860160208601613995565b601f01601f19169290920160200192915050565b602081525f61380960208301846139b7565b5f8060408385031215613a05575f80fd5b50508035926020909101359150565b5f60208284031215613a24575f80fd5b813561380981613947565b5f805f60608486031215613a41575f80fd5b8335613a4c81613947565b92506020840135613a5c81613947565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613aaa57613aaa613a6d565b604052919050565b5f67ffffffffffffffff821115613acb57613acb613a6d565b5060051b60200190565b5f805f60608486031215613ae7575f80fd5b833567ffffffffffffffff811115613afd575f80fd5b8401601f81018613613b0d575f80fd5b80356020613b22613b1d83613ab2565b613a81565b82815260059290921b83018101918181019089841115613b40575f80fd5b938201935b83851015613b67578435613b5881613947565b82529382019390820190613b45565b999188013598505060409096013595945050505050565b5f82601f830112613b8d575f80fd5b813567ffffffffffffffff811115613ba757613ba7613a6d565b613bba601f8201601f1916602001613a81565b818152846020838601011115613bce575f80fd5b816020850160208301375f918101602001919091529392505050565b5f82601f830112613bf9575f80fd5b81356020613c09613b1d83613ab2565b82815260059290921b84018101918181019086841115613c27575f80fd5b8286015b84811015613c425780358352918301918301613c2b565b509695505050505050565b5f805f8060808587031215613c60575f80fd5b843567ffffffffffffffff80821115613c77575f80fd5b818701915087601f830112613c8a575f80fd5b81356020613c9a613b1d83613ab2565b82815260059290921b8401810191818101908b841115613cb8575f80fd5b8286015b84811015613cef57803586811115613cd3575f8081fd5b613ce18e86838b0101613b7e565b845250918301918301613cbc565b5098505088013592505080821115613d05575f80fd5b50613d1287828801613bea565b935050613d216040860161395b565b9396929550929360600135925050565b5f805f60608486031215613d43575f80fd5b8335613d4e81613947565b9250602084013567ffffffffffffffff80821115613d6a575f80fd5b613d7687838801613bea565b93506040860135915080821115613d8b575f80fd5b50613d9886828701613b7e565b9150509250925092565b5f8060408385031215613db3575f80fd5b8235613dbe81613947565b91506020830135613dce81613947565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cb357610cb3613dd9565b60ff8281168282160390811115610cb357610cb3613dd9565b600181815b80851115613e5357815f1904821115613e3957613e39613dd9565b80851615613e4657918102915b93841c9390800290613e1e565b509250929050565b5f82613e6957506001610cb3565b81613e7557505f610cb3565b8160018114613e8b5760028114613e9557613eb1565b6001915050610cb3565b60ff841115613ea657613ea6613dd9565b50506001821b610cb3565b5060208310610133831016604e8410600b8410161715613ed4575081810a610cb3565b613ede8383613e19565b805f1904821115613ef157613ef1613dd9565b029392505050565b5f61380960ff841683613e5b565b8082028115828204841417610cb357610cb3613dd9565b80820180821115610cb357610cb3613dd9565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613f5657613f56613dd9565b5060010190565b81515f9082906020808601845b83811015613f8f5781516001600160a01b031685529382019390820190600101613f6a565b50929695505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f8251613fe1818460208701613995565b9190910192915050565b60208082526024908201527f42616c616e636520646f6573206e6f74206861766520656e6f75676820506f74604082015263696f6e7360e01b606082015260800190565b5f6020828403121561403f575f80fd5b815161380981613947565b5f805f6060848603121561405c575f80fd5b8351925060208401519150604084015190509250925092565b5f8261408f57634e487b7160e01b5f52601260045260245ffd5b500490565b606081525f6140a660608301866139b7565b60208301949094525060400152919050565b60208082526021908201527f42616c616e636520646f6573206e6f74206861766520656e6f7567682048474d6040820152605360f81b606082015260800190565b6020808252818101527f42616c616e636520646f6573206e6f74206861766520656e6f75676820455448604082015260600190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561417c5784516001600160a01b031683529383019391830191600101614157565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cee669f4f37d2f85b03746042bb0c0820013afa266a8b2fd7cf85fd8306fe72064736f6c63430008150033