@vechain/vebetterdao-contracts
Version:
Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.
283 lines (282 loc) • 37 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "PassportEntityLogic",
"sourceName": "contracts/ve-better-passport/libraries/PassportEntityLogic.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "entity",
"type": "address"
}
],
"name": "AlreadyLinked",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "CannotLinkToSelf",
"type": "error"
},
{
"inputs": [],
"name": "CheckpointUnorderedInsertion",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "entity",
"type": "address"
}
],
"name": "DelegatedEntity",
"type": "error"
},
{
"inputs": [],
"name": "ECDSAInvalidSignature",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "ECDSAInvalidSignatureLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "ECDSAInvalidSignatureS",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSignature",
"type": "error"
},
{
"inputs": [],
"name": "MaxEntitiesPerPassportReached",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "NotLinked",
"type": "error"
},
{
"inputs": [],
"name": "OnlyOneLinkAllowed",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [],
"name": "SignatureExpired",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "UnauthorizedUser",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "entity",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "passport",
"type": "address"
}
],
"name": "LinkCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "entity",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "passport",
"type": "address"
}
],
"name": "LinkPending",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "entity",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "passport",
"type": "address"
}
],
"name": "LinkRemoved",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "entity",
"type": "address"
}
],
"name": "getPassportForEntity",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "entity",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getPassportForEntityAtTimepoint",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "entity",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isEntityInTimepoint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "passport",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isPassportInTimepoint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x611e6861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a25760003560e01c806270f93d146100a75780631332de46146100c957806315b75cf0146100e957806338d8d688146100fe578063467b99b6146101275780636e6a304c1461013a578063c791e9371461015d578063d1143f3a1461017d578063d2a98f8b1461019d578063e0b23db4146101bd578063e4325044146101dd575b600080fd5b8180156100b357600080fd5b506100c76100c2366004611bf1565b6101f0565b005b8180156100d557600080fd5b506100c76100e4366004611bf1565b6102e8565b8180156100f557600080fd5b506100c7610367565b61011161010c366004611c0c565b6103e1565b60405161011e9190611c36565b60405180910390f35b610111610135366004611bf1565b610432565b61014d610148366004611c0c565b61044f565b604051901515815260200161011e565b81801561016957600080fd5b506100c7610178366004611c60565b61045b565b81801561018957600080fd5b506100c7610198366004611bf1565b61058d565b8180156101a957600080fd5b506100c76101b8366004611d2a565b610650565b8180156101c957600080fd5b506100c76101d8366004611bf1565b610664565b61014d6101eb366004611c0c565b610732565b60006101fa610785565b90506000610207836107a9565b9050826001600160a01b0316816001600160a01b031603610246578260405163c6ac53df60e01b815260040161023d9190611c36565b60405180910390fd5b336001600160a01b038416148015906102685750336001600160a01b03821614155b15610288573360405163ea93ab6d60e01b815260040161023d9190611c36565b6001600160a01b038316600090815260178301602052604081206102ab916107f7565b6102b58382610818565b806001600160a01b0316836001600160a01b0316600080516020611e1383398151915260405160405180910390a3505050565b60006102f2610785565b6001600160a01b038084166000908152601c830160205260409020549192501680610332578260405163c6ac53df60e01b815260040161023d9190611c36565b6001600160a01b038116331461035d573360405163ea93ab6d60e01b815260040161023d9190611c36565b6102b583826109d0565b6000610371610785565b336000908152601c820160205260409020549091506001600160a01b0316806103af573360405163c6ac53df60e01b815260040161023d9190611c36565b6103b933826109d0565b6040516001600160a01b038216903390600080516020611e1383398151915290600090a35050565b6000806103ec610785565b90506104286104256103fd85610b78565b6001600160a01b038716600090815260178501602052604090209065ffffffffffff16610baf565b90565b9150505b92915050565b60008061043d610785565b9050610448836107a9565b9392505050565b60006104488383610c66565b6000610465610785565b90508242111561048857604051630819bdcd60e01b815260040160405180910390fd5b604080517f88708ceda20b7f681a1d0bcac82e8c12fa88a5ce30261f012fdb9ed1ddc63bae60208201526001600160a01b038616918101919091523360608201526080810184905260009060a00160405160208183030381529060405280519060200120905060006104f982610c92565b905060006105078286610cbf565b9050866001600160a01b0316816001600160a01b03161461053b57604051638baa579f60e01b815260040160405180910390fd5b6105453388610ce9565b601d8401543360009081526019860160205260409020541061057a5760405163aca3ff4360e01b815260040160405180910390fd5b6105848733610f0d565b50505050505050565b6000610597610785565b6001600160a01b038084166000908152601c8301602052604090205491925016806105d7578260405163c6ac53df60e01b815260040161023d9190611c36565b6001600160a01b0381163314610602573360405163ea93ab6d60e01b815260040161023d9190611c36565b601d820154336000908152601984016020526040902054106106375760405163aca3ff4360e01b815260040160405180910390fd5b61064183336109d0565b61064b8333610f0d565b505050565b600061065a610785565b601d019190915550565b600061066e610785565b905061067a8233610ce9565b6001600160a01b0382166000908152601b820160205260409020546106a0816001611d59565b336000818152601a850160209081526040808320949094556001600160a01b038716808352601b8701825284832080546001810182559084528284200180546001600160a01b03199081168617909155848452601c88019092528483208054909216811790915592517fa5ce3061f55dc6a6cb616713edbec99b638865accddbd58c83fd009e9ce920e79190a3505050565b60008061073d610785565b905061077361074b84610b78565b6001600160a01b038616600090815260178401602052604090209065ffffffffffff16610baf565b6001600160a01b031615949350505050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000806107b4610785565b6001600160a01b03841660009081526017820160205260408120919250906107df906104259061100f565b90506001600160a01b03811661044857509192915050565b610812610802611048565b839065ffffffffffff1683611057565b50505050565b6000610822610785565b6001600160a01b0380851660009081526018830160209081526040808320549387168352601985019091529020549192509061085f600183611d6c565b915061086c600182611d6c565b821461093a576001600160a01b03841660009081526019840160205260408120610897600184611d6c565b815481106108a7576108a7611d7f565b60009182526020808320909101546001600160a01b0388811684526019880190925260409092208054919092169250829190859081106108e9576108e9611d7f565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561091d836001611d59565b6001600160a01b0390911660009081526018850160205260409020555b6001600160a01b0384166000908152601984016020526040902080548061096357610963611d95565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038716825260188501815260408083208390556019860190915281206109b591611b9f565b6109bf8585611072565b6109c985856111ee565b5050505050565b60006109da610785565b6001600160a01b038085166000908152601a830160209081526040808320549387168352601b850190915290205491925090610a17600183611d6c565b9150610a24600182611d6c565b8214610af2576001600160a01b0384166000908152601b840160205260408120610a4f600184611d6c565b81548110610a5f57610a5f611d7f565b60009182526020808320909101546001600160a01b038881168452601b88019092526040909220805491909216925082919085908110610aa157610aa1611d7f565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055610ad5836001611d59565b6001600160a01b039091166000908152601a850160205260409020555b6001600160a01b0384166000908152601b840160205260409020805480610b1b57610b1b611d95565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03979097168752601a850182526040808820889055601c909501909152929094208054909216909155505050565b600065ffffffffffff821115610bab576040516306dfcc6560e41b8152603060048201526024810183905260440161023d565b5090565b815460009081816005811115610c0f576000610bca846112a8565b610bd49085611d6c565b6000888152602090209091508101546001600160601b039081169087161015610bff57809150610c0d565b610c0a816001611d59565b92505b505b6000610c1d87878585611390565b90508015610c5857610c4287610c34600184611d6c565b600091825260209091200190565b54600160601b90046001600160a01b0316610c5b565b60005b979650505050505050565b600080610c71610785565b9050610c7f61074b84610b78565b6001600160a01b03161515949350505050565b600061042c610c9f6113f4565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610ccf86866114d0565b925092509250610cdf828261151d565b5090949350505050565b6000610cf3610785565b6001600160a01b03831660009081526017820160205260409020909150610d199061100f565b6001600160a01b0316151580610d4857506001600160a01b0382166000908152601a8201602052604090205415155b15610d685781604051639546eb6360e01b815260040161023d9190611c36565b6001600160a01b03831660009081526017820160205260409020610d8b9061100f565b6001600160a01b0316151580610dbc57506001600160a01b038381166000908152601c830160205260409020541615155b15610ddc5782604051639546eb6360e01b815260040161023d9190611c36565b6001600160a01b0382166000908152601982016020526040902054151580610e1d57506001600160a01b0382166000908152601b8201602052604090205415155b15610e3d5782604051639546eb6360e01b815260040161023d9190611c36565b610e46826115da565b80610e6c57506001600160a01b0382811660009081526022830160205260409020541615155b15610e8c5781604051631cd13c0760e21b815260040161023d9190611c36565b610e958261161d565b80610eb957506001600160a01b038216600090815260218201602052604090205415155b15610ed95781604051631cd13c0760e21b815260040161023d9190611c36565b826001600160a01b0316826001600160a01b03160361064b57816040516305333f6f60e31b815260040161023d9190611c36565b6000610f17610785565b6001600160a01b03841660009081526017820160205260409020909150610f3e90836107f7565b6001600160a01b0382166000908152601982016020526040902054610f64816001611d59565b6001600160a01b03808616600081815260188601602090815260408083209590955592871681526019860183529283208054600181018255908452919092200180546001600160a01b0319169091179055610fbf848461164e565b610fc9848461177d565b826001600160a01b0316846001600160a01b03167ff644c2a6a740703067e9f00fb5a09444cd18cca01a19ce87915e934297a43fe260405160405180910390a350505050565b8054600090801561103f5761102983610c34600184611d6c565b54600160601b90046001600160a01b0316610448565b60009392505050565b600061105261182b565b905090565b600080611065858585611836565b915091505b935093915050565b600061107c610785565b6001600160a01b0380851660009081526023830160205260408082205492861682529020549192509081116110e0576001600160a01b0383166000908152602383016020526040812080548392906110d5908490611d6c565b909155506110fc9050565b6001600160a01b03831660009081526023830160205260408120555b6001600160a01b038416600090815260158301602090815260408083208054825181850281018501909352808352919290919083018282801561115e57602002820191906000526020600020905b81548152602001906001019080831161114a575b5050505050905060005b81518110156111e657600082828151811061118557611185611d7f565b602090810291909101810151600081815260268801835260408082206001600160a01b038c81168452945280822054938a16825281208054929450916111cc908490611d6c565b909155508291506111de905081611dab565b915050611168565b505050505050565b60006111f8610785565b90506000611205846119b5565b611210576000611213565b60015b60ff1690506000611223856119e5565b61122e576000611231565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b03168152602001908152602001600020600082825461126d9190611d6c565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d6c565b90915550505050505050565b6000816000036112ba57506000919050565b600060016112c784611a15565b901c6001901b905060018184816112e0576112e0611dc4565b048201901c905060018184816112f8576112f8611dc4565b048201901c9050600181848161131057611310611dc4565b048201901c9050600181848161132857611328611dc4565b048201901c9050600181848161134057611340611dc4565b048201901c9050600181848161135857611358611dc4565b048201901c9050600181848161137057611370611dc4565b048201901c90506104488182858161138a5761138a611dc4565b04611aa9565b60005b818310156113ec5760006113a78484611abf565b6000878152602090209091506001600160601b038616908201546001600160601b031611156113d8578092506113e6565b6113e3816001611d59565b93505b50611393565b509392505050565b6000611052604080518082018252601081526f159950995d1d195c94185cdcdc1bdc9d60821b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f2e1167722ba4707bd833f839bfc8410f076c665fd30232a942ca2721eca03b84818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b6000806000835160410361150a5760208401516040850151606086015160001a6114fc88828585611ada565b955095509550505050611516565b50508151600091506002905b9250925092565b600082600381111561153157611531611dda565b0361153a575050565b600182600381111561154e5761154e611dda565b0361156c5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561158057611580611dda565b036115a15760405163fce698f760e01b81526004810182905260240161023d565b60038260038111156115b5576115b5611dda565b036115d6576040516335e2f38360e21b81526004810182905260240161023d565b5050565b6000806115e5610785565b6001600160a01b0384166000908152601e82016020526040902090915061160b9061100f565b6001600160a01b031615159392505050565b600080611628610785565b6001600160a01b0384166000908152601f82016020526040902090915061160b9061100f565b6000611658610785565b6001600160a01b03808516600090815260238301602052604080822054928616825281208054939450919261168e908490611d59565b90915550506001600160a01b03831660009081526015820160209081526040808320805482518185028101850190935280835291929091908301828280156116f557602002820191906000526020600020905b8154815260200190600101908083116116e1575b5050505050905060005b81518110156109c957600082828151811061171c5761171c611d7f565b602090810291909101810151600081815260268701835260408082206001600160a01b038b8116845294528082205493891682528120805492945091611763908490611d59565b90915550829150611775905081611dab565b9150506116ff565b6000611787610785565b90506000611794846119b5565b61179f5760006117a2565b60015b60ff16905060006117b2856119e5565b6117bd5760006117c0565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b0316815260200190815260200160002060008282546117fc9190611d59565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d59565b600061105243610b78565b82546000908190801561195957600061185487610c34600185611d6c565b6040805180820190915290546001600160601b03808216808452600160601b9092046001600160a01b0316602084015291925090871610156118a957604051632520601d60e01b815260040160405180910390fd5b80516001600160601b038088169116036118f757846118cd88610c34600186611d6c565b80546001600160a01b0392909216600160601b026001600160601b03909216919091179055611949565b604080518082019091526001600160601b0380881682526001600160a01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160601b029216919091179101555b60200151925083915061106a9050565b5050604080518082019091526001600160601b0380851682526001600160a01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160601b02919093161792019190915590508161106a565b6000806119c0610785565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b6000806119f0610785565b6001600160a01b03909316600090815260069093016020525050604090205460ff1690565b600080608083901c15611a2a57608092831c92015b604083901c15611a3c57604092831c92015b602083901c15611a4e57602092831c92015b601083901c15611a6057601092831c92015b600883901c15611a7257600892831c92015b600483901c15611a8457600492831c92015b600283901c15611a9657600292831c92015b600183901c1561042c5760010192915050565b6000818310611ab85781610448565b5090919050565b6000611ace6002848418611df0565b61044890848416611d59565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115611b0b5750600091506003905082611b95565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b5f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b8b57506000925060019150829050611b95565b9250600091508190505b9450945094915050565b5080546000825590600052602060002090810190611bbd9190611bc0565b50565b5b80821115610bab5760008155600101611bc1565b80356001600160a01b0381168114611bec57600080fd5b919050565b600060208284031215611c0357600080fd5b61044882611bd5565b60008060408385031215611c1f57600080fd5b611c2883611bd5565b946020939093013593505050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611c7557600080fd5b611c7e84611bd5565b92506020840135915060408401356001600160401b0380821115611ca157600080fd5b818601915086601f830112611cb557600080fd5b813581811115611cc757611cc7611c4a565b604051601f8201601f19908116603f01168101908382118183101715611cef57611cef611c4a565b81604052828152896020848701011115611d0857600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600060208284031215611d3c57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042c5761042c611d43565b8181038181111561042c5761042c611d43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611dbd57611dbd611d43565b5060010190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082611e0d57634e487b7160e01b600052601260045260246000fd5b50049056fe916811490c3a0241b2088d3f6464fbfe3003b4bb42a760a720e893a81de60051a2646970667358221220cb1ce45d7274f941d1fac6a60682330c84d51055ce93079d0f34d76c570bdfe864736f6c63430008140033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100a25760003560e01c806270f93d146100a75780631332de46146100c957806315b75cf0146100e957806338d8d688146100fe578063467b99b6146101275780636e6a304c1461013a578063c791e9371461015d578063d1143f3a1461017d578063d2a98f8b1461019d578063e0b23db4146101bd578063e4325044146101dd575b600080fd5b8180156100b357600080fd5b506100c76100c2366004611bf1565b6101f0565b005b8180156100d557600080fd5b506100c76100e4366004611bf1565b6102e8565b8180156100f557600080fd5b506100c7610367565b61011161010c366004611c0c565b6103e1565b60405161011e9190611c36565b60405180910390f35b610111610135366004611bf1565b610432565b61014d610148366004611c0c565b61044f565b604051901515815260200161011e565b81801561016957600080fd5b506100c7610178366004611c60565b61045b565b81801561018957600080fd5b506100c7610198366004611bf1565b61058d565b8180156101a957600080fd5b506100c76101b8366004611d2a565b610650565b8180156101c957600080fd5b506100c76101d8366004611bf1565b610664565b61014d6101eb366004611c0c565b610732565b60006101fa610785565b90506000610207836107a9565b9050826001600160a01b0316816001600160a01b031603610246578260405163c6ac53df60e01b815260040161023d9190611c36565b60405180910390fd5b336001600160a01b038416148015906102685750336001600160a01b03821614155b15610288573360405163ea93ab6d60e01b815260040161023d9190611c36565b6001600160a01b038316600090815260178301602052604081206102ab916107f7565b6102b58382610818565b806001600160a01b0316836001600160a01b0316600080516020611e1383398151915260405160405180910390a3505050565b60006102f2610785565b6001600160a01b038084166000908152601c830160205260409020549192501680610332578260405163c6ac53df60e01b815260040161023d9190611c36565b6001600160a01b038116331461035d573360405163ea93ab6d60e01b815260040161023d9190611c36565b6102b583826109d0565b6000610371610785565b336000908152601c820160205260409020549091506001600160a01b0316806103af573360405163c6ac53df60e01b815260040161023d9190611c36565b6103b933826109d0565b6040516001600160a01b038216903390600080516020611e1383398151915290600090a35050565b6000806103ec610785565b90506104286104256103fd85610b78565b6001600160a01b038716600090815260178501602052604090209065ffffffffffff16610baf565b90565b9150505b92915050565b60008061043d610785565b9050610448836107a9565b9392505050565b60006104488383610c66565b6000610465610785565b90508242111561048857604051630819bdcd60e01b815260040160405180910390fd5b604080517f88708ceda20b7f681a1d0bcac82e8c12fa88a5ce30261f012fdb9ed1ddc63bae60208201526001600160a01b038616918101919091523360608201526080810184905260009060a00160405160208183030381529060405280519060200120905060006104f982610c92565b905060006105078286610cbf565b9050866001600160a01b0316816001600160a01b03161461053b57604051638baa579f60e01b815260040160405180910390fd5b6105453388610ce9565b601d8401543360009081526019860160205260409020541061057a5760405163aca3ff4360e01b815260040160405180910390fd5b6105848733610f0d565b50505050505050565b6000610597610785565b6001600160a01b038084166000908152601c8301602052604090205491925016806105d7578260405163c6ac53df60e01b815260040161023d9190611c36565b6001600160a01b0381163314610602573360405163ea93ab6d60e01b815260040161023d9190611c36565b601d820154336000908152601984016020526040902054106106375760405163aca3ff4360e01b815260040160405180910390fd5b61064183336109d0565b61064b8333610f0d565b505050565b600061065a610785565b601d019190915550565b600061066e610785565b905061067a8233610ce9565b6001600160a01b0382166000908152601b820160205260409020546106a0816001611d59565b336000818152601a850160209081526040808320949094556001600160a01b038716808352601b8701825284832080546001810182559084528284200180546001600160a01b03199081168617909155848452601c88019092528483208054909216811790915592517fa5ce3061f55dc6a6cb616713edbec99b638865accddbd58c83fd009e9ce920e79190a3505050565b60008061073d610785565b905061077361074b84610b78565b6001600160a01b038616600090815260178401602052604090209065ffffffffffff16610baf565b6001600160a01b031615949350505050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000806107b4610785565b6001600160a01b03841660009081526017820160205260408120919250906107df906104259061100f565b90506001600160a01b03811661044857509192915050565b610812610802611048565b839065ffffffffffff1683611057565b50505050565b6000610822610785565b6001600160a01b0380851660009081526018830160209081526040808320549387168352601985019091529020549192509061085f600183611d6c565b915061086c600182611d6c565b821461093a576001600160a01b03841660009081526019840160205260408120610897600184611d6c565b815481106108a7576108a7611d7f565b60009182526020808320909101546001600160a01b0388811684526019880190925260409092208054919092169250829190859081106108e9576108e9611d7f565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561091d836001611d59565b6001600160a01b0390911660009081526018850160205260409020555b6001600160a01b0384166000908152601984016020526040902080548061096357610963611d95565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038716825260188501815260408083208390556019860190915281206109b591611b9f565b6109bf8585611072565b6109c985856111ee565b5050505050565b60006109da610785565b6001600160a01b038085166000908152601a830160209081526040808320549387168352601b850190915290205491925090610a17600183611d6c565b9150610a24600182611d6c565b8214610af2576001600160a01b0384166000908152601b840160205260408120610a4f600184611d6c565b81548110610a5f57610a5f611d7f565b60009182526020808320909101546001600160a01b038881168452601b88019092526040909220805491909216925082919085908110610aa157610aa1611d7f565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055610ad5836001611d59565b6001600160a01b039091166000908152601a850160205260409020555b6001600160a01b0384166000908152601b840160205260409020805480610b1b57610b1b611d95565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03979097168752601a850182526040808820889055601c909501909152929094208054909216909155505050565b600065ffffffffffff821115610bab576040516306dfcc6560e41b8152603060048201526024810183905260440161023d565b5090565b815460009081816005811115610c0f576000610bca846112a8565b610bd49085611d6c565b6000888152602090209091508101546001600160601b039081169087161015610bff57809150610c0d565b610c0a816001611d59565b92505b505b6000610c1d87878585611390565b90508015610c5857610c4287610c34600184611d6c565b600091825260209091200190565b54600160601b90046001600160a01b0316610c5b565b60005b979650505050505050565b600080610c71610785565b9050610c7f61074b84610b78565b6001600160a01b03161515949350505050565b600061042c610c9f6113f4565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610ccf86866114d0565b925092509250610cdf828261151d565b5090949350505050565b6000610cf3610785565b6001600160a01b03831660009081526017820160205260409020909150610d199061100f565b6001600160a01b0316151580610d4857506001600160a01b0382166000908152601a8201602052604090205415155b15610d685781604051639546eb6360e01b815260040161023d9190611c36565b6001600160a01b03831660009081526017820160205260409020610d8b9061100f565b6001600160a01b0316151580610dbc57506001600160a01b038381166000908152601c830160205260409020541615155b15610ddc5782604051639546eb6360e01b815260040161023d9190611c36565b6001600160a01b0382166000908152601982016020526040902054151580610e1d57506001600160a01b0382166000908152601b8201602052604090205415155b15610e3d5782604051639546eb6360e01b815260040161023d9190611c36565b610e46826115da565b80610e6c57506001600160a01b0382811660009081526022830160205260409020541615155b15610e8c5781604051631cd13c0760e21b815260040161023d9190611c36565b610e958261161d565b80610eb957506001600160a01b038216600090815260218201602052604090205415155b15610ed95781604051631cd13c0760e21b815260040161023d9190611c36565b826001600160a01b0316826001600160a01b03160361064b57816040516305333f6f60e31b815260040161023d9190611c36565b6000610f17610785565b6001600160a01b03841660009081526017820160205260409020909150610f3e90836107f7565b6001600160a01b0382166000908152601982016020526040902054610f64816001611d59565b6001600160a01b03808616600081815260188601602090815260408083209590955592871681526019860183529283208054600181018255908452919092200180546001600160a01b0319169091179055610fbf848461164e565b610fc9848461177d565b826001600160a01b0316846001600160a01b03167ff644c2a6a740703067e9f00fb5a09444cd18cca01a19ce87915e934297a43fe260405160405180910390a350505050565b8054600090801561103f5761102983610c34600184611d6c565b54600160601b90046001600160a01b0316610448565b60009392505050565b600061105261182b565b905090565b600080611065858585611836565b915091505b935093915050565b600061107c610785565b6001600160a01b0380851660009081526023830160205260408082205492861682529020549192509081116110e0576001600160a01b0383166000908152602383016020526040812080548392906110d5908490611d6c565b909155506110fc9050565b6001600160a01b03831660009081526023830160205260408120555b6001600160a01b038416600090815260158301602090815260408083208054825181850281018501909352808352919290919083018282801561115e57602002820191906000526020600020905b81548152602001906001019080831161114a575b5050505050905060005b81518110156111e657600082828151811061118557611185611d7f565b602090810291909101810151600081815260268801835260408082206001600160a01b038c81168452945280822054938a16825281208054929450916111cc908490611d6c565b909155508291506111de905081611dab565b915050611168565b505050505050565b60006111f8610785565b90506000611205846119b5565b611210576000611213565b60015b60ff1690506000611223856119e5565b61122e576000611231565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b03168152602001908152602001600020600082825461126d9190611d6c565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d6c565b90915550505050505050565b6000816000036112ba57506000919050565b600060016112c784611a15565b901c6001901b905060018184816112e0576112e0611dc4565b048201901c905060018184816112f8576112f8611dc4565b048201901c9050600181848161131057611310611dc4565b048201901c9050600181848161132857611328611dc4565b048201901c9050600181848161134057611340611dc4565b048201901c9050600181848161135857611358611dc4565b048201901c9050600181848161137057611370611dc4565b048201901c90506104488182858161138a5761138a611dc4565b04611aa9565b60005b818310156113ec5760006113a78484611abf565b6000878152602090209091506001600160601b038616908201546001600160601b031611156113d8578092506113e6565b6113e3816001611d59565b93505b50611393565b509392505050565b6000611052604080518082018252601081526f159950995d1d195c94185cdcdc1bdc9d60821b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f2e1167722ba4707bd833f839bfc8410f076c665fd30232a942ca2721eca03b84818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b6000806000835160410361150a5760208401516040850151606086015160001a6114fc88828585611ada565b955095509550505050611516565b50508151600091506002905b9250925092565b600082600381111561153157611531611dda565b0361153a575050565b600182600381111561154e5761154e611dda565b0361156c5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561158057611580611dda565b036115a15760405163fce698f760e01b81526004810182905260240161023d565b60038260038111156115b5576115b5611dda565b036115d6576040516335e2f38360e21b81526004810182905260240161023d565b5050565b6000806115e5610785565b6001600160a01b0384166000908152601e82016020526040902090915061160b9061100f565b6001600160a01b031615159392505050565b600080611628610785565b6001600160a01b0384166000908152601f82016020526040902090915061160b9061100f565b6000611658610785565b6001600160a01b03808516600090815260238301602052604080822054928616825281208054939450919261168e908490611d59565b90915550506001600160a01b03831660009081526015820160209081526040808320805482518185028101850190935280835291929091908301828280156116f557602002820191906000526020600020905b8154815260200190600101908083116116e1575b5050505050905060005b81518110156109c957600082828151811061171c5761171c611d7f565b602090810291909101810151600081815260268701835260408082206001600160a01b038b8116845294528082205493891682528120805492945091611763908490611d59565b90915550829150611775905081611dab565b9150506116ff565b6000611787610785565b90506000611794846119b5565b61179f5760006117a2565b60015b60ff16905060006117b2856119e5565b6117bd5760006117c0565b60015b60ff16905081836007016000866001600160a01b03166001600160a01b0316815260200190815260200160002060008282546117fc9190611d59565b90915550506001600160a01b03841660009081526008840160205260408120805483929061129c908490611d59565b600061105243610b78565b82546000908190801561195957600061185487610c34600185611d6c565b6040805180820190915290546001600160601b03808216808452600160601b9092046001600160a01b0316602084015291925090871610156118a957604051632520601d60e01b815260040160405180910390fd5b80516001600160601b038088169116036118f757846118cd88610c34600186611d6c565b80546001600160a01b0392909216600160601b026001600160601b03909216919091179055611949565b604080518082019091526001600160601b0380881682526001600160a01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160601b029216919091179101555b60200151925083915061106a9050565b5050604080518082019091526001600160601b0380851682526001600160a01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160601b02919093161792019190915590508161106a565b6000806119c0610785565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b6000806119f0610785565b6001600160a01b03909316600090815260069093016020525050604090205460ff1690565b600080608083901c15611a2a57608092831c92015b604083901c15611a3c57604092831c92015b602083901c15611a4e57602092831c92015b601083901c15611a6057601092831c92015b600883901c15611a7257600892831c92015b600483901c15611a8457600492831c92015b600283901c15611a9657600292831c92015b600183901c1561042c5760010192915050565b6000818310611ab85781610448565b5090919050565b6000611ace6002848418611df0565b61044890848416611d59565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115611b0b5750600091506003905082611b95565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b5f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b8b57506000925060019150829050611b95565b9250600091508190505b9450945094915050565b5080546000825590600052602060002090810190611bbd9190611bc0565b50565b5b80821115610bab5760008155600101611bc1565b80356001600160a01b0381168114611bec57600080fd5b919050565b600060208284031215611c0357600080fd5b61044882611bd5565b60008060408385031215611c1f57600080fd5b611c2883611bd5565b946020939093013593505050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611c7557600080fd5b611c7e84611bd5565b92506020840135915060408401356001600160401b0380821115611ca157600080fd5b818601915086601f830112611cb557600080fd5b813581811115611cc757611cc7611c4a565b604051601f8201601f19908116603f01168101908382118183101715611cef57611cef611c4a565b81604052828152896020848701011115611d0857600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600060208284031215611d3c57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042c5761042c611d43565b8181038181111561042c5761042c611d43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611dbd57611dbd611d43565b5060010190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082611e0d57634e487b7160e01b600052601260045260246000fd5b50049056fe916811490c3a0241b2088d3f6464fbfe3003b4bb42a760a720e893a81de60051a2646970667358221220cb1ce45d7274f941d1fac6a60682330c84d51055ce93079d0f34d76c570bdfe864736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}