@reality.eth/contracts 4.0.0-rc.0 → 4.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abi/solc-0.8.20/Arbitrator.abi.json +1 -0
- package/abi/solc-0.8.20/RealityETH-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETHFreezableExample_ERC20-4.0.abi.json +1 -0
- package/abi/solc-0.8.20/RealityETHReopenable-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETHReopenable_ERC20-4.0.abi.json +1 -1
- package/abi/solc-0.8.20/RealityETH_ERC20-4.0.abi.json +1 -1
- package/bytecode/Arbitrator.bin +1 -1
- package/bytecode/RealityETH-4.0.bin +1 -1
- package/bytecode/RealityETHFreezableExample_ERC20-4.0.bin +1 -0
- package/bytecode/RealityETHReopenable-4.0.bin +1 -1
- package/bytecode/RealityETHReopenable_ERC20-4.0.bin +1 -1
- package/bytecode/RealityETH_ERC20-4.0.bin +1 -1
- package/development/contracts/IBalanceHolder.sol +1 -0
- package/development/contracts/IRealityETH.sol +6 -2
- package/development/contracts/{IRealityETHCore.sol → IRealityETHCore_Common.sol} +4 -8
- package/development/contracts/IRealityETHCore_ERC20.sol +3 -108
- package/development/contracts/IRealityETHCore_Native.sol +12 -0
- package/development/contracts/IRealityETHCreateTemplateAndAskQuestion.sol +8 -0
- package/development/contracts/IRealityETH_ERC20.sol +5 -1
- package/development/contracts/RealityETH-4.0.sol +12 -559
- package/development/contracts/RealityETHCore_Common.sol +543 -0
- package/development/contracts/RealityETHFreezableExample_ERC20-4.0.sol +17 -0
- package/development/contracts/RealityETHFreezable_ERC20.sol +39 -0
- package/development/contracts/RealityETHReopenable-4.0.sol +6 -6
- package/development/contracts/RealityETHReopenable_ERC20-4.0.sol +6 -6
- package/development/contracts/RealityETH_ERC20-4.0.sol +13 -556
- package/package.json +1 -1
- package/tests/python/test.py +106 -1
- package/development/contracts/BalanceHolder_ERC20.sol +0 -21
- package/development/contracts/IBalanceHolder_ERC20.sol +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
60806040525f60015534801562000014575f80fd5b50620000396040518060600160405280603f815260200162003480603f9139620000d4565b506200005e6040518060800160405280604f81526020016200355c604f9139620000d4565b50620000836040518060800160405280605a815260200162003502605a9139620000d4565b50620000a86040518060800160405280605c815260200162003424605c9139620000d4565b50620000cd604051806080016040528060438152602001620034bf60439139620000d4565b506200020d565b6001545f81815260026020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60015592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613209806200021b5f395ff3fe608060405260043610610249575f3560e01c80637f8d429e11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c146108ac578063e12891d4146108cb578063e83bfb58146108ea578063ebbdd2b014610918578063f6a94ecb14610937578063fe92049d14610956575f80fd5b8063ab5a4e35146107fc578063acae8f4e1461081b578063bc52565214610856578063c081d8a314610881578063d09cc57e146107dd575f80fd5b806395addb90116100f957806395addb901461064d5780639e63fa6a1461073f5780639f1025c61461078f578063a1130d04146107ca578063a462fb7b146107dd575f80fd5b80637f8d429e1461058157806382ffa9f7146105a057806383bf4609146105ce5780638d552d46146105ed578063924532fb1461061c575f80fd5b8063484b93c4116101cb578063590158a711610190578063590158a71461048957806359245ff3146104f25780636fa427421461050557806370a0823114610530578063762c38fd1461055b57806377f325df1461056e575f80fd5b8063484b93c4146103d3578063484c0714146103e65780634df6ca2a146104145780634e60f8831461043357806351577ea91461045e575f80fd5b80632417395c116102115780632417395c146102f55780632518904c1461032357806326d6c97b1461037257806328828b1e146103a05780633ccfd60b146103bf575f80fd5b806306c3b67a1461024d5780631101a0fd14610281578063111ec138146102a25780631126a9dc146102b557806312a203c3146102d6575b5f80fd5b348015610258575f80fd5b5061026c610267366004612876565b610975565b60405190151581526020015b60405180910390f35b34801561028c575f80fd5b506102a061029b3660046129d0565b610989565b005b6102a06102b0366004612a7e565b610c2e565b6102c86102c3366004612b38565b610e6d565b604051908152602001610278565b3480156102e1575f80fd5b506102c86102f0366004612bc5565b611118565b348015610300575f80fd5b506102c861030f366004612876565b5f9081526004602052604090206003015490565b34801561032e575f80fd5b5061035a61033d366004612876565b5f908152600460205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610278565b34801561037d575f80fd5b506102c861038c366004612876565b5f9081526004602052604090206006015490565b3480156103ab575f80fd5b506102a06103ba366004612c0f565b61123a565b3480156103ca575f80fd5b506102a06114ea565b6102c86103e1366004612cf9565b611561565b3480156103f1575f80fd5b506102c8610400366004612876565b5f9081526004602052604090206007015490565b34801561041f575f80fd5b506102a061042e366004612876565b61165d565b34801561043e575f80fd5b506102c861044d366004612876565b60036020525f908152604090205481565b348015610469575f80fd5b506102c8610478366004612876565b5f9081526004602052604090205490565b348015610494575f80fd5b506104cd6104a3366004612876565b60056020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610278565b6102a0610500366004612876565b6116aa565b348015610510575f80fd5b506102c861051f366004612d7e565b60066020525f908152604090205481565b34801561053b575f80fd5b506102c861054a366004612d7e565b5f6020819052908152604090205481565b6102c8610569366004612d97565b611844565b6102a061057c366004612e12565b61193f565b34801561058c575f80fd5b5061026c61059b366004612876565b611b56565b3480156105ab575f80fd5b506102c86105ba366004612876565b5f9081526004602052604090206005015490565b3480156105d9575f80fd5b506102c86105e8366004612e3b565b611bb1565b3480156105f8575f80fd5b506102c8610607366004612876565b5f908152600460208190526040909120015490565b348015610627575f80fd5b5061026c610636366004612876565b5f9081526004602052604090206002015460ff1690565b348015610658575f80fd5b506106d8610667366004612876565b600460208190525f91825260409091208054600182015460028301546003840154948401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff1694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610278565b34801561074a575f80fd5b5061077a610759366004612876565b5f90815260046020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610278565b34801561079a575f80fd5b5061077a6107a9366004612876565b5f90815260046020526040902060010154600160c01b900463ffffffff1690565b6102c86107d8366004612e74565b611c4b565b3480156107e8575f80fd5b506102c86107f7366004612876565b611c66565b348015610807575f80fd5b506102c8610816366004612876565b611ca5565b348015610826575f80fd5b5061077a610835366004612876565b5f90815260046020526040902060010154600160e01b900463ffffffff1690565b348015610861575f80fd5b506102c8610870366004612876565b60026020525f908152604090205481565b34801561088c575f80fd5b506102c861089b366004612876565b60076020525f908152604090205481565b3480156108b7575f80fd5b506102a06108c6366004612ecd565b611d19565b3480156108d6575f80fd5b5061026c6108e53660046129d0565b611d92565b3480156108f5575f80fd5b5061026c610904366004612876565b60086020525f908152604090205460ff1681565b348015610923575f80fd5b506102a0610932366004612876565b611f2f565b348015610942575f80fd5b506102a0610951366004612f21565b612031565b348015610961575f80fd5b506102a0610970366004612f53565b612258565b5f60011961098283611c66565b1492915050565b8461099381611b56565b6109b057604051636030e5f560e11b815260040160405180910390fd5b84515f036109d1576040516312fdb46960e31b815260040160405180910390fd5b5f86815260056020818152604080842080546001909101546004938490529185209384015493909201546001600160a01b039092169390929091825b8a51811015610b9057610a87838c8381518110610a2c57610a2c612f85565b60200260200101518a8481518110610a4657610a46612f85565b60200260200101518c8581518110610a6057610a60612f85565b60200260200101518e8681518110610a7a57610a7a612f85565b6020026020010151612377565b610aa4576040516303a479f160e11b815260040160405180910390fd5b610aae8585612fad565b9350610b0a8c8386898e8681518110610ac957610ac9612f85565b60200260200101518e8781518110610ae357610ae3612f85565b60200260200101518e8881518110610afd57610afd612f85565b60200260200101516123b4565b8097508195505050888181518110610b2457610b24612f85565b6020026020010151945060045f8d81526020019081526020015f20600601548514610b6157610b54602886612fc0565b610b5e9086612fdf565b94505b8a8181518110610b7357610b73612f85565b602002602001015192508080610b8890612ff2565b915050610a0d565b8215610bd257610ba18c878661247d565b5f8c815260056020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610c0d565b610be68c87610be18888612fad565b61247d565b5f8c815260056020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260046020526040909920600501989098555050505050505050565b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003610c6e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615610ca0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590610cd957504263ffffffff168163ffffffff1611155b15610cf75760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590610d2f57504263ffffffff168163ffffffff16115b15610d4d5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d6f57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003610dbe575f83815260046020526040902060070154821015610db95760405163291784d560e01b815260040160405180910390fd5b610de9565b610dc981600261300a565b821015610de9576040516328eecafb60e21b815260040160405180910390fd5b89888015610e22575f82815260046020526040902060060154811015610e225760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e4957604051630ca6549f60e11b815260040160405180910390fd5b610e558c8c8b346124f5565b610e5f8c8c6125c6565b505050505050505050505050565b5f610e7782610975565b610e9457604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610eaa93929190613043565b60408051601f1981840301815291815281516020928301205f86815260049093529120549091508114610ef0576040516349923ed160e11b815260040160405180910390fd5b5f838152600460205260409020600101546001600160a01b03898116911614610f2c5760405163611876b160e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff888116600160c01b9092041614610f6c57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff878116600160a01b9092041614610fac57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600460205260409020600701548414610fdc57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff161561100b5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561105e5761102982610975565b61104657604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61106e8d8d8d8d8d8d8d611561565b5f87815260076020908152604080832084905583835260088252808320805460ff19166001179055600490915280822060039081015486845291909220909101549192506110bb91612fad565b5f828152600460205260408082206003908101939093558482528082209092018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f8561112381611b56565b61114057604051636030e5f560e11b815260040160405180910390fd5b5f87815260046020526040902054861461116d57604051630763e45d60e41b815260040160405180910390fd5b5f878152600460205260409020600101546001600160a01b038681169116146111a95760405163f089a18560e01b815260040160405180910390fd5b5f8781526004602052604090206001015463ffffffff600160c01b909104811690851611156111eb57604051633f61762b60e01b815260040160405180910390fd5b5f8781526004602052604090206006015483111561121c57604051634d497e9360e11b815260040160405180910390fd5b5f878152600460208190526040909120015491505095945050505050565b5f805b87518210156114d8575f88838151811061125957611259612f85565b602002602001015190505f88848151811061127657611276612f85565b602002602001015190505f816001600160401b038111156112995761129961288d565b6040519080825280602002602001820160405280156112c2578160200160208202803683370190505b5090505f826001600160401b038111156112de576112de61288d565b604051908082528060200260200182016040528015611307578160200160208202803683370190505b5090505f836001600160401b038111156113235761132361288d565b60405190808252806020026020018201604052801561134c578160200160208202803683370190505b5090505f846001600160401b038111156113685761136861288d565b604051908082528060200260200182016040528015611391578160200160208202803683370190505b5090505f5b858110156114b1578c88815181106113b0576113b0612f85565b60200260200101518582815181106113ca576113ca612f85565b6020026020010181815250508b88815181106113e8576113e8612f85565b602002602001015184828151811061140257611402612f85565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061143457611434612f85565b602002602001015183828151811061144e5761144e612f85565b60200260200101818152505089888151811061146c5761146c612f85565b602002602001015182828151811061148657611486612f85565b60209081029190910101528761149b81612ff2565b98505080806114a990612ff2565b915050611396565b6114be8786868686610989565b5050505050505081806114d090612ff2565b92505061123d565b6114e06114ea565b5050505050505050565b335f81815260208190526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611528573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f87815260026020526040812054810361158e5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016115a493929190613043565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115da979695949392919061307b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161163997969594939291906130ff565b60405180910390a461165081838a8a8a893461262e565b9998505050505050505050565b335f81815260066020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600460205260408120600101548291600160c01b90910463ffffffff1690036116ea5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff161561171c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061175557504263ffffffff168163ffffffff1611155b156117735760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff1680158015906117ab57504263ffffffff168163ffffffff16115b156117c95760405163079994c560e31b815260040160405180910390fd5b5f848152600460205260409020600301546117e5903490612fad565b5f858152600460205260409081902060030182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161183691349190918252602082015260400190565b60405180910390a350505050565b5f8681526002602052604081205481036118715760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161188793929190613043565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118bd979695949392919061307b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161191c97969594939291906130ff565b60405180910390a461193381838989895f3461262e565b98975050505050505050565b5f838152600460205260408120600101548491600160c01b90910463ffffffff16900361197f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff16156119b1576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff1680158015906119ea57504263ffffffff168163ffffffff1611155b15611a085760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611a4057504263ffffffff168163ffffffff16115b15611a5e5760405163079994c560e31b815260040160405180910390fd5b8534805f03611a8057604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003611acf575f83815260046020526040902060070154821015611aca5760405163291784d560e01b815260040160405180910390fd5b611afa565b611ada81600261300a565b821015611afa576040516328eecafb60e21b815260040160405180910390fd5b88878015611b33575f82815260046020526040902060060154811015611b335760405163f6631e6760e01b815260040160405180910390fd5b611b3f8b8b33346124f5565b611b498b8b6125c6565b5050505050505050505050565b5f8181526004602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b92575063ffffffff811615155b8015611baa57504263ffffffff168163ffffffff1611155b9392505050565b6001545f81815260026020908152604080832043905551919291611bd79185910161314e565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611c2d908790613169565b60405180910390a3611c40816001612fad565b60015590505b919050565b5f80611c5688611bb1565b9050611933818888888888611844565b5f81611c7181611b56565b611c8e57604051636030e5f560e11b815260040160405180910390fd5b50505f908152600460208190526040909120015490565b5f80611cb083611c66565b905060028101611d13575f8381526007602052604090205480611ce65760405163079442c960e01b815260040160405180910390fd5b611cef81611c66565b915060028201611d115760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526004602052604090206005810154600690910154611d4091908590859085612377565b611d5d576040516303a479f160e11b815260040160405180910390fd5b5f868152600460208190526040822001548614611d7a5784611d7c565b815b9050611d89878783612258565b50505050505050565b5f858152600460205260408120600101548690600160c01b900463ffffffff168203611dd15760405163a42db76b60e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590611e0a57504263ffffffff168163ffffffff1611155b15611e285760405163372900d560e21b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611e6057504263ffffffff168163ffffffff16115b15611e7e5760405163079994c560e31b815260040160405180910390fd5b5f898152600460205260409020600501548851885181141580611ea2575080885114155b80611eae575080875114155b15611ebd575f95505050611f23565b5f5b81811015611f1b57611edd838c8381518110610a2c57610a2c612f85565b611eec575f9650505050611f23565b8a8181518110611efe57611efe612f85565b602002602001015192508080611f1390612ff2565b915050611ebf565b506001955050505b50505095945050505050565b5f8181526004602052604090206001015481906001600160a01b03163314611f6a57604051634361661f60e11b815260040160405180910390fd5b5f82815260046020526040902060020154829060ff16611f9d5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260046020526040902060028101805460ff1916905560010154611fd190600160c01b900463ffffffff164261317b565b5f84815260046020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526004602052604090206001015483906001600160a01b0316331461206c57604051634361661f60e11b815260040160405180910390fd5b5f848152600460205260408120600101548591600160c01b90910463ffffffff1690036120ac5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff16156120de576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061211757504263ffffffff168163ffffffff1611155b156121355760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff16801580159061216d57504263ffffffff168163ffffffff16115b1561218b5760405163079994c560e31b815260040160405180910390fd5b868580156121c4575f828152600460205260409020600601548110156121c45760405163f6631e6760e01b815260040160405180910390fd5b5f89815260046020526040902060010154600160e01b900463ffffffff166121ff576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260046020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526004602052604090206001015483906001600160a01b0316331461229357604051634361661f60e11b815260040160405180910390fd5b5f84815260046020526040902060020154849060ff166122c65760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122ed576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600460205260408120600201805460ff19169055612340908690869086906124f5565b5050505f9182526004602081905260409092209182015560010180546001600160e01b0316600160e01b4263ffffffff1602179055565b5f848484845f604051602001612391959493929190613198565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361246e576001600160a01b03861661242b575f898152600460205260409020600301549495508594158015906123f157506001198814155b15612426575f89815260046020526040902060030154612414908a90889061247d565b5f898152600460205260408120600301555b61246e565b856001600160a01b0316856001600160a01b03161461246e575f848810156124535787612455565b845b90506124668a88610be1848c612fdf565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152602081905260409020546124a0908290612fad565b6001600160a01b0383165f81815260208181526040918290209390935551838152909185917f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6910160405180910390a3505050565b5f84815260046020908152604080832060050154905161251d92879186918891879101613198565b6040516020818303038152906040528051906020012090505f821115612551575f8581526004602052604090206006018290555b5f8581526004602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f828152600460208190526040909120908101829055600101546125f790600160c01b900463ffffffff164261317b565b5f92835260046020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600460205260409020600101548790600160c01b900463ffffffff161561266f576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126955760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106126bf57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126e15750336001600160a01b03881614155b15612769576001600160a01b0387165f908152600660205260409020548082101561271f5760405163d72564c760e01b815260040160405180910390fd5b6127298183612fdf565b6001600160a01b0389165f9081526020819052604090205490925061274f908290612fad565b6001600160a01b0389165f90815260208190526040902055505b5f898152600460205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c161792909217161790558015612815575f89815260046020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561286b575f89815260046020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128629087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612886575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128c9576128c961288d565b604052919050565b5f6001600160401b038211156128e9576128e961288d565b5060051b60200190565b5f82601f830112612902575f80fd5b81356020612917612912836128d1565b6128a1565b82815260059290921b84018101918181019086841115612935575f80fd5b8286015b848110156129505780358352918301918301612939565b509695505050505050565b80356001600160a01b0381168114611c46575f80fd5b5f82601f830112612980575f80fd5b81356020612990612912836128d1565b82815260059290921b840181019181810190868411156129ae575f80fd5b8286015b84811015612950576129c38161295b565b83529183019183016129b2565b5f805f805f60a086880312156129e4575f80fd5b8535945060208601356001600160401b0380821115612a01575f80fd5b612a0d89838a016128f3565b95506040880135915080821115612a22575f80fd5b612a2e89838a01612971565b94506060880135915080821115612a43575f80fd5b612a4f89838a016128f3565b93506080880135915080821115612a64575f80fd5b50612a71888289016128f3565b9150509295509295909350565b5f805f8060808587031215612a91575f80fd5b843593506020850135925060408501359150612aaf6060860161295b565b905092959194509250565b5f82601f830112612ac9575f80fd5b81356001600160401b03811115612ae257612ae261288d565b612af5601f8201601f19166020016128a1565b818152846020838601011115612b09575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c46575f80fd5b5f805f805f805f80610100898b031215612b50575f80fd5b8835975060208901356001600160401b03811115612b6c575f80fd5b612b788b828c01612aba565b975050612b8760408a0161295b565b9550612b9560608a01612b25565b9450612ba360808a01612b25565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612bd9575f80fd5b8535945060208601359350612bf06040870161295b565b9250612bfe60608701612b25565b949793965091946080013592915050565b5f805f805f8060c08789031215612c24575f80fd5b86356001600160401b0380821115612c3a575f80fd5b612c468a838b016128f3565b97506020890135915080821115612c5b575f80fd5b612c678a838b016128f3565b96506040890135915080821115612c7c575f80fd5b612c888a838b016128f3565b95506060890135915080821115612c9d575f80fd5b612ca98a838b01612971565b94506080890135915080821115612cbe575f80fd5b612cca8a838b016128f3565b935060a0890135915080821115612cdf575f80fd5b50612cec89828a016128f3565b9150509295509295509295565b5f805f805f805f60e0888a031215612d0f575f80fd5b8735965060208801356001600160401b03811115612d2b575f80fd5b612d378a828b01612aba565b965050612d466040890161295b565b9450612d5460608901612b25565b9350612d6260808901612b25565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d8e575f80fd5b611baa8261295b565b5f805f805f8060c08789031215612dac575f80fd5b8635955060208701356001600160401b03811115612dc8575f80fd5b612dd489828a01612aba565b955050612de36040880161295b565b9350612df160608801612b25565b9250612dff60808801612b25565b915060a087013590509295509295509295565b5f805f60608486031215612e24575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e4b575f80fd5b81356001600160401b03811115612e60575f80fd5b612e6c84828501612aba565b949350505050565b5f805f805f8060c08789031215612e89575f80fd5b86356001600160401b0380821115612e9f575f80fd5b612eab8a838b01612aba565b97506020890135915080821115612ec0575f80fd5b50612dd489828a01612aba565b5f805f805f8060c08789031215612ee2575f80fd5b8635955060208701359450612ef96040880161295b565b93506060870135925060808701359150612f1560a0880161295b565b90509295509295509295565b5f805f60608486031215612f33575f80fd5b83359250612f436020850161295b565b9150604084013590509250925092565b5f805f60608486031215612f65575f80fd5b8335925060208401359150612f7c6040850161295b565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d1357611d13612f99565b5f82612fda57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611d1357611d13612f99565b5f6001820161300357613003612f99565b5060010190565b8082028115828204841417611d1357611d13612f99565b5f5b8381101561303b578181015183820152602001613023565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161306c816024850160208701613021565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526130eb816020860160208601613021565b601f01601f19169290920160200192915050565b87815260e060208201525f61311760e08301896130d4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161315f818460208701613021565b9190910192915050565b602081525f611baa60208301846130d4565b63ffffffff818116838216019080821115611d1157611d11612f99565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212208e07caada7f2a0bff1665740f8ff2994e2a2b6519e2762d015d330f503fcfb8c64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
|
|
1
|
+
60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620033e0603f9139620000d3565b506200005d6040518060800160405280604f8152602001620034bc604f9139620000d3565b50620000826040518060800160405280605a815260200162003462605a9139620000d3565b50620000a76040518060800160405280605c815260200162003384605c9139620000d3565b50620000cc6040518060800160405280604381526020016200341f60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b61316f80620002155f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c14610890578063e12891d4146108af578063e83bfb58146108ce578063ebbdd2b0146108fc578063f6a94ecb1461091b578063fe92049d1461093a575f80fd5b8063ab5a4e35146107e0578063acae8f4e146107ff578063bc5256521461083a578063c081d8a314610865578063d09cc57e146107c1575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107365780639f1025c614610786578063a462fb7b146107c1575f80fd5b806377f325df146105645780637f8d429e1461057757806382ffa9f71461059657806383bf4609146105c45780638d552d46146105e3575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047f57806359245ff3146104e85780636fa42742146104fb57806370a0823114610526578063762c38fd14610551575f80fd5b8063484b93c4146103c9578063484c0714146103dc5780634df6ca2a1461040a5780634e60f8831461042957806351577ea914610454575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031957806326d6c97b1461036857806328828b1e146103965780633ccfd60b146103b5575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c366004612835565b610959565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061029561029036600461298f565b61096d565b005b6102956102a5366004612a3d565b610c0f565b6102bd6102b8366004612af7565b610e4e565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e5366004612b84565b6110f0565b3480156102f5575f80fd5b506102bd610304366004612835565b5f908152600360208190526040909120015490565b348015610324575f80fd5b50610350610333366004612835565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610373575f80fd5b506102bd610382366004612835565b5f9081526003602052604090206006015490565b3480156103a1575f80fd5b506102956103b0366004612bce565b61120e565b3480156103c0575f80fd5b506102956114be565b6102bd6103d7366004612cb8565b611535565b3480156103e7575f80fd5b506102bd6103f6366004612835565b5f9081526003602052604090206007015490565b348015610415575f80fd5b50610295610424366004612835565b611631565b348015610434575f80fd5b506102bd610443366004612835565b60026020525f908152604090205481565b34801561045f575f80fd5b506102bd61046e366004612835565b5f9081526003602052604090205490565b34801561048a575f80fd5b506104c3610499366004612835565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f6366004612835565b61167e565b348015610506575f80fd5b506102bd610515366004612d3d565b60056020525f908152604090205481565b348015610531575f80fd5b506102bd610540366004612d3d565b60066020525f908152604090205481565b6102bd61055f366004612d56565b611819565b610295610572366004612dd1565b611914565b348015610582575f80fd5b50610261610591366004612835565b611b2b565b3480156105a1575f80fd5b506102bd6105b0366004612835565b5f9081526003602052604090206005015490565b3480156105cf575f80fd5b506102bd6105de366004612dfa565b611b86565b3480156105ee575f80fd5b506102bd6105fd366004612835565b5f9081526003602052604090206004015490565b34801561061c575f80fd5b5061026161062b366004612835565b5f9081526003602052604090206002015460ff1690565b34801561064d575f80fd5b506106cf61065c366004612835565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b348015610741575f80fd5b50610771610750366004612835565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b348015610791575f80fd5b506107716107a0366004612835565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b3480156107cc575f80fd5b506102bd6107db366004612835565b611c1b565b3480156107eb575f80fd5b506102bd6107fa366004612835565b611c59565b34801561080a575f80fd5b50610771610819366004612835565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b348015610845575f80fd5b506102bd610854366004612835565b60016020525f908152604090205481565b348015610870575f80fd5b506102bd61087f366004612835565b60076020525f908152604090205481565b34801561089b575f80fd5b506102956108aa366004612e33565b611ccd565b3480156108ba575f80fd5b506102616108c936600461298f565b611d46565b3480156108d9575f80fd5b506102616108e8366004612835565b60086020525f908152604090205460ff1681565b348015610907575f80fd5b50610295610916366004612835565b611ee3565b348015610926575f80fd5b50610295610935366004612e87565b611fe5565b348015610945575f80fd5b50610295610954366004612eb9565b61220c565b5f60011961096683611c1b565b1492915050565b8461097781611b2b565b61099457604051636030e5f560e11b815260040160405180910390fd5b84515f036109b5576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610b7157610a68838c8381518110610a0d57610a0d612eeb565b60200260200101518a8481518110610a2757610a27612eeb565b60200260200101518c8581518110610a4157610a41612eeb565b60200260200101518e8681518110610a5b57610a5b612eeb565b602002602001015161232d565b610a85576040516303a479f160e11b815260040160405180910390fd5b610a8f8585612f13565b9350610aeb8c8386898e8681518110610aaa57610aaa612eeb565b60200260200101518e8781518110610ac457610ac4612eeb565b60200260200101518e8881518110610ade57610ade612eeb565b602002602001015161236a565b8097508195505050888181518110610b0557610b05612eeb565b6020026020010151945060035f8d81526020019081526020015f20600601548514610b4257610b35602886612f26565b610b3f9086612f45565b94505b8a8181518110610b5457610b54612eeb565b602002602001015192508080610b6990612f58565b9150506109ee565b8215610bb357610b828c8786612436565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610bee565b610bc78c87610bc28888612f13565b612436565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610c4f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610c81576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610cba57504263ffffffff168163ffffffff1611155b15610cd85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610d1057504263ffffffff168163ffffffff16115b15610d2e5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d5057604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610d9f575f83815260036020526040902060070154821015610d9a5760405163291784d560e01b815260040160405180910390fd5b610dca565b610daa816002612f70565b821015610dca576040516328eecafb60e21b815260040160405180910390fd5b89888015610e03575f82815260036020526040902060060154811015610e035760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e2a57604051630ca6549f60e11b815260040160405180910390fd5b610e368c8c8b346124b6565b610e408c8c612587565b505050505050505050505050565b5f610e5882610959565b610e7557604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e8b93929190612fa9565b60408051601f1981840301815291815281516020928301205f86815260039093529120549091508114610ed1576040516349923ed160e11b815260040160405180910390fd5b5f838152600360205260409020600101546001600160a01b03898116911614610f0d5760405163611876b160e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff888116600160c01b9092041614610f4d57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff878116600160a01b9092041614610f8d57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600360205260409020600701548414610fbd57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fec5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561103f5761100a82610959565b61102757604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61104f8d8d8d8d8d8d8d611535565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556003918290528083208201548684529220015491925061109691612f13565b5f828152600360208190526040808320820193909355848252828220018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110fb81611b2b565b61111857604051636030e5f560e11b815260040160405180910390fd5b5f87815260036020526040902054861461114557604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b038681169116146111815760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b909104811690851611156111c357604051633f61762b60e01b815260040160405180910390fd5b5f878152600360205260409020600601548311156111f457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b87518210156114ac575f88838151811061122d5761122d612eeb565b602002602001015190505f88848151811061124a5761124a612eeb565b602002602001015190505f816001600160401b0381111561126d5761126d61284c565b604051908082528060200260200182016040528015611296578160200160208202803683370190505b5090505f826001600160401b038111156112b2576112b261284c565b6040519080825280602002602001820160405280156112db578160200160208202803683370190505b5090505f836001600160401b038111156112f7576112f761284c565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f846001600160401b0381111561133c5761133c61284c565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f5b85811015611485578c888151811061138457611384612eeb565b602002602001015185828151811061139e5761139e612eeb565b6020026020010181815250508b88815181106113bc576113bc612eeb565b60200260200101518482815181106113d6576113d6612eeb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061140857611408612eeb565b602002602001015183828151811061142257611422612eeb565b60200260200101818152505089888151811061144057611440612eeb565b602002602001015182828151811061145a5761145a612eeb565b60209081029190910101528761146f81612f58565b985050808061147d90612f58565b91505061136a565b611492878686868661096d565b5050505050505081806114a490612f58565b925050611211565b6114b46114be565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114fc573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036115625760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161157893929190612fa9565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115ae9796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161160d9796959493929190613065565b60405180910390a461162481838a8a8a89346125ed565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff1690036116be5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116f0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061172957504263ffffffff168163ffffffff1611155b156117475760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061177f57504263ffffffff168163ffffffff16115b1561179d5760405163079994c560e31b815260040160405180910390fd5b5f84815260036020819052604090912001546117ba903490612f13565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161180b91349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036118465760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161185c93929190612fa9565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118929796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118f19796959493929190613065565b60405180910390a461190881838989895f346125ed565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036119545760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611986576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119bf57504263ffffffff168163ffffffff1611155b156119dd5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a1557504263ffffffff168163ffffffff16115b15611a335760405163079994c560e31b815260040160405180910390fd5b8534805f03611a5557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611aa4575f83815260036020526040902060070154821015611a9f5760405163291784d560e01b815260040160405180910390fd5b611acf565b611aaf816002612f70565b821015611acf576040516328eecafb60e21b815260040160405180910390fd5b88878015611b08575f82815260036020526040902060060154811015611b085760405163f6631e6760e01b815260040160405180910390fd5b611b148b8b33346124b6565b611b1e8b8b612587565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b6757505f8163ffffffff16115b8015611b7f57504263ffffffff168163ffffffff1611155b9392505050565b5f805480825260016020908152604080842043905551611ba8918591016130b4565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611bfe9087906130cf565b60405180910390a3611c11816001612f13565b5f5590505b919050565b5f81611c2681611b2b565b611c4357604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f80611c6483611c1b565b905060028101611cc7575f8381526007602052604090205480611c9a5760405163079442c960e01b815260040160405180910390fd5b611ca381611c1b565b915060028201611cc55760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526003602052604090206005810154600690910154611cf49190859085908561232d565b611d11576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611d2e5784611d30565b815b9050611d3d87878361220c565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611d855760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611dbe57504263ffffffff168163ffffffff1611155b15611ddc5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611e1457504263ffffffff168163ffffffff16115b15611e325760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611e56575080885114155b80611e62575080875114155b15611e71575f95505050611ed7565b5f5b81811015611ecf57611e91838c8381518110610a0d57610a0d612eeb565b611ea0575f9650505050611ed7565b8a8181518110611eb257611eb2612eeb565b602002602001015192508080611ec790612f58565b915050611e73565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611f1e57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611f515760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611f8590600160c01b900463ffffffff16426130e1565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b0316331461202057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120605760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615612092576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906120cb57504263ffffffff168163ffffffff1611155b156120e95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061212157504263ffffffff168163ffffffff16115b1561213f5760405163079994c560e31b815260040160405180910390fd5b86858015612178575f828152600360205260409020600601548110156121785760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166121b3576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461224757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661227a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122a1576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556122f4908690869086906124b6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123479594939291906130fe565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612427576001600160a01b0386166123e4578495505f60035f8b81526020019081526020015f20600301541180156123a957506001198814155b156123df576123cd898760035f8d81526020019081526020015f2060030154612436565b5f898152600360208190526040822001555b612427565b856001600160a01b0316856001600160a01b031614612427575f8488101561240c578761240e565b845b905061241f8a88610bc2848c612f45565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612459908290612f13565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906124a99085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516124de928791869188918791016130fe565b6040516020818303038152906040528051906020012090505f821115612512575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546125b690600160c01b900463ffffffff16426130e1565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff161561262e576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126545760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061267e57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126a05750336001600160a01b03881614155b15612728576001600160a01b0387165f90815260056020526040902054808210156126de5760405163d72564c760e01b815260040160405180910390fd5b6126e88183612f45565b6001600160a01b0389165f9081526006602052604090205490925061270e908290612f13565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127d4575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561282a575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128219087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612845575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128885761288861284c565b604052919050565b5f6001600160401b038211156128a8576128a861284c565b5060051b60200190565b5f82601f8301126128c1575f80fd5b813560206128d66128d183612890565b612860565b82815260059290921b840181019181810190868411156128f4575f80fd5b8286015b8481101561290f57803583529183019183016128f8565b509695505050505050565b80356001600160a01b0381168114611c16575f80fd5b5f82601f83011261293f575f80fd5b8135602061294f6128d183612890565b82815260059290921b8401810191818101908684111561296d575f80fd5b8286015b8481101561290f576129828161291a565b8352918301918301612971565b5f805f805f60a086880312156129a3575f80fd5b8535945060208601356001600160401b03808211156129c0575f80fd5b6129cc89838a016128b2565b955060408801359150808211156129e1575f80fd5b6129ed89838a01612930565b94506060880135915080821115612a02575f80fd5b612a0e89838a016128b2565b93506080880135915080821115612a23575f80fd5b50612a30888289016128b2565b9150509295509295909350565b5f805f8060808587031215612a50575f80fd5b843593506020850135925060408501359150612a6e6060860161291a565b905092959194509250565b5f82601f830112612a88575f80fd5b81356001600160401b03811115612aa157612aa161284c565b612ab4601f8201601f1916602001612860565b818152846020838601011115612ac8575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c16575f80fd5b5f805f805f805f80610100898b031215612b0f575f80fd5b8835975060208901356001600160401b03811115612b2b575f80fd5b612b378b828c01612a79565b975050612b4660408a0161291a565b9550612b5460608a01612ae4565b9450612b6260808a01612ae4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612b98575f80fd5b8535945060208601359350612baf6040870161291a565b9250612bbd60608701612ae4565b949793965091946080013592915050565b5f805f805f8060c08789031215612be3575f80fd5b86356001600160401b0380821115612bf9575f80fd5b612c058a838b016128b2565b97506020890135915080821115612c1a575f80fd5b612c268a838b016128b2565b96506040890135915080821115612c3b575f80fd5b612c478a838b016128b2565b95506060890135915080821115612c5c575f80fd5b612c688a838b01612930565b94506080890135915080821115612c7d575f80fd5b612c898a838b016128b2565b935060a0890135915080821115612c9e575f80fd5b50612cab89828a016128b2565b9150509295509295509295565b5f805f805f805f60e0888a031215612cce575f80fd5b8735965060208801356001600160401b03811115612cea575f80fd5b612cf68a828b01612a79565b965050612d056040890161291a565b9450612d1360608901612ae4565b9350612d2160808901612ae4565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d4d575f80fd5b611b7f8261291a565b5f805f805f8060c08789031215612d6b575f80fd5b8635955060208701356001600160401b03811115612d87575f80fd5b612d9389828a01612a79565b955050612da26040880161291a565b9350612db060608801612ae4565b9250612dbe60808801612ae4565b915060a087013590509295509295509295565b5f805f60608486031215612de3575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e0a575f80fd5b81356001600160401b03811115612e1f575f80fd5b612e2b84828501612a79565b949350505050565b5f805f805f8060c08789031215612e48575f80fd5b8635955060208701359450612e5f6040880161291a565b93506060870135925060808701359150612e7b60a0880161291a565b90509295509295509295565b5f805f60608486031215612e99575f80fd5b83359250612ea96020850161291a565b9150604084013590509250925092565b5f805f60608486031215612ecb575f80fd5b8335925060208401359150612ee26040850161291a565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cc757611cc7612eff565b5f82612f4057634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cc757611cc7612eff565b5f60018201612f6957612f69612eff565b5060010190565b8082028115828204841417611cc757611cc7612eff565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612fd2816024850160208701612f87565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613051816020860160208601612f87565b601f01601f19169290920160200192915050565b87815260e060208201525f61307d60e083018961303a565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516130c5818460208701612f87565b9190910192915050565b602081525f611b7f602083018461303a565b63ffffffff818116838216019080821115611cc557611cc5612eff565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220de1b1cb95b543725f289a8c880ae6288804e20869ca676467bab4a04ec94e49c64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
|
|
@@ -1 +1 @@
|
|
|
1
|
-
60806040525f60025534801562000014575f80fd5b50620000396040518060600160405280603f8152602001620036ff603f9139620000d4565b506200005e6040518060800160405280604f8152602001620037db604f9139620000d4565b50620000836040518060800160405280605a815260200162003781605a9139620000d4565b50620000a86040518060800160405280605c8152602001620036a3605c9139620000d4565b50620000cd6040518060800160405280604381526020016200373e60439139620000d4565b506200020d565b6002545f81815260036020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60025592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613488806200021b5f395ff3fe608060405234801561000f575f80fd5b5060043610610276575f3560e01c806383bf460911610156578063bc525652116100ca578063e12891d411610084578063e12891d4146107c1578063e83bfb58146107d4578063ebbdd2b0146107f6578063f6a94ecb14610809578063fc0c546a1461081c578063fe92049d1461082e575f80fd5b8063bc5256521461074a578063bf53b18814610769578063c081d8a31461077c578063d09cc57e146106e2578063d44e293c1461079b578063d4876b9f146107ae575f80fd5b80639f1025c61161011b5780639f1025c6146106a0578063a1130d04146106cf578063a462fb7b146106e2578063ab5a4e35146106f5578063acae8f4e14610708578063b8eaa98014610737575f80fd5b806383bf46091461051d5780638d552d4614610530578063924532fb1461055257806395addb90146105775780639e63fa6a1461065c575f80fd5b8063484c0714116101ed578063590158a7116101b2578063590158a7146104395780636fa427421461049657806370a08231146104b5578063762c38fd146104d45780637f8d429e146104e757806382ffa9f7146104fa575f80fd5b8063484c0714146103b35780634df6ca2a146103d55780634e60f883146103e857806351577ea91461040757806352debac314610426575f80fd5b80632417395c1161023e5780632417395c146102fe5780632518904c1461032057806326d6c97b1461036357806328828b1e146103855780632f998a6f146103985780633ccfd60b146103ab575f80fd5b806306c3b67a1461027a5780631101a0fd146102a2578063128b7a47146102b757806312a203c3146102ca578063144fa6d7146102eb575b5f80fd5b61028d610288366004612a06565b610841565b60405190151581526020015b60405180910390f35b6102b56102b0366004612b63565b610855565b005b6102b56102c5366004612c11565b610afc565b6102dd6102d8366004612c44565b610ca0565b604051908152602001610299565b6102b56102f9366004612c90565b610dbe565b6102dd61030c366004612a06565b5f9081526005602052604090206003015490565b61034b61032e366004612a06565b5f908152600560205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610299565b6102dd610371366004612a06565b5f9081526005602052604090206006015490565b6102b5610393366004612cab565b610e08565b6102b56103a6366004612d95565b6110b8565b6102b56112d9565b6102dd6103c1366004612a06565b5f9081526005602052604090206007015490565b6102b56103e3366004612a06565b6113a2565b6102dd6103f6366004612a06565b60046020525f908152604090205481565b6102dd610415366004612a06565b5f9081526005602052604090205490565b6102dd610434366004612e2f565b6113ef565b610471610447366004612a06565b60066020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610299565b6102dd6104a4366004612c90565b60076020525f908152604090205481565b6102dd6104c3366004612c90565b60016020525f908152604090205481565b6102dd6104e2366004612ebe565b6114f6565b61028d6104f5366004612a06565b6115f1565b6102dd610508366004612a06565b5f908152600560208190526040909120015490565b6102dd61052b366004612f3b565b61164c565b6102dd61053e366004612a06565b5f9081526005602052604090206004015490565b61028d610560366004612a06565b5f9081526005602052604090206002015460ff1690565b6105f5610585366004612a06565b600560208190525f91825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff16949391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610299565b61068b61066a366004612a06565b5f90815260056020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610299565b61068b6106ae366004612a06565b5f90815260056020526040902060010154600160c01b900463ffffffff1690565b6102dd6106dd366004612f74565b6116e6565b6102dd6106f0366004612a06565b611701565b6102dd610703366004612a06565b61173f565b61068b610716366004612a06565b5f90815260056020526040902060010154600160e01b900463ffffffff1690565b6102b5610745366004612fcd565b6117b3565b6102dd610758366004612a06565b60036020525f908152604090205481565b6102dd610777366004613001565b6119fc565b6102dd61078a366004612a06565b60086020525f908152604090205481565b6102b56107a9366004613099565b611ca9565b6102dd6107bc3660046130f3565b611d24565b61028d6107cf366004612b63565b611e2a565b61028d6107e2366004612a06565b60096020525f908152604090205460ff1681565b6102b5610804366004612a06565b611fc8565b6102b561081736600461317a565b6120ca565b5f5461034b906001600160a01b031681565b6102b561083c3660046131af565b6122f1565b5f60011961084e83611701565b1492915050565b8461085f816115f1565b61087c57604051636030e5f560e11b815260040160405180910390fd5b84515f0361089d576040516312fdb46960e31b815260040160405180910390fd5b5f8681526006602090815260408083208054600190910154600593849052918420928301546004909301546001600160a01b0390911693919290825b8a51811015610a5c57610953838c83815181106108f8576108f86131e5565b60200260200101518a8481518110610912576109126131e5565b60200260200101518c858151811061092c5761092c6131e5565b60200260200101518e8681518110610946576109466131e5565b6020026020010151612412565b610970576040516303a479f160e11b815260040160405180910390fd5b61097a858561320d565b93506109d68c8386898e8681518110610995576109956131e5565b60200260200101518e87815181106109af576109af6131e5565b60200260200101518e88815181106109c9576109c96131e5565b602002602001015161244f565b80975081955050508881815181106109f0576109f06131e5565b6020026020010151945060055f8d81526020019081526020015f20600601548514610a2d57610a20602886613220565b610a2a908661323f565b94505b8a8181518110610a3f57610a3f6131e5565b602002602001015192508080610a5490613252565b9150506108d9565b8215610a9e57610a6d8c8786612518565b5f8c815260066020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610ad9565b610ab28c87610aad888861320d565b612518565b5f8c815260066020526040812080546001600160a01b031916815560018101829055600201555b50505f998a52600560208190526040909a20909901989098555050505050505050565b5f828152600560205260408120600101548391600160c01b90910463ffffffff169003610b3c5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615610b6e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590610ba757504263ffffffff168163ffffffff1611155b15610bc55760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590610bfd57504263ffffffff168163ffffffff16115b15610c1b5760405163079994c560e31b815260040160405180910390fd5b610c2484612598565b5f85815260056020526040902060030154610c4090859061320d565b5f868152600560205260409081902060030182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c9191899190918252602082015260400190565b60405180910390a35050505050565b5f85610cab816115f1565b610cc857604051636030e5f560e11b815260040160405180910390fd5b5f878152600560205260409020548614610cf557604051630763e45d60e41b815260040160405180910390fd5b5f878152600560205260409020600101546001600160a01b03868116911614610d315760405163f089a18560e01b815260040160405180910390fd5b5f8781526005602052604090206001015463ffffffff600160c01b90910481169085161115610d7357604051633f61762b60e01b815260040160405180910390fd5b5f87815260056020526040902060060154831115610da457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600560205250604090206004015490565b5f546001600160a01b031615610de757604051635c4e8df160e11b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b87518210156110a6575f888381518110610e2757610e276131e5565b602002602001015190505f888481518110610e4457610e446131e5565b602002602001015190505f816001600160401b03811115610e6757610e67612a1d565b604051908082528060200260200182016040528015610e90578160200160208202803683370190505b5090505f826001600160401b03811115610eac57610eac612a1d565b604051908082528060200260200182016040528015610ed5578160200160208202803683370190505b5090505f836001600160401b03811115610ef157610ef1612a1d565b604051908082528060200260200182016040528015610f1a578160200160208202803683370190505b5090505f846001600160401b03811115610f3657610f36612a1d565b604051908082528060200260200182016040528015610f5f578160200160208202803683370190505b5090505f5b8581101561107f578c8881518110610f7e57610f7e6131e5565b6020026020010151858281518110610f9857610f986131e5565b6020026020010181815250508b8881518110610fb657610fb66131e5565b6020026020010151848281518110610fd057610fd06131e5565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110611002576110026131e5565b602002602001015183828151811061101c5761101c6131e5565b60200260200101818152505089888151811061103a5761103a6131e5565b6020026020010151828281518110611054576110546131e5565b60209081029190910101528761106981613252565b985050808061107790613252565b915050610f64565b61108c8786868686610855565b50505050505050818061109e90613252565b925050610e0b565b6110ae6112d9565b5050505050505050565b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036110f85760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff161561112a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061116357504263ffffffff168163ffffffff1611155b156111815760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff1680158015906111b957504263ffffffff168163ffffffff16115b156111d75760405163079994c560e31b815260040160405180910390fd5b8684805f036111f957604051635de374cf60e11b815260040160405180910390fd5b5f8281526005602052604081206006015490819003611248575f838152600560205260409020600701548210156112435760405163291784d560e01b815260040160405180910390fd5b611273565b61125381600261326a565b821015611273576040516328eecafb60e21b815260040160405180910390fd5b898880156112ac575f828152600560205260409020600601548110156112ac5760405163f6631e6760e01b815260040160405180910390fd5b6112b589612598565b6112c18c8c338c61268f565b6112cb8c8c612758565b505050505050505050505050565b335f818152600160205260408082208054908390559154905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561133e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113629190613281565b61136a575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260076020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113f982612598565b5f8981526003602052604081205490036114265760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161143c939291906132c2565b6040516020818303038152906040528051906020012090505f8189898730338b60405160200161147297969594939291906132fa565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114d1979695949392919061337e565b60405180910390a46114e881838b8b8b8a8a6127be565b9a9950505050505050505050565b5f8681526003602052604081205481036115235760405163bbbf712b60e01b815260040160405180910390fd5b5f878488604051602001611539939291906132c2565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161156f97969594939291906132fa565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115ce979695949392919061337e565b60405180910390a46115e581838989895f806127be565b98975050505050505050565b5f8181526005602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561162d575063ffffffff811615155b801561164557504263ffffffff168163ffffffff1611155b9392505050565b6002545f81815260036020908152604080832043905551919291611672918591016133cd565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116c89087906133e8565b60405180910390a36116db81600161320d565b60025590505b919050565b5f806116f18861164c565b90506115e58188888888886114f6565b5f8161170c816115f1565b61172957604051636030e5f560e11b815260040160405180910390fd5b50505f9081526005602052604090206004015490565b5f8061174a83611701565b9050600281016117ad575f83815260086020526040902054806117805760405163079442c960e01b815260040160405180910390fd5b61178981611701565b9150600282016117ab5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600560205260408120600101548691600160c01b90910463ffffffff1690036117f35760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611825576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061185e57504263ffffffff168163ffffffff1611155b1561187c5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff1680158015906118b457504263ffffffff168163ffffffff16115b156118d25760405163079994c560e31b815260040160405180910390fd5b8784805f036118f457604051635de374cf60e11b815260040160405180910390fd5b5f8281526005602052604081206006015490819003611943575f8381526005602052604090206007015482101561193e5760405163291784d560e01b815260040160405180910390fd5b61196e565b61194e81600261326a565b82101561196e576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119a7575f828152600560205260409020600601548110156119a75760405163f6631e6760e01b815260040160405180910390fd5b6119b089612598565b6001600160a01b038a166119d757604051630ca6549f60e11b815260040160405180910390fd5b6119e38d8d8c8c61268f565b6119ed8d8d612758565b50505050505050505050505050565b5f611a0683610841565b611a2357604051631f45e42760e11b815260040160405180910390fd5b5f8a878b604051602001611a39939291906132c2565b60408051601f1981840301815291815281516020928301205f87815260059093529120549091508114611a7f576040516349923ed160e11b815260040160405180910390fd5b5f848152600560205260409020600101546001600160a01b038a8116911614611abb5760405163611876b160e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff898116600160c01b9092041614611afb57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff888116600160a01b9092041614611b3b57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600560205260409020600701548514611b6b57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b9a5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bed57611bb882610841565b611bd557604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bfe8e8e8e8e8e8e8e8d6113ef565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560059091528082206003908101548684529190922090910154919250611c4b9161320d565b5f828152600560205260408082206003908101939093558482528082209092018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f86815260056020819052604090912090810154600690910154611cd291908590859085612412565b611cef576040516303a479f160e11b815260040160405180910390fd5b5f868152600560205260408120600401548614611d0c5784611d0e565b815b9050611d1b8787836122f1565b50505050505050565b5f611d2e82612598565b5f888152600360205260408120549003611d5b5760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d71939291906132c2565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611da797969594939291906132fa565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611e06979695949392919061337e565b60405180910390a4611e1d81838a8a8a5f8a6127be565b9998505050505050505050565b5f858152600560205260408120600101548690600160c01b900463ffffffff168203611e695760405163a42db76b60e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611ea257504263ffffffff168163ffffffff1611155b15611ec05760405163372900d560e21b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590611ef857504263ffffffff168163ffffffff16115b15611f165760405163079994c560e31b815260040160405180910390fd5b5f89815260056020819052604090912001548851885181141580611f3b575080885114155b80611f47575080875114155b15611f56575f95505050611fbc565b5f5b81811015611fb457611f76838c83815181106108f8576108f86131e5565b611f85575f9650505050611fbc565b8a8181518110611f9757611f976131e5565b602002602001015192508080611fac90613252565b915050611f58565b506001955050505b50505095945050505050565b5f8181526005602052604090206001015481906001600160a01b0316331461200357604051634361661f60e11b815260040160405180910390fd5b5f82815260056020526040902060020154829060ff166120365760405163f476ed1160e01b815260040160405180910390fd5b5f83815260056020526040902060028101805460ff191690556001015461206a90600160c01b900463ffffffff16426133fa565b5f84815260056020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526005602052604090206001015483906001600160a01b0316331461210557604051634361661f60e11b815260040160405180910390fd5b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036121455760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615612177576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff1680158015906121b057504263ffffffff168163ffffffff1611155b156121ce5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061220657504263ffffffff168163ffffffff16115b156122245760405163079994c560e31b815260040160405180910390fd5b8685801561225d575f8281526005602052604090206006015481101561225d5760405163f6631e6760e01b815260040160405180910390fd5b5f89815260056020526040902060010154600160e01b900463ffffffff16612298576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260056020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526005602052604090206001015483906001600160a01b0316331461232c57604051634361661f60e11b815260040160405180910390fd5b5f84815260056020526040902060020154849060ff1661235f5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316612386576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600560205260408120600201805460ff191690556123d99086908690869061268f565b5f8581526005602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f60405160200161242c959493929190613417565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612509576001600160a01b0386166124c6575f8981526005602052604090206003015494955085941580159061248c57506001198814155b156124c1575f898152600560205260409020600301546124af908a908890612518565b5f898152600560205260408120600301555b612509565b856001600160a01b0316856001600160a01b031614612509575f848810156124ee57876124f0565b845b90506125018a88610aad848c61323f565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526001602052604090205461253b90829061320d565b6001600160a01b0383165f818152600160205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061258b9085815260200190565b60405180910390a3505050565b805f036125a25750565b335f9081526001602052604090205480156125f7578181106125db576125c8828261323f565b335f908152600160205260409020555050565b6125e5818361323f565b335f9081526001602052604081205591505b5f546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af115801561264a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266e9190613281565b61268b57604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526005602081815260408084209092015491516126b89291879186918891879101613417565b6040516020818303038152906040528051906020012090505f8211156126ec575f8581526005602052604090206006018290555b5f858152600560208181526040808420909201849055815187815290810184905290810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c91565b5f828152600560205260409020600481018290556001015461278790600160c01b900463ffffffff16426133fa565b5f92835260056020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600560205260409020600101548790600160c01b900463ffffffff16156127ff576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036128255760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061284f57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906128715750336001600160a01b03881614155b156128f9576001600160a01b0387165f90815260076020526040902054808210156128af5760405163d72564c760e01b815260040160405180910390fd5b6128b9818361323f565b6001600160a01b0389165f908152600160205260409020549092506128df90829061320d565b6001600160a01b0389165f90815260016020526040902055505b5f898152600560205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156129a5575f89815260056020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129fb575f89815260056020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129f29087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612a16575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a5957612a59612a1d565b604052919050565b5f6001600160401b03821115612a7957612a79612a1d565b5060051b60200190565b5f82601f830112612a92575f80fd5b81356020612aa7612aa283612a61565b612a31565b82815260059290921b84018101918181019086841115612ac5575f80fd5b8286015b84811015612ae05780358352918301918301612ac9565b509695505050505050565b6001600160a01b0381168114612aff575f80fd5b50565b5f82601f830112612b11575f80fd5b81356020612b21612aa283612a61565b82815260059290921b84018101918181019086841115612b3f575f80fd5b8286015b84811015612ae0578035612b5681612aeb565b8352918301918301612b43565b5f805f805f60a08688031215612b77575f80fd5b8535945060208601356001600160401b0380821115612b94575f80fd5b612ba089838a01612a83565b95506040880135915080821115612bb5575f80fd5b612bc189838a01612b02565b94506060880135915080821115612bd6575f80fd5b612be289838a01612a83565b93506080880135915080821115612bf7575f80fd5b50612c0488828901612a83565b9150509295509295909350565b5f8060408385031215612c22575f80fd5b50508035926020909101359150565b803563ffffffff811681146116e1575f80fd5b5f805f805f60a08688031215612c58575f80fd5b85359450602086013593506040860135612c7181612aeb565b9250612c7f60608701612c31565b949793965091946080013592915050565b5f60208284031215612ca0575f80fd5b813561164581612aeb565b5f805f805f8060c08789031215612cc0575f80fd5b86356001600160401b0380821115612cd6575f80fd5b612ce28a838b01612a83565b97506020890135915080821115612cf7575f80fd5b612d038a838b01612a83565b96506040890135915080821115612d18575f80fd5b612d248a838b01612a83565b95506060890135915080821115612d39575f80fd5b612d458a838b01612b02565b94506080890135915080821115612d5a575f80fd5b612d668a838b01612a83565b935060a0890135915080821115612d7b575f80fd5b50612d8889828a01612a83565b9150509295509295509295565b5f805f8060808587031215612da8575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612dd3575f80fd5b81356001600160401b03811115612dec57612dec612a1d565b612dff601f8201601f1916602001612a31565b818152846020838601011115612e13575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e47575f80fd5b8835975060208901356001600160401b03811115612e63575f80fd5b612e6f8b828c01612dc4565b9750506040890135612e8081612aeb565b9550612e8e60608a01612c31565b9450612e9c60808a01612c31565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612ed3575f80fd5b8635955060208701356001600160401b03811115612eef575f80fd5b612efb89828a01612dc4565b9550506040870135612f0c81612aeb565b9350612f1a60608801612c31565b9250612f2860808801612c31565b915060a087013590509295509295509295565b5f60208284031215612f4b575f80fd5b81356001600160401b03811115612f60575f80fd5b612f6c84828501612dc4565b949350505050565b5f805f805f8060c08789031215612f89575f80fd5b86356001600160401b0380821115612f9f575f80fd5b612fab8a838b01612dc4565b97506020890135915080821115612fc0575f80fd5b50612efb89828a01612dc4565b5f805f805f60a08688031215612fe1575f80fd5b8535945060208601359350604086013592506060860135612c7f81612aeb565b5f805f805f805f805f6101208a8c03121561301a575f80fd5b8935985060208a01356001600160401b03811115613036575f80fd5b6130428c828d01612dc4565b98505060408a013561305381612aeb565b965061306160608b01612c31565b955061306f60808b01612c31565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c087890312156130ae575f80fd5b863595506020870135945060408701356130c781612aeb565b9350606087013592506080870135915060a08701356130e581612aeb565b809150509295509295509295565b5f805f805f805f60e0888a031215613109575f80fd5b8735965060208801356001600160401b03811115613125575f80fd5b6131318a828b01612dc4565b965050604088013561314281612aeb565b945061315060608901612c31565b935061315e60808901612c31565b925060a0880135915060c0880135905092959891949750929550565b5f805f6060848603121561318c575f80fd5b83359250602084013561319e81612aeb565b929592945050506040919091013590565b5f805f606084860312156131c1575f80fd5b833592506020840135915060408401356131da81612aeb565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117ad576117ad6131f9565b5f8261323a57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117ad576117ad6131f9565b5f60018201613263576132636131f9565b5060010190565b80820281158282048414176117ad576117ad6131f9565b5f60208284031215613291575f80fd5b81518015158114611645575f80fd5b5f5b838110156132ba5781810151838201526020016132a2565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516132eb8160248501602087016132a0565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f815180845261336a8160208601602086016132a0565b601f01601f19169290920160200192915050565b87815260e060208201525f61339660e0830189613353565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516133de8184602087016132a0565b9190910192915050565b602081525f6116456020830184613353565b63ffffffff8181168382160190808211156117ab576117ab6131f9565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122026b940a4813a437db7d37b04f3e13ae10108654080161147d66744d2ac42e3f464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
|
|
1
|
+
60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200365a603f9139620000d3565b506200005d6040518060800160405280604f815260200162003736604f9139620000d3565b50620000826040518060800160405280605a8152602001620036dc605a9139620000d3565b50620000a76040518060800160405280605c8152602001620035fe605c9139620000d3565b50620000cc6040518060800160405280604381526020016200369960439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b6133e980620002155f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bf53b188116100bf578063e12891d411610084578063e12891d4146107a6578063e83bfb58146107b9578063ebbdd2b0146107db578063f6a94ecb146107ee578063fc0c546a14610801578063fe92049d14610814575f80fd5b8063bf53b1881461074e578063c081d8a314610761578063d09cc57e146106c7578063d44e293c14610780578063d4876b9f14610793575f80fd5b80639f1025c6116101105780639f1025c614610698578063a462fb7b146106c7578063ab5a4e35146106da578063acae8f4e146106ed578063b8eaa9801461071c578063bc5256521461072f575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610654575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042f5780636fa427421461048c57806370a08231146104ab578063762c38fd146104ca5780637f8d429e146104dd57806382ffa9f7146104f0575f80fd5b8063484c0714146103a95780634df6ca2a146103cb5780634e60f883146103de57806351577ea9146103fd57806352debac31461041c575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031657806326d6c97b1461035957806328828b1e1461037b5780632f998a6f1461038e5780633ccfd60b146103a1575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d3660046129c0565b610827565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612b1d565b61083b565b005b6102aa6102ba366004612bcb565b610add565b6102d26102cd366004612bfe565b610c82565b60405190815260200161028e565b6102aa6102ee366004612c4a565b610da0565b6102d26103013660046129c0565b5f908152600360208190526040909120015490565b6103416103243660046129c0565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d26103673660046129c0565b5f9081526003602052604090206006015490565b6102aa610389366004612c65565b610dec565b6102aa61039c366004612d4f565b61109c565b6102aa6112bd565b6102d26103b73660046129c0565b5f9081526003602052604090206007015490565b6102aa6103d93660046129c0565b611386565b6102d26103ec3660046129c0565b60026020525f908152604090205481565b6102d261040b3660046129c0565b5f9081526003602052604090205490565b6102d261042a366004612de9565b6113d3565b61046761043d3660046129c0565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d261049a366004612c4a565b60056020525f908152604090205481565b6102d26104b9366004612c4a565b60066020525f908152604090205481565b6102d26104d8366004612e78565b6114da565b6102826104eb3660046129c0565b6115d5565b6102d26104fe3660046129c0565b5f9081526003602052604090206005015490565b6102d2610520366004612ef5565b611630565b6102d26105333660046129c0565b5f9081526003602052604090206004015490565b6102826105553660046129c0565b5f9081526003602052604090206002015460ff1690565b6105ed61057a3660046129c0565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b6106836106623660046129c0565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106836106a63660046129c0565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102d26106d53660046129c0565b6116c5565b6102d26106e83660046129c0565b611703565b6106836106fb3660046129c0565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102aa61072a366004612f2e565b611777565b6102d261073d3660046129c0565b60016020525f908152604090205481565b6102d261075c366004612f62565b6119c0565b6102d261076f3660046129c0565b60086020525f908152604090205481565b6102aa61078e366004612ffa565b611c64565b6102d26107a1366004613054565b611cdd565b6102826107b4366004612b1d565b611de3565b6102826107c73660046129c0565b60096020525f908152604090205460ff1681565b6102aa6107e93660046129c0565b611f80565b6102aa6107fc3660046130db565b612082565b600754610341906001600160a01b031681565b6102aa610822366004613110565b6122a9565b5f600119610834836116c5565b1492915050565b84610845816115d5565b61086257604051636030e5f560e11b815260040160405180910390fd5b84515f03610883576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a3f57610936838c83815181106108db576108db613146565b60200260200101518a84815181106108f5576108f5613146565b60200260200101518c858151811061090f5761090f613146565b60200260200101518e868151811061092957610929613146565b60200260200101516123ca565b610953576040516303a479f160e11b815260040160405180910390fd5b61095d858561316e565b93506109b98c8386898e868151811061097857610978613146565b60200260200101518e878151811061099257610992613146565b60200260200101518e88815181106109ac576109ac613146565b6020026020010151612407565b80975081955050508881815181106109d3576109d3613146565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a1057610a03602886613181565b610a0d90866131a0565b94505b8a8181518110610a2257610a22613146565b602002602001015192508080610a37906131b3565b9150506108bc565b8215610a8157610a508c87866124d3565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610abc565b610a958c87610a90888861316e565b6124d3565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610b1d5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b4f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b8857504263ffffffff168163ffffffff1611155b15610ba65760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610bde57504263ffffffff168163ffffffff16115b15610bfc5760405163079994c560e31b815260040160405180910390fd5b610c0584612553565b5f8581526003602081905260409091200154610c2290859061316e565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c7391899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8d816115d5565b610caa57604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610cd757604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d135760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d5557604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d8657604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dca57604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561108a575f888381518110610e0b57610e0b613146565b602002602001015190505f888481518110610e2857610e28613146565b602002602001015190505f816001600160401b03811115610e4b57610e4b6129d7565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b5090505f826001600160401b03811115610e9057610e906129d7565b604051908082528060200260200182016040528015610eb9578160200160208202803683370190505b5090505f836001600160401b03811115610ed557610ed56129d7565b604051908082528060200260200182016040528015610efe578160200160208202803683370190505b5090505f846001600160401b03811115610f1a57610f1a6129d7565b604051908082528060200260200182016040528015610f43578160200160208202803683370190505b5090505f5b85811015611063578c8881518110610f6257610f62613146565b6020026020010151858281518110610f7c57610f7c613146565b6020026020010181815250508b8881518110610f9a57610f9a613146565b6020026020010151848281518110610fb457610fb4613146565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fe657610fe6613146565b602002602001015183828151811061100057611000613146565b60200260200101818152505089888151811061101e5761101e613146565b602002602001015182828151811061103857611038613146565b60209081029190910101528761104d816131b3565b985050808061105b906131b3565b915050610f48565b611070878686868661083b565b505050505050508180611082906131b3565b925050610def565b6110926112bd565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110dc5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561110e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061114757504263ffffffff168163ffffffff1611155b156111655760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119d57504263ffffffff168163ffffffff16115b156111bb5760405163079994c560e31b815260040160405180910390fd5b8684805f036111dd57604051635de374cf60e11b815260040160405180910390fd5b5f828152600360205260408120600601549081900361122c575f838152600360205260409020600701548210156112275760405163291784d560e01b815260040160405180910390fd5b611257565b6112378160026131cb565b821015611257576040516328eecafb60e21b815260040160405180910390fd5b89888015611290575f828152600360205260409020600601548110156112905760405163f6631e6760e01b815260040160405180910390fd5b61129989612553565b6112a58c8c338c61264b565b6112af8c8c612712565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906131e2565b61134e575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113dd82612553565b5f89815260016020526040812054900361140a5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161142093929190613223565b6040516020818303038152906040528051906020012090505f8189898730338b604051602001611456979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114b597969594939291906132df565b60405180910390a46114cc81838b8b8b8a8a612778565b9a9950505050505050505050565b5f8681526001602052604081205481036115075760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161151d93929190613223565b6040516020818303038152906040528051906020012090505f8187875f303389604051602001611553979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115b297969594939291906132df565b60405180910390a46115c981838989895f80612778565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561161157505f8163ffffffff16115b801561162957504263ffffffff168163ffffffff1611155b9392505050565b5f8054808252600160209081526040808420439055516116529185910161332e565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116a8908790613349565b60405180910390a36116bb81600161316e565b5f5590505b919050565b5f816116d0816115d5565b6116ed57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f8061170e836116c5565b905060028101611771575f83815260086020526040902054806117445760405163079442c960e01b815260040160405180910390fd5b61174d816116c5565b91506002820161176f5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036117b75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156117e9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061182257504263ffffffff168163ffffffff1611155b156118405760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061187857504263ffffffff168163ffffffff16115b156118965760405163079994c560e31b815260040160405180910390fd5b8784805f036118b857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611907575f838152600360205260409020600701548210156119025760405163291784d560e01b815260040160405180910390fd5b611932565b6119128160026131cb565b821015611932576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196b575f8281526003602052604090206006015481101561196b5760405163f6631e6760e01b815260040160405180910390fd5b61197489612553565b6001600160a01b038a1661199b57604051630ca6549f60e11b815260040160405180910390fd5b6119a78d8d8c8c61264b565b6119b18d8d612712565b50505050505050505050505050565b5f6119ca83610827565b6119e757604051631f45e42760e11b815260040160405180910390fd5b5f8a878b6040516020016119fd93929190613223565b60408051601f1981840301815291815281516020928301205f87815260039093529120549091508114611a43576040516349923ed160e11b815260040160405180910390fd5b5f848152600360205260409020600101546001600160a01b038a8116911614611a7f5760405163611876b160e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff898116600160c01b9092041614611abf57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff888116600160a01b9092041614611aff57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600360205260409020600701548514611b2f57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b5e5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb157611b7c82610827565b611b9957604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc28e8e8e8e8e8e8e8d6113d3565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560039182905280832082015486845292200154919250611c099161316e565b5f828152600360208190526040808320820193909355848252828220018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611c8b919085908590856123ca565b611ca8576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611cc55784611cc7565b815b9050611cd48787836122a9565b50505050505050565b5f611ce782612553565b5f888152600160205260408120549003611d145760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d2a93929190613223565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d60979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611dbf97969594939291906132df565b60405180910390a4611dd681838a8a8a5f8a612778565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611e225760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611e5b57504263ffffffff168163ffffffff1611155b15611e795760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611eb157504263ffffffff168163ffffffff16115b15611ecf5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611ef3575080885114155b80611eff575080875114155b15611f0e575f95505050611f74565b5f5b81811015611f6c57611f2e838c83815181106108db576108db613146565b611f3d575f9650505050611f74565b8a8181518110611f4f57611f4f613146565b602002602001015192508080611f64906131b3565b915050611f10565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611fbb57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611fee5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff191690556001015461202290600160c01b900463ffffffff164261335b565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b031633146120bd57604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120fd5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561212f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061216857504263ffffffff168163ffffffff1611155b156121865760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906121be57504263ffffffff168163ffffffff16115b156121dc5760405163079994c560e31b815260040160405180910390fd5b86858015612215575f828152600360205260409020600601548110156122155760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612250576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b031633146122e457604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166123175760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b03831661233e576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556123919086908690869061264b565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123e4959493929190613378565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036124c4576001600160a01b038616612481578495505f60035f8b81526020019081526020015f206003015411801561244657506001198814155b1561247c5761246a898760035f8d81526020019081526020015f20600301546124d3565b5f898152600360208190526040822001555b6124c4565b856001600160a01b0316856001600160a01b0316146124c4575f848810156124a957876124ab565b845b90506124bc8a88610a90848c6131a0565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152600660205260409020546124f690829061316e565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906125469085815260200190565b60405180910390a3505050565b805f0361255d5750565b335f9081526006602052604090205480156125b2578181106125965761258382826131a0565b335f908152600660205260409020555050565b6125a081836131a0565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612606573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262a91906131e2565b61264757604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161267392879186918891879101613378565b6040516020818303038152906040528051906020012090505f8211156126a7575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c73565b5f828152600360205260409020600481018290556001015461274190600160c01b900463ffffffff164261335b565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156127b9576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036127df5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061280957604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061282b5750336001600160a01b03881614155b156128b3576001600160a01b0387165f90815260056020526040902054808210156128695760405163d72564c760e01b815260040160405180910390fd5b61287381836131a0565b6001600160a01b0389165f9081526006602052604090205490925061289990829061316e565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561295f575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129b5575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129ac9087815260200190565b60405180910390a25b505050505050505050565b5f602082840312156129d0575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a1357612a136129d7565b604052919050565b5f6001600160401b03821115612a3357612a336129d7565b5060051b60200190565b5f82601f830112612a4c575f80fd5b81356020612a61612a5c83612a1b565b6129eb565b82815260059290921b84018101918181019086841115612a7f575f80fd5b8286015b84811015612a9a5780358352918301918301612a83565b509695505050505050565b6001600160a01b0381168114612ab9575f80fd5b50565b5f82601f830112612acb575f80fd5b81356020612adb612a5c83612a1b565b82815260059290921b84018101918181019086841115612af9575f80fd5b8286015b84811015612a9a578035612b1081612aa5565b8352918301918301612afd565b5f805f805f60a08688031215612b31575f80fd5b8535945060208601356001600160401b0380821115612b4e575f80fd5b612b5a89838a01612a3d565b95506040880135915080821115612b6f575f80fd5b612b7b89838a01612abc565b94506060880135915080821115612b90575f80fd5b612b9c89838a01612a3d565b93506080880135915080821115612bb1575f80fd5b50612bbe88828901612a3d565b9150509295509295909350565b5f8060408385031215612bdc575f80fd5b50508035926020909101359150565b803563ffffffff811681146116c0575f80fd5b5f805f805f60a08688031215612c12575f80fd5b85359450602086013593506040860135612c2b81612aa5565b9250612c3960608701612beb565b949793965091946080013592915050565b5f60208284031215612c5a575f80fd5b813561162981612aa5565b5f805f805f8060c08789031215612c7a575f80fd5b86356001600160401b0380821115612c90575f80fd5b612c9c8a838b01612a3d565b97506020890135915080821115612cb1575f80fd5b612cbd8a838b01612a3d565b96506040890135915080821115612cd2575f80fd5b612cde8a838b01612a3d565b95506060890135915080821115612cf3575f80fd5b612cff8a838b01612abc565b94506080890135915080821115612d14575f80fd5b612d208a838b01612a3d565b935060a0890135915080821115612d35575f80fd5b50612d4289828a01612a3d565b9150509295509295509295565b5f805f8060808587031215612d62575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612d8d575f80fd5b81356001600160401b03811115612da657612da66129d7565b612db9601f8201601f19166020016129eb565b818152846020838601011115612dcd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e01575f80fd5b8835975060208901356001600160401b03811115612e1d575f80fd5b612e298b828c01612d7e565b9750506040890135612e3a81612aa5565b9550612e4860608a01612beb565b9450612e5660808a01612beb565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612e8d575f80fd5b8635955060208701356001600160401b03811115612ea9575f80fd5b612eb589828a01612d7e565b9550506040870135612ec681612aa5565b9350612ed460608801612beb565b9250612ee260808801612beb565b915060a087013590509295509295509295565b5f60208284031215612f05575f80fd5b81356001600160401b03811115612f1a575f80fd5b612f2684828501612d7e565b949350505050565b5f805f805f60a08688031215612f42575f80fd5b8535945060208601359350604086013592506060860135612c3981612aa5565b5f805f805f805f805f6101208a8c031215612f7b575f80fd5b8935985060208a01356001600160401b03811115612f97575f80fd5b612fa38c828d01612d7e565b98505060408a0135612fb481612aa5565b9650612fc260608b01612beb565b9550612fd060808b01612beb565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c0878903121561300f575f80fd5b8635955060208701359450604087013561302881612aa5565b9350606087013592506080870135915060a087013561304681612aa5565b809150509295509295509295565b5f805f805f805f60e0888a03121561306a575f80fd5b8735965060208801356001600160401b03811115613086575f80fd5b6130928a828b01612d7e565b96505060408801356130a381612aa5565b94506130b160608901612beb565b93506130bf60808901612beb565b925060a0880135915060c0880135905092959891949750929550565b5f805f606084860312156130ed575f80fd5b8335925060208401356130ff81612aa5565b929592945050506040919091013590565b5f805f60608486031215613122575f80fd5b8335925060208401359150604084013561313b81612aa5565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117715761177161315a565b5f8261319b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117715761177161315a565b5f600182016131c4576131c461315a565b5060010190565b80820281158282048414176117715761177161315a565b5f602082840312156131f2575f80fd5b81518015158114611629575f80fd5b5f5b8381101561321b578181015183820152602001613203565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161324c816024850160208701613201565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526132cb816020860160208601613201565b601f01601f19169290920160200192915050565b87815260e060208201525f6132f760e08301896132b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161333f818460208701613201565b9190910192915050565b602081525f61162960208301846132b4565b63ffffffff81811683821601908082111561176f5761176f61315a565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122036f37c169ad3d20b361181e42fedb98cdbd2cc5558f1752e0baf0572a373cce664736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
|
|
@@ -1 +1 @@
|
|
|
1
|
-
60806040525f60025534801562000014575f80fd5b50620000396040518060600160405280603f81526020016200328a603f9139620000d4565b506200005e6040518060800160405280604f815260200162003366604f9139620000d4565b50620000836040518060800160405280605a81526020016200330c605a9139620000d4565b50620000a86040518060800160405280605c81526020016200322e605c9139620000d4565b50620000cd604051806080016040528060438152602001620032c960439139620000d4565b506200020d565b6002545f81815260036020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60025592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613013806200021b5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c806382ffa9f711610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610732578063ebbdd2b014610745578063f6a94ecb14610758578063fc0c546a1461076b578063fe92049d1461077d575f80fd5b8063b8eaa980146106da578063bc525652146106ed578063d09cc57e14610698578063d44e293c1461070c578063d4876b9f1461071f575f80fd5b80639e63fa6a116100fa5780639e63fa6a146106125780639f1025c614610656578063a1130d0414610685578063a462fb7b14610698578063acae8f4e146106ab575f80fd5b806382ffa9f7146104b057806383bf4609146104d35780638d552d46146104e6578063924532fb1461050857806395addb901461052d575f80fd5b8063484c0714116101c1578063590158a711610186578063590158a7146103df5780636fa427421461043c57806370a082311461045b578063762c38fd1461047a5780637f8d429e1461048d575f80fd5b8063484c0714146103595780634df6ca2a1461037b5780634e60f8831461038e57806351577ea9146103ad57806352debac3146103cc575f80fd5b80632518904c116102075780632518904c146102c657806326d6c97b1461030957806328828b1e1461032b5780632f998a6f1461033e5780633ccfd60b14610351575f80fd5b80631101a0fd14610243578063128b7a471461025857806312a203c31461026b578063144fa6d7146102915780632417395c146102a4575b5f80fd5b610256610251366004612762565b610790565b005b610256610266366004612810565b610a37565b61027e610279366004612843565b610bdb565b6040519081526020015b60405180910390f35b61025661029f36600461288f565b610cf9565b61027e6102b23660046128aa565b5f9081526005602052604090206003015490565b6102f16102d43660046128aa565b5f908152600560205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610288565b61027e6103173660046128aa565b5f9081526005602052604090206006015490565b6102566103393660046128c1565b610d43565b61025661034c3660046129ab565b610ff3565b610256611214565b61027e6103673660046128aa565b5f9081526005602052604090206007015490565b6102566103893660046128aa565b6112dd565b61027e61039c3660046128aa565b60046020525f908152604090205481565b61027e6103bb3660046128aa565b5f9081526005602052604090205490565b61027e6103da366004612a45565b61132a565b6104176103ed3660046128aa565b60066020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610288565b61027e61044a36600461288f565b60076020525f908152604090205481565b61027e61046936600461288f565b60016020525f908152604090205481565b61027e610488366004612ad4565b611431565b6104a061049b3660046128aa565b61152c565b6040519015158152602001610288565b61027e6104be3660046128aa565b5f908152600560208190526040909120015490565b61027e6104e1366004612b51565b611587565b61027e6104f43660046128aa565b5f9081526005602052604090206004015490565b6104a06105163660046128aa565b5f9081526005602052604090206002015460ff1690565b6105ab61053b3660046128aa565b600560208190525f91825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff16949391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610288565b6106416106203660046128aa565b5f90815260056020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610288565b6106416106643660046128aa565b5f90815260056020526040902060010154600160c01b900463ffffffff1690565b61027e610693366004612b8a565b611621565b61027e6106a63660046128aa565b61163c565b6106416106b93660046128aa565b5f90815260056020526040902060010154600160e01b900463ffffffff1690565b6102566106e8366004612be3565b61167a565b61027e6106fb3660046128aa565b60036020525f908152604090205481565b61025661071a366004612c17565b6118c3565b61027e61072d366004612c71565b61193e565b6104a0610740366004612762565b611a44565b6102566107533660046128aa565b611be2565b610256610766366004612cf8565b611ce4565b5f546102f1906001600160a01b031681565b61025661078b366004612d2d565b611f0b565b8461079a8161152c565b6107b757604051636030e5f560e11b815260040160405180910390fd5b84515f036107d8576040516312fdb46960e31b815260040160405180910390fd5b5f8681526006602090815260408083208054600190910154600593849052918420928301546004909301546001600160a01b0390911693919290825b8a518110156109975761088e838c838151811061083357610833612d63565b60200260200101518a848151811061084d5761084d612d63565b60200260200101518c858151811061086757610867612d63565b60200260200101518e868151811061088157610881612d63565b602002602001015161202c565b6108ab576040516303a479f160e11b815260040160405180910390fd5b6108b58585612d8b565b93506109118c8386898e86815181106108d0576108d0612d63565b60200260200101518e87815181106108ea576108ea612d63565b60200260200101518e888151811061090457610904612d63565b6020026020010151612069565b809750819550505088818151811061092b5761092b612d63565b6020026020010151945060055f8d81526020019081526020015f206006015485146109685761095b602886612da4565b6109659086612dc3565b94505b8a818151811061097a5761097a612d63565b60200260200101519250808061098f90612dd6565b915050610814565b82156109d9576109a88c878661212e565b5f8c815260066020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a14565b6109ed8c876109e88888612d8b565b61212e565b5f8c815260066020526040812080546001600160a01b031916815560018101829055600201555b50505f998a52600560208190526040909a20909901989098555050505050505050565b5f828152600560205260408120600101548391600160c01b90910463ffffffff169003610a775760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615610aa9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590610ae257504263ffffffff168163ffffffff1611155b15610b005760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590610b3857504263ffffffff168163ffffffff16115b15610b565760405163079994c560e31b815260040160405180910390fd5b610b5f846121ae565b5f85815260056020526040902060030154610b7b908590612d8b565b5f868152600560205260409081902060030182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bcc91899190918252602082015260400190565b60405180910390a35050505050565b5f85610be68161152c565b610c0357604051636030e5f560e11b815260040160405180910390fd5b5f878152600560205260409020548614610c3057604051630763e45d60e41b815260040160405180910390fd5b5f878152600560205260409020600101546001600160a01b03868116911614610c6c5760405163f089a18560e01b815260040160405180910390fd5b5f8781526005602052604090206001015463ffffffff600160c01b90910481169085161115610cae57604051633f61762b60e01b815260040160405180910390fd5b5f87815260056020526040902060060154831115610cdf57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600560205250604090206004015490565b5f546001600160a01b031615610d2257604051635c4e8df160e11b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fe1575f888381518110610d6257610d62612d63565b602002602001015190505f888481518110610d7f57610d7f612d63565b602002602001015190505f816001600160401b03811115610da257610da261261c565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b5090505f826001600160401b03811115610de757610de761261c565b604051908082528060200260200182016040528015610e10578160200160208202803683370190505b5090505f836001600160401b03811115610e2c57610e2c61261c565b604051908082528060200260200182016040528015610e55578160200160208202803683370190505b5090505f846001600160401b03811115610e7157610e7161261c565b604051908082528060200260200182016040528015610e9a578160200160208202803683370190505b5090505f5b85811015610fba578c8881518110610eb957610eb9612d63565b6020026020010151858281518110610ed357610ed3612d63565b6020026020010181815250508b8881518110610ef157610ef1612d63565b6020026020010151848281518110610f0b57610f0b612d63565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f3d57610f3d612d63565b6020026020010151838281518110610f5757610f57612d63565b602002602001018181525050898881518110610f7557610f75612d63565b6020026020010151828281518110610f8f57610f8f612d63565b602090810291909101015287610fa481612dd6565b9850508080610fb290612dd6565b915050610e9f565b610fc78786868686610790565b505050505050508180610fd990612dd6565b925050610d46565b610fe9611214565b5050505050505050565b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036110335760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611065576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061109e57504263ffffffff168163ffffffff1611155b156110bc5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff1680158015906110f457504263ffffffff168163ffffffff16115b156111125760405163079994c560e31b815260040160405180910390fd5b8684805f0361113457604051635de374cf60e11b815260040160405180910390fd5b5f8281526005602052604081206006015490819003611183575f8381526005602052604090206007015482101561117e5760405163291784d560e01b815260040160405180910390fd5b6111ae565b61118e816002612dee565b8210156111ae576040516328eecafb60e21b815260040160405180910390fd5b898880156111e7575f828152600560205260409020600601548110156111e75760405163f6631e6760e01b815260040160405180910390fd5b6111f0896121ae565b6111fc8c8c338c6122a5565b6112068c8c61236e565b505050505050505050505050565b335f818152600160205260408082208054908390559154905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611279573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129d9190612e05565b6112a5575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260076020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f611334826121ae565b5f8981526003602052604081205490036113615760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161137793929190612e46565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113ad9796959493929190612e7e565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e4260405161140c9796959493929190612f02565b60405180910390a461142381838b8b8b8a8a6123d4565b9a9950505050505050505050565b5f86815260036020526040812054810361145e5760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161147493929190612e46565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114aa9796959493929190612e7e565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115099796959493929190612f02565b60405180910390a461152081838989895f806123d4565b98975050505050505050565b5f8181526005602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611568575063ffffffff811615155b801561158057504263ffffffff168163ffffffff1611155b9392505050565b6002545f818152600360209081526040808320439055519192916115ad91859101612f51565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611603908790612f6c565b60405180910390a3611616816001612d8b565b60025590505b919050565b5f8061162c88611587565b9050611520818888888888611431565b5f816116478161152c565b61166457604051636030e5f560e11b815260040160405180910390fd5b50505f9081526005602052604090206004015490565b5f858152600560205260408120600101548691600160c01b90910463ffffffff1690036116ba5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff16156116ec576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061172557504263ffffffff168163ffffffff1611155b156117435760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061177b57504263ffffffff168163ffffffff16115b156117995760405163079994c560e31b815260040160405180910390fd5b8784805f036117bb57604051635de374cf60e11b815260040160405180910390fd5b5f828152600560205260408120600601549081900361180a575f838152600560205260409020600701548210156118055760405163291784d560e01b815260040160405180910390fd5b611835565b611815816002612dee565b821015611835576040516328eecafb60e21b815260040160405180910390fd5b8a89801561186e575f8281526005602052604090206006015481101561186e5760405163f6631e6760e01b815260040160405180910390fd5b611877896121ae565b6001600160a01b038a1661189e57604051630ca6549f60e11b815260040160405180910390fd5b6118aa8d8d8c8c6122a5565b6118b48d8d61236e565b50505050505050505050505050565b5f868152600560208190526040909120908101546006909101546118ec9190859085908561202c565b611909576040516303a479f160e11b815260040160405180910390fd5b5f8681526005602052604081206004015486146119265784611928565b815b9050611935878783611f0b565b50505050505050565b5f611948826121ae565b5f8881526003602052604081205490036119755760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161198b93929190612e46565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119c19796959493929190612e7e565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611a209796959493929190612f02565b60405180910390a4611a3781838a8a8a5f8a6123d4565b9998505050505050505050565b5f858152600560205260408120600101548690600160c01b900463ffffffff168203611a835760405163a42db76b60e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611abc57504263ffffffff168163ffffffff1611155b15611ada5760405163372900d560e21b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590611b1257504263ffffffff168163ffffffff16115b15611b305760405163079994c560e31b815260040160405180910390fd5b5f89815260056020819052604090912001548851885181141580611b55575080885114155b80611b61575080875114155b15611b70575f95505050611bd6565b5f5b81811015611bce57611b90838c838151811061083357610833612d63565b611b9f575f9650505050611bd6565b8a8181518110611bb157611bb1612d63565b602002602001015192508080611bc690612dd6565b915050611b72565b506001955050505b50505095945050505050565b5f8181526005602052604090206001015481906001600160a01b03163314611c1d57604051634361661f60e11b815260040160405180910390fd5b5f82815260056020526040902060020154829060ff16611c505760405163f476ed1160e01b815260040160405180910390fd5b5f83815260056020526040902060028101805460ff1916905560010154611c8490600160c01b900463ffffffff1642612f7e565b5f84815260056020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526005602052604090206001015483906001600160a01b03163314611d1f57604051634361661f60e11b815260040160405180910390fd5b5f848152600560205260408120600101548591600160c01b90910463ffffffff169003611d5f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611d91576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611dca57504263ffffffff168163ffffffff1611155b15611de85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590611e2057504263ffffffff168163ffffffff16115b15611e3e5760405163079994c560e31b815260040160405180910390fd5b86858015611e77575f82815260056020526040902060060154811015611e775760405163f6631e6760e01b815260040160405180910390fd5b5f89815260056020526040902060010154600160e01b900463ffffffff16611eb2576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260056020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526005602052604090206001015483906001600160a01b03163314611f4657604051634361661f60e11b815260040160405180910390fd5b5f84815260056020526040902060020154849060ff16611f795760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611fa0576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600560205260408120600201805460ff19169055611ff3908690869086906122a5565b5f8581526005602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612046959493929190612fa2565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361211f576001600160a01b0386166120dc575f898152600560205260409020600301549495508594158015906120a2575060015b156120d7575f898152600560205260409020600301546120c5908a90889061212e565b5f898152600560205260408120600301555b61211f565b856001600160a01b0316856001600160a01b03161461211f575f848810156121045787612106565b845b90506121178a886109e8848c612dc3565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260016020526040902054612151908290612d8b565b6001600160a01b0383165f818152600160205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121a19085815260200190565b60405180910390a3505050565b805f036121b85750565b335f90815260016020526040902054801561220d578181106121f1576121de8282612dc3565b335f908152600160205260409020555050565b6121fb8183612dc3565b335f9081526001602052604081205591505b5f546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612260573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122849190612e05565b6122a157604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526005602081815260408084209092015491516122ce9291879186918891879101612fa2565b6040516020818303038152906040528051906020012090505f821115612302575f8581526005602052604090206006018290555b5f858152600560208181526040808420909201849055815187815290810184905290810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bcc565b5f828152600560205260409020600481018290556001015461239d90600160c01b900463ffffffff1642612f7e565b5f92835260056020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600560205260409020600101548790600160c01b900463ffffffff1615612415576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f0361243b5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061246557604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906124875750336001600160a01b03881614155b1561250f576001600160a01b0387165f90815260076020526040902054808210156124c55760405163d72564c760e01b815260040160405180910390fd5b6124cf8183612dc3565b6001600160a01b0389165f908152600160205260409020549092506124f5908290612d8b565b6001600160a01b0389165f90815260016020526040902055505b5f898152600560205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156125bb575f89815260056020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612611575f89815260056020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906126089087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156126585761265861261c565b604052919050565b5f6001600160401b038211156126785761267861261c565b5060051b60200190565b5f82601f830112612691575f80fd5b813560206126a66126a183612660565b612630565b82815260059290921b840181019181810190868411156126c4575f80fd5b8286015b848110156126df57803583529183019183016126c8565b509695505050505050565b6001600160a01b03811681146126fe575f80fd5b50565b5f82601f830112612710575f80fd5b813560206127206126a183612660565b82815260059290921b8401810191818101908684111561273e575f80fd5b8286015b848110156126df578035612755816126ea565b8352918301918301612742565b5f805f805f60a08688031215612776575f80fd5b8535945060208601356001600160401b0380821115612793575f80fd5b61279f89838a01612682565b955060408801359150808211156127b4575f80fd5b6127c089838a01612701565b945060608801359150808211156127d5575f80fd5b6127e189838a01612682565b935060808801359150808211156127f6575f80fd5b5061280388828901612682565b9150509295509295909350565b5f8060408385031215612821575f80fd5b50508035926020909101359150565b803563ffffffff8116811461161c575f80fd5b5f805f805f60a08688031215612857575f80fd5b85359450602086013593506040860135612870816126ea565b925061287e60608701612830565b949793965091946080013592915050565b5f6020828403121561289f575f80fd5b8135611580816126ea565b5f602082840312156128ba575f80fd5b5035919050565b5f805f805f8060c087890312156128d6575f80fd5b86356001600160401b03808211156128ec575f80fd5b6128f88a838b01612682565b9750602089013591508082111561290d575f80fd5b6129198a838b01612682565b9650604089013591508082111561292e575f80fd5b61293a8a838b01612682565b9550606089013591508082111561294f575f80fd5b61295b8a838b01612701565b94506080890135915080821115612970575f80fd5b61297c8a838b01612682565b935060a0890135915080821115612991575f80fd5b5061299e89828a01612682565b9150509295509295509295565b5f805f80608085870312156129be575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129e9575f80fd5b81356001600160401b03811115612a0257612a0261261c565b612a15601f8201601f1916602001612630565b818152846020838601011115612a29575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a5d575f80fd5b8835975060208901356001600160401b03811115612a79575f80fd5b612a858b828c016129da565b9750506040890135612a96816126ea565b9550612aa460608a01612830565b9450612ab260808a01612830565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612ae9575f80fd5b8635955060208701356001600160401b03811115612b05575f80fd5b612b1189828a016129da565b9550506040870135612b22816126ea565b9350612b3060608801612830565b9250612b3e60808801612830565b915060a087013590509295509295509295565b5f60208284031215612b61575f80fd5b81356001600160401b03811115612b76575f80fd5b612b82848285016129da565b949350505050565b5f805f805f8060c08789031215612b9f575f80fd5b86356001600160401b0380821115612bb5575f80fd5b612bc18a838b016129da565b97506020890135915080821115612bd6575f80fd5b50612b1189828a016129da565b5f805f805f60a08688031215612bf7575f80fd5b853594506020860135935060408601359250606086013561287e816126ea565b5f805f805f8060c08789031215612c2c575f80fd5b86359550602087013594506040870135612c45816126ea565b9350606087013592506080870135915060a0870135612c63816126ea565b809150509295509295509295565b5f805f805f805f60e0888a031215612c87575f80fd5b8735965060208801356001600160401b03811115612ca3575f80fd5b612caf8a828b016129da565b9650506040880135612cc0816126ea565b9450612cce60608901612830565b9350612cdc60808901612830565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612d0a575f80fd5b833592506020840135612d1c816126ea565b929592945050506040919091013590565b5f805f60608486031215612d3f575f80fd5b83359250602084013591506040840135612d58816126ea565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d9e57612d9e612d77565b92915050565b5f82612dbe57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d9e57612d9e612d77565b5f60018201612de757612de7612d77565b5060010190565b8082028115828204841417612d9e57612d9e612d77565b5f60208284031215612e15575f80fd5b81518015158114611580575f80fd5b5f5b83811015612e3e578181015183820152602001612e26565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612e6f816024850160208701612e24565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612eee816020860160208601612e24565b601f01601f19169290920160200192915050565b87815260e060208201525f612f1a60e0830189612ed7565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612f62818460208701612e24565b9190910192915050565b602081525f6115806020830184612ed7565b63ffffffff818116838216019080821115612f9b57612f9b612d77565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122052b008f47566f54698c0192913cdf875c5d5e0258206bc8b0cd5bd81eabe168964736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
|
|
1
|
+
60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620031ee603f9139620000d3565b506200005d6040518060800160405280604f8152602001620032ca604f9139620000d3565b50620000826040518060800160405280605a815260200162003270605a9139620000d3565b50620000a76040518060800160405280605c815260200162003192605c9139620000d3565b50620000cc6040518060800160405280604381526020016200322d60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612f7d80620002155f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80637f8d429e11610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610717578063ebbdd2b01461072a578063f6a94ecb1461073d578063fc0c546a14610750578063fe92049d14610763575f80fd5b8063b8eaa980146106bf578063bc525652146106d2578063d09cc57e1461067d578063d44e293c146106f1578063d4876b9f14610704575f80fd5b806395addb90116100fa57806395addb90146105225780639e63fa6a1461060a5780639f1025c61461064e578063a462fb7b1461067d578063acae8f4e14610690575f80fd5b80637f8d429e1461048357806382ffa9f7146104a657806383bf4609146104c85780638d552d46146104db578063924532fb146104fd575f80fd5b80633ccfd60b116101c157806352debac31161018657806352debac3146103c2578063590158a7146103d55780636fa427421461043257806370a0823114610451578063762c38fd14610470575f80fd5b80633ccfd60b14610347578063484c07141461034f5780634df6ca2a146103715780634e60f8831461038457806351577ea9146103a3575f80fd5b80632417395c116102075780632417395c146102995780632518904c146102bc57806326d6c97b146102ff57806328828b1e146103215780632f998a6f14610334575f80fd5b80631101a0fd14610238578063128b7a471461024d57806312a203c314610260578063144fa6d714610286575b5f80fd5b61024b610246366004612725565b610776565b005b61024b61025b3660046127d3565b610a18565b61027361026e366004612806565b610bbd565b6040519081526020015b60405180910390f35b61024b610294366004612852565b610cdb565b6102736102a736600461286d565b5f908152600360208190526040909120015490565b6102e76102ca36600461286d565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161027d565b61027361030d36600461286d565b5f9081526003602052604090206006015490565b61024b61032f366004612884565b610d27565b61024b61034236600461296e565b610fd7565b61024b6111f8565b61027361035d36600461286d565b5f9081526003602052604090206007015490565b61024b61037f36600461286d565b6112c1565b61027361039236600461286d565b60026020525f908152604090205481565b6102736103b136600461286d565b5f9081526003602052604090205490565b6102736103d0366004612a08565b61130e565b61040d6103e336600461286d565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161027d565b610273610440366004612852565b60056020525f908152604090205481565b61027361045f366004612852565b60066020525f908152604090205481565b61027361047e366004612a97565b611415565b61049661049136600461286d565b611510565b604051901515815260200161027d565b6102736104b436600461286d565b5f9081526003602052604090206005015490565b6102736104d6366004612b14565b61156b565b6102736104e936600461286d565b5f9081526003602052604090206004015490565b61049661050b36600461286d565b5f9081526003602052604090206002015460ff1690565b6105a361053036600461286d565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161027d565b61063961061836600461286d565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161027d565b61063961065c36600461286d565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b61027361068b36600461286d565b611600565b61063961069e36600461286d565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b61024b6106cd366004612b4d565b61163e565b6102736106e036600461286d565b60016020525f908152604090205481565b61024b6106ff366004612b81565b611887565b610273610712366004612bdb565b611900565b610496610725366004612725565b611a06565b61024b61073836600461286d565b611ba3565b61024b61074b366004612c62565b611ca5565b6007546102e7906001600160a01b031681565b61024b610771366004612c97565b611ecc565b8461078081611510565b61079d57604051636030e5f560e11b815260040160405180910390fd5b84515f036107be576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a5181101561097a57610871838c838151811061081657610816612ccd565b60200260200101518a848151811061083057610830612ccd565b60200260200101518c858151811061084a5761084a612ccd565b60200260200101518e868151811061086457610864612ccd565b6020026020010151611fed565b61088e576040516303a479f160e11b815260040160405180910390fd5b6108988585612cf5565b93506108f48c8386898e86815181106108b3576108b3612ccd565b60200260200101518e87815181106108cd576108cd612ccd565b60200260200101518e88815181106108e7576108e7612ccd565b602002602001015161202a565b809750819550505088818151811061090e5761090e612ccd565b6020026020010151945060035f8d81526020019081526020015f2060060154851461094b5761093e602886612d0e565b6109489086612d2d565b94505b8a818151811061095d5761095d612ccd565b60200260200101519250808061097290612d40565b9150506107f7565b82156109bc5761098b8c87866120f2565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b0388161781556001018590556109f7565b6109d08c876109cb8888612cf5565b6120f2565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610a585760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610a8a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610ac357504263ffffffff168163ffffffff1611155b15610ae15760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b1957504263ffffffff168163ffffffff16115b15610b375760405163079994c560e31b815260040160405180910390fd5b610b4084612172565b5f8581526003602081905260409091200154610b5d908590612cf5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bae91899190918252602082015260400190565b60405180910390a35050505050565b5f85610bc881611510565b610be557604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610c1257604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610c4e5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610c9057604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610cc157604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d0557604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fc5575f888381518110610d4657610d46612ccd565b602002602001015190505f888481518110610d6357610d63612ccd565b602002602001015190505f816001600160401b03811115610d8657610d866125df565b604051908082528060200260200182016040528015610daf578160200160208202803683370190505b5090505f826001600160401b03811115610dcb57610dcb6125df565b604051908082528060200260200182016040528015610df4578160200160208202803683370190505b5090505f836001600160401b03811115610e1057610e106125df565b604051908082528060200260200182016040528015610e39578160200160208202803683370190505b5090505f846001600160401b03811115610e5557610e556125df565b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b5090505f5b85811015610f9e578c8881518110610e9d57610e9d612ccd565b6020026020010151858281518110610eb757610eb7612ccd565b6020026020010181815250508b8881518110610ed557610ed5612ccd565b6020026020010151848281518110610eef57610eef612ccd565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f2157610f21612ccd565b6020026020010151838281518110610f3b57610f3b612ccd565b602002602001018181525050898881518110610f5957610f59612ccd565b6020026020010151828281518110610f7357610f73612ccd565b602090810291909101015287610f8881612d40565b9850508080610f9690612d40565b915050610e83565b610fab8786868686610776565b505050505050508180610fbd90612d40565b925050610d2a565b610fcd6111f8565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110175760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611049576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061108257504263ffffffff168163ffffffff1611155b156110a05760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906110d857504263ffffffff168163ffffffff16115b156110f65760405163079994c560e31b815260040160405180910390fd5b8684805f0361111857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611167575f838152600360205260409020600701548210156111625760405163291784d560e01b815260040160405180910390fd5b611192565b611172816002612d58565b821015611192576040516328eecafb60e21b815260040160405180910390fd5b898880156111cb575f828152600360205260409020600601548110156111cb5760405163f6631e6760e01b815260040160405180910390fd5b6111d489612172565b6111e08c8c338c61226a565b6111ea8c8c612331565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190612d6f565b611289575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61131882612172565b5f8981526001602052604081205490036113455760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161135b93929190612db0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113919796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516113f09796959493929190612e6c565b60405180910390a461140781838b8b8b8a8a612397565b9a9950505050505050505050565b5f8681526001602052604081205481036114425760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161145893929190612db0565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161148e9796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516114ed9796959493929190612e6c565b60405180910390a461150481838989895f80612397565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561154c57505f8163ffffffff16115b801561156457504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161158d91859101612ebb565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906115e3908790612ed6565b60405180910390a36115f6816001612cf5565b5f5590505b919050565b5f8161160b81611510565b61162857604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff16900361167e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116b0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906116e957504263ffffffff168163ffffffff1611155b156117075760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061173f57504263ffffffff168163ffffffff16115b1561175d5760405163079994c560e31b815260040160405180910390fd5b8784805f0361177f57604051635de374cf60e11b815260040160405180910390fd5b5f82815260036020526040812060060154908190036117ce575f838152600360205260409020600701548210156117c95760405163291784d560e01b815260040160405180910390fd5b6117f9565b6117d9816002612d58565b8210156117f9576040516328eecafb60e21b815260040160405180910390fd5b8a898015611832575f828152600360205260409020600601548110156118325760405163f6631e6760e01b815260040160405180910390fd5b61183b89612172565b6001600160a01b038a1661186257604051630ca6549f60e11b815260040160405180910390fd5b61186e8d8d8c8c61226a565b6118788d8d612331565b50505050505050505050505050565b5f86815260036020526040902060058101546006909101546118ae91908590859085611fed565b6118cb576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146118e857846118ea565b815b90506118f7878783611ecc565b50505050505050565b5f61190a82612172565b5f8881526001602052604081205490036119375760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161194d93929190612db0565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119839796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516119e29796959493929190612e6c565b60405180910390a46119f981838a8a8a5f8a612397565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611a455760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611a7e57504263ffffffff168163ffffffff1611155b15611a9c5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ad457504263ffffffff168163ffffffff16115b15611af25760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611b16575080885114155b80611b22575080875114155b15611b31575f95505050611b97565b5f5b81811015611b8f57611b51838c838151811061081657610816612ccd565b611b60575f9650505050611b97565b8a8181518110611b7257611b72612ccd565b602002602001015192508080611b8790612d40565b915050611b33565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611bde57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611c115760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611c4590600160c01b900463ffffffff1642612ee8565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ce057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611d205760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611d52576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611d8b57504263ffffffff168163ffffffff1611155b15611da95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611de157504263ffffffff168163ffffffff16115b15611dff5760405163079994c560e31b815260040160405180910390fd5b86858015611e38575f82815260036020526040902060060154811015611e385760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611e73576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611f0757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611f3a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611f61576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611fb49086908690869061226a565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612007959493929190612f0c565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036120e3576001600160a01b0386166120a0578495505f60035f8b81526020019081526020015f2060030154118015612065575060015b1561209b57612089898760035f8d81526020019081526020015f20600301546120f2565b5f898152600360208190526040822001555b6120e3565b856001600160a01b0316856001600160a01b0316146120e3575f848810156120c857876120ca565b845b90506120db8a886109cb848c612d2d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612115908290612cf5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121659085815260200190565b60405180910390a3505050565b805f0361217c5750565b335f9081526006602052604090205480156121d1578181106121b5576121a28282612d2d565b335f908152600660205260409020555050565b6121bf8183612d2d565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122499190612d6f565b61226657604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161229292879186918891879101612f0c565b6040516020818303038152906040528051906020012090505f8211156122c6575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bae565b5f828152600360205260409020600481018290556001015461236090600160c01b900463ffffffff1642612ee8565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156123d8576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036123fe5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061242857604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061244a5750336001600160a01b03881614155b156124d2576001600160a01b0387165f90815260056020526040902054808210156124885760405163d72564c760e01b815260040160405180910390fd5b6124928183612d2d565b6001600160a01b0389165f908152600660205260409020549092506124b8908290612cf5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561257e575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156125d4575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906125cb9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561261b5761261b6125df565b604052919050565b5f6001600160401b0382111561263b5761263b6125df565b5060051b60200190565b5f82601f830112612654575f80fd5b8135602061266961266483612623565b6125f3565b82815260059290921b84018101918181019086841115612687575f80fd5b8286015b848110156126a2578035835291830191830161268b565b509695505050505050565b6001600160a01b03811681146126c1575f80fd5b50565b5f82601f8301126126d3575f80fd5b813560206126e361266483612623565b82815260059290921b84018101918181019086841115612701575f80fd5b8286015b848110156126a2578035612718816126ad565b8352918301918301612705565b5f805f805f60a08688031215612739575f80fd5b8535945060208601356001600160401b0380821115612756575f80fd5b61276289838a01612645565b95506040880135915080821115612777575f80fd5b61278389838a016126c4565b94506060880135915080821115612798575f80fd5b6127a489838a01612645565b935060808801359150808211156127b9575f80fd5b506127c688828901612645565b9150509295509295909350565b5f80604083850312156127e4575f80fd5b50508035926020909101359150565b803563ffffffff811681146115fb575f80fd5b5f805f805f60a0868803121561281a575f80fd5b85359450602086013593506040860135612833816126ad565b9250612841606087016127f3565b949793965091946080013592915050565b5f60208284031215612862575f80fd5b8135611564816126ad565b5f6020828403121561287d575f80fd5b5035919050565b5f805f805f8060c08789031215612899575f80fd5b86356001600160401b03808211156128af575f80fd5b6128bb8a838b01612645565b975060208901359150808211156128d0575f80fd5b6128dc8a838b01612645565b965060408901359150808211156128f1575f80fd5b6128fd8a838b01612645565b95506060890135915080821115612912575f80fd5b61291e8a838b016126c4565b94506080890135915080821115612933575f80fd5b61293f8a838b01612645565b935060a0890135915080821115612954575f80fd5b5061296189828a01612645565b9150509295509295509295565b5f805f8060808587031215612981575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129ac575f80fd5b81356001600160401b038111156129c5576129c56125df565b6129d8601f8201601f19166020016125f3565b8181528460208386010111156129ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a20575f80fd5b8835975060208901356001600160401b03811115612a3c575f80fd5b612a488b828c0161299d565b9750506040890135612a59816126ad565b9550612a6760608a016127f3565b9450612a7560808a016127f3565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612aac575f80fd5b8635955060208701356001600160401b03811115612ac8575f80fd5b612ad489828a0161299d565b9550506040870135612ae5816126ad565b9350612af3606088016127f3565b9250612b01608088016127f3565b915060a087013590509295509295509295565b5f60208284031215612b24575f80fd5b81356001600160401b03811115612b39575f80fd5b612b458482850161299d565b949350505050565b5f805f805f60a08688031215612b61575f80fd5b8535945060208601359350604086013592506060860135612841816126ad565b5f805f805f8060c08789031215612b96575f80fd5b86359550602087013594506040870135612baf816126ad565b9350606087013592506080870135915060a0870135612bcd816126ad565b809150509295509295509295565b5f805f805f805f60e0888a031215612bf1575f80fd5b8735965060208801356001600160401b03811115612c0d575f80fd5b612c198a828b0161299d565b9650506040880135612c2a816126ad565b9450612c38606089016127f3565b9350612c46608089016127f3565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612c74575f80fd5b833592506020840135612c86816126ad565b929592945050506040919091013590565b5f805f60608486031215612ca9575f80fd5b83359250602084013591506040840135612cc2816126ad565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d0857612d08612ce1565b92915050565b5f82612d2857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d0857612d08612ce1565b5f60018201612d5157612d51612ce1565b5060010190565b8082028115828204841417612d0857612d08612ce1565b5f60208284031215612d7f575f80fd5b81518015158114611564575f80fd5b5f5b83811015612da8578181015183820152602001612d90565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612dd9816024850160208701612d8e565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612e58816020860160208601612d8e565b601f01601f19169290920160200192915050565b87815260e060208201525f612e8460e0830189612e41565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612ecc818460208701612d8e565b9190910192915050565b602081525f6115646020830184612e41565b63ffffffff818116838216019080821115612f0557612f05612ce1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220198c532f8bbeb3252036af02681348f3e19645d76d3033c52653e99167f408fb64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity 0.8.20;
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {IRealityETHCore_Common} from "./IRealityETHCore_Common.sol";
|
|
6
|
+
import {IRealityETHCore_Native} from "./IRealityETHCore_Native.sol";
|
|
7
|
+
|
|
8
|
+
// Features removed in v4
|
|
6
9
|
import {IRealityETHCommitReveal} from "./IRealityETHCommitReveal.sol";
|
|
10
|
+
import {IRealityETHCreateTemplateAndAskQuestion} from "./IRealityETHCreateTemplateAndAskQuestion.sol";
|
|
7
11
|
|
|
8
12
|
/* solhint-disable func-name-mixedcase */
|
|
9
13
|
|
|
10
|
-
interface IRealityETH is
|
|
14
|
+
interface IRealityETH is IRealityETHCore_Common, IRealityETHCore_Native, IRealityETHCommitReveal, IRealityETHCreateTemplateAndAskQuestion {}
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity 0.8.20;
|
|
4
4
|
|
|
5
|
-
import {IBalanceHolder} from "./IBalanceHolder.sol";
|
|
6
5
|
import {IRealityETHErrors} from "./IRealityETHErrors.sol";
|
|
7
6
|
|
|
8
7
|
/* solhint-disable func-name-mixedcase */
|
|
9
8
|
|
|
10
|
-
interface
|
|
9
|
+
interface IRealityETHCore_Common is IRealityETHErrors {
|
|
11
10
|
event LogCancelArbitration(bytes32 indexed question_id);
|
|
12
11
|
event LogClaim(bytes32 indexed question_id, address indexed user, uint256 amount);
|
|
13
12
|
event LogFinalize(bytes32 indexed question_id, bytes32 indexed answer);
|
|
@@ -29,6 +28,7 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
|
|
|
29
28
|
event LogNewTemplate(uint256 indexed template_id, address indexed user, string question_text);
|
|
30
29
|
event LogNotifyOfArbitrationRequest(bytes32 indexed question_id, address indexed user);
|
|
31
30
|
event LogSetQuestionFee(address arbitrator, uint256 amount);
|
|
31
|
+
event LogWithdraw(address indexed user, uint256 amount);
|
|
32
32
|
|
|
33
33
|
struct Question {
|
|
34
34
|
bytes32 content_hash;
|
|
@@ -60,6 +60,7 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
|
|
|
60
60
|
bytes32 last_answer_or_commitment_id,
|
|
61
61
|
address last_answerer
|
|
62
62
|
) external;
|
|
63
|
+
function balanceOf(address) external view returns (uint256);
|
|
63
64
|
function cancelArbitration(bytes32 question_id) external;
|
|
64
65
|
function claimMultipleAndWithdrawBalance(
|
|
65
66
|
bytes32[] calldata question_ids,
|
|
@@ -74,12 +75,6 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
|
|
|
74
75
|
function notifyOfArbitrationRequest(bytes32 question_id, address requester, uint256 max_previous) external;
|
|
75
76
|
function setQuestionFee(uint256 fee) external;
|
|
76
77
|
function submitAnswerByArbitrator(bytes32 question_id, bytes32 answer, address answerer) external;
|
|
77
|
-
function askQuestion(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
|
|
78
|
-
function askQuestionWithMinBond(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce, uint256 min_bond) external payable returns (bytes32);
|
|
79
|
-
function createTemplateAndAskQuestion(string calldata content, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
|
|
80
|
-
function fundAnswerBounty(bytes32 question_id) external payable;
|
|
81
|
-
function submitAnswer(bytes32 question_id, bytes32 answer, uint256 max_previous) external payable;
|
|
82
|
-
function submitAnswerFor(bytes32 question_id, bytes32 answer, uint256 max_previous, address answerer) external payable;
|
|
83
78
|
function arbitrator_question_fees(address) external view returns (uint256);
|
|
84
79
|
function getArbitrator(bytes32 question_id) external view returns (address);
|
|
85
80
|
function getBestAnswer(bytes32 question_id) external view returns (bytes32);
|
|
@@ -117,4 +112,5 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
|
|
|
117
112
|
function resultFor(bytes32 question_id) external view returns (bytes32);
|
|
118
113
|
function template_hashes(uint256) external view returns (bytes32);
|
|
119
114
|
function templates(uint256) external view returns (uint256);
|
|
115
|
+
function withdraw() external;
|
|
120
116
|
}
|
|
@@ -2,58 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
pragma solidity 0.8.20;
|
|
4
4
|
|
|
5
|
-
import {IBalanceHolder_ERC20} from "./IBalanceHolder_ERC20.sol";
|
|
6
|
-
import {IERC20} from "./IERC20.sol";
|
|
7
5
|
import {IRealityETHErrors_ERC20} from "./IRealityETHErrors_ERC20.sol";
|
|
6
|
+
import {IERC20} from "./IERC20.sol";
|
|
8
7
|
|
|
9
8
|
/* solhint-disable func-name-mixedcase */
|
|
10
9
|
|
|
11
10
|
// solhint-disable-next-line contract-name-camelcase
|
|
12
|
-
interface IRealityETHCore_ERC20 is
|
|
13
|
-
event LogCancelArbitration(bytes32 indexed question_id);
|
|
14
|
-
event LogClaim(bytes32 indexed question_id, address indexed user, uint256 amount);
|
|
15
|
-
event LogFinalize(bytes32 indexed question_id, bytes32 indexed answer);
|
|
16
|
-
event LogFundAnswerBounty(bytes32 indexed question_id, uint256 bounty_added, uint256 bounty, address indexed user);
|
|
17
|
-
event LogMinimumBond(bytes32 indexed question_id, uint256 min_bond);
|
|
18
|
-
event LogNewAnswer(bytes32 answer, bytes32 indexed question_id, bytes32 history_hash, address indexed user, uint256 bond, uint256 ts, bool is_commitment);
|
|
19
|
-
event LogNewQuestion(
|
|
20
|
-
bytes32 indexed question_id,
|
|
21
|
-
address indexed user,
|
|
22
|
-
uint256 template_id,
|
|
23
|
-
string question,
|
|
24
|
-
bytes32 indexed content_hash,
|
|
25
|
-
address arbitrator,
|
|
26
|
-
uint32 timeout,
|
|
27
|
-
uint32 opening_ts,
|
|
28
|
-
uint256 nonce,
|
|
29
|
-
uint256 created
|
|
30
|
-
);
|
|
31
|
-
event LogNewTemplate(uint256 indexed template_id, address indexed user, string question_text);
|
|
32
|
-
event LogNotifyOfArbitrationRequest(bytes32 indexed question_id, address indexed user);
|
|
33
|
-
event LogSetQuestionFee(address arbitrator, uint256 amount);
|
|
34
|
-
|
|
35
|
-
struct Question {
|
|
36
|
-
bytes32 content_hash;
|
|
37
|
-
address arbitrator;
|
|
38
|
-
uint32 opening_ts;
|
|
39
|
-
uint32 timeout;
|
|
40
|
-
uint32 finalize_ts;
|
|
41
|
-
bool is_pending_arbitration;
|
|
42
|
-
uint256 bounty;
|
|
43
|
-
bytes32 best_answer;
|
|
44
|
-
bytes32 history_hash;
|
|
45
|
-
uint256 bond;
|
|
46
|
-
uint256 min_bond;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Only used when claiming more bonds than fits into a transaction
|
|
50
|
-
// Stored in a mapping indexed by question_id.
|
|
51
|
-
struct Claim {
|
|
52
|
-
address payee;
|
|
53
|
-
uint256 last_bond;
|
|
54
|
-
uint256 queued_funds; // Only used on v3 or lower (related to commit-reveal)
|
|
55
|
-
}
|
|
56
|
-
|
|
11
|
+
interface IRealityETHCore_ERC20 is IRealityETHErrors_ERC20 {
|
|
57
12
|
function askQuestion(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external returns (bytes32);
|
|
58
13
|
function askQuestionERC20(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce, uint256 tokens) external returns (bytes32);
|
|
59
14
|
function askQuestionWithMinBondERC20(
|
|
@@ -66,68 +21,8 @@ interface IRealityETHCore_ERC20 is IBalanceHolder_ERC20, IRealityETHErrors_ERC20
|
|
|
66
21
|
uint256 min_bond,
|
|
67
22
|
uint256 tokens
|
|
68
23
|
) external returns (bytes32);
|
|
69
|
-
function assignWinnerAndSubmitAnswerByArbitrator(
|
|
70
|
-
bytes32 question_id,
|
|
71
|
-
bytes32 answer,
|
|
72
|
-
address payee_if_wrong,
|
|
73
|
-
bytes32 last_history_hash,
|
|
74
|
-
bytes32 last_answer_or_commitment_id,
|
|
75
|
-
address last_answerer
|
|
76
|
-
) external;
|
|
77
|
-
function cancelArbitration(bytes32 question_id) external;
|
|
78
|
-
function claimMultipleAndWithdrawBalance(
|
|
79
|
-
bytes32[] calldata question_ids,
|
|
80
|
-
uint256[] calldata lengths,
|
|
81
|
-
bytes32[] calldata hist_hashes,
|
|
82
|
-
address[] calldata addrs,
|
|
83
|
-
uint256[] calldata bonds,
|
|
84
|
-
bytes32[] calldata answers
|
|
85
|
-
) external;
|
|
86
|
-
function claimWinnings(bytes32 question_id, bytes32[] calldata history_hashes, address[] calldata addrs, uint256[] calldata bonds, bytes32[] calldata answers) external;
|
|
87
|
-
function createTemplate(string calldata content) external returns (uint256);
|
|
88
|
-
function createTemplateAndAskQuestion(string calldata content, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external returns (bytes32);
|
|
89
24
|
function fundAnswerBountyERC20(bytes32 question_id, uint256 tokens) external;
|
|
90
|
-
function notifyOfArbitrationRequest(bytes32 question_id, address requester, uint256 max_previous) external;
|
|
91
|
-
function setQuestionFee(uint256 fee) external;
|
|
92
|
-
function setToken(IERC20 _token) external;
|
|
93
|
-
function submitAnswerByArbitrator(bytes32 question_id, bytes32 answer, address answerer) external;
|
|
94
25
|
function submitAnswerERC20(bytes32 question_id, bytes32 answer, uint256 max_previous, uint256 tokens) external;
|
|
95
26
|
function submitAnswerForERC20(bytes32 question_id, bytes32 answer, uint256 max_previous, address answerer, uint256 tokens) external;
|
|
96
|
-
function
|
|
97
|
-
function getArbitrator(bytes32 question_id) external view returns (address);
|
|
98
|
-
function getBestAnswer(bytes32 question_id) external view returns (bytes32);
|
|
99
|
-
function getBond(bytes32 question_id) external view returns (uint256);
|
|
100
|
-
function getBounty(bytes32 question_id) external view returns (uint256);
|
|
101
|
-
function getContentHash(bytes32 question_id) external view returns (bytes32);
|
|
102
|
-
function getFinalAnswer(bytes32 question_id) external view returns (bytes32);
|
|
103
|
-
function getFinalAnswerIfMatches(bytes32 question_id, bytes32 content_hash, address arbitrator, uint32 min_timeout, uint256 min_bond) external view returns (bytes32);
|
|
104
|
-
function getFinalizeTS(bytes32 question_id) external view returns (uint32);
|
|
105
|
-
function getHistoryHash(bytes32 question_id) external view returns (bytes32);
|
|
106
|
-
function getMinBond(bytes32 question_id) external view returns (uint256);
|
|
107
|
-
function getOpeningTS(bytes32 question_id) external view returns (uint32);
|
|
108
|
-
function getTimeout(bytes32 question_id) external view returns (uint32);
|
|
109
|
-
function isFinalized(bytes32 question_id) external view returns (bool);
|
|
110
|
-
function isPendingArbitration(bytes32 question_id) external view returns (bool);
|
|
111
|
-
function question_claims(bytes32) external view returns (address payee, uint256 last_bond, uint256 queued_funds);
|
|
112
|
-
function questions(
|
|
113
|
-
bytes32
|
|
114
|
-
)
|
|
115
|
-
external
|
|
116
|
-
view
|
|
117
|
-
returns (
|
|
118
|
-
bytes32 content_hash,
|
|
119
|
-
address arbitrator,
|
|
120
|
-
uint32 opening_ts,
|
|
121
|
-
uint32 timeout,
|
|
122
|
-
uint32 finalize_ts,
|
|
123
|
-
bool is_pending_arbitration,
|
|
124
|
-
uint256 bounty,
|
|
125
|
-
bytes32 best_answer,
|
|
126
|
-
bytes32 history_hash,
|
|
127
|
-
uint256 bond,
|
|
128
|
-
uint256 min_bond
|
|
129
|
-
);
|
|
130
|
-
function resultFor(bytes32 question_id) external view returns (bytes32);
|
|
131
|
-
function template_hashes(uint256) external view returns (bytes32);
|
|
132
|
-
function templates(uint256) external view returns (uint256);
|
|
27
|
+
function token() external view returns (IERC20);
|
|
133
28
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-only
|
|
2
|
+
|
|
3
|
+
pragma solidity 0.8.20;
|
|
4
|
+
|
|
5
|
+
/* solhint-disable func-name-mixedcase */
|
|
6
|
+
interface IRealityETHCore_Native {
|
|
7
|
+
function askQuestion(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
|
|
8
|
+
function askQuestionWithMinBond(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce, uint256 min_bond) external payable returns (bytes32);
|
|
9
|
+
function fundAnswerBounty(bytes32 question_id) external payable;
|
|
10
|
+
function submitAnswer(bytes32 question_id, bytes32 answer, uint256 max_previous) external payable;
|
|
11
|
+
function submitAnswerFor(bytes32 question_id, bytes32 answer, uint256 max_previous, address answerer) external payable;
|
|
12
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-only
|
|
2
|
+
|
|
3
|
+
pragma solidity 0.8.20;
|
|
4
|
+
|
|
5
|
+
// This function was removed from reality.eth in version 4.
|
|
6
|
+
interface IRealityETHCreateTemplateAndAskQuestion {
|
|
7
|
+
function createTemplateAndAskQuestion(string calldata content, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
|
|
8
|
+
}
|