{
  "contractName": "Migrations",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "lastCompletedMigration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "completed",
          "type": "uint256"
        }
      ],
      "name": "setCompleted",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "new_address",
          "type": "address"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"lastCompletedMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_address\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/ClaimIssuer.sol\":{\"keccak256\":\"0xbc9c3864c6308e39a8f95fea2809d77c3d37c8b63966218df124e94536126a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f244f865f942b200a4045ca633c080cee8cc98f8088f3af286ca5e9f61aaed12\",\"dweb:/ipfs/QmTpND1yKzwut3ViVsGd1pMSFGtQgMXbfQpoXyiGBmUtg2\"]},\"@onchain-id/solidity/contracts/Identity.sol\":{\"keccak256\":\"0xb7a32a84e675769c5f3d5d20ec29db72f1edb6ceae75cf75f1ac026240d1aabb\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b69b1b493d497697a357f9887576e9ea8331dd452283b14c0ff1cd0e79f46e67\",\"dweb:/ipfs/QmXrZAHgvokKrjXcru1CWkA1nRdR6Cx8oe9Yg55aDr5dkw\"]},\"@onchain-id/solidity/contracts/interface/IClaimIssuer.sol\":{\"keccak256\":\"0xd0493be7cb7342962b46f8e2afdca4614ea0fe34a7f493b2da9db7d361a9042c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://105232aae24e3d0fcb4c80c00793b61b6019f6127c0ec6f9e3082ae01b2e778b\",\"dweb:/ipfs/QmV5C1wbq7H5H6DiakafSX5agAAP6rQSZ5qq7Qgq6VLkXo\"]},\"@onchain-id/solidity/contracts/interface/IERC734.sol\":{\"keccak256\":\"0x3302de9e9fe7a548cb7395b6fda38f952f6a6d1c599dfeee181a1ef80741fc1d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fc9f00e5b2f1523fecf52b1a833e9263a53edbebb7d1458f9004cfd41dd0402e\",\"dweb:/ipfs/QmWcNcVQrg66KeQz39jPgJun7jF3CbdJKHQa19q97n5Hzb\"]},\"@onchain-id/solidity/contracts/interface/IERC735.sol\":{\"keccak256\":\"0x3b77ce6012a96cf0075197cdeb1b98b66ca1722ef23241e40ba6185f03bf4584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://766e139f0c3cc0c6489561e75df0d8eab8c277f90009e4fa19add4f22bb40d82\",\"dweb:/ipfs/QmcbAReZn9nLcnYn9AHiDmcYJ42JqAU5QSy4dKhUcJUnjy\"]},\"@onchain-id/solidity/contracts/interface/IIdentity.sol\":{\"keccak256\":\"0xdcefbe2a850f9f43e959b9f7ed93fd5b35f29ff3dfbfaac7530af737c9eba7c6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://2e887c7cc67fdb2710c48bed22dbb27880f6dfb84ee93178ad4fcd659099cb96\",\"dweb:/ipfs/QmUuDEsZJC7uQQEErmuNJzePsNgHiTDdS2TuMzG1GRqrC3\"]},\"@onchain-id/solidity/contracts/storage/Storage.sol\":{\"keccak256\":\"0x44c57bea4b4904ef4cffd2658add38b550ddaf8d756f4915b9e62ec5fe0f8c99\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://23d4a3ce1ff09db584522cb4873b7b8d0d248706641f86fd86cef9458c207708\",\"dweb:/ipfs/QmaDBSYFvztY31ZWs4UsAEyVpbKQ1ok6GA3o8bMJUyZGsW\"]},\"@onchain-id/solidity/contracts/storage/Structs.sol\":{\"keccak256\":\"0xcf99abc76909c43388a5faa1493970dfe54d647dd95ee1fb9ef3682b095e0f61\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://02eb7e1a9b4931503fc304bf5564a75d872b8b7e5a661d7b458ba0a1c96e6d6c\",\"dweb:/ipfs/QmSqhvCHTABCDhVPN8wX1HwkvWLeNYSa1dKa2xt4F7qbD1\"]},\"@onchain-id/solidity/contracts/version/Version.sol\":{\"keccak256\":\"0x6fb49164a0fa97b52a8f335dd7b7cdf575ebb16962a764033bd7be2e39f296b8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7ba47d9ceface848db9145fba6c77f782f5b73fb5c7a753a14e4f8d8943c5f6f\",\"dweb:/ipfs/QmXyXA9LAGdpN3BEHWSCXhgVdFdWTbvizZxgg8BrRsdYAk\"]},\"project:/contracts/Migrations.sol\":{\"keccak256\":\"0x6b20ca51c42d4469d50a5273db8571463c9c87b4feca1746019b648614d206c2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dcbd337066835833d608447f74e79cf578c905d47d5962b3312a08127f167ecd\",\"dweb:/ipfs/QmZgw5chJrij7P7ThwCnF9wjig4XKSTTPCRRbxkYC53LUd\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916331790556101d2806100326000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f010146100515780638da5cb5b14610066578063fbdbad3c14610096578063fdacd576146100ad575b600080fd5b61006461005f366004610153565b6100c0565b005b600054610079906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f60015481565b60405190815260200161008d565b6100646100bb366004610183565b61013c565b6000546001600160a01b0316330361013957600154604051637ed66abb60e11b815282916001600160a01b0383169163fdacd576916101059160040190815260200190565b600060405180830381600087803b15801561011f57600080fd5b505af1158015610133573d6000803e3d6000fd5b50505050505b50565b6000546001600160a01b0316330361013957600155565b60006020828403121561016557600080fd5b81356001600160a01b038116811461017c57600080fd5b9392505050565b60006020828403121561019557600080fd5b503591905056fea2646970667358221220addf6fb36df53e5aa248542a10eed3aec630d8bf373daab2dc55efc3d5755e8764736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f010146100515780638da5cb5b14610066578063fbdbad3c14610096578063fdacd576146100ad575b600080fd5b61006461005f366004610153565b6100c0565b005b600054610079906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f60015481565b60405190815260200161008d565b6100646100bb366004610183565b61013c565b6000546001600160a01b0316330361013957600154604051637ed66abb60e11b815282916001600160a01b0383169163fdacd576916101059160040190815260200190565b600060405180830381600087803b15801561011f57600080fd5b505af1158015610133573d6000803e3d6000fd5b50505050505b50565b6000546001600160a01b0316330361013957600155565b60006020828403121561016557600080fd5b81356001600160a01b038116811461017c57600080fd5b9392505050565b60006020828403121561019557600080fd5b503591905056fea2646970667358221220addf6fb36df53e5aa248542a10eed3aec630d8bf373daab2dc55efc3d5755e8764736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:877:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "84:216:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "130:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "139:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "142:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "132:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "132:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "132:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "105:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "114:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "101:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "101:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "126:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "97:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "97:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "94:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "155:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "181:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "168:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "168:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "159:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "254:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "263:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "266:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "256:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "256:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "256:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "213:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "224:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "239:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "244:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "248:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "231:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "231:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "220:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "220:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "210:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "210:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "203:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "203:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "200:70:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "279:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "289:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "279:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "50:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "61:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "73:6:54",
                "type": ""
              }
            ],
            "src": "14:286:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "406:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "416:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "428:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "439:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "424:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "424:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "416:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "458:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "473:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "489:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "494:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "485:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "485:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "498:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "481:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "481:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "469:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "469:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "451:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "451:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "451:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "375:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "386:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "397:4:54",
                "type": ""
              }
            ],
            "src": "305:203:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "614:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "624:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "636:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "647:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "632:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "632:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "624:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "666:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "677:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "659:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "659:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "659:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "583:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "594:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "605:4:54",
                "type": ""
              }
            ],
            "src": "513:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "765:110:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "811:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "820:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "823:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "813:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "813:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "813:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "786:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "795:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "782:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "782:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "807:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "778:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "778:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "775:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "836:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "859:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "846:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "846:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "836:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "731:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "742:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "754:6:54",
                "type": ""
              }
            ],
            "src": "695:180:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "222:517:25:-:0;;;318:49;;;;;;;;;-1:-1:-1;342:5:25;:18;;-1:-1:-1;;;;;;342:18:25;350:10;342:18;;;222:517;;;;;;",
  "deployedSourceMap": "222:517:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:175;;;;;;:::i;:::-;;:::i;:::-;;248:20;;;;;-1:-1:-1;;;;;248:20:25;;;;;;-1:-1:-1;;;;;469:32:54;;;451:51;;439:2;424:18;248:20:25;;;;;;;;274:37;;;;;;;;;659:25:54;;;647:2;632:18;274:37:25;513:177:54;444:112:25;;;;;;:::i;:::-;;:::i;562:175::-;423:5;;-1:-1:-1;;;;;423:5:25;409:10;:19;405:26;;707:22:::1;::::0;685:45:::1;::::0;-1:-1:-1;;;685:45:25;;663:11;;-1:-1:-1;;;;;685:21:25;::::1;::::0;::::1;::::0;:45:::1;::::0;::::1;;659:25:54::0;;;647:2;632:18;;513:177;685:45:25::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;620:117;405:26:::0;562:175;:::o;444:112::-;423:5;;-1:-1:-1;;;;;423:5:25;409:10;:19;405:26;;515:22:::1;:34:::0;444:112::o;14:286:54:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:54;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:54:o;695:180::-;754:6;807:2;795:9;786:7;782:23;778:32;775:52;;;823:1;820;813:12;775:52;-1:-1:-1;846:23:54;;695:180;-1:-1:-1;695:180:54:o",
  "source": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.0;\n\n// imports here are just for testing purpose\n\nimport '@onchain-id/solidity/contracts/ClaimIssuer.sol';\nimport '@onchain-id/solidity/contracts/Identity.sol';\n\ncontract Migrations {\n    address public owner;\n    uint256 public lastCompletedMigration;\n\n    constructor() {\n        owner = msg.sender;\n    }\n\n    modifier restricted() {\n        if (msg.sender == owner) _;\n    }\n\n    function setCompleted(uint256 completed) external restricted {\n        lastCompletedMigration = completed;\n    }\n\n    function upgrade(address new_address) external restricted {\n        Migrations upgraded = Migrations(new_address);\n        upgraded.setCompleted(lastCompletedMigration);\n    }\n}\n",
  "sourcePath": "/home/webxpert/workspace/shipfinex/latest-repos/tokenx_smartcontract/contracts/Migrations.sol",
  "ast": {
    "absolutePath": "project:/contracts/Migrations.sol",
    "exportedSymbols": {
      "ClaimIssuer": [
        239
      ],
      "IClaimIssuer": [
        1456
      ],
      "IERC734": [
        1609
      ],
      "IERC735": [
        1734
      ],
      "IIdentity": [
        1743
      ],
      "Identity": [
        1411
      ],
      "Migrations": [
        4875
      ],
      "Storage": [
        1776
      ],
      "Structs": [
        1811
      ],
      "Version": [
        1824
      ]
    },
    "id": 4876,
    "license": "UNLICENSED",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4817,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:23:25"
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/ClaimIssuer.sol",
        "file": "@onchain-id/solidity/contracts/ClaimIssuer.sol",
        "id": 4818,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4876,
        "sourceUnit": 240,
        "src": "110:56:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/Identity.sol",
        "file": "@onchain-id/solidity/contracts/Identity.sol",
        "id": 4819,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4876,
        "sourceUnit": 1412,
        "src": "167:53:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Migrations",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4875,
        "linearizedBaseContracts": [
          4875
        ],
        "name": "Migrations",
        "nameLocation": "231:10:25",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "8da5cb5b",
            "id": 4821,
            "mutability": "mutable",
            "name": "owner",
            "nameLocation": "263:5:25",
            "nodeType": "VariableDeclaration",
            "scope": 4875,
            "src": "248:20:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4820,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "248:7:25",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "fbdbad3c",
            "id": 4823,
            "mutability": "mutable",
            "name": "lastCompletedMigration",
            "nameLocation": "289:22:25",
            "nodeType": "VariableDeclaration",
            "scope": 4875,
            "src": "274:37:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4822,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "274:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 4831,
              "nodeType": "Block",
              "src": "332:35:25",
              "statements": [
                {
                  "expression": {
                    "id": 4829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4826,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4821,
                      "src": "342:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 4827,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "350:3:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "354:6:25",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "350:10:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "342:18:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4830,
                  "nodeType": "ExpressionStatement",
                  "src": "342:18:25"
                }
              ]
            },
            "id": 4832,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4824,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "329:2:25"
            },
            "returnParameters": {
              "id": 4825,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "332:0:25"
            },
            "scope": 4875,
            "src": "318:49:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4840,
              "nodeType": "Block",
              "src": "395:43:25",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 4834,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "409:3:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "413:6:25",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "409:10:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 4836,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4821,
                      "src": "423:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "409:19:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4839,
                  "nodeType": "IfStatement",
                  "src": "405:26:25",
                  "trueBody": {
                    "id": 4838,
                    "nodeType": "PlaceholderStatement",
                    "src": "430:1:25"
                  }
                }
              ]
            },
            "id": 4841,
            "name": "restricted",
            "nameLocation": "382:10:25",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4833,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "392:2:25"
            },
            "src": "373:65:25",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4852,
              "nodeType": "Block",
              "src": "505:51:25",
              "statements": [
                {
                  "expression": {
                    "id": 4850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4848,
                      "name": "lastCompletedMigration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4823,
                      "src": "515:22:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4849,
                      "name": "completed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4843,
                      "src": "540:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "515:34:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4851,
                  "nodeType": "ExpressionStatement",
                  "src": "515:34:25"
                }
              ]
            },
            "functionSelector": "fdacd576",
            "id": 4853,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4846,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4845,
                  "name": "restricted",
                  "nameLocations": [
                    "494:10:25"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4841,
                  "src": "494:10:25"
                },
                "nodeType": "ModifierInvocation",
                "src": "494:10:25"
              }
            ],
            "name": "setCompleted",
            "nameLocation": "453:12:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4843,
                  "mutability": "mutable",
                  "name": "completed",
                  "nameLocation": "474:9:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 4853,
                  "src": "466:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4842,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "466:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "465:19:25"
            },
            "returnParameters": {
              "id": 4847,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "505:0:25"
            },
            "scope": 4875,
            "src": "444:112:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4873,
              "nodeType": "Block",
              "src": "620:117:25",
              "statements": [
                {
                  "assignments": [
                    4862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4862,
                      "mutability": "mutable",
                      "name": "upgraded",
                      "nameLocation": "641:8:25",
                      "nodeType": "VariableDeclaration",
                      "scope": 4873,
                      "src": "630:19:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Migrations_$4875",
                        "typeString": "contract Migrations"
                      },
                      "typeName": {
                        "id": 4861,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 4860,
                          "name": "Migrations",
                          "nameLocations": [
                            "630:10:25"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 4875,
                          "src": "630:10:25"
                        },
                        "referencedDeclaration": 4875,
                        "src": "630:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Migrations_$4875",
                          "typeString": "contract Migrations"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 4866,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 4864,
                        "name": "new_address",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4855,
                        "src": "663:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4863,
                      "name": "Migrations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4875,
                      "src": "652:10:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Migrations_$4875_$",
                        "typeString": "type(contract Migrations)"
                      }
                    },
                    "id": 4865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "652:23:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Migrations_$4875",
                      "typeString": "contract Migrations"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "630:45:25"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4870,
                        "name": "lastCompletedMigration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4823,
                        "src": "707:22:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 4867,
                        "name": "upgraded",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4862,
                        "src": "685:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Migrations_$4875",
                          "typeString": "contract Migrations"
                        }
                      },
                      "id": 4869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "694:12:25",
                      "memberName": "setCompleted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4853,
                      "src": "685:21:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 4871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "685:45:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4872,
                  "nodeType": "ExpressionStatement",
                  "src": "685:45:25"
                }
              ]
            },
            "functionSelector": "0900f010",
            "id": 4874,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4858,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4857,
                  "name": "restricted",
                  "nameLocations": [
                    "609:10:25"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4841,
                  "src": "609:10:25"
                },
                "nodeType": "ModifierInvocation",
                "src": "609:10:25"
              }
            ],
            "name": "upgrade",
            "nameLocation": "571:7:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4855,
                  "mutability": "mutable",
                  "name": "new_address",
                  "nameLocation": "587:11:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 4874,
                  "src": "579:19:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4854,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "579:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "578:21:25"
            },
            "returnParameters": {
              "id": 4859,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "620:0:25"
            },
            "scope": 4875,
            "src": "562:175:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 4876,
        "src": "222:517:25",
        "usedErrors": []
      }
    ],
    "src": "39:701:25"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.347Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}