@reality.eth/contracts 3.0.47 → 4.0.0-rc.0

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.
@@ -1 +1 @@
1
- 60806040525f60015534801562000014575f80fd5b50620000396040518060600160405280603f815260200162003297603f9139620000d4565b506200005e6040518060800160405280604f815260200162003373604f9139620000d4565b50620000836040518060800160405280605a815260200162003319605a9139620000d4565b50620000a86040518060800160405280605c81526020016200323b605c9139620000d4565b50620000cd604051806080016040528060438152602001620032d660439139620000d4565b506200020d565b6001545f81815260026020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60015592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613020806200021b5f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063a462fb7b116100b3578063d09cc57e11610078578063d09cc57e146107d2578063d44e293c146108a1578063e83bfb58146108c0578063ebbdd2b0146108ee578063f6a94ecb1461090d578063fe92049d1461092c575f80fd5b8063a462fb7b146107d2578063ab5a4e35146107f1578063acae8f4e14610810578063bc5256521461084b578063c081d8a314610876575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107345780639f1025c614610784578063a1130d04146107bf575f80fd5b806377f325df146105635780637f8d429e1461057657806382ffa9f71461059557806383bf4609146105c35780638d552d46146105e2575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047e57806359245ff3146104e75780636fa42742146104fa57806370a0823114610525578063762c38fd14610550575f80fd5b8063484b93c4146103c8578063484c0714146103db5780634df6ca2a146104095780634e60f8831461042857806351577ea914610453575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031857806326d6c97b1461036757806328828b1e146103955780633ccfd60b146103b4575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c36600461268d565b61094b565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b506102956102903660046127e7565b61095f565b005b6102956102a5366004612895565b610be9565b6102bd6102b836600461294f565b610e28565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e53660046129dc565b6110d3565b3480156102f5575f80fd5b506102bd61030436600461268d565b5f9081526004602052604090206003015490565b348015610323575f80fd5b5061034f61033236600461268d565b5f908152600460205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610372575f80fd5b506102bd61038136600461268d565b5f9081526004602052604090206006015490565b3480156103a0575f80fd5b506102956103af366004612a26565b6111f5565b3480156103bf575f80fd5b506102956114a5565b6102bd6103d6366004612b10565b61151c565b3480156103e6575f80fd5b506102bd6103f536600461268d565b5f9081526004602052604090206007015490565b348015610414575f80fd5b5061029561042336600461268d565b611618565b348015610433575f80fd5b506102bd61044236600461268d565b60036020525f908152604090205481565b34801561045e575f80fd5b506102bd61046d36600461268d565b5f9081526004602052604090205490565b348015610489575f80fd5b506104c261049836600461268d565b60056020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f536600461268d565b611665565b348015610505575f80fd5b506102bd610514366004612b95565b60066020525f908152604090205481565b348015610530575f80fd5b506102bd61053f366004612b95565b5f6020819052908152604090205481565b6102bd61055e366004612bae565b6117ff565b610295610571366004612c29565b6118fa565b348015610581575f80fd5b5061026161059036600461268d565b611b11565b3480156105a0575f80fd5b506102bd6105af36600461268d565b5f9081526004602052604090206005015490565b3480156105ce575f80fd5b506102bd6105dd366004612c52565b611b6c565b3480156105ed575f80fd5b506102bd6105fc36600461268d565b5f908152600460208190526040909120015490565b34801561061c575f80fd5b5061026161062b36600461268d565b5f9081526004602052604090206002015460ff1690565b34801561064d575f80fd5b506106cd61065c36600461268d565b600460208190525f91825260409091208054600182015460028301546003840154948401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff1694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b34801561073f575f80fd5b5061076f61074e36600461268d565b5f90815260046020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b34801561078f575f80fd5b5061076f61079e36600461268d565b5f90815260046020526040902060010154600160c01b900463ffffffff1690565b6102bd6107cd366004612c8b565b611c06565b3480156107dd575f80fd5b506102bd6107ec36600461268d565b611c21565b3480156107fc575f80fd5b506102bd61080b36600461268d565b611c60565b34801561081b575f80fd5b5061076f61082a36600461268d565b5f90815260046020526040902060010154600160e01b900463ffffffff1690565b348015610856575f80fd5b506102bd61086536600461268d565b60026020525f908152604090205481565b348015610881575f80fd5b506102bd61089036600461268d565b60076020525f908152604090205481565b3480156108ac575f80fd5b506102956108bb366004612ce4565b611cd4565b3480156108cb575f80fd5b506102616108da36600461268d565b60086020525f908152604090205460ff1681565b3480156108f9575f80fd5b5061029561090836600461268d565b611d30565b348015610918575f80fd5b50610295610927366004612d38565b611e32565b348015610937575f80fd5b50610295610946366004612d6a565b612059565b5f60011961095883611c21565b1492915050565b8461096981611b11565b61098657604051636030e5f560e11b815260040160405180910390fd5b84515f036109a7576040516312fdb46960e31b815260040160405180910390fd5b5f86815260056020818152604080842080546001909101546004938490529185209384015493909201546001600160a01b039092169390929091825b8a51811015610b4957610a5d838c8381518110610a0257610a02612d9c565b60200260200101518a8481518110610a1c57610a1c612d9c565b60200260200101518c8581518110610a3657610a36612d9c565b60200260200101518e8681518110610a5057610a50612d9c565b602002602001015161217d565b610a678585612dc4565b9350610ac38c8386898e8681518110610a8257610a82612d9c565b60200260200101518e8781518110610a9c57610a9c612d9c565b60200260200101518e8881518110610ab657610ab6612d9c565b60200260200101516121cb565b8097508195505050888181518110610add57610add612d9c565b6020026020010151945060045f8d81526020019081526020015f20600601548514610b1a57610b0d602886612dd7565b610b179086612df6565b94505b8a8181518110610b2c57610b2c612d9c565b602002602001015192508080610b4190612e09565b9150506109e3565b8215610b8d57610b5a8c8786612294565b5f8c815260056020526040812080546001600160a01b0319166001600160a01b0389161781556001018690559350610bc8565b610ba18c87610b9c8888612dc4565b612294565b5f8c815260056020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260046020526040909920600501989098555050505050505050565b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003610c295760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615610c5b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590610c9457504263ffffffff168163ffffffff1611155b15610cb25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590610cea57504263ffffffff168163ffffffff16115b15610d085760405163079994c560e31b815260040160405180910390fd5b8634805f03610d2a57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003610d79575f83815260046020526040902060070154821015610d745760405163291784d560e01b815260040160405180910390fd5b610da4565b610d84816002612e21565b821015610da4576040516328eecafb60e21b815260040160405180910390fd5b89888015610ddd575f82815260046020526040902060060154811015610ddd5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e0457604051630ca6549f60e11b815260040160405180910390fd5b610e108c8c8b3461230c565b610e1a8c8c6123dd565b505050505050505050505050565b5f610e328261094b565b610e4f57604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e6593929190612e5a565b60408051601f1981840301815291815281516020928301205f86815260049093529120549091508114610eab576040516349923ed160e11b815260040160405180910390fd5b5f838152600460205260409020600101546001600160a01b03898116911614610ee75760405163611876b160e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff888116600160c01b9092041614610f2757604051635f4c19f760e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff878116600160a01b9092041614610f6757604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600460205260409020600701548414610f9757604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fc65760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561101957610fe48261094b565b61100157604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f6110298d8d8d8d8d8d8d61151c565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556004909152808220600390810154868452919092209091015491925061107691612dc4565b5f828152600460205260408082206003908101939093558482528082209092018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110de81611b11565b6110fb57604051636030e5f560e11b815260040160405180910390fd5b5f87815260046020526040902054861461112857604051630763e45d60e41b815260040160405180910390fd5b5f878152600460205260409020600101546001600160a01b038681169116146111645760405163f089a18560e01b815260040160405180910390fd5b5f8781526004602052604090206001015463ffffffff600160c01b909104811690851611156111a657604051633f61762b60e01b815260040160405180910390fd5b5f878152600460205260409020600601548311156111d757604051634d497e9360e11b815260040160405180910390fd5b5f878152600460208190526040909120015491505095945050505050565b5f805b8751821015611493575f88838151811061121457611214612d9c565b602002602001015190505f88848151811061123157611231612d9c565b602002602001015190505f816001600160401b03811115611254576112546126a4565b60405190808252806020026020018201604052801561127d578160200160208202803683370190505b5090505f826001600160401b03811115611299576112996126a4565b6040519080825280602002602001820160405280156112c2578160200160208202803683370190505b5090505f836001600160401b038111156112de576112de6126a4565b604051908082528060200260200182016040528015611307578160200160208202803683370190505b5090505f846001600160401b03811115611323576113236126a4565b60405190808252806020026020018201604052801561134c578160200160208202803683370190505b5090505f5b8581101561146c578c888151811061136b5761136b612d9c565b602002602001015185828151811061138557611385612d9c565b6020026020010181815250508b88815181106113a3576113a3612d9c565b60200260200101518482815181106113bd576113bd612d9c565b60200260200101906001600160a01b031690816001600160a01b0316815250508a88815181106113ef576113ef612d9c565b602002602001015183828151811061140957611409612d9c565b60200260200101818152505089888151811061142757611427612d9c565b602002602001015182828151811061144157611441612d9c565b60209081029190910101528761145681612e09565b985050808061146490612e09565b915050611351565b611479878686868661095f565b50505050505050818061148b90612e09565b9250506111f8565b61149b6114a5565b5050505050505050565b335f81815260208190526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114e3573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526002602052604081205481036115495760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161155f93929190612e5a565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115959796959493929190612e92565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516115f49796959493929190612f16565b60405180910390a461160b81838a8a8a8934612445565b9998505050505050505050565b335f81815260066020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600460205260408120600101548291600160c01b90910463ffffffff1690036116a55760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff16156116d7576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061171057504263ffffffff168163ffffffff1611155b1561172e5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff16801580159061176657504263ffffffff168163ffffffff16115b156117845760405163079994c560e31b815260040160405180910390fd5b5f848152600460205260409020600301546117a0903490612dc4565b5f858152600460205260409081902060030182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66916117f191349190918252602082015260400190565b60405180910390a350505050565b5f86815260026020526040812054810361182c5760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161184293929190612e5a565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118789796959493929190612e92565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118d79796959493929190612f16565b60405180910390a46118ee81838989895f34612445565b98975050505050505050565b5f838152600460205260408120600101548491600160c01b90910463ffffffff16900361193a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff161561196c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff1680158015906119a557504263ffffffff168163ffffffff1611155b156119c35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff1680158015906119fb57504263ffffffff168163ffffffff16115b15611a195760405163079994c560e31b815260040160405180910390fd5b8534805f03611a3b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003611a8a575f83815260046020526040902060070154821015611a855760405163291784d560e01b815260040160405180910390fd5b611ab5565b611a95816002612e21565b821015611ab5576040516328eecafb60e21b815260040160405180910390fd5b88878015611aee575f82815260046020526040902060060154811015611aee5760405163f6631e6760e01b815260040160405180910390fd5b611afa8b8b333461230c565b611b048b8b6123dd565b5050505050505050505050565b5f8181526004602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b4d575063ffffffff811615155b8015611b6557504263ffffffff168163ffffffff1611155b9392505050565b6001545f81815260026020908152604080832043905551919291611b9291859101612f65565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611be8908790612f80565b60405180910390a3611bfb816001612dc4565b60015590505b919050565b5f80611c1188611b6c565b90506118ee8188888888886117ff565b5f81611c2c81611b11565b611c4957604051636030e5f560e11b815260040160405180910390fd5b50505f908152600460208190526040909120015490565b5f80611c6b83611c21565b905060028101611cce575f8381526007602052604090205480611ca15760405163079442c960e01b815260040160405180910390fd5b611caa81611c21565b915060028201611ccc5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526004602052604090206005810154600690910154611cfb9190859085908561217d565b5f868152600460208190526040822001548614611d185784611d1a565b815b9050611d27878783612059565b50505050505050565b5f8181526004602052604090206001015481906001600160a01b03163314611d6b57604051634361661f60e11b815260040160405180910390fd5b5f82815260046020526040902060020154829060ff16611d9e5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260046020526040902060028101805460ff1916905560010154611dd290600160c01b900463ffffffff1642612f92565b5f84815260046020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526004602052604090206001015483906001600160a01b03163314611e6d57604051634361661f60e11b815260040160405180910390fd5b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003611ead5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615611edf576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590611f1857504263ffffffff168163ffffffff1611155b15611f365760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611f6e57504263ffffffff168163ffffffff16115b15611f8c5760405163079994c560e31b815260040160405180910390fd5b86858015611fc5575f82815260046020526040902060060154811015611fc55760405163f6631e6760e01b815260040160405180910390fd5b5f89815260046020526040902060010154600160e01b900463ffffffff16612000576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260046020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526004602052604090206001015483906001600160a01b0316331461209457604051634361661f60e11b815260040160405180910390fd5b5f84815260046020526040902060020154849060ff166120c75760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166120ee576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600460205260408120600201805460ff191690556121419086908690869061230c565b5f85815260046020819052604090912090810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555b5050505050565b838383835f604051602001612196959493929190612faf565b604051602081830303815290604052805190602001208514612176576040516303a479f160e11b815260040160405180910390fd5b5f80878303612285576001600160a01b038616612242578495506001195f1b881415801561220857505f8981526004602052604090206003015415155b1561223d575f8981526004602052604090206003015461222b908a908890612294565b5f898152600460205260408120600301555b612285565b856001600160a01b0316856001600160a01b031614612285575f8488101561226a578761226c565b845b905061227d8a88610b9c848c612df6565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152602081905260409020546122b7908290612dc4565b6001600160a01b0383165f81815260208181526040918290209390935551838152909185917f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6910160405180910390a3505050565b5f84815260046020908152604080832060050154905161233492879186918891879101612faf565b6040516020818303038152906040528051906020012090505f821115612368575f8581526004602052604090206006018290555b5f8581526004602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f8281526004602081905260409091209081018290556001015461240e90600160c01b900463ffffffff1642612f92565b5f92835260046020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600460205260409020600101548790600160c01b900463ffffffff1615612486576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036124ac5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106124d657604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906124f85750336001600160a01b03881614155b15612580576001600160a01b0387165f90815260066020526040902054808210156125365760405163d72564c760e01b815260040160405180910390fd5b6125408183612df6565b6001600160a01b0389165f90815260208190526040902054909250612566908290612dc4565b6001600160a01b0389165f90815260208190526040902055505b5f898152600460205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561262c575f89815260046020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612682575f89815260046020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906126799087815260200190565b60405180910390a25b505050505050505050565b5f6020828403121561269d575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156126e0576126e06126a4565b604052919050565b5f6001600160401b03821115612700576127006126a4565b5060051b60200190565b5f82601f830112612719575f80fd5b8135602061272e612729836126e8565b6126b8565b82815260059290921b8401810191818101908684111561274c575f80fd5b8286015b848110156127675780358352918301918301612750565b509695505050505050565b80356001600160a01b0381168114611c01575f80fd5b5f82601f830112612797575f80fd5b813560206127a7612729836126e8565b82815260059290921b840181019181810190868411156127c5575f80fd5b8286015b84811015612767576127da81612772565b83529183019183016127c9565b5f805f805f60a086880312156127fb575f80fd5b8535945060208601356001600160401b0380821115612818575f80fd5b61282489838a0161270a565b95506040880135915080821115612839575f80fd5b61284589838a01612788565b9450606088013591508082111561285a575f80fd5b61286689838a0161270a565b9350608088013591508082111561287b575f80fd5b506128888882890161270a565b9150509295509295909350565b5f805f80608085870312156128a8575f80fd5b8435935060208501359250604085013591506128c660608601612772565b905092959194509250565b5f82601f8301126128e0575f80fd5b81356001600160401b038111156128f9576128f96126a4565b61290c601f8201601f19166020016126b8565b818152846020838601011115612920575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c01575f80fd5b5f805f805f805f80610100898b031215612967575f80fd5b8835975060208901356001600160401b03811115612983575f80fd5b61298f8b828c016128d1565b97505061299e60408a01612772565b95506129ac60608a0161293c565b94506129ba60808a0161293c565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a086880312156129f0575f80fd5b8535945060208601359350612a0760408701612772565b9250612a156060870161293c565b949793965091946080013592915050565b5f805f805f8060c08789031215612a3b575f80fd5b86356001600160401b0380821115612a51575f80fd5b612a5d8a838b0161270a565b97506020890135915080821115612a72575f80fd5b612a7e8a838b0161270a565b96506040890135915080821115612a93575f80fd5b612a9f8a838b0161270a565b95506060890135915080821115612ab4575f80fd5b612ac08a838b01612788565b94506080890135915080821115612ad5575f80fd5b612ae18a838b0161270a565b935060a0890135915080821115612af6575f80fd5b50612b0389828a0161270a565b9150509295509295509295565b5f805f805f805f60e0888a031215612b26575f80fd5b8735965060208801356001600160401b03811115612b42575f80fd5b612b4e8a828b016128d1565b965050612b5d60408901612772565b9450612b6b6060890161293c565b9350612b796080890161293c565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612ba5575f80fd5b611b6582612772565b5f805f805f8060c08789031215612bc3575f80fd5b8635955060208701356001600160401b03811115612bdf575f80fd5b612beb89828a016128d1565b955050612bfa60408801612772565b9350612c086060880161293c565b9250612c166080880161293c565b915060a087013590509295509295509295565b5f805f60608486031215612c3b575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612c62575f80fd5b81356001600160401b03811115612c77575f80fd5b612c83848285016128d1565b949350505050565b5f805f805f8060c08789031215612ca0575f80fd5b86356001600160401b0380821115612cb6575f80fd5b612cc28a838b016128d1565b97506020890135915080821115612cd7575f80fd5b50612beb89828a016128d1565b5f805f805f8060c08789031215612cf9575f80fd5b8635955060208701359450612d1060408801612772565b93506060870135925060808701359150612d2c60a08801612772565b90509295509295509295565b5f805f60608486031215612d4a575f80fd5b83359250612d5a60208501612772565b9150604084013590509250925092565b5f805f60608486031215612d7c575f80fd5b8335925060208401359150612d9360408501612772565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cce57611cce612db0565b5f82612df157634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cce57611cce612db0565b5f60018201612e1a57612e1a612db0565b5060010190565b8082028115828204841417611cce57611cce612db0565b5f5b83811015612e52578181015183820152602001612e3a565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612e83816024850160208701612e38565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612f02816020860160208601612e38565b601f01601f19169290920160200192915050565b87815260e060208201525f612f2e60e0830189612eeb565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612f76818460208701612e38565b9190910192915050565b602081525f611b656020830184612eeb565b63ffffffff818116838216019080821115611ccc57611ccc612db0565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220370696ab38400820918b0c40a7d5dd18e71a451ee03396b12e432df985ab5f4164736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f60015534801562000014575f80fd5b50620000396040518060600160405280603f815260200162002fe8603f9139620000d4565b506200005e6040518060800160405280604f8152602001620030c4604f9139620000d4565b50620000836040518060800160405280605a81526020016200306a605a9139620000d4565b50620000a86040518060800160405280605c815260200162002f8c605c9139620000d4565b50620000cd6040518060800160405280604381526020016200302760439139620000d4565b506200020d565b6001545f81815260026020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60015592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b612d71806200021b5f395ff3fe608060405260043610610212575f3560e01c806377f325df1161011e578063a1130d04116100a8578063d44e293c1161006d578063d44e293c146107f9578063e12891d414610818578063ebbdd2b014610837578063f6a94ecb14610856578063fe92049d14610875575f80fd5b8063a1130d0414610761578063a462fb7b14610774578063acae8f4e14610793578063bc525652146107ce578063d09cc57e14610774575f80fd5b80638d552d46116100ee5780638d552d4614610584578063924532fb146105b357806395addb90146105e45780639e63fa6a146106d65780639f1025c614610726575f80fd5b806377f325df146104f55780637f8d429e1461050857806382ffa9f71461053757806383bf460914610565575f80fd5b8063484c07141161019f578063590158a71161016f578063590158a71461041057806359245ff3146104795780636fa427421461048c57806370a08231146104b7578063762c38fd146104e2575f80fd5b8063484c07141461036d5780634df6ca2a1461039b5780634e60f883146103ba57806351577ea9146103e5575f80fd5b80632518904c116101e55780632518904c146102aa57806326d6c97b146102f957806328828b1e146103275780633ccfd60b14610346578063484b93c41461035a575f80fd5b80631101a0fd14610216578063111ec1381461023757806312a203c31461024a5780632417395c1461027c575b5f80fd5b348015610221575f80fd5b506102356102303660046125a1565b610894565b005b61023561024536600461264f565b610b39565b348015610255575f80fd5b5061026961026436600461269e565b610d78565b6040519081526020015b60405180910390f35b348015610287575f80fd5b506102696102963660046126e8565b5f9081526004602052604090206003015490565b3480156102b5575f80fd5b506102e16102c43660046126e8565b5f908152600460205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610273565b348015610304575f80fd5b506102696103133660046126e8565b5f9081526004602052604090206006015490565b348015610332575f80fd5b506102356103413660046126ff565b610e9a565b348015610351575f80fd5b5061023561114a565b610269610368366004612854565b6111c1565b348015610378575f80fd5b506102696103873660046126e8565b5f9081526004602052604090206007015490565b3480156103a6575f80fd5b506102356103b53660046126e8565b6112bd565b3480156103c5575f80fd5b506102696103d43660046126e8565b60036020525f908152604090205481565b3480156103f0575f80fd5b506102696103ff3660046126e8565b5f9081526004602052604090205490565b34801561041b575f80fd5b5061045461042a3660046126e8565b60056020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610273565b6102356104873660046126e8565b61130a565b348015610497575f80fd5b506102696104a63660046128d9565b60066020525f908152604090205481565b3480156104c2575f80fd5b506102696104d13660046128d9565b5f6020819052908152604090205481565b6102696104f03660046128f2565b6114a4565b61023561050336600461296d565b61159f565b348015610513575f80fd5b506105276105223660046126e8565b6117b6565b6040519015158152602001610273565b348015610542575f80fd5b506102696105513660046126e8565b5f9081526004602052604090206005015490565b348015610570575f80fd5b5061026961057f366004612996565b611811565b34801561058f575f80fd5b5061026961059e3660046126e8565b5f908152600460208190526040909120015490565b3480156105be575f80fd5b506105276105cd3660046126e8565b5f9081526004602052604090206002015460ff1690565b3480156105ef575f80fd5b5061066f6105fe3660046126e8565b600460208190525f91825260409091208054600182015460028301546003840154948401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff1694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610273565b3480156106e1575f80fd5b506107116106f03660046126e8565b5f90815260046020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610273565b348015610731575f80fd5b506107116107403660046126e8565b5f90815260046020526040902060010154600160c01b900463ffffffff1690565b61026961076f3660046129cf565b6118ab565b34801561077f575f80fd5b5061026961078e3660046126e8565b6118c6565b34801561079e575f80fd5b506107116107ad3660046126e8565b5f90815260046020526040902060010154600160e01b900463ffffffff1690565b3480156107d9575f80fd5b506102696107e83660046126e8565b60026020525f908152604090205481565b348015610804575f80fd5b50610235610813366004612a28565b611905565b348015610823575f80fd5b506105276108323660046125a1565b61197e565b348015610842575f80fd5b506102356108513660046126e8565b611b1b565b348015610861575f80fd5b50610235610870366004612a7c565b611c1d565b348015610880575f80fd5b5061023561088f366004612aae565b611e44565b8461089e816117b6565b6108bb57604051636030e5f560e11b815260040160405180910390fd5b84515f036108dc576040516312fdb46960e31b815260040160405180910390fd5b5f86815260056020818152604080842080546001909101546004938490529185209384015493909201546001600160a01b039092169390929091825b8a51811015610a9b57610992838c838151811061093757610937612ae0565b60200260200101518a848151811061095157610951612ae0565b60200260200101518c858151811061096b5761096b612ae0565b60200260200101518e868151811061098557610985612ae0565b6020026020010151611f63565b6109af576040516303a479f160e11b815260040160405180910390fd5b6109b98585612b08565b9350610a158c8386898e86815181106109d4576109d4612ae0565b60200260200101518e87815181106109ee576109ee612ae0565b60200260200101518e8881518110610a0857610a08612ae0565b6020026020010151611fa0565b8097508195505050888181518110610a2f57610a2f612ae0565b6020026020010151945060045f8d81526020019081526020015f20600601548514610a6c57610a5f602886612b21565b610a699086612b40565b94505b8a8181518110610a7e57610a7e612ae0565b602002602001015192508080610a9390612b53565b915050610918565b8215610add57610aac8c8786612065565b5f8c815260056020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610b18565b610af18c87610aec8888612b08565b612065565b5f8c815260056020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260046020526040909920600501989098555050505050505050565b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003610b795760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615610bab576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590610be457504263ffffffff168163ffffffff1611155b15610c025760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590610c3a57504263ffffffff168163ffffffff16115b15610c585760405163079994c560e31b815260040160405180910390fd5b8634805f03610c7a57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003610cc9575f83815260046020526040902060070154821015610cc45760405163291784d560e01b815260040160405180910390fd5b610cf4565b610cd4816002612b6b565b821015610cf4576040516328eecafb60e21b815260040160405180910390fd5b89888015610d2d575f82815260046020526040902060060154811015610d2d5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610d5457604051630ca6549f60e11b815260040160405180910390fd5b610d608c8c8b346120dd565b610d6a8c8c6121ae565b505050505050505050505050565b5f85610d83816117b6565b610da057604051636030e5f560e11b815260040160405180910390fd5b5f878152600460205260409020548614610dcd57604051630763e45d60e41b815260040160405180910390fd5b5f878152600460205260409020600101546001600160a01b03868116911614610e095760405163f089a18560e01b815260040160405180910390fd5b5f8781526004602052604090206001015463ffffffff600160c01b90910481169085161115610e4b57604051633f61762b60e01b815260040160405180910390fd5b5f87815260046020526040902060060154831115610e7c57604051634d497e9360e11b815260040160405180910390fd5b5f878152600460208190526040909120015491505095945050505050565b5f805b8751821015611138575f888381518110610eb957610eb9612ae0565b602002602001015190505f888481518110610ed657610ed6612ae0565b602002602001015190505f816001600160401b03811115610ef957610ef961245e565b604051908082528060200260200182016040528015610f22578160200160208202803683370190505b5090505f826001600160401b03811115610f3e57610f3e61245e565b604051908082528060200260200182016040528015610f67578160200160208202803683370190505b5090505f836001600160401b03811115610f8357610f8361245e565b604051908082528060200260200182016040528015610fac578160200160208202803683370190505b5090505f846001600160401b03811115610fc857610fc861245e565b604051908082528060200260200182016040528015610ff1578160200160208202803683370190505b5090505f5b85811015611111578c888151811061101057611010612ae0565b602002602001015185828151811061102a5761102a612ae0565b6020026020010181815250508b888151811061104857611048612ae0565b602002602001015184828151811061106257611062612ae0565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061109457611094612ae0565b60200260200101518382815181106110ae576110ae612ae0565b6020026020010181815250508988815181106110cc576110cc612ae0565b60200260200101518282815181106110e6576110e6612ae0565b6020908102919091010152876110fb81612b53565b985050808061110990612b53565b915050610ff6565b61111e8786868686610894565b50505050505050818061113090612b53565b925050610e9d565b61114061114a565b5050505050505050565b335f81815260208190526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611188573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526002602052604081205481036111ee5760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161120493929190612ba4565b6040516020818303038152906040528051906020012090505f8188888630338a60405160200161123a9796959493929190612bdc565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516112999796959493929190612c60565b60405180910390a46112b081838a8a8a8934612216565b9998505050505050505050565b335f81815260066020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600460205260408120600101548291600160c01b90910463ffffffff16900361134a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff161561137c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff1680158015906113b557504263ffffffff168163ffffffff1611155b156113d35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff16801580159061140b57504263ffffffff168163ffffffff16115b156114295760405163079994c560e31b815260040160405180910390fd5b5f84815260046020526040902060030154611445903490612b08565b5f858152600460205260409081902060030182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161149691349190918252602082015260400190565b60405180910390a350505050565b5f8681526002602052604081205481036114d15760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016114e793929190612ba4565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161151d9796959493929190612bdc565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161157c9796959493929190612c60565b60405180910390a461159381838989895f34612216565b98975050505050505050565b5f838152600460205260408120600101548491600160c01b90910463ffffffff1690036115df5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615611611576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061164a57504263ffffffff168163ffffffff1611155b156116685760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff1680158015906116a057504263ffffffff168163ffffffff16115b156116be5760405163079994c560e31b815260040160405180910390fd5b8534805f036116e057604051635de374cf60e11b815260040160405180910390fd5b5f828152600460205260408120600601549081900361172f575f8381526004602052604090206007015482101561172a5760405163291784d560e01b815260040160405180910390fd5b61175a565b61173a816002612b6b565b82101561175a576040516328eecafb60e21b815260040160405180910390fd5b88878015611793575f828152600460205260409020600601548110156117935760405163f6631e6760e01b815260040160405180910390fd5b61179f8b8b33346120dd565b6117a98b8b6121ae565b5050505050505050505050565b5f8181526004602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156117f2575063ffffffff811615155b801561180a57504263ffffffff168163ffffffff1611155b9392505050565b6001545f8181526002602090815260408083204390555191929161183791859101612caf565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061188d908790612cca565b60405180910390a36118a0816001612b08565b60015590505b919050565b5f806118b688611811565b90506115938188888888886114a4565b5f816118d1816117b6565b6118ee57604051636030e5f560e11b815260040160405180910390fd5b50505f908152600460208190526040909120015490565b5f868152600460205260409020600581015460069091015461192c91908590859085611f63565b611949576040516303a479f160e11b815260040160405180910390fd5b5f8681526004602081905260408220015486146119665784611968565b815b9050611975878783611e44565b50505050505050565b5f858152600460205260408120600101548690600160c01b900463ffffffff1682036119bd5760405163a42db76b60e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff1680158015906119f657504263ffffffff168163ffffffff1611155b15611a145760405163372900d560e21b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611a4c57504263ffffffff168163ffffffff16115b15611a6a5760405163079994c560e31b815260040160405180910390fd5b5f898152600460205260409020600501548851885181141580611a8e575080885114155b80611a9a575080875114155b15611aa9575f95505050611b0f565b5f5b81811015611b0757611ac9838c838151811061093757610937612ae0565b611ad8575f9650505050611b0f565b8a8181518110611aea57611aea612ae0565b602002602001015192508080611aff90612b53565b915050611aab565b506001955050505b50505095945050505050565b5f8181526004602052604090206001015481906001600160a01b03163314611b5657604051634361661f60e11b815260040160405180910390fd5b5f82815260046020526040902060020154829060ff16611b895760405163f476ed1160e01b815260040160405180910390fd5b5f83815260046020526040902060028101805460ff1916905560010154611bbd90600160c01b900463ffffffff1642612cdc565b5f84815260046020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526004602052604090206001015483906001600160a01b03163314611c5857604051634361661f60e11b815260040160405180910390fd5b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003611c985760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615611cca576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590611d0357504263ffffffff168163ffffffff1611155b15611d215760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611d5957504263ffffffff168163ffffffff16115b15611d775760405163079994c560e31b815260040160405180910390fd5b86858015611db0575f82815260046020526040902060060154811015611db05760405163f6631e6760e01b815260040160405180910390fd5b5f89815260046020526040902060010154600160e01b900463ffffffff16611deb576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260046020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526004602052604090206001015483906001600160a01b03163314611e7f57604051634361661f60e11b815260040160405180910390fd5b5f84815260046020526040902060020154849060ff16611eb25760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611ed9576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600460205260408120600201805460ff19169055611f2c908690869086906120dd565b5050505f9182526004602081905260409092209182015560010180546001600160e01b0316600160e01b4263ffffffff1602179055565b5f848484845f604051602001611f7d959493929190612d00565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612056576001600160a01b038616612013575f89815260046020526040902060030154949550859415801590611fd9575060015b1561200e575f89815260046020526040902060030154611ffc908a908890612065565b5f898152600460205260408120600301555b612056565b856001600160a01b0316856001600160a01b031614612056575f8488101561203b578761203d565b845b905061204e8a88610aec848c612b40565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260208190526040902054612088908290612b08565b6001600160a01b0383165f81815260208181526040918290209390935551838152909185917f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6910160405180910390a3505050565b5f84815260046020908152604080832060050154905161210592879186918891879101612d00565b6040516020818303038152906040528051906020012090505f821115612139575f8581526004602052604090206006018290555b5f8581526004602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f828152600460208190526040909120908101829055600101546121df90600160c01b900463ffffffff1642612cdc565b5f92835260046020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600460205260409020600101548790600160c01b900463ffffffff1615612257576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f0361227d5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106122a757604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906122c95750336001600160a01b03881614155b15612351576001600160a01b0387165f90815260066020526040902054808210156123075760405163d72564c760e01b815260040160405180910390fd5b6123118183612b40565b6001600160a01b0389165f90815260208190526040902054909250612337908290612b08565b6001600160a01b0389165f90815260208190526040902055505b5f898152600460205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156123fd575f89815260046020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612453575f89815260046020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c625049061244a9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561249a5761249a61245e565b604052919050565b5f6001600160401b038211156124ba576124ba61245e565b5060051b60200190565b5f82601f8301126124d3575f80fd5b813560206124e86124e3836124a2565b612472565b82815260059290921b84018101918181019086841115612506575f80fd5b8286015b84811015612521578035835291830191830161250a565b509695505050505050565b80356001600160a01b03811681146118a6575f80fd5b5f82601f830112612551575f80fd5b813560206125616124e3836124a2565b82815260059290921b8401810191818101908684111561257f575f80fd5b8286015b84811015612521576125948161252c565b8352918301918301612583565b5f805f805f60a086880312156125b5575f80fd5b8535945060208601356001600160401b03808211156125d2575f80fd5b6125de89838a016124c4565b955060408801359150808211156125f3575f80fd5b6125ff89838a01612542565b94506060880135915080821115612614575f80fd5b61262089838a016124c4565b93506080880135915080821115612635575f80fd5b50612642888289016124c4565b9150509295509295909350565b5f805f8060808587031215612662575f80fd5b8435935060208501359250604085013591506126806060860161252c565b905092959194509250565b803563ffffffff811681146118a6575f80fd5b5f805f805f60a086880312156126b2575f80fd5b85359450602086013593506126c96040870161252c565b92506126d76060870161268b565b949793965091946080013592915050565b5f602082840312156126f8575f80fd5b5035919050565b5f805f805f8060c08789031215612714575f80fd5b86356001600160401b038082111561272a575f80fd5b6127368a838b016124c4565b9750602089013591508082111561274b575f80fd5b6127578a838b016124c4565b9650604089013591508082111561276c575f80fd5b6127788a838b016124c4565b9550606089013591508082111561278d575f80fd5b6127998a838b01612542565b945060808901359150808211156127ae575f80fd5b6127ba8a838b016124c4565b935060a08901359150808211156127cf575f80fd5b506127dc89828a016124c4565b9150509295509295509295565b5f82601f8301126127f8575f80fd5b81356001600160401b038111156128115761281161245e565b612824601f8201601f1916602001612472565b818152846020838601011115612838575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a03121561286a575f80fd5b8735965060208801356001600160401b03811115612886575f80fd5b6128928a828b016127e9565b9650506128a16040890161252c565b94506128af6060890161268b565b93506128bd6080890161268b565b925060a0880135915060c0880135905092959891949750929550565b5f602082840312156128e9575f80fd5b61180a8261252c565b5f805f805f8060c08789031215612907575f80fd5b8635955060208701356001600160401b03811115612923575f80fd5b61292f89828a016127e9565b95505061293e6040880161252c565b935061294c6060880161268b565b925061295a6080880161268b565b915060a087013590509295509295509295565b5f805f6060848603121561297f575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156129a6575f80fd5b81356001600160401b038111156129bb575f80fd5b6129c7848285016127e9565b949350505050565b5f805f805f8060c087890312156129e4575f80fd5b86356001600160401b03808211156129fa575f80fd5b612a068a838b016127e9565b97506020890135915080821115612a1b575f80fd5b5061292f89828a016127e9565b5f805f805f8060c08789031215612a3d575f80fd5b8635955060208701359450612a546040880161252c565b93506060870135925060808701359150612a7060a0880161252c565b90509295509295509295565b5f805f60608486031215612a8e575f80fd5b83359250612a9e6020850161252c565b9150604084013590509250925092565b5f805f60608486031215612ac0575f80fd5b8335925060208401359150612ad76040850161252c565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612b1b57612b1b612af4565b92915050565b5f82612b3b57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612b1b57612b1b612af4565b5f60018201612b6457612b64612af4565b5060010190565b8082028115828204841417612b1b57612b1b612af4565b5f5b83811015612b9c578181015183820152602001612b84565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612bcd816024850160208701612b82565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612c4c816020860160208601612b82565b601f01601f19169290920160200192915050565b87815260e060208201525f612c7860e0830189612c35565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612cc0818460208701612b82565b9190910192915050565b602081525f61180a6020830184612c35565b63ffffffff818116838216019080821115612cf957612cf9612af4565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220f7b1da12dc66d8623092adb95e75c82248046c899d973fbaf9e1b41a8381c32064736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -0,0 +1 @@
1
+ 60806040525f60015534801562000014575f80fd5b50620000396040518060600160405280603f815260200162003480603f9139620000d4565b506200005e6040518060800160405280604f81526020016200355c604f9139620000d4565b50620000836040518060800160405280605a815260200162003502605a9139620000d4565b50620000a86040518060800160405280605c815260200162003424605c9139620000d4565b50620000cd604051806080016040528060438152602001620034bf60439139620000d4565b506200020d565b6001545f81815260026020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60015592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613209806200021b5f395ff3fe608060405260043610610249575f3560e01c80637f8d429e11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c146108ac578063e12891d4146108cb578063e83bfb58146108ea578063ebbdd2b014610918578063f6a94ecb14610937578063fe92049d14610956575f80fd5b8063ab5a4e35146107fc578063acae8f4e1461081b578063bc52565214610856578063c081d8a314610881578063d09cc57e146107dd575f80fd5b806395addb90116100f957806395addb901461064d5780639e63fa6a1461073f5780639f1025c61461078f578063a1130d04146107ca578063a462fb7b146107dd575f80fd5b80637f8d429e1461058157806382ffa9f7146105a057806383bf4609146105ce5780638d552d46146105ed578063924532fb1461061c575f80fd5b8063484b93c4116101cb578063590158a711610190578063590158a71461048957806359245ff3146104f25780636fa427421461050557806370a0823114610530578063762c38fd1461055b57806377f325df1461056e575f80fd5b8063484b93c4146103d3578063484c0714146103e65780634df6ca2a146104145780634e60f8831461043357806351577ea91461045e575f80fd5b80632417395c116102115780632417395c146102f55780632518904c1461032357806326d6c97b1461037257806328828b1e146103a05780633ccfd60b146103bf575f80fd5b806306c3b67a1461024d5780631101a0fd14610281578063111ec138146102a25780631126a9dc146102b557806312a203c3146102d6575b5f80fd5b348015610258575f80fd5b5061026c610267366004612876565b610975565b60405190151581526020015b60405180910390f35b34801561028c575f80fd5b506102a061029b3660046129d0565b610989565b005b6102a06102b0366004612a7e565b610c2e565b6102c86102c3366004612b38565b610e6d565b604051908152602001610278565b3480156102e1575f80fd5b506102c86102f0366004612bc5565b611118565b348015610300575f80fd5b506102c861030f366004612876565b5f9081526004602052604090206003015490565b34801561032e575f80fd5b5061035a61033d366004612876565b5f908152600460205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610278565b34801561037d575f80fd5b506102c861038c366004612876565b5f9081526004602052604090206006015490565b3480156103ab575f80fd5b506102a06103ba366004612c0f565b61123a565b3480156103ca575f80fd5b506102a06114ea565b6102c86103e1366004612cf9565b611561565b3480156103f1575f80fd5b506102c8610400366004612876565b5f9081526004602052604090206007015490565b34801561041f575f80fd5b506102a061042e366004612876565b61165d565b34801561043e575f80fd5b506102c861044d366004612876565b60036020525f908152604090205481565b348015610469575f80fd5b506102c8610478366004612876565b5f9081526004602052604090205490565b348015610494575f80fd5b506104cd6104a3366004612876565b60056020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610278565b6102a0610500366004612876565b6116aa565b348015610510575f80fd5b506102c861051f366004612d7e565b60066020525f908152604090205481565b34801561053b575f80fd5b506102c861054a366004612d7e565b5f6020819052908152604090205481565b6102c8610569366004612d97565b611844565b6102a061057c366004612e12565b61193f565b34801561058c575f80fd5b5061026c61059b366004612876565b611b56565b3480156105ab575f80fd5b506102c86105ba366004612876565b5f9081526004602052604090206005015490565b3480156105d9575f80fd5b506102c86105e8366004612e3b565b611bb1565b3480156105f8575f80fd5b506102c8610607366004612876565b5f908152600460208190526040909120015490565b348015610627575f80fd5b5061026c610636366004612876565b5f9081526004602052604090206002015460ff1690565b348015610658575f80fd5b506106d8610667366004612876565b600460208190525f91825260409091208054600182015460028301546003840154948401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff1694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610278565b34801561074a575f80fd5b5061077a610759366004612876565b5f90815260046020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610278565b34801561079a575f80fd5b5061077a6107a9366004612876565b5f90815260046020526040902060010154600160c01b900463ffffffff1690565b6102c86107d8366004612e74565b611c4b565b3480156107e8575f80fd5b506102c86107f7366004612876565b611c66565b348015610807575f80fd5b506102c8610816366004612876565b611ca5565b348015610826575f80fd5b5061077a610835366004612876565b5f90815260046020526040902060010154600160e01b900463ffffffff1690565b348015610861575f80fd5b506102c8610870366004612876565b60026020525f908152604090205481565b34801561088c575f80fd5b506102c861089b366004612876565b60076020525f908152604090205481565b3480156108b7575f80fd5b506102a06108c6366004612ecd565b611d19565b3480156108d6575f80fd5b5061026c6108e53660046129d0565b611d92565b3480156108f5575f80fd5b5061026c610904366004612876565b60086020525f908152604090205460ff1681565b348015610923575f80fd5b506102a0610932366004612876565b611f2f565b348015610942575f80fd5b506102a0610951366004612f21565b612031565b348015610961575f80fd5b506102a0610970366004612f53565b612258565b5f60011961098283611c66565b1492915050565b8461099381611b56565b6109b057604051636030e5f560e11b815260040160405180910390fd5b84515f036109d1576040516312fdb46960e31b815260040160405180910390fd5b5f86815260056020818152604080842080546001909101546004938490529185209384015493909201546001600160a01b039092169390929091825b8a51811015610b9057610a87838c8381518110610a2c57610a2c612f85565b60200260200101518a8481518110610a4657610a46612f85565b60200260200101518c8581518110610a6057610a60612f85565b60200260200101518e8681518110610a7a57610a7a612f85565b6020026020010151612377565b610aa4576040516303a479f160e11b815260040160405180910390fd5b610aae8585612fad565b9350610b0a8c8386898e8681518110610ac957610ac9612f85565b60200260200101518e8781518110610ae357610ae3612f85565b60200260200101518e8881518110610afd57610afd612f85565b60200260200101516123b4565b8097508195505050888181518110610b2457610b24612f85565b6020026020010151945060045f8d81526020019081526020015f20600601548514610b6157610b54602886612fc0565b610b5e9086612fdf565b94505b8a8181518110610b7357610b73612f85565b602002602001015192508080610b8890612ff2565b915050610a0d565b8215610bd257610ba18c878661247d565b5f8c815260056020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610c0d565b610be68c87610be18888612fad565b61247d565b5f8c815260056020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260046020526040909920600501989098555050505050505050565b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003610c6e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615610ca0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590610cd957504263ffffffff168163ffffffff1611155b15610cf75760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590610d2f57504263ffffffff168163ffffffff16115b15610d4d5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d6f57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003610dbe575f83815260046020526040902060070154821015610db95760405163291784d560e01b815260040160405180910390fd5b610de9565b610dc981600261300a565b821015610de9576040516328eecafb60e21b815260040160405180910390fd5b89888015610e22575f82815260046020526040902060060154811015610e225760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e4957604051630ca6549f60e11b815260040160405180910390fd5b610e558c8c8b346124f5565b610e5f8c8c6125c6565b505050505050505050505050565b5f610e7782610975565b610e9457604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610eaa93929190613043565b60408051601f1981840301815291815281516020928301205f86815260049093529120549091508114610ef0576040516349923ed160e11b815260040160405180910390fd5b5f838152600460205260409020600101546001600160a01b03898116911614610f2c5760405163611876b160e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff888116600160c01b9092041614610f6c57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff878116600160a01b9092041614610fac57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600460205260409020600701548414610fdc57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff161561100b5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561105e5761102982610975565b61104657604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61106e8d8d8d8d8d8d8d611561565b5f87815260076020908152604080832084905583835260088252808320805460ff19166001179055600490915280822060039081015486845291909220909101549192506110bb91612fad565b5f828152600460205260408082206003908101939093558482528082209092018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f8561112381611b56565b61114057604051636030e5f560e11b815260040160405180910390fd5b5f87815260046020526040902054861461116d57604051630763e45d60e41b815260040160405180910390fd5b5f878152600460205260409020600101546001600160a01b038681169116146111a95760405163f089a18560e01b815260040160405180910390fd5b5f8781526004602052604090206001015463ffffffff600160c01b909104811690851611156111eb57604051633f61762b60e01b815260040160405180910390fd5b5f8781526004602052604090206006015483111561121c57604051634d497e9360e11b815260040160405180910390fd5b5f878152600460208190526040909120015491505095945050505050565b5f805b87518210156114d8575f88838151811061125957611259612f85565b602002602001015190505f88848151811061127657611276612f85565b602002602001015190505f816001600160401b038111156112995761129961288d565b6040519080825280602002602001820160405280156112c2578160200160208202803683370190505b5090505f826001600160401b038111156112de576112de61288d565b604051908082528060200260200182016040528015611307578160200160208202803683370190505b5090505f836001600160401b038111156113235761132361288d565b60405190808252806020026020018201604052801561134c578160200160208202803683370190505b5090505f846001600160401b038111156113685761136861288d565b604051908082528060200260200182016040528015611391578160200160208202803683370190505b5090505f5b858110156114b1578c88815181106113b0576113b0612f85565b60200260200101518582815181106113ca576113ca612f85565b6020026020010181815250508b88815181106113e8576113e8612f85565b602002602001015184828151811061140257611402612f85565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061143457611434612f85565b602002602001015183828151811061144e5761144e612f85565b60200260200101818152505089888151811061146c5761146c612f85565b602002602001015182828151811061148657611486612f85565b60209081029190910101528761149b81612ff2565b98505080806114a990612ff2565b915050611396565b6114be8786868686610989565b5050505050505081806114d090612ff2565b92505061123d565b6114e06114ea565b5050505050505050565b335f81815260208190526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611528573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f87815260026020526040812054810361158e5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016115a493929190613043565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115da979695949392919061307b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161163997969594939291906130ff565b60405180910390a461165081838a8a8a893461262e565b9998505050505050505050565b335f81815260066020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600460205260408120600101548291600160c01b90910463ffffffff1690036116ea5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff161561171c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061175557504263ffffffff168163ffffffff1611155b156117735760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff1680158015906117ab57504263ffffffff168163ffffffff16115b156117c95760405163079994c560e31b815260040160405180910390fd5b5f848152600460205260409020600301546117e5903490612fad565b5f858152600460205260409081902060030182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161183691349190918252602082015260400190565b60405180910390a350505050565b5f8681526002602052604081205481036118715760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161188793929190613043565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118bd979695949392919061307b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161191c97969594939291906130ff565b60405180910390a461193381838989895f3461262e565b98975050505050505050565b5f838152600460205260408120600101548491600160c01b90910463ffffffff16900361197f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff16156119b1576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff1680158015906119ea57504263ffffffff168163ffffffff1611155b15611a085760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611a4057504263ffffffff168163ffffffff16115b15611a5e5760405163079994c560e31b815260040160405180910390fd5b8534805f03611a8057604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003611acf575f83815260046020526040902060070154821015611aca5760405163291784d560e01b815260040160405180910390fd5b611afa565b611ada81600261300a565b821015611afa576040516328eecafb60e21b815260040160405180910390fd5b88878015611b33575f82815260046020526040902060060154811015611b335760405163f6631e6760e01b815260040160405180910390fd5b611b3f8b8b33346124f5565b611b498b8b6125c6565b5050505050505050505050565b5f8181526004602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b92575063ffffffff811615155b8015611baa57504263ffffffff168163ffffffff1611155b9392505050565b6001545f81815260026020908152604080832043905551919291611bd79185910161314e565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611c2d908790613169565b60405180910390a3611c40816001612fad565b60015590505b919050565b5f80611c5688611bb1565b9050611933818888888888611844565b5f81611c7181611b56565b611c8e57604051636030e5f560e11b815260040160405180910390fd5b50505f908152600460208190526040909120015490565b5f80611cb083611c66565b905060028101611d13575f8381526007602052604090205480611ce65760405163079442c960e01b815260040160405180910390fd5b611cef81611c66565b915060028201611d115760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526004602052604090206005810154600690910154611d4091908590859085612377565b611d5d576040516303a479f160e11b815260040160405180910390fd5b5f868152600460208190526040822001548614611d7a5784611d7c565b815b9050611d89878783612258565b50505050505050565b5f858152600460205260408120600101548690600160c01b900463ffffffff168203611dd15760405163a42db76b60e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590611e0a57504263ffffffff168163ffffffff1611155b15611e285760405163372900d560e21b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611e6057504263ffffffff168163ffffffff16115b15611e7e5760405163079994c560e31b815260040160405180910390fd5b5f898152600460205260409020600501548851885181141580611ea2575080885114155b80611eae575080875114155b15611ebd575f95505050611f23565b5f5b81811015611f1b57611edd838c8381518110610a2c57610a2c612f85565b611eec575f9650505050611f23565b8a8181518110611efe57611efe612f85565b602002602001015192508080611f1390612ff2565b915050611ebf565b506001955050505b50505095945050505050565b5f8181526004602052604090206001015481906001600160a01b03163314611f6a57604051634361661f60e11b815260040160405180910390fd5b5f82815260046020526040902060020154829060ff16611f9d5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260046020526040902060028101805460ff1916905560010154611fd190600160c01b900463ffffffff164261317b565b5f84815260046020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526004602052604090206001015483906001600160a01b0316331461206c57604051634361661f60e11b815260040160405180910390fd5b5f848152600460205260408120600101548591600160c01b90910463ffffffff1690036120ac5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff16156120de576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061211757504263ffffffff168163ffffffff1611155b156121355760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff16801580159061216d57504263ffffffff168163ffffffff16115b1561218b5760405163079994c560e31b815260040160405180910390fd5b868580156121c4575f828152600460205260409020600601548110156121c45760405163f6631e6760e01b815260040160405180910390fd5b5f89815260046020526040902060010154600160e01b900463ffffffff166121ff576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260046020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526004602052604090206001015483906001600160a01b0316331461229357604051634361661f60e11b815260040160405180910390fd5b5f84815260046020526040902060020154849060ff166122c65760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122ed576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600460205260408120600201805460ff19169055612340908690869086906124f5565b5050505f9182526004602081905260409092209182015560010180546001600160e01b0316600160e01b4263ffffffff1602179055565b5f848484845f604051602001612391959493929190613198565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361246e576001600160a01b03861661242b575f898152600460205260409020600301549495508594158015906123f157506001198814155b15612426575f89815260046020526040902060030154612414908a90889061247d565b5f898152600460205260408120600301555b61246e565b856001600160a01b0316856001600160a01b03161461246e575f848810156124535787612455565b845b90506124668a88610be1848c612fdf565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152602081905260409020546124a0908290612fad565b6001600160a01b0383165f81815260208181526040918290209390935551838152909185917f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6910160405180910390a3505050565b5f84815260046020908152604080832060050154905161251d92879186918891879101613198565b6040516020818303038152906040528051906020012090505f821115612551575f8581526004602052604090206006018290555b5f8581526004602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f828152600460208190526040909120908101829055600101546125f790600160c01b900463ffffffff164261317b565b5f92835260046020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600460205260409020600101548790600160c01b900463ffffffff161561266f576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126955760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106126bf57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126e15750336001600160a01b03881614155b15612769576001600160a01b0387165f908152600660205260409020548082101561271f5760405163d72564c760e01b815260040160405180910390fd5b6127298183612fdf565b6001600160a01b0389165f9081526020819052604090205490925061274f908290612fad565b6001600160a01b0389165f90815260208190526040902055505b5f898152600460205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c161792909217161790558015612815575f89815260046020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561286b575f89815260046020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128629087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612886575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128c9576128c961288d565b604052919050565b5f6001600160401b038211156128e9576128e961288d565b5060051b60200190565b5f82601f830112612902575f80fd5b81356020612917612912836128d1565b6128a1565b82815260059290921b84018101918181019086841115612935575f80fd5b8286015b848110156129505780358352918301918301612939565b509695505050505050565b80356001600160a01b0381168114611c46575f80fd5b5f82601f830112612980575f80fd5b81356020612990612912836128d1565b82815260059290921b840181019181810190868411156129ae575f80fd5b8286015b84811015612950576129c38161295b565b83529183019183016129b2565b5f805f805f60a086880312156129e4575f80fd5b8535945060208601356001600160401b0380821115612a01575f80fd5b612a0d89838a016128f3565b95506040880135915080821115612a22575f80fd5b612a2e89838a01612971565b94506060880135915080821115612a43575f80fd5b612a4f89838a016128f3565b93506080880135915080821115612a64575f80fd5b50612a71888289016128f3565b9150509295509295909350565b5f805f8060808587031215612a91575f80fd5b843593506020850135925060408501359150612aaf6060860161295b565b905092959194509250565b5f82601f830112612ac9575f80fd5b81356001600160401b03811115612ae257612ae261288d565b612af5601f8201601f19166020016128a1565b818152846020838601011115612b09575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c46575f80fd5b5f805f805f805f80610100898b031215612b50575f80fd5b8835975060208901356001600160401b03811115612b6c575f80fd5b612b788b828c01612aba565b975050612b8760408a0161295b565b9550612b9560608a01612b25565b9450612ba360808a01612b25565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612bd9575f80fd5b8535945060208601359350612bf06040870161295b565b9250612bfe60608701612b25565b949793965091946080013592915050565b5f805f805f8060c08789031215612c24575f80fd5b86356001600160401b0380821115612c3a575f80fd5b612c468a838b016128f3565b97506020890135915080821115612c5b575f80fd5b612c678a838b016128f3565b96506040890135915080821115612c7c575f80fd5b612c888a838b016128f3565b95506060890135915080821115612c9d575f80fd5b612ca98a838b01612971565b94506080890135915080821115612cbe575f80fd5b612cca8a838b016128f3565b935060a0890135915080821115612cdf575f80fd5b50612cec89828a016128f3565b9150509295509295509295565b5f805f805f805f60e0888a031215612d0f575f80fd5b8735965060208801356001600160401b03811115612d2b575f80fd5b612d378a828b01612aba565b965050612d466040890161295b565b9450612d5460608901612b25565b9350612d6260808901612b25565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d8e575f80fd5b611baa8261295b565b5f805f805f8060c08789031215612dac575f80fd5b8635955060208701356001600160401b03811115612dc8575f80fd5b612dd489828a01612aba565b955050612de36040880161295b565b9350612df160608801612b25565b9250612dff60808801612b25565b915060a087013590509295509295509295565b5f805f60608486031215612e24575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e4b575f80fd5b81356001600160401b03811115612e60575f80fd5b612e6c84828501612aba565b949350505050565b5f805f805f8060c08789031215612e89575f80fd5b86356001600160401b0380821115612e9f575f80fd5b612eab8a838b01612aba565b97506020890135915080821115612ec0575f80fd5b50612dd489828a01612aba565b5f805f805f8060c08789031215612ee2575f80fd5b8635955060208701359450612ef96040880161295b565b93506060870135925060808701359150612f1560a0880161295b565b90509295509295509295565b5f805f60608486031215612f33575f80fd5b83359250612f436020850161295b565b9150604084013590509250925092565b5f805f60608486031215612f65575f80fd5b8335925060208401359150612f7c6040850161295b565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d1357611d13612f99565b5f82612fda57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611d1357611d13612f99565b5f6001820161300357613003612f99565b5060010190565b8082028115828204841417611d1357611d13612f99565b5f5b8381101561303b578181015183820152602001613023565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161306c816024850160208701613021565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526130eb816020860160208601613021565b601f01601f19169290920160200192915050565b87815260e060208201525f61311760e08301896130d4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161315f818460208701613021565b9190910192915050565b602081525f611baa60208301846130d4565b63ffffffff818116838216019080821115611d1157611d11612f99565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212208e07caada7f2a0bff1665740f8ff2994e2a2b6519e2762d015d330f503fcfb8c64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -0,0 +1 @@
1
+ 60806040525f60025534801562000014575f80fd5b50620000396040518060600160405280603f8152602001620036ff603f9139620000d4565b506200005e6040518060800160405280604f8152602001620037db604f9139620000d4565b50620000836040518060800160405280605a815260200162003781605a9139620000d4565b50620000a86040518060800160405280605c8152602001620036a3605c9139620000d4565b50620000cd6040518060800160405280604381526020016200373e60439139620000d4565b506200020d565b6002545f81815260036020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60025592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613488806200021b5f395ff3fe608060405234801561000f575f80fd5b5060043610610276575f3560e01c806383bf460911610156578063bc525652116100ca578063e12891d411610084578063e12891d4146107c1578063e83bfb58146107d4578063ebbdd2b0146107f6578063f6a94ecb14610809578063fc0c546a1461081c578063fe92049d1461082e575f80fd5b8063bc5256521461074a578063bf53b18814610769578063c081d8a31461077c578063d09cc57e146106e2578063d44e293c1461079b578063d4876b9f146107ae575f80fd5b80639f1025c61161011b5780639f1025c6146106a0578063a1130d04146106cf578063a462fb7b146106e2578063ab5a4e35146106f5578063acae8f4e14610708578063b8eaa98014610737575f80fd5b806383bf46091461051d5780638d552d4614610530578063924532fb1461055257806395addb90146105775780639e63fa6a1461065c575f80fd5b8063484c0714116101ed578063590158a7116101b2578063590158a7146104395780636fa427421461049657806370a08231146104b5578063762c38fd146104d45780637f8d429e146104e757806382ffa9f7146104fa575f80fd5b8063484c0714146103b35780634df6ca2a146103d55780634e60f883146103e857806351577ea91461040757806352debac314610426575f80fd5b80632417395c1161023e5780632417395c146102fe5780632518904c1461032057806326d6c97b1461036357806328828b1e146103855780632f998a6f146103985780633ccfd60b146103ab575f80fd5b806306c3b67a1461027a5780631101a0fd146102a2578063128b7a47146102b757806312a203c3146102ca578063144fa6d7146102eb575b5f80fd5b61028d610288366004612a06565b610841565b60405190151581526020015b60405180910390f35b6102b56102b0366004612b63565b610855565b005b6102b56102c5366004612c11565b610afc565b6102dd6102d8366004612c44565b610ca0565b604051908152602001610299565b6102b56102f9366004612c90565b610dbe565b6102dd61030c366004612a06565b5f9081526005602052604090206003015490565b61034b61032e366004612a06565b5f908152600560205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610299565b6102dd610371366004612a06565b5f9081526005602052604090206006015490565b6102b5610393366004612cab565b610e08565b6102b56103a6366004612d95565b6110b8565b6102b56112d9565b6102dd6103c1366004612a06565b5f9081526005602052604090206007015490565b6102b56103e3366004612a06565b6113a2565b6102dd6103f6366004612a06565b60046020525f908152604090205481565b6102dd610415366004612a06565b5f9081526005602052604090205490565b6102dd610434366004612e2f565b6113ef565b610471610447366004612a06565b60066020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610299565b6102dd6104a4366004612c90565b60076020525f908152604090205481565b6102dd6104c3366004612c90565b60016020525f908152604090205481565b6102dd6104e2366004612ebe565b6114f6565b61028d6104f5366004612a06565b6115f1565b6102dd610508366004612a06565b5f908152600560208190526040909120015490565b6102dd61052b366004612f3b565b61164c565b6102dd61053e366004612a06565b5f9081526005602052604090206004015490565b61028d610560366004612a06565b5f9081526005602052604090206002015460ff1690565b6105f5610585366004612a06565b600560208190525f91825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff16949391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610299565b61068b61066a366004612a06565b5f90815260056020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610299565b61068b6106ae366004612a06565b5f90815260056020526040902060010154600160c01b900463ffffffff1690565b6102dd6106dd366004612f74565b6116e6565b6102dd6106f0366004612a06565b611701565b6102dd610703366004612a06565b61173f565b61068b610716366004612a06565b5f90815260056020526040902060010154600160e01b900463ffffffff1690565b6102b5610745366004612fcd565b6117b3565b6102dd610758366004612a06565b60036020525f908152604090205481565b6102dd610777366004613001565b6119fc565b6102dd61078a366004612a06565b60086020525f908152604090205481565b6102b56107a9366004613099565b611ca9565b6102dd6107bc3660046130f3565b611d24565b61028d6107cf366004612b63565b611e2a565b61028d6107e2366004612a06565b60096020525f908152604090205460ff1681565b6102b5610804366004612a06565b611fc8565b6102b561081736600461317a565b6120ca565b5f5461034b906001600160a01b031681565b6102b561083c3660046131af565b6122f1565b5f60011961084e83611701565b1492915050565b8461085f816115f1565b61087c57604051636030e5f560e11b815260040160405180910390fd5b84515f0361089d576040516312fdb46960e31b815260040160405180910390fd5b5f8681526006602090815260408083208054600190910154600593849052918420928301546004909301546001600160a01b0390911693919290825b8a51811015610a5c57610953838c83815181106108f8576108f86131e5565b60200260200101518a8481518110610912576109126131e5565b60200260200101518c858151811061092c5761092c6131e5565b60200260200101518e8681518110610946576109466131e5565b6020026020010151612412565b610970576040516303a479f160e11b815260040160405180910390fd5b61097a858561320d565b93506109d68c8386898e8681518110610995576109956131e5565b60200260200101518e87815181106109af576109af6131e5565b60200260200101518e88815181106109c9576109c96131e5565b602002602001015161244f565b80975081955050508881815181106109f0576109f06131e5565b6020026020010151945060055f8d81526020019081526020015f20600601548514610a2d57610a20602886613220565b610a2a908661323f565b94505b8a8181518110610a3f57610a3f6131e5565b602002602001015192508080610a5490613252565b9150506108d9565b8215610a9e57610a6d8c8786612518565b5f8c815260066020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610ad9565b610ab28c87610aad888861320d565b612518565b5f8c815260066020526040812080546001600160a01b031916815560018101829055600201555b50505f998a52600560208190526040909a20909901989098555050505050505050565b5f828152600560205260408120600101548391600160c01b90910463ffffffff169003610b3c5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615610b6e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590610ba757504263ffffffff168163ffffffff1611155b15610bc55760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590610bfd57504263ffffffff168163ffffffff16115b15610c1b5760405163079994c560e31b815260040160405180910390fd5b610c2484612598565b5f85815260056020526040902060030154610c4090859061320d565b5f868152600560205260409081902060030182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c9191899190918252602082015260400190565b60405180910390a35050505050565b5f85610cab816115f1565b610cc857604051636030e5f560e11b815260040160405180910390fd5b5f878152600560205260409020548614610cf557604051630763e45d60e41b815260040160405180910390fd5b5f878152600560205260409020600101546001600160a01b03868116911614610d315760405163f089a18560e01b815260040160405180910390fd5b5f8781526005602052604090206001015463ffffffff600160c01b90910481169085161115610d7357604051633f61762b60e01b815260040160405180910390fd5b5f87815260056020526040902060060154831115610da457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600560205250604090206004015490565b5f546001600160a01b031615610de757604051635c4e8df160e11b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b87518210156110a6575f888381518110610e2757610e276131e5565b602002602001015190505f888481518110610e4457610e446131e5565b602002602001015190505f816001600160401b03811115610e6757610e67612a1d565b604051908082528060200260200182016040528015610e90578160200160208202803683370190505b5090505f826001600160401b03811115610eac57610eac612a1d565b604051908082528060200260200182016040528015610ed5578160200160208202803683370190505b5090505f836001600160401b03811115610ef157610ef1612a1d565b604051908082528060200260200182016040528015610f1a578160200160208202803683370190505b5090505f846001600160401b03811115610f3657610f36612a1d565b604051908082528060200260200182016040528015610f5f578160200160208202803683370190505b5090505f5b8581101561107f578c8881518110610f7e57610f7e6131e5565b6020026020010151858281518110610f9857610f986131e5565b6020026020010181815250508b8881518110610fb657610fb66131e5565b6020026020010151848281518110610fd057610fd06131e5565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110611002576110026131e5565b602002602001015183828151811061101c5761101c6131e5565b60200260200101818152505089888151811061103a5761103a6131e5565b6020026020010151828281518110611054576110546131e5565b60209081029190910101528761106981613252565b985050808061107790613252565b915050610f64565b61108c8786868686610855565b50505050505050818061109e90613252565b925050610e0b565b6110ae6112d9565b5050505050505050565b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036110f85760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff161561112a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061116357504263ffffffff168163ffffffff1611155b156111815760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff1680158015906111b957504263ffffffff168163ffffffff16115b156111d75760405163079994c560e31b815260040160405180910390fd5b8684805f036111f957604051635de374cf60e11b815260040160405180910390fd5b5f8281526005602052604081206006015490819003611248575f838152600560205260409020600701548210156112435760405163291784d560e01b815260040160405180910390fd5b611273565b61125381600261326a565b821015611273576040516328eecafb60e21b815260040160405180910390fd5b898880156112ac575f828152600560205260409020600601548110156112ac5760405163f6631e6760e01b815260040160405180910390fd5b6112b589612598565b6112c18c8c338c61268f565b6112cb8c8c612758565b505050505050505050505050565b335f818152600160205260408082208054908390559154905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561133e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113629190613281565b61136a575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260076020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113f982612598565b5f8981526003602052604081205490036114265760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161143c939291906132c2565b6040516020818303038152906040528051906020012090505f8189898730338b60405160200161147297969594939291906132fa565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114d1979695949392919061337e565b60405180910390a46114e881838b8b8b8a8a6127be565b9a9950505050505050505050565b5f8681526003602052604081205481036115235760405163bbbf712b60e01b815260040160405180910390fd5b5f878488604051602001611539939291906132c2565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161156f97969594939291906132fa565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115ce979695949392919061337e565b60405180910390a46115e581838989895f806127be565b98975050505050505050565b5f8181526005602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561162d575063ffffffff811615155b801561164557504263ffffffff168163ffffffff1611155b9392505050565b6002545f81815260036020908152604080832043905551919291611672918591016133cd565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116c89087906133e8565b60405180910390a36116db81600161320d565b60025590505b919050565b5f806116f18861164c565b90506115e58188888888886114f6565b5f8161170c816115f1565b61172957604051636030e5f560e11b815260040160405180910390fd5b50505f9081526005602052604090206004015490565b5f8061174a83611701565b9050600281016117ad575f83815260086020526040902054806117805760405163079442c960e01b815260040160405180910390fd5b61178981611701565b9150600282016117ab5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600560205260408120600101548691600160c01b90910463ffffffff1690036117f35760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611825576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061185e57504263ffffffff168163ffffffff1611155b1561187c5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff1680158015906118b457504263ffffffff168163ffffffff16115b156118d25760405163079994c560e31b815260040160405180910390fd5b8784805f036118f457604051635de374cf60e11b815260040160405180910390fd5b5f8281526005602052604081206006015490819003611943575f8381526005602052604090206007015482101561193e5760405163291784d560e01b815260040160405180910390fd5b61196e565b61194e81600261326a565b82101561196e576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119a7575f828152600560205260409020600601548110156119a75760405163f6631e6760e01b815260040160405180910390fd5b6119b089612598565b6001600160a01b038a166119d757604051630ca6549f60e11b815260040160405180910390fd5b6119e38d8d8c8c61268f565b6119ed8d8d612758565b50505050505050505050505050565b5f611a0683610841565b611a2357604051631f45e42760e11b815260040160405180910390fd5b5f8a878b604051602001611a39939291906132c2565b60408051601f1981840301815291815281516020928301205f87815260059093529120549091508114611a7f576040516349923ed160e11b815260040160405180910390fd5b5f848152600560205260409020600101546001600160a01b038a8116911614611abb5760405163611876b160e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff898116600160c01b9092041614611afb57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff888116600160a01b9092041614611b3b57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600560205260409020600701548514611b6b57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b9a5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bed57611bb882610841565b611bd557604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bfe8e8e8e8e8e8e8e8d6113ef565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560059091528082206003908101548684529190922090910154919250611c4b9161320d565b5f828152600560205260408082206003908101939093558482528082209092018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f86815260056020819052604090912090810154600690910154611cd291908590859085612412565b611cef576040516303a479f160e11b815260040160405180910390fd5b5f868152600560205260408120600401548614611d0c5784611d0e565b815b9050611d1b8787836122f1565b50505050505050565b5f611d2e82612598565b5f888152600360205260408120549003611d5b5760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d71939291906132c2565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611da797969594939291906132fa565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611e06979695949392919061337e565b60405180910390a4611e1d81838a8a8a5f8a6127be565b9998505050505050505050565b5f858152600560205260408120600101548690600160c01b900463ffffffff168203611e695760405163a42db76b60e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611ea257504263ffffffff168163ffffffff1611155b15611ec05760405163372900d560e21b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590611ef857504263ffffffff168163ffffffff16115b15611f165760405163079994c560e31b815260040160405180910390fd5b5f89815260056020819052604090912001548851885181141580611f3b575080885114155b80611f47575080875114155b15611f56575f95505050611fbc565b5f5b81811015611fb457611f76838c83815181106108f8576108f86131e5565b611f85575f9650505050611fbc565b8a8181518110611f9757611f976131e5565b602002602001015192508080611fac90613252565b915050611f58565b506001955050505b50505095945050505050565b5f8181526005602052604090206001015481906001600160a01b0316331461200357604051634361661f60e11b815260040160405180910390fd5b5f82815260056020526040902060020154829060ff166120365760405163f476ed1160e01b815260040160405180910390fd5b5f83815260056020526040902060028101805460ff191690556001015461206a90600160c01b900463ffffffff16426133fa565b5f84815260056020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526005602052604090206001015483906001600160a01b0316331461210557604051634361661f60e11b815260040160405180910390fd5b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036121455760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615612177576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff1680158015906121b057504263ffffffff168163ffffffff1611155b156121ce5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061220657504263ffffffff168163ffffffff16115b156122245760405163079994c560e31b815260040160405180910390fd5b8685801561225d575f8281526005602052604090206006015481101561225d5760405163f6631e6760e01b815260040160405180910390fd5b5f89815260056020526040902060010154600160e01b900463ffffffff16612298576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260056020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526005602052604090206001015483906001600160a01b0316331461232c57604051634361661f60e11b815260040160405180910390fd5b5f84815260056020526040902060020154849060ff1661235f5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316612386576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600560205260408120600201805460ff191690556123d99086908690869061268f565b5f8581526005602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f60405160200161242c959493929190613417565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612509576001600160a01b0386166124c6575f8981526005602052604090206003015494955085941580159061248c57506001198814155b156124c1575f898152600560205260409020600301546124af908a908890612518565b5f898152600560205260408120600301555b612509565b856001600160a01b0316856001600160a01b031614612509575f848810156124ee57876124f0565b845b90506125018a88610aad848c61323f565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526001602052604090205461253b90829061320d565b6001600160a01b0383165f818152600160205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061258b9085815260200190565b60405180910390a3505050565b805f036125a25750565b335f9081526001602052604090205480156125f7578181106125db576125c8828261323f565b335f908152600160205260409020555050565b6125e5818361323f565b335f9081526001602052604081205591505b5f546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af115801561264a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266e9190613281565b61268b57604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526005602081815260408084209092015491516126b89291879186918891879101613417565b6040516020818303038152906040528051906020012090505f8211156126ec575f8581526005602052604090206006018290555b5f858152600560208181526040808420909201849055815187815290810184905290810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c91565b5f828152600560205260409020600481018290556001015461278790600160c01b900463ffffffff16426133fa565b5f92835260056020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600560205260409020600101548790600160c01b900463ffffffff16156127ff576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036128255760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061284f57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906128715750336001600160a01b03881614155b156128f9576001600160a01b0387165f90815260076020526040902054808210156128af5760405163d72564c760e01b815260040160405180910390fd5b6128b9818361323f565b6001600160a01b0389165f908152600160205260409020549092506128df90829061320d565b6001600160a01b0389165f90815260016020526040902055505b5f898152600560205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156129a5575f89815260056020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129fb575f89815260056020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129f29087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612a16575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a5957612a59612a1d565b604052919050565b5f6001600160401b03821115612a7957612a79612a1d565b5060051b60200190565b5f82601f830112612a92575f80fd5b81356020612aa7612aa283612a61565b612a31565b82815260059290921b84018101918181019086841115612ac5575f80fd5b8286015b84811015612ae05780358352918301918301612ac9565b509695505050505050565b6001600160a01b0381168114612aff575f80fd5b50565b5f82601f830112612b11575f80fd5b81356020612b21612aa283612a61565b82815260059290921b84018101918181019086841115612b3f575f80fd5b8286015b84811015612ae0578035612b5681612aeb565b8352918301918301612b43565b5f805f805f60a08688031215612b77575f80fd5b8535945060208601356001600160401b0380821115612b94575f80fd5b612ba089838a01612a83565b95506040880135915080821115612bb5575f80fd5b612bc189838a01612b02565b94506060880135915080821115612bd6575f80fd5b612be289838a01612a83565b93506080880135915080821115612bf7575f80fd5b50612c0488828901612a83565b9150509295509295909350565b5f8060408385031215612c22575f80fd5b50508035926020909101359150565b803563ffffffff811681146116e1575f80fd5b5f805f805f60a08688031215612c58575f80fd5b85359450602086013593506040860135612c7181612aeb565b9250612c7f60608701612c31565b949793965091946080013592915050565b5f60208284031215612ca0575f80fd5b813561164581612aeb565b5f805f805f8060c08789031215612cc0575f80fd5b86356001600160401b0380821115612cd6575f80fd5b612ce28a838b01612a83565b97506020890135915080821115612cf7575f80fd5b612d038a838b01612a83565b96506040890135915080821115612d18575f80fd5b612d248a838b01612a83565b95506060890135915080821115612d39575f80fd5b612d458a838b01612b02565b94506080890135915080821115612d5a575f80fd5b612d668a838b01612a83565b935060a0890135915080821115612d7b575f80fd5b50612d8889828a01612a83565b9150509295509295509295565b5f805f8060808587031215612da8575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612dd3575f80fd5b81356001600160401b03811115612dec57612dec612a1d565b612dff601f8201601f1916602001612a31565b818152846020838601011115612e13575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e47575f80fd5b8835975060208901356001600160401b03811115612e63575f80fd5b612e6f8b828c01612dc4565b9750506040890135612e8081612aeb565b9550612e8e60608a01612c31565b9450612e9c60808a01612c31565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612ed3575f80fd5b8635955060208701356001600160401b03811115612eef575f80fd5b612efb89828a01612dc4565b9550506040870135612f0c81612aeb565b9350612f1a60608801612c31565b9250612f2860808801612c31565b915060a087013590509295509295509295565b5f60208284031215612f4b575f80fd5b81356001600160401b03811115612f60575f80fd5b612f6c84828501612dc4565b949350505050565b5f805f805f8060c08789031215612f89575f80fd5b86356001600160401b0380821115612f9f575f80fd5b612fab8a838b01612dc4565b97506020890135915080821115612fc0575f80fd5b50612efb89828a01612dc4565b5f805f805f60a08688031215612fe1575f80fd5b8535945060208601359350604086013592506060860135612c7f81612aeb565b5f805f805f805f805f6101208a8c03121561301a575f80fd5b8935985060208a01356001600160401b03811115613036575f80fd5b6130428c828d01612dc4565b98505060408a013561305381612aeb565b965061306160608b01612c31565b955061306f60808b01612c31565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c087890312156130ae575f80fd5b863595506020870135945060408701356130c781612aeb565b9350606087013592506080870135915060a08701356130e581612aeb565b809150509295509295509295565b5f805f805f805f60e0888a031215613109575f80fd5b8735965060208801356001600160401b03811115613125575f80fd5b6131318a828b01612dc4565b965050604088013561314281612aeb565b945061315060608901612c31565b935061315e60808901612c31565b925060a0880135915060c0880135905092959891949750929550565b5f805f6060848603121561318c575f80fd5b83359250602084013561319e81612aeb565b929592945050506040919091013590565b5f805f606084860312156131c1575f80fd5b833592506020840135915060408401356131da81612aeb565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117ad576117ad6131f9565b5f8261323a57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117ad576117ad6131f9565b5f60018201613263576132636131f9565b5060010190565b80820281158282048414176117ad576117ad6131f9565b5f60208284031215613291575f80fd5b81518015158114611645575f80fd5b5f5b838110156132ba5781810151838201526020016132a2565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516132eb8160248501602087016132a0565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f815180845261336a8160208601602086016132a0565b601f01601f19169290920160200192915050565b87815260e060208201525f61339660e0830189613353565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516133de8184602087016132a0565b9190910192915050565b602081525f6116456020830184613353565b63ffffffff8181168382160190808211156117ab576117ab6131f9565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122026b940a4813a437db7d37b04f3e13ae10108654080161147d66744d2ac42e3f464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f60025534801562000014575f80fd5b50620000396040518060600160405280603f81526020016200351d603f9139620000d4565b506200005e6040518060800160405280604f8152602001620035f9604f9139620000d4565b50620000836040518060800160405280605a81526020016200359f605a9139620000d4565b50620000a86040518060800160405280605c8152602001620034c1605c9139620000d4565b50620000cd6040518060800160405280604381526020016200355c60439139620000d4565b506200020d565b6002545f81815260036020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60025592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b6132a6806200021b5f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bc525652116100bf578063d4876b9f11610084578063d4876b9f146107a3578063e83bfb58146107b6578063ebbdd2b0146107d8578063f6a94ecb146107eb578063fc0c546a146107fe578063fe92049d14610810575f80fd5b8063bc5256521461073f578063bf53b1881461075e578063c081d8a314610771578063d09cc57e146106d7578063d44e293c14610790575f80fd5b80639f1025c6116101105780639f1025c614610695578063a1130d04146106c4578063a462fb7b146106d7578063ab5a4e35146106ea578063acae8f4e146106fd578063b8eaa9801461072c575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610651575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042e5780636fa427421461048b57806370a08231146104aa578063762c38fd146104c95780637f8d429e146104dc57806382ffa9f7146104ef575f80fd5b8063484c0714146103a85780634df6ca2a146103ca5780634e60f883146103dd57806351577ea9146103fc57806352debac31461041b575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031557806326d6c97b1461035857806328828b1e1461037a5780632f998a6f1461038d5780633ccfd60b146103a0575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d366004612824565b610823565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612981565b610837565b005b6102aa6102ba366004612a2f565b610ac3565b6102d26102cd366004612a62565b610c67565b60405190815260200161028e565b6102aa6102ee366004612aae565b610d85565b6102d2610301366004612824565b5f9081526005602052604090206003015490565b610340610323366004612824565b5f908152600560205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d2610366366004612824565b5f9081526005602052604090206006015490565b6102aa610388366004612ac9565b610dcf565b6102aa61039b366004612bb3565b61107f565b6102aa6112a0565b6102d26103b6366004612824565b5f9081526005602052604090206007015490565b6102aa6103d8366004612824565b611369565b6102d26103eb366004612824565b60046020525f908152604090205481565b6102d261040a366004612824565b5f9081526005602052604090205490565b6102d2610429366004612c4d565b6113b6565b61046661043c366004612824565b60066020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d2610499366004612aae565b60076020525f908152604090205481565b6102d26104b8366004612aae565b60016020525f908152604090205481565b6102d26104d7366004612cdc565b6114bd565b6102826104ea366004612824565b6115b8565b6102d26104fd366004612824565b5f908152600560208190526040909120015490565b6102d2610520366004612d59565b611613565b6102d2610533366004612824565b5f9081526005602052604090206004015490565b610282610555366004612824565b5f9081526005602052604090206002015460ff1690565b6105ea61057a366004612824565b600560208190525f91825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff16949391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b61068061065f366004612824565b5f90815260056020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106806106a3366004612824565b5f90815260056020526040902060010154600160c01b900463ffffffff1690565b6102d26106d2366004612d92565b6116ad565b6102d26106e5366004612824565b6116c8565b6102d26106f8366004612824565b611706565b61068061070b366004612824565b5f90815260056020526040902060010154600160e01b900463ffffffff1690565b6102aa61073a366004612deb565b61177a565b6102d261074d366004612824565b60036020525f908152604090205481565b6102d261076c366004612e1f565b6119c3565b6102d261077f366004612824565b60086020525f908152604090205481565b6102aa61079e366004612eb7565b611c70565b6102d26107b1366004612f11565b611cce565b6102826107c4366004612824565b60096020525f908152604090205460ff1681565b6102aa6107e6366004612824565b611dd4565b6102aa6107f9366004612f98565b611ed6565b5f54610340906001600160a01b031681565b6102aa61081e366004612fcd565b6120fd565b5f600119610830836116c8565b1492915050565b84610841816115b8565b61085e57604051636030e5f560e11b815260040160405180910390fd5b84515f0361087f576040516312fdb46960e31b815260040160405180910390fd5b5f8681526006602090815260408083208054600190910154600593849052918420928301546004909301546001600160a01b0390911693919290825b8a51811015610a2157610935838c83815181106108da576108da613003565b60200260200101518a84815181106108f4576108f4613003565b60200260200101518c858151811061090e5761090e613003565b60200260200101518e868151811061092857610928613003565b602002602001015161221f565b61093f858561302b565b935061099b8c8386898e868151811061095a5761095a613003565b60200260200101518e878151811061097457610974613003565b60200260200101518e888151811061098e5761098e613003565b602002602001015161226d565b80975081955050508881815181106109b5576109b5613003565b6020026020010151945060055f8d81526020019081526020015f206006015485146109f2576109e560288661303e565b6109ef908661305d565b94505b8a8181518110610a0457610a04613003565b602002602001015192508080610a1990613070565b9150506108bb565b8215610a6557610a328c8786612336565b5f8c815260066020526040812080546001600160a01b0319166001600160a01b0389161781556001018690559350610aa0565b610a798c87610a74888861302b565b612336565b5f8c815260066020526040812080546001600160a01b031916815560018101829055600201555b50505f998a52600560208190526040909a20909901989098555050505050505050565b5f828152600560205260408120600101548391600160c01b90910463ffffffff169003610b035760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615610b35576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590610b6e57504263ffffffff168163ffffffff1611155b15610b8c5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590610bc457504263ffffffff168163ffffffff16115b15610be25760405163079994c560e31b815260040160405180910390fd5b610beb846123b6565b5f85815260056020526040902060030154610c0790859061302b565b5f868152600560205260409081902060030182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c5891899190918252602082015260400190565b60405180910390a35050505050565b5f85610c72816115b8565b610c8f57604051636030e5f560e11b815260040160405180910390fd5b5f878152600560205260409020548614610cbc57604051630763e45d60e41b815260040160405180910390fd5b5f878152600560205260409020600101546001600160a01b03868116911614610cf85760405163f089a18560e01b815260040160405180910390fd5b5f8781526005602052604090206001015463ffffffff600160c01b90910481169085161115610d3a57604051633f61762b60e01b815260040160405180910390fd5b5f87815260056020526040902060060154831115610d6b57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600560205250604090206004015490565b5f546001600160a01b031615610dae57604051635c4e8df160e11b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561106d575f888381518110610dee57610dee613003565b602002602001015190505f888481518110610e0b57610e0b613003565b602002602001015190505f816001600160401b03811115610e2e57610e2e61283b565b604051908082528060200260200182016040528015610e57578160200160208202803683370190505b5090505f826001600160401b03811115610e7357610e7361283b565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5090505f836001600160401b03811115610eb857610eb861283b565b604051908082528060200260200182016040528015610ee1578160200160208202803683370190505b5090505f846001600160401b03811115610efd57610efd61283b565b604051908082528060200260200182016040528015610f26578160200160208202803683370190505b5090505f5b85811015611046578c8881518110610f4557610f45613003565b6020026020010151858281518110610f5f57610f5f613003565b6020026020010181815250508b8881518110610f7d57610f7d613003565b6020026020010151848281518110610f9757610f97613003565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fc957610fc9613003565b6020026020010151838281518110610fe357610fe3613003565b60200260200101818152505089888151811061100157611001613003565b602002602001015182828151811061101b5761101b613003565b60209081029190910101528761103081613070565b985050808061103e90613070565b915050610f2b565b6110538786868686610837565b50505050505050818061106590613070565b925050610dd2565b6110756112a0565b5050505050505050565b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036110bf5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff16156110f1576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061112a57504263ffffffff168163ffffffff1611155b156111485760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061118057504263ffffffff168163ffffffff16115b1561119e5760405163079994c560e31b815260040160405180910390fd5b8684805f036111c057604051635de374cf60e11b815260040160405180910390fd5b5f828152600560205260408120600601549081900361120f575f8381526005602052604090206007015482101561120a5760405163291784d560e01b815260040160405180910390fd5b61123a565b61121a816002613088565b82101561123a576040516328eecafb60e21b815260040160405180910390fd5b89888015611273575f828152600560205260409020600601548110156112735760405163f6631e6760e01b815260040160405180910390fd5b61127c896123b6565b6112888c8c338c6124ad565b6112928c8c612576565b505050505050505050505050565b335f818152600160205260408082208054908390559154905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611305573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611329919061309f565b611331575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260076020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113c0826123b6565b5f8981526003602052604081205490036113ed5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a604051602001611403939291906130e0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016114399796959493929190613118565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e42604051611498979695949392919061319c565b60405180910390a46114af81838b8b8b8a8a6125dc565b9a9950505050505050505050565b5f8681526003602052604081205481036114ea5760405163bbbf712b60e01b815260040160405180910390fd5b5f878488604051602001611500939291906130e0565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016115369796959493929190613118565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c42604051611595979695949392919061319c565b60405180910390a46115ac81838989895f806125dc565b98975050505050505050565b5f8181526005602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156115f4575063ffffffff811615155b801561160c57504263ffffffff168163ffffffff1611155b9392505050565b6002545f81815260036020908152604080832043905551919291611639918591016131eb565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061168f908790613206565b60405180910390a36116a281600161302b565b60025590505b919050565b5f806116b888611613565b90506115ac8188888888886114bd565b5f816116d3816115b8565b6116f057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526005602052604090206004015490565b5f80611711836116c8565b905060028101611774575f83815260086020526040902054806117475760405163079442c960e01b815260040160405180910390fd5b611750816116c8565b9150600282016117725760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600560205260408120600101548691600160c01b90910463ffffffff1690036117ba5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff16156117ec576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061182557504263ffffffff168163ffffffff1611155b156118435760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061187b57504263ffffffff168163ffffffff16115b156118995760405163079994c560e31b815260040160405180910390fd5b8784805f036118bb57604051635de374cf60e11b815260040160405180910390fd5b5f828152600560205260408120600601549081900361190a575f838152600560205260409020600701548210156119055760405163291784d560e01b815260040160405180910390fd5b611935565b611915816002613088565b821015611935576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196e575f8281526005602052604090206006015481101561196e5760405163f6631e6760e01b815260040160405180910390fd5b611977896123b6565b6001600160a01b038a1661199e57604051630ca6549f60e11b815260040160405180910390fd5b6119aa8d8d8c8c6124ad565b6119b48d8d612576565b50505050505050505050505050565b5f6119cd83610823565b6119ea57604051631f45e42760e11b815260040160405180910390fd5b5f8a878b604051602001611a00939291906130e0565b60408051601f1981840301815291815281516020928301205f87815260059093529120549091508114611a46576040516349923ed160e11b815260040160405180910390fd5b5f848152600560205260409020600101546001600160a01b038a8116911614611a825760405163611876b160e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff898116600160c01b9092041614611ac257604051635f4c19f760e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff888116600160a01b9092041614611b0257604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600560205260409020600701548514611b3257604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b615760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb457611b7f82610823565b611b9c57604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc58e8e8e8e8e8e8e8d6113b6565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560059091528082206003908101548684529190922090910154919250611c129161302b565b5f828152600560205260408082206003908101939093558482528082209092018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f86815260056020819052604090912090810154600690910154611c999190859085908561221f565b5f868152600560205260408120600401548614611cb65784611cb8565b815b9050611cc58787836120fd565b50505050505050565b5f611cd8826123b6565b5f888152600360205260408120549003611d055760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d1b939291906130e0565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d519796959493929190613118565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611db0979695949392919061319c565b60405180910390a4611dc781838a8a8a5f8a6125dc565b9998505050505050505050565b5f8181526005602052604090206001015481906001600160a01b03163314611e0f57604051634361661f60e11b815260040160405180910390fd5b5f82815260056020526040902060020154829060ff16611e425760405163f476ed1160e01b815260040160405180910390fd5b5f83815260056020526040902060028101805460ff1916905560010154611e7690600160c01b900463ffffffff1642613218565b5f84815260056020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526005602052604090206001015483906001600160a01b03163314611f1157604051634361661f60e11b815260040160405180910390fd5b5f848152600560205260408120600101548591600160c01b90910463ffffffff169003611f515760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611f83576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611fbc57504263ffffffff168163ffffffff1611155b15611fda5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061201257504263ffffffff168163ffffffff16115b156120305760405163079994c560e31b815260040160405180910390fd5b86858015612069575f828152600560205260409020600601548110156120695760405163f6631e6760e01b815260040160405180910390fd5b5f89815260056020526040902060010154600160e01b900463ffffffff166120a4576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260056020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526005602052604090206001015483906001600160a01b0316331461213857604051634361661f60e11b815260040160405180910390fd5b5f84815260056020526040902060020154849060ff1661216b5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316612192576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600560205260408120600201805460ff191690556121e5908690869086906124ad565b5f8581526005602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555b5050505050565b838383835f604051602001612238959493929190613235565b604051602081830303815290604052805190602001208514612218576040516303a479f160e11b815260040160405180910390fd5b5f80878303612327576001600160a01b0386166122e4578495506001195f1b88141580156122aa57505f8981526005602052604090206003015415155b156122df575f898152600560205260409020600301546122cd908a908890612336565b5f898152600560205260408120600301555b612327565b856001600160a01b0316856001600160a01b031614612327575f8488101561230c578761230e565b845b905061231f8a88610a74848c61305d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526001602052604090205461235990829061302b565b6001600160a01b0383165f818152600160205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123a99085815260200190565b60405180910390a3505050565b805f036123c05750565b335f908152600160205260409020548015612415578181106123f9576123e6828261305d565b335f908152600160205260409020555050565b612403818361305d565b335f9081526001602052604081205591505b5f546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612468573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248c919061309f565b6124a957604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526005602081815260408084209092015491516124d69291879186918891879101613235565b6040516020818303038152906040528051906020012090505f82111561250a575f8581526005602052604090206006018290555b5f858152600560208181526040808420909201849055815187815290810184905290810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c58565b5f82815260056020526040902060048101829055600101546125a590600160c01b900463ffffffff1642613218565b5f92835260056020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600560205260409020600101548790600160c01b900463ffffffff161561261d576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126435760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061266d57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061268f5750336001600160a01b03881614155b15612717576001600160a01b0387165f90815260076020526040902054808210156126cd5760405163d72564c760e01b815260040160405180910390fd5b6126d7818361305d565b6001600160a01b0389165f908152600160205260409020549092506126fd90829061302b565b6001600160a01b0389165f90815260016020526040902055505b5f898152600560205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127c3575f89815260056020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612819575f89815260056020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128109087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612834575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128775761287761283b565b604052919050565b5f6001600160401b038211156128975761289761283b565b5060051b60200190565b5f82601f8301126128b0575f80fd5b813560206128c56128c08361287f565b61284f565b82815260059290921b840181019181810190868411156128e3575f80fd5b8286015b848110156128fe57803583529183019183016128e7565b509695505050505050565b6001600160a01b038116811461291d575f80fd5b50565b5f82601f83011261292f575f80fd5b8135602061293f6128c08361287f565b82815260059290921b8401810191818101908684111561295d575f80fd5b8286015b848110156128fe57803561297481612909565b8352918301918301612961565b5f805f805f60a08688031215612995575f80fd5b8535945060208601356001600160401b03808211156129b2575f80fd5b6129be89838a016128a1565b955060408801359150808211156129d3575f80fd5b6129df89838a01612920565b945060608801359150808211156129f4575f80fd5b612a0089838a016128a1565b93506080880135915080821115612a15575f80fd5b50612a22888289016128a1565b9150509295509295909350565b5f8060408385031215612a40575f80fd5b50508035926020909101359150565b803563ffffffff811681146116a8575f80fd5b5f805f805f60a08688031215612a76575f80fd5b85359450602086013593506040860135612a8f81612909565b9250612a9d60608701612a4f565b949793965091946080013592915050565b5f60208284031215612abe575f80fd5b813561160c81612909565b5f805f805f8060c08789031215612ade575f80fd5b86356001600160401b0380821115612af4575f80fd5b612b008a838b016128a1565b97506020890135915080821115612b15575f80fd5b612b218a838b016128a1565b96506040890135915080821115612b36575f80fd5b612b428a838b016128a1565b95506060890135915080821115612b57575f80fd5b612b638a838b01612920565b94506080890135915080821115612b78575f80fd5b612b848a838b016128a1565b935060a0890135915080821115612b99575f80fd5b50612ba689828a016128a1565b9150509295509295509295565b5f805f8060808587031215612bc6575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612bf1575f80fd5b81356001600160401b03811115612c0a57612c0a61283b565b612c1d601f8201601f191660200161284f565b818152846020838601011115612c31575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612c65575f80fd5b8835975060208901356001600160401b03811115612c81575f80fd5b612c8d8b828c01612be2565b9750506040890135612c9e81612909565b9550612cac60608a01612a4f565b9450612cba60808a01612a4f565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612cf1575f80fd5b8635955060208701356001600160401b03811115612d0d575f80fd5b612d1989828a01612be2565b9550506040870135612d2a81612909565b9350612d3860608801612a4f565b9250612d4660808801612a4f565b915060a087013590509295509295509295565b5f60208284031215612d69575f80fd5b81356001600160401b03811115612d7e575f80fd5b612d8a84828501612be2565b949350505050565b5f805f805f8060c08789031215612da7575f80fd5b86356001600160401b0380821115612dbd575f80fd5b612dc98a838b01612be2565b97506020890135915080821115612dde575f80fd5b50612d1989828a01612be2565b5f805f805f60a08688031215612dff575f80fd5b8535945060208601359350604086013592506060860135612a9d81612909565b5f805f805f805f805f6101208a8c031215612e38575f80fd5b8935985060208a01356001600160401b03811115612e54575f80fd5b612e608c828d01612be2565b98505060408a0135612e7181612909565b9650612e7f60608b01612a4f565b9550612e8d60808b01612a4f565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c08789031215612ecc575f80fd5b86359550602087013594506040870135612ee581612909565b9350606087013592506080870135915060a0870135612f0381612909565b809150509295509295509295565b5f805f805f805f60e0888a031215612f27575f80fd5b8735965060208801356001600160401b03811115612f43575f80fd5b612f4f8a828b01612be2565b9650506040880135612f6081612909565b9450612f6e60608901612a4f565b9350612f7c60808901612a4f565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612faa575f80fd5b833592506020840135612fbc81612909565b929592945050506040919091013590565b5f805f60608486031215612fdf575f80fd5b83359250602084013591506040840135612ff881612909565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561177457611774613017565b5f8261305857634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561177457611774613017565b5f6001820161308157613081613017565b5060010190565b808202811582820484141761177457611774613017565b5f602082840312156130af575f80fd5b8151801515811461160c575f80fd5b5f5b838110156130d85781810151838201526020016130c0565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516131098160248501602087016130be565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526131888160208601602086016130be565b601f01601f19169290920160200192915050565b87815260e060208201525f6131b460e0830189613171565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131fc8184602087016130be565b9190910192915050565b602081525f61160c6020830184613171565b63ffffffff81811683821601908082111561177257611772613017565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220859772f01ab854470f66ccb87c390a84bc2b4d0464ee26ebd1a6c489567e9b6a64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f60025534801562000014575f80fd5b50620000396040518060600160405280603f81526020016200328a603f9139620000d4565b506200005e6040518060800160405280604f815260200162003366604f9139620000d4565b50620000836040518060800160405280605a81526020016200330c605a9139620000d4565b50620000a86040518060800160405280605c81526020016200322e605c9139620000d4565b50620000cd604051806080016040528060438152602001620032c960439139620000d4565b506200020d565b6002545f81815260036020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60025592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613013806200021b5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c806382ffa9f711610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610732578063ebbdd2b014610745578063f6a94ecb14610758578063fc0c546a1461076b578063fe92049d1461077d575f80fd5b8063b8eaa980146106da578063bc525652146106ed578063d09cc57e14610698578063d44e293c1461070c578063d4876b9f1461071f575f80fd5b80639e63fa6a116100fa5780639e63fa6a146106125780639f1025c614610656578063a1130d0414610685578063a462fb7b14610698578063acae8f4e146106ab575f80fd5b806382ffa9f7146104b057806383bf4609146104d35780638d552d46146104e6578063924532fb1461050857806395addb901461052d575f80fd5b8063484c0714116101c1578063590158a711610186578063590158a7146103df5780636fa427421461043c57806370a082311461045b578063762c38fd1461047a5780637f8d429e1461048d575f80fd5b8063484c0714146103595780634df6ca2a1461037b5780634e60f8831461038e57806351577ea9146103ad57806352debac3146103cc575f80fd5b80632518904c116102075780632518904c146102c657806326d6c97b1461030957806328828b1e1461032b5780632f998a6f1461033e5780633ccfd60b14610351575f80fd5b80631101a0fd14610243578063128b7a471461025857806312a203c31461026b578063144fa6d7146102915780632417395c146102a4575b5f80fd5b610256610251366004612762565b610790565b005b610256610266366004612810565b610a37565b61027e610279366004612843565b610bdb565b6040519081526020015b60405180910390f35b61025661029f36600461288f565b610cf9565b61027e6102b23660046128aa565b5f9081526005602052604090206003015490565b6102f16102d43660046128aa565b5f908152600560205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610288565b61027e6103173660046128aa565b5f9081526005602052604090206006015490565b6102566103393660046128c1565b610d43565b61025661034c3660046129ab565b610ff3565b610256611214565b61027e6103673660046128aa565b5f9081526005602052604090206007015490565b6102566103893660046128aa565b6112dd565b61027e61039c3660046128aa565b60046020525f908152604090205481565b61027e6103bb3660046128aa565b5f9081526005602052604090205490565b61027e6103da366004612a45565b61132a565b6104176103ed3660046128aa565b60066020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610288565b61027e61044a36600461288f565b60076020525f908152604090205481565b61027e61046936600461288f565b60016020525f908152604090205481565b61027e610488366004612ad4565b611431565b6104a061049b3660046128aa565b61152c565b6040519015158152602001610288565b61027e6104be3660046128aa565b5f908152600560208190526040909120015490565b61027e6104e1366004612b51565b611587565b61027e6104f43660046128aa565b5f9081526005602052604090206004015490565b6104a06105163660046128aa565b5f9081526005602052604090206002015460ff1690565b6105ab61053b3660046128aa565b600560208190525f91825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff16949391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610288565b6106416106203660046128aa565b5f90815260056020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610288565b6106416106643660046128aa565b5f90815260056020526040902060010154600160c01b900463ffffffff1690565b61027e610693366004612b8a565b611621565b61027e6106a63660046128aa565b61163c565b6106416106b93660046128aa565b5f90815260056020526040902060010154600160e01b900463ffffffff1690565b6102566106e8366004612be3565b61167a565b61027e6106fb3660046128aa565b60036020525f908152604090205481565b61025661071a366004612c17565b6118c3565b61027e61072d366004612c71565b61193e565b6104a0610740366004612762565b611a44565b6102566107533660046128aa565b611be2565b610256610766366004612cf8565b611ce4565b5f546102f1906001600160a01b031681565b61025661078b366004612d2d565b611f0b565b8461079a8161152c565b6107b757604051636030e5f560e11b815260040160405180910390fd5b84515f036107d8576040516312fdb46960e31b815260040160405180910390fd5b5f8681526006602090815260408083208054600190910154600593849052918420928301546004909301546001600160a01b0390911693919290825b8a518110156109975761088e838c838151811061083357610833612d63565b60200260200101518a848151811061084d5761084d612d63565b60200260200101518c858151811061086757610867612d63565b60200260200101518e868151811061088157610881612d63565b602002602001015161202c565b6108ab576040516303a479f160e11b815260040160405180910390fd5b6108b58585612d8b565b93506109118c8386898e86815181106108d0576108d0612d63565b60200260200101518e87815181106108ea576108ea612d63565b60200260200101518e888151811061090457610904612d63565b6020026020010151612069565b809750819550505088818151811061092b5761092b612d63565b6020026020010151945060055f8d81526020019081526020015f206006015485146109685761095b602886612da4565b6109659086612dc3565b94505b8a818151811061097a5761097a612d63565b60200260200101519250808061098f90612dd6565b915050610814565b82156109d9576109a88c878661212e565b5f8c815260066020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a14565b6109ed8c876109e88888612d8b565b61212e565b5f8c815260066020526040812080546001600160a01b031916815560018101829055600201555b50505f998a52600560208190526040909a20909901989098555050505050505050565b5f828152600560205260408120600101548391600160c01b90910463ffffffff169003610a775760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615610aa9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590610ae257504263ffffffff168163ffffffff1611155b15610b005760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590610b3857504263ffffffff168163ffffffff16115b15610b565760405163079994c560e31b815260040160405180910390fd5b610b5f846121ae565b5f85815260056020526040902060030154610b7b908590612d8b565b5f868152600560205260409081902060030182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bcc91899190918252602082015260400190565b60405180910390a35050505050565b5f85610be68161152c565b610c0357604051636030e5f560e11b815260040160405180910390fd5b5f878152600560205260409020548614610c3057604051630763e45d60e41b815260040160405180910390fd5b5f878152600560205260409020600101546001600160a01b03868116911614610c6c5760405163f089a18560e01b815260040160405180910390fd5b5f8781526005602052604090206001015463ffffffff600160c01b90910481169085161115610cae57604051633f61762b60e01b815260040160405180910390fd5b5f87815260056020526040902060060154831115610cdf57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600560205250604090206004015490565b5f546001600160a01b031615610d2257604051635c4e8df160e11b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fe1575f888381518110610d6257610d62612d63565b602002602001015190505f888481518110610d7f57610d7f612d63565b602002602001015190505f816001600160401b03811115610da257610da261261c565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b5090505f826001600160401b03811115610de757610de761261c565b604051908082528060200260200182016040528015610e10578160200160208202803683370190505b5090505f836001600160401b03811115610e2c57610e2c61261c565b604051908082528060200260200182016040528015610e55578160200160208202803683370190505b5090505f846001600160401b03811115610e7157610e7161261c565b604051908082528060200260200182016040528015610e9a578160200160208202803683370190505b5090505f5b85811015610fba578c8881518110610eb957610eb9612d63565b6020026020010151858281518110610ed357610ed3612d63565b6020026020010181815250508b8881518110610ef157610ef1612d63565b6020026020010151848281518110610f0b57610f0b612d63565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f3d57610f3d612d63565b6020026020010151838281518110610f5757610f57612d63565b602002602001018181525050898881518110610f7557610f75612d63565b6020026020010151828281518110610f8f57610f8f612d63565b602090810291909101015287610fa481612dd6565b9850508080610fb290612dd6565b915050610e9f565b610fc78786868686610790565b505050505050508180610fd990612dd6565b925050610d46565b610fe9611214565b5050505050505050565b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036110335760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611065576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061109e57504263ffffffff168163ffffffff1611155b156110bc5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff1680158015906110f457504263ffffffff168163ffffffff16115b156111125760405163079994c560e31b815260040160405180910390fd5b8684805f0361113457604051635de374cf60e11b815260040160405180910390fd5b5f8281526005602052604081206006015490819003611183575f8381526005602052604090206007015482101561117e5760405163291784d560e01b815260040160405180910390fd5b6111ae565b61118e816002612dee565b8210156111ae576040516328eecafb60e21b815260040160405180910390fd5b898880156111e7575f828152600560205260409020600601548110156111e75760405163f6631e6760e01b815260040160405180910390fd5b6111f0896121ae565b6111fc8c8c338c6122a5565b6112068c8c61236e565b505050505050505050505050565b335f818152600160205260408082208054908390559154905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611279573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129d9190612e05565b6112a5575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260076020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f611334826121ae565b5f8981526003602052604081205490036113615760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161137793929190612e46565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113ad9796959493929190612e7e565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e4260405161140c9796959493929190612f02565b60405180910390a461142381838b8b8b8a8a6123d4565b9a9950505050505050505050565b5f86815260036020526040812054810361145e5760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161147493929190612e46565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114aa9796959493929190612e7e565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115099796959493929190612f02565b60405180910390a461152081838989895f806123d4565b98975050505050505050565b5f8181526005602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611568575063ffffffff811615155b801561158057504263ffffffff168163ffffffff1611155b9392505050565b6002545f818152600360209081526040808320439055519192916115ad91859101612f51565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611603908790612f6c565b60405180910390a3611616816001612d8b565b60025590505b919050565b5f8061162c88611587565b9050611520818888888888611431565b5f816116478161152c565b61166457604051636030e5f560e11b815260040160405180910390fd5b50505f9081526005602052604090206004015490565b5f858152600560205260408120600101548691600160c01b90910463ffffffff1690036116ba5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff16156116ec576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061172557504263ffffffff168163ffffffff1611155b156117435760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061177b57504263ffffffff168163ffffffff16115b156117995760405163079994c560e31b815260040160405180910390fd5b8784805f036117bb57604051635de374cf60e11b815260040160405180910390fd5b5f828152600560205260408120600601549081900361180a575f838152600560205260409020600701548210156118055760405163291784d560e01b815260040160405180910390fd5b611835565b611815816002612dee565b821015611835576040516328eecafb60e21b815260040160405180910390fd5b8a89801561186e575f8281526005602052604090206006015481101561186e5760405163f6631e6760e01b815260040160405180910390fd5b611877896121ae565b6001600160a01b038a1661189e57604051630ca6549f60e11b815260040160405180910390fd5b6118aa8d8d8c8c6122a5565b6118b48d8d61236e565b50505050505050505050505050565b5f868152600560208190526040909120908101546006909101546118ec9190859085908561202c565b611909576040516303a479f160e11b815260040160405180910390fd5b5f8681526005602052604081206004015486146119265784611928565b815b9050611935878783611f0b565b50505050505050565b5f611948826121ae565b5f8881526003602052604081205490036119755760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161198b93929190612e46565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119c19796959493929190612e7e565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611a209796959493929190612f02565b60405180910390a4611a3781838a8a8a5f8a6123d4565b9998505050505050505050565b5f858152600560205260408120600101548690600160c01b900463ffffffff168203611a835760405163a42db76b60e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611abc57504263ffffffff168163ffffffff1611155b15611ada5760405163372900d560e21b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590611b1257504263ffffffff168163ffffffff16115b15611b305760405163079994c560e31b815260040160405180910390fd5b5f89815260056020819052604090912001548851885181141580611b55575080885114155b80611b61575080875114155b15611b70575f95505050611bd6565b5f5b81811015611bce57611b90838c838151811061083357610833612d63565b611b9f575f9650505050611bd6565b8a8181518110611bb157611bb1612d63565b602002602001015192508080611bc690612dd6565b915050611b72565b506001955050505b50505095945050505050565b5f8181526005602052604090206001015481906001600160a01b03163314611c1d57604051634361661f60e11b815260040160405180910390fd5b5f82815260056020526040902060020154829060ff16611c505760405163f476ed1160e01b815260040160405180910390fd5b5f83815260056020526040902060028101805460ff1916905560010154611c8490600160c01b900463ffffffff1642612f7e565b5f84815260056020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526005602052604090206001015483906001600160a01b03163314611d1f57604051634361661f60e11b815260040160405180910390fd5b5f848152600560205260408120600101548591600160c01b90910463ffffffff169003611d5f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611d91576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611dca57504263ffffffff168163ffffffff1611155b15611de85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590611e2057504263ffffffff168163ffffffff16115b15611e3e5760405163079994c560e31b815260040160405180910390fd5b86858015611e77575f82815260056020526040902060060154811015611e775760405163f6631e6760e01b815260040160405180910390fd5b5f89815260056020526040902060010154600160e01b900463ffffffff16611eb2576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260056020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526005602052604090206001015483906001600160a01b03163314611f4657604051634361661f60e11b815260040160405180910390fd5b5f84815260056020526040902060020154849060ff16611f795760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611fa0576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600560205260408120600201805460ff19169055611ff3908690869086906122a5565b5f8581526005602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612046959493929190612fa2565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361211f576001600160a01b0386166120dc575f898152600560205260409020600301549495508594158015906120a2575060015b156120d7575f898152600560205260409020600301546120c5908a90889061212e565b5f898152600560205260408120600301555b61211f565b856001600160a01b0316856001600160a01b03161461211f575f848810156121045787612106565b845b90506121178a886109e8848c612dc3565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260016020526040902054612151908290612d8b565b6001600160a01b0383165f818152600160205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121a19085815260200190565b60405180910390a3505050565b805f036121b85750565b335f90815260016020526040902054801561220d578181106121f1576121de8282612dc3565b335f908152600160205260409020555050565b6121fb8183612dc3565b335f9081526001602052604081205591505b5f546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612260573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122849190612e05565b6122a157604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526005602081815260408084209092015491516122ce9291879186918891879101612fa2565b6040516020818303038152906040528051906020012090505f821115612302575f8581526005602052604090206006018290555b5f858152600560208181526040808420909201849055815187815290810184905290810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bcc565b5f828152600560205260409020600481018290556001015461239d90600160c01b900463ffffffff1642612f7e565b5f92835260056020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600560205260409020600101548790600160c01b900463ffffffff1615612415576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f0361243b5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061246557604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906124875750336001600160a01b03881614155b1561250f576001600160a01b0387165f90815260076020526040902054808210156124c55760405163d72564c760e01b815260040160405180910390fd5b6124cf8183612dc3565b6001600160a01b0389165f908152600160205260409020549092506124f5908290612d8b565b6001600160a01b0389165f90815260016020526040902055505b5f898152600560205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156125bb575f89815260056020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612611575f89815260056020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906126089087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156126585761265861261c565b604052919050565b5f6001600160401b038211156126785761267861261c565b5060051b60200190565b5f82601f830112612691575f80fd5b813560206126a66126a183612660565b612630565b82815260059290921b840181019181810190868411156126c4575f80fd5b8286015b848110156126df57803583529183019183016126c8565b509695505050505050565b6001600160a01b03811681146126fe575f80fd5b50565b5f82601f830112612710575f80fd5b813560206127206126a183612660565b82815260059290921b8401810191818101908684111561273e575f80fd5b8286015b848110156126df578035612755816126ea565b8352918301918301612742565b5f805f805f60a08688031215612776575f80fd5b8535945060208601356001600160401b0380821115612793575f80fd5b61279f89838a01612682565b955060408801359150808211156127b4575f80fd5b6127c089838a01612701565b945060608801359150808211156127d5575f80fd5b6127e189838a01612682565b935060808801359150808211156127f6575f80fd5b5061280388828901612682565b9150509295509295909350565b5f8060408385031215612821575f80fd5b50508035926020909101359150565b803563ffffffff8116811461161c575f80fd5b5f805f805f60a08688031215612857575f80fd5b85359450602086013593506040860135612870816126ea565b925061287e60608701612830565b949793965091946080013592915050565b5f6020828403121561289f575f80fd5b8135611580816126ea565b5f602082840312156128ba575f80fd5b5035919050565b5f805f805f8060c087890312156128d6575f80fd5b86356001600160401b03808211156128ec575f80fd5b6128f88a838b01612682565b9750602089013591508082111561290d575f80fd5b6129198a838b01612682565b9650604089013591508082111561292e575f80fd5b61293a8a838b01612682565b9550606089013591508082111561294f575f80fd5b61295b8a838b01612701565b94506080890135915080821115612970575f80fd5b61297c8a838b01612682565b935060a0890135915080821115612991575f80fd5b5061299e89828a01612682565b9150509295509295509295565b5f805f80608085870312156129be575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129e9575f80fd5b81356001600160401b03811115612a0257612a0261261c565b612a15601f8201601f1916602001612630565b818152846020838601011115612a29575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a5d575f80fd5b8835975060208901356001600160401b03811115612a79575f80fd5b612a858b828c016129da565b9750506040890135612a96816126ea565b9550612aa460608a01612830565b9450612ab260808a01612830565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612ae9575f80fd5b8635955060208701356001600160401b03811115612b05575f80fd5b612b1189828a016129da565b9550506040870135612b22816126ea565b9350612b3060608801612830565b9250612b3e60808801612830565b915060a087013590509295509295509295565b5f60208284031215612b61575f80fd5b81356001600160401b03811115612b76575f80fd5b612b82848285016129da565b949350505050565b5f805f805f8060c08789031215612b9f575f80fd5b86356001600160401b0380821115612bb5575f80fd5b612bc18a838b016129da565b97506020890135915080821115612bd6575f80fd5b50612b1189828a016129da565b5f805f805f60a08688031215612bf7575f80fd5b853594506020860135935060408601359250606086013561287e816126ea565b5f805f805f8060c08789031215612c2c575f80fd5b86359550602087013594506040870135612c45816126ea565b9350606087013592506080870135915060a0870135612c63816126ea565b809150509295509295509295565b5f805f805f805f60e0888a031215612c87575f80fd5b8735965060208801356001600160401b03811115612ca3575f80fd5b612caf8a828b016129da565b9650506040880135612cc0816126ea565b9450612cce60608901612830565b9350612cdc60808901612830565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612d0a575f80fd5b833592506020840135612d1c816126ea565b929592945050506040919091013590565b5f805f60608486031215612d3f575f80fd5b83359250602084013591506040840135612d58816126ea565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d9e57612d9e612d77565b92915050565b5f82612dbe57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d9e57612d9e612d77565b5f60018201612de757612de7612d77565b5060010190565b8082028115828204841417612d9e57612d9e612d77565b5f60208284031215612e15575f80fd5b81518015158114611580575f80fd5b5f5b83811015612e3e578181015183820152602001612e26565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612e6f816024850160208701612e24565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612eee816020860160208601612e24565b601f01601f19169290920160200192915050565b87815260e060208201525f612f1a60e0830189612ed7565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612f62818460208701612e24565b9190910192915050565b602081525f6115806020830184612ed7565b63ffffffff818116838216019080821115612f9b57612f9b612d77565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122052b008f47566f54698c0192913cdf875c5d5e0258206bc8b0cd5bd81eabe168964736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -73,7 +73,7 @@
73
73
  "network_name": "zkSync2-testnet"
