{
  "_format": "hh-sol-artifact-1",
  "contractName": "PassportPersonhoodLogic",
  "sourceName": "contracts/ve-better-passport/libraries/PassportPersonhoodLogic.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "isPerson",
      "outputs": [
        {
          "internalType": "bool",
          "name": "person",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint48",
          "name": "timepoint",
          "type": "uint48"
        }
      ],
      "name": "isPersonAtTimepoint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "person",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x61132f61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80630f73927a14610045578063d0ebb0ee1461006f575b600080fd5b610058610053366004611087565b610082565b6040516100669291906110a2565b60405180910390f35b61005861007d3660046110fa565b6100c7565b600060606000610090610102565b9050600061009c610126565b90506100b0858265ffffffffffff16610135565b94506100bc8582610197565b935093505050915091565b6000606060006100d5610102565b90506100e9858565ffffffffffff16610135565b94506100f58585610197565b92509250505b9250929050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000610130610505565b905090565b600080610140610102565b905061014c8484610510565b156101635761015b8484610564565b915050610191565b61016d84846105b3565b8061017d575061017d84846105f4565b1561018c576000915050610191565b839150505b92915050565b6000606060006101a5610102565b90506001600160a01b0385166101da5760006040518060600160405280602381526020016112d76023913992509250506100fb565b6101e46001610635565b80156101f457506101f4856106b7565b1561022e575050604080518082019091526013815272155cd95c881a5cc81dda1a5d195b1a5cdd1959606a1b6020820152600191506100fb565b6102386002610635565b801561024857506102488561074b565b15610282575050604080518082019091526013815272155cd95c881a5cc8189b1858dadb1a5cdd1959606a1b6020820152600091506100fb565b61028c6003610635565b80156102a7575061029b6107df565b6102a4866107f4565b10155b156102d15760006040518060600160405280602581526020016112816025913992509250506100fb565b6102db6004610635565b1561039d576000610364868360020160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061113c565b610821565b905061036f8561090b565b811061039b5760016040518060600160405280603181526020016112a6603191399350935050506100fb565b505b6103a76005610635565b156104de576003810154604051633c60f55d60e01b81526001600160a01b03878116600483015265ffffffffffff871660248301526000921690633c60f55d90604401602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b919061113c565b905080158015906104b1575061043f610935565b60038301546040516336af181960e11b8152600481018490526001600160a01b0390911690636d5e303290602401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae919061113c565b10155b156104dc576001604051806060016040528060388152602001611210603891399350935050506100fb565b505b60006040518060600160405280603981526020016112486039913992509250509250929050565b60006101304361094a565b60008061051b610102565b90506105516105298461094a565b6001600160a01b0386166000908152601f8401602052604090209065ffffffffffff16610981565b6001600160a01b03161515949350505050565b60008061056f610102565b90506105ab6105a86105808561094a565b6001600160a01b0387166000908152601f8501602052604090209065ffffffffffff16610981565b90565b949350505050565b6000806105be610102565b90506105516105cc8461094a565b6001600160a01b0386166000908152601e8401602052604090209065ffffffffffff16610981565b6000806105ff610102565b905061055161060d8461094a565b6001600160a01b038616600090815260178401602052604090209065ffffffffffff16610981565b600080610640610102565b9050600083600581111561065657610656611155565b0361069d5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420636865636b207479706560701b60448201526064015b60405180910390fd5b60006106a884610a2d565b50915490911615159392505050565b6000806106c2610102565b90506106cd83610beb565b92506106d883610c40565b156106e65750600192915050565b60006106f184610c70565b51905080600003610706575060009392505050565b6001600160a01b0384166000908152600783016020526040812054908261072e836064611181565b61073891906111ae565b6009909401549093101595945050505050565b600080610756610102565b905061076183610beb565b925061076c83610cf7565b1561077a5750600192915050565b600061078584610c70565b5190508060000361079a575060009392505050565b6001600160a01b038416600090815260088301602052604081205490826107c2836064611181565b6107cc91906111ae565b600a909401549093101595945050505050565b6000806107ea610102565b6024015492915050565b6000806107ff610102565b6001600160a01b03909316600090815260239093016020525050604090205490565b60008061082c610102565b90506000816012015484111561085b57601282015461084b90856111d0565b6108569060016111e3565b61085e565b60015b905060006064670de0b6b3a76400008460130154606461087e91906111d0565b6108889190611181565b61089291906111ae565b90506000825b86811161090057670de0b6b3a76400006108b28484611181565b6108bc91906111ae565b6001600160a01b0389166000908152600f8701602090815260408083208584529091529020546108ec91906111e3565b9150806108f8816111f6565b915050610898565b509695505050505050565b600080610916610102565b90506109256011820184610d27565b6001600160d01b03169392505050565b600080610940610102565b6001015492915050565b600065ffffffffffff82111561097d576040516306dfcc6560e41b81526030600482015260248101839052604401610694565b5090565b8154600090818160058111156109df57600061099c84610dbf565b6109a690856111d0565b90506109b28782610ea7565b546001600160601b0390811690871610156109cf578091506109dd565b6109da8160016111e3565b92505b505b60006109ed87878585610eb5565b90508015610a1f57610a0987610a046001846111d0565b610ea7565b54600160601b90046001600160a01b0316610a22565b60005b979650505050505050565b600060606001836005811115610a4557610a45611155565b03610a7a57505060408051808201909152600f81526e57686974656c69737420436865636b60881b6020820152600192909150565b6002836005811115610a8e57610a8e611155565b03610ac357505060408051808201909152600f81526e426c61636b6c69737420436865636b60881b6020820152600292909150565b6003836005811115610ad757610ad7611155565b03610b0c57505060408051808201909152600f81526e5369676e616c696e6720436865636b60881b6020820152600492909150565b6004836005811115610b2057610b20611155565b03610b5f57505060408051808201909152601981527850617274696369706174696f6e2053636f726520436865636b60381b6020820152600892909150565b6005836005811115610b7357610b73611155565b03610bab575050604080518082019091526012815271474d204f776e65727368697020436865636b60701b6020820152601092909150565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642050617373706f7274547970657360581b6044820152606401610694565b600080610bf6610102565b6001600160a01b0384166000908152601782016020526040812091925090610c21906105a890610f16565b90506001600160a01b038116610c3957509192915050565b9392505050565b600080610c4b610102565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60606000610c7c610102565b6001600160a01b03841660009081526019820160209081526040918290208054835181840281018401909452808452939450919290830182828015610cea57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ccc575b5050505050915050919050565b600080610d02610102565b6001600160a01b03909316600090815260069093016020525050604090205460ff1690565b815460009081816005811115610d84576000610d4284610dbf565b610d4c90856111d0565b9050610d588782610ea7565b5465ffffffffffff9081169087161015610d7457809150610d82565b610d7f8160016111e3565b92505b505b6000610d9287878585610f4f565b90508015610a1f57610da987610a046001846111d0565b54600160301b90046001600160d01b0316610a22565b600081600003610dd157506000919050565b60006001610dde84610fa6565b901c6001901b90506001818481610df757610df7611198565b048201901c90506001818481610e0f57610e0f611198565b048201901c90506001818481610e2757610e27611198565b048201901c90506001818481610e3f57610e3f611198565b048201901c90506001818481610e5757610e57611198565b048201901c90506001818481610e6f57610e6f611198565b048201901c90506001818481610e8757610e87611198565b048201901c9050610c3981828581610ea157610ea1611198565b0461103a565b600091825260209091200190565b60005b81831015610f0e576000610ecc8484611050565b9050846001600160601b0316610ee28783610ea7565b546001600160601b03161115610efa57809250610f08565b610f058160016111e3565b93505b50610eb8565b509392505050565b80546000908015610f4657610f3083610a046001846111d0565b54600160601b90046001600160a01b0316610c39565b60009392505050565b60005b81831015610f0e576000610f668484611050565b90508465ffffffffffff16610f7b8783610ea7565b5465ffffffffffff161115610f9257809250610fa0565b610f9d8160016111e3565b93505b50610f52565b600080608083901c15610fbb57608092831c92015b604083901c15610fcd57604092831c92015b602083901c15610fdf57602092831c92015b601083901c15610ff157601092831c92015b600883901c1561100357600892831c92015b600483901c1561101557600492831c92015b600283901c1561102757600292831c92015b600183901c156101915760010192915050565b60008183106110495781610c39565b5090919050565b600061105f60028484186111ae565b610c39908484166111e3565b80356001600160a01b038116811461108257600080fd5b919050565b60006020828403121561109957600080fd5b610c398261106b565b821515815260006020604081840152835180604085015260005b818110156110d8578581018301518582016060015282016110bc565b506000606082860101526060601f19601f830116850101925050509392505050565b6000806040838503121561110d57600080fd5b6111168361106b565b9150602083013565ffffffffffff8116811461113157600080fd5b809150509250929050565b60006020828403121561114e57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101915761019161116b565b634e487b7160e01b600052601260045260246000fd5b6000826111cb57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101915761019161116b565b808201808211156101915761019161116b565b6000600182016112085761120861116b565b506001019056fe5573657227732073656c65637465642047616c617879204d656d6265722069732061626f766520746865206d696e696d756d206c6576656c5573657220646f6573206e6f74206d6565742074686520637269746572696120746f20626520636f6e73696465726564206120706572736f6e5573657220686173206265656e207369676e616c656420746f6f206d616e792074696d65735573657227732070617274696369706174696f6e2073636f72652069732061626f766520746865207468726573686f6c6455736572206861732064656c65676174656420746865697220706572736f6e686f6f64a264697066735822122095314c80e30bb406b78e56fd0ca92ecc0230ee1831d37f45e0b3f6b1d1af7b8d64736f6c63430008140033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80630f73927a14610045578063d0ebb0ee1461006f575b600080fd5b610058610053366004611087565b610082565b6040516100669291906110a2565b60405180910390f35b61005861007d3660046110fa565b6100c7565b600060606000610090610102565b9050600061009c610126565b90506100b0858265ffffffffffff16610135565b94506100bc8582610197565b935093505050915091565b6000606060006100d5610102565b90506100e9858565ffffffffffff16610135565b94506100f58585610197565b92509250505b9250929050565b7f273c9387b78d9b22e6f3371bb3aa3a918f53507e8cacc54e4831933cbb84410090565b6000610130610505565b905090565b600080610140610102565b905061014c8484610510565b156101635761015b8484610564565b915050610191565b61016d84846105b3565b8061017d575061017d84846105f4565b1561018c576000915050610191565b839150505b92915050565b6000606060006101a5610102565b90506001600160a01b0385166101da5760006040518060600160405280602381526020016112d76023913992509250506100fb565b6101e46001610635565b80156101f457506101f4856106b7565b1561022e575050604080518082019091526013815272155cd95c881a5cc81dda1a5d195b1a5cdd1959606a1b6020820152600191506100fb565b6102386002610635565b801561024857506102488561074b565b15610282575050604080518082019091526013815272155cd95c881a5cc8189b1858dadb1a5cdd1959606a1b6020820152600091506100fb565b61028c6003610635565b80156102a7575061029b6107df565b6102a4866107f4565b10155b156102d15760006040518060600160405280602581526020016112816025913992509250506100fb565b6102db6004610635565b1561039d576000610364868360020160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061113c565b610821565b905061036f8561090b565b811061039b5760016040518060600160405280603181526020016112a6603191399350935050506100fb565b505b6103a76005610635565b156104de576003810154604051633c60f55d60e01b81526001600160a01b03878116600483015265ffffffffffff871660248301526000921690633c60f55d90604401602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b919061113c565b905080158015906104b1575061043f610935565b60038301546040516336af181960e11b8152600481018490526001600160a01b0390911690636d5e303290602401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae919061113c565b10155b156104dc576001604051806060016040528060388152602001611210603891399350935050506100fb565b505b60006040518060600160405280603981526020016112486039913992509250509250929050565b60006101304361094a565b60008061051b610102565b90506105516105298461094a565b6001600160a01b0386166000908152601f8401602052604090209065ffffffffffff16610981565b6001600160a01b03161515949350505050565b60008061056f610102565b90506105ab6105a86105808561094a565b6001600160a01b0387166000908152601f8501602052604090209065ffffffffffff16610981565b90565b949350505050565b6000806105be610102565b90506105516105cc8461094a565b6001600160a01b0386166000908152601e8401602052604090209065ffffffffffff16610981565b6000806105ff610102565b905061055161060d8461094a565b6001600160a01b038616600090815260178401602052604090209065ffffffffffff16610981565b600080610640610102565b9050600083600581111561065657610656611155565b0361069d5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420636865636b207479706560701b60448201526064015b60405180910390fd5b60006106a884610a2d565b50915490911615159392505050565b6000806106c2610102565b90506106cd83610beb565b92506106d883610c40565b156106e65750600192915050565b60006106f184610c70565b51905080600003610706575060009392505050565b6001600160a01b0384166000908152600783016020526040812054908261072e836064611181565b61073891906111ae565b6009909401549093101595945050505050565b600080610756610102565b905061076183610beb565b925061076c83610cf7565b1561077a5750600192915050565b600061078584610c70565b5190508060000361079a575060009392505050565b6001600160a01b038416600090815260088301602052604081205490826107c2836064611181565b6107cc91906111ae565b600a909401549093101595945050505050565b6000806107ea610102565b6024015492915050565b6000806107ff610102565b6001600160a01b03909316600090815260239093016020525050604090205490565b60008061082c610102565b90506000816012015484111561085b57601282015461084b90856111d0565b6108569060016111e3565b61085e565b60015b905060006064670de0b6b3a76400008460130154606461087e91906111d0565b6108889190611181565b61089291906111ae565b90506000825b86811161090057670de0b6b3a76400006108b28484611181565b6108bc91906111ae565b6001600160a01b0389166000908152600f8701602090815260408083208584529091529020546108ec91906111e3565b9150806108f8816111f6565b915050610898565b509695505050505050565b600080610916610102565b90506109256011820184610d27565b6001600160d01b03169392505050565b600080610940610102565b6001015492915050565b600065ffffffffffff82111561097d576040516306dfcc6560e41b81526030600482015260248101839052604401610694565b5090565b8154600090818160058111156109df57600061099c84610dbf565b6109a690856111d0565b90506109b28782610ea7565b546001600160601b0390811690871610156109cf578091506109dd565b6109da8160016111e3565b92505b505b60006109ed87878585610eb5565b90508015610a1f57610a0987610a046001846111d0565b610ea7565b54600160601b90046001600160a01b0316610a22565b60005b979650505050505050565b600060606001836005811115610a4557610a45611155565b03610a7a57505060408051808201909152600f81526e57686974656c69737420436865636b60881b6020820152600192909150565b6002836005811115610a8e57610a8e611155565b03610ac357505060408051808201909152600f81526e426c61636b6c69737420436865636b60881b6020820152600292909150565b6003836005811115610ad757610ad7611155565b03610b0c57505060408051808201909152600f81526e5369676e616c696e6720436865636b60881b6020820152600492909150565b6004836005811115610b2057610b20611155565b03610b5f57505060408051808201909152601981527850617274696369706174696f6e2053636f726520436865636b60381b6020820152600892909150565b6005836005811115610b7357610b73611155565b03610bab575050604080518082019091526012815271474d204f776e65727368697020436865636b60701b6020820152601092909150565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642050617373706f7274547970657360581b6044820152606401610694565b600080610bf6610102565b6001600160a01b0384166000908152601782016020526040812091925090610c21906105a890610f16565b90506001600160a01b038116610c3957509192915050565b9392505050565b600080610c4b610102565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60606000610c7c610102565b6001600160a01b03841660009081526019820160209081526040918290208054835181840281018401909452808452939450919290830182828015610cea57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ccc575b5050505050915050919050565b600080610d02610102565b6001600160a01b03909316600090815260069093016020525050604090205460ff1690565b815460009081816005811115610d84576000610d4284610dbf565b610d4c90856111d0565b9050610d588782610ea7565b5465ffffffffffff9081169087161015610d7457809150610d82565b610d7f8160016111e3565b92505b505b6000610d9287878585610f4f565b90508015610a1f57610da987610a046001846111d0565b54600160301b90046001600160d01b0316610a22565b600081600003610dd157506000919050565b60006001610dde84610fa6565b901c6001901b90506001818481610df757610df7611198565b048201901c90506001818481610e0f57610e0f611198565b048201901c90506001818481610e2757610e27611198565b048201901c90506001818481610e3f57610e3f611198565b048201901c90506001818481610e5757610e57611198565b048201901c90506001818481610e6f57610e6f611198565b048201901c90506001818481610e8757610e87611198565b048201901c9050610c3981828581610ea157610ea1611198565b0461103a565b600091825260209091200190565b60005b81831015610f0e576000610ecc8484611050565b9050846001600160601b0316610ee28783610ea7565b546001600160601b03161115610efa57809250610f08565b610f058160016111e3565b93505b50610eb8565b509392505050565b80546000908015610f4657610f3083610a046001846111d0565b54600160601b90046001600160a01b0316610c39565b60009392505050565b60005b81831015610f0e576000610f668484611050565b90508465ffffffffffff16610f7b8783610ea7565b5465ffffffffffff161115610f9257809250610fa0565b610f9d8160016111e3565b93505b50610f52565b600080608083901c15610fbb57608092831c92015b604083901c15610fcd57604092831c92015b602083901c15610fdf57602092831c92015b601083901c15610ff157601092831c92015b600883901c1561100357600892831c92015b600483901c1561101557600492831c92015b600283901c1561102757600292831c92015b600183901c156101915760010192915050565b60008183106110495781610c39565b5090919050565b600061105f60028484186111ae565b610c39908484166111e3565b80356001600160a01b038116811461108257600080fd5b919050565b60006020828403121561109957600080fd5b610c398261106b565b821515815260006020604081840152835180604085015260005b818110156110d8578581018301518582016060015282016110bc565b506000606082860101526060601f19601f830116850101925050509392505050565b6000806040838503121561110d57600080fd5b6111168361106b565b9150602083013565ffffffffffff8116811461113157600080fd5b809150509250929050565b60006020828403121561114e57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101915761019161116b565b634e487b7160e01b600052601260045260246000fd5b6000826111cb57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101915761019161116b565b808201808211156101915761019161116b565b6000600182016112085761120861116b565b506001019056fe5573657227732073656c65637465642047616c617879204d656d6265722069732061626f766520746865206d696e696d756d206c6576656c5573657220646f6573206e6f74206d6565742074686520637269746572696120746f20626520636f6e73696465726564206120706572736f6e5573657220686173206265656e207369676e616c656420746f6f206d616e792074696d65735573657227732070617274696369706174696f6e2073636f72652069732061626f766520746865207468726573686f6c6455736572206861732064656c65676174656420746865697220706572736f6e686f6f64a264697066735822122095314c80e30bb406b78e56fd0ca92ecc0230ee1831d37f45e0b3f6b1d1af7b8d64736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