74
74
  },
75
75
  "300": {
76
- "network_name": "zksync-era-sepolia"
76
+ "network_name": "zksync-sepolia"
77
77
  },
78
78
  "324": {
79
79
  "explorerURL": "https://explorer.zksync.io/",
@@ -28,7 +28,6 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
28
28
  );
29
29
  event LogNewTemplate(uint256 indexed template_id, address indexed user, string question_text);
30
30
  event LogNotifyOfArbitrationRequest(bytes32 indexed question_id, address indexed user);
31
- event LogReopenQuestion(bytes32 indexed question_id, bytes32 indexed reopened_question_id);
32
31
  event LogSetQuestionFee(address arbitrator, uint256 amount);
33
32
 
34
33
  struct Question {
@@ -79,16 +78,6 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
79
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);
80
79
  function createTemplateAndAskQuestion(string calldata content, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
81
80
  function fundAnswerBounty(bytes32 question_id) external payable;
82
- function reopenQuestion(
83
- uint256 template_id,
84
- string calldata question,
85
- address arbitrator,
86
- uint32 timeout,
87
- uint32 opening_ts,
88
- uint256 nonce,
89
- uint256 min_bond,
90
- bytes32 reopens_question_id
91
- ) external payable returns (bytes32);
92
81
  function submitAnswer(bytes32 question_id, bytes32 answer, uint256 max_previous) external payable;
93
82
  function submitAnswerFor(bytes32 question_id, bytes32 answer, uint256 max_previous, address answerer) external payable;
94
83
  function arbitrator_question_fees(address) external view returns (uint256);
@@ -106,7 +95,6 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
106
95
  function getTimeout(bytes32 question_id) external view returns (uint32);
107
96
  function isFinalized(bytes32 question_id) external view returns (bool);
108
97
  function isPendingArbitration(bytes32 question_id) external view returns (bool);
109
- function isSettledTooSoon(bytes32 question_id) external view returns (bool);
110
98
  function question_claims(bytes32) external view returns (address payee, uint256 last_bond, uint256 queued_funds);
111
99
  function questions(
112
100
  bytes32
@@ -126,10 +114,7 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
126
114
  uint256 bond,
127
115
  uint256 min_bond
128
116
  );
129
- function reopened_questions(bytes32) external view returns (bytes32);
130
- function reopener_questions(bytes32) external view returns (bool);
131
117
  function resultFor(bytes32 question_id) external view returns (bytes32);
132
- function resultForOnceSettled(bytes32 question_id) external view returns (bytes32);
133
118
  function template_hashes(uint256) external view returns (bytes32);
134
119
  function templates(uint256) external view returns (uint256);
135
120
  }
@@ -30,7 +30,6 @@ interface IRealityETHCore_ERC20 is IBalanceHolder_ERC20, IRealityETHErrors_ERC20
30
30
  );
31
31
  event LogNewTemplate(uint256 indexed template_id, address indexed user, string question_text);
32
32
  event LogNotifyOfArbitrationRequest(bytes32 indexed question_id, address indexed user);
33
- event LogReopenQuestion(bytes32 indexed question_id, bytes32 indexed reopened_question_id);
34
33
  event LogSetQuestionFee(address arbitrator, uint256 amount);
35
34
 
36
35
  struct Question {
@@ -89,17 +88,6 @@ interface IRealityETHCore_ERC20 is IBalanceHolder_ERC20, IRealityETHErrors_ERC20
89
88
  function createTemplateAndAskQuestion(string calldata content, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external returns (bytes32);
90
89
  function fundAnswerBountyERC20(bytes32 question_id, uint256 tokens) external;
91
90
  function notifyOfArbitrationRequest(bytes32 question_id, address requester, uint256 max_previous) external;
92
- function reopenQuestionERC20(
93
- uint256 template_id,
94
- string calldata question,
95
- address arbitrator,
96
- uint32 timeout,
97
- uint32 opening_ts,
98
- uint256 nonce,
99
- uint256 min_bond,
100
- bytes32 reopens_question_id,
101
- uint256 tokens
102
- ) external returns (bytes32);
103
91
  function setQuestionFee(uint256 fee) external;
104
92
  function setToken(IERC20 _token) external;
105
93
  function submitAnswerByArbitrator(bytes32 question_id, bytes32 answer, address answerer) external;
@@ -120,7 +108,6 @@ interface IRealityETHCore_ERC20 is IBalanceHolder_ERC20, IRealityETHErrors_ERC20
120
108
  function getTimeout(bytes32 question_id) external view returns (uint32);
121
109
  function isFinalized(bytes32 question_id) external view returns (bool);
122
110
  function isPendingArbitration(bytes32 question_id) external view returns (bool);
123
- function isSettledTooSoon(bytes32 question_id) external view returns (bool);
124
111
  function question_claims(bytes32) external view returns (address payee, uint256 last_bond, uint256 queued_funds);
125
112
  function questions(
126
113
  bytes32
@@ -140,10 +127,7 @@ interface IRealityETHCore_ERC20 is IBalanceHolder_ERC20, IRealityETHErrors_ERC20
140
127
  uint256 bond,
141
128
  uint256 min_bond
142
129
  );
143
- function reopened_questions(bytes32) external view returns (bytes32);
144
- function reopener_questions(bytes32) external view returns (bool);
145
130
  function resultFor(bytes32 question_id) external view returns (bytes32);
146
- function resultForOnceSettled(bytes32 question_id) external view returns (bytes32);
147
131
  function template_hashes(uint256) external view returns (bytes32);
148
132
  function templates(uint256) external view returns (uint256);
149
133
  }
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: GPL-3.0-only
2
+
3
+ pragma solidity 0.8.20;
4
+
5
+ // These functions were removed added to reality.eth in version 4.
6
+ interface IRealityETHHistoryVerification {
7
+ function isHistoryOfUnfinalizedQuestionValid(bytes32 question_id, bytes32[] memory history_hashes, address[] memory addrs, uint256[] memory bonds, bytes32[] memory answers) external view returns (bool);
8
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: GPL-3.0-only
2
+
3
+ pragma solidity 0.8.20;
4
+
5
+ // These functions were removed from IRealityETH in version 4.
6
+ interface IRealityETHReopenable {
7
+ event LogReopenQuestion(bytes32 indexed question_id, bytes32 indexed reopened_question_id);
8
+ function isSettledTooSoon(bytes32 question_id) external view returns (bool);
9
+ function resultForOnceSettled(bytes32 question_id) external view returns (bytes32);
10
+ function reopened_questions(bytes32) external view returns (bytes32);
11
+ function reopener_questions(bytes32) external view returns (bool);
12
+ function reopenQuestion(
13
+ uint256 template_id,
14
+ string calldata question,
15
+ address arbitrator,
16
+ uint32 timeout,
17
+ uint32 opening_ts,
18
+ uint256 nonce,
19
+ uint256 min_bond,
20
+ bytes32 reopens_question_id
21
+ ) external payable returns (bytes32);
22
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: GPL-3.0-only
2
+
3
+ pragma solidity 0.8.20;
4
+
5
+ // These functions were removed from IRealityETH in version 4.
6
+ interface IRealityETHReopenable_ERC20 {
7
+ event LogReopenQuestion(bytes32 indexed question_id, bytes32 indexed reopened_question_id);
8
+ function isSettledTooSoon(bytes32 question_id) external view returns (bool);
9
+ function resultForOnceSettled(bytes32 question_id) external view returns (bytes32);
10
+ function reopened_questions(bytes32) external view returns (bytes32);
11
+ function reopener_questions(bytes32) external view returns (bool);
12
+ function reopenQuestionERC20(
13
+ uint256 template_id,
14
+ string calldata question,
15
+ address arbitrator,
16
+ uint32 timeout,
17
+ uint32 opening_ts,
18
+ uint256 nonce,
19
+ uint256 min_bond,
20
+ bytes32 reopens_question_id,
21
+ uint256 tokens
22
+ ) external returns (bytes32);
23
+ }