{
  "contractName": "TokenProxy",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_implementationAuthority",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_identityRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "_decimals",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "implementationAuthority",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementationAuthority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_identityRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_compliance\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"implementationAuthority\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/proxy/TokenProxy.sol\":\"TokenProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"project:/contracts/proxy/TokenProxy.sol\":{\"keccak256\":\"0x0cdc6335a6daae1e9d6b75fca4563b94b1235501d198f32823145cffe1379ea5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://38cf9f998b054b314d75283b4e491f4b59c74cd5de7365fc2d270dcc765ee7b3\",\"dweb:/ipfs/QmQMgshRmsGCYLynGXXZ1CqLAEKs3eaVcRZrg5bbEFFjnp\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060405161057f38038061057f83398101604081905261002f91610289565b600080546001600160a01b0319166001600160a01b03891690811782556040805163557887a160e11b8152905163aaf10f42916004808201926020929091908290030181865afa158015610087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ab9190610348565b90506000816001600160a01b03168888888888886040516024016100d496959493929190610396565b60408051601f198184030181529181526020820180516001600160e01b0316633e46d86760e21b1790525161010991906103f1565b600060405180830381855af49150503d8060008114610144576040519150601f19603f3d011682016040523d82523d6000602084013e610149565b606091505b505090508061019e5760405162461bcd60e51b815260206004820152601660248201527f496e697469616c697a6174696f6e206661696c65642e00000000000000000000604482015260640160405180910390fd5b50505050505050505061040d565b80516001600160a01b03811681146101c357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101f95781810151838201526020016101e1565b50506000910152565b600082601f83011261021357600080fd5b81516001600160401b038082111561022d5761022d6101c8565b604051601f8301601f19908116603f01168101908282118183101715610255576102556101c8565b8160405283815286602085880101111561026e57600080fd5b61027f8460208301602089016101de565b9695505050505050565b600080600080600080600060e0888a0312156102a457600080fd5b6102ad886101ac565b96506102bb602089016101ac565b95506102c9604089016101ac565b60608901519095506001600160401b03808211156102e657600080fd5b6102f28b838c01610202565b955060808a015191508082111561030857600080fd5b506103158a828b01610202565b93505060a088015160ff8116811461032c57600080fd5b915061033a60c089016101ac565b905092959891949750929550565b60006020828403121561035a57600080fd5b610363826101ac565b9392505050565b600081518084526103828160208601602086016101de565b601f01601f19169290920160200192915050565b600060018060a01b038089168352808816602084015260c060408401526103c060c084018861036a565b83810360608501526103d2818861036a565b60ff969096166080850152509290921660a09091015250949350505050565b600082516104038184602087016101de565b9190910192915050565b6101638061041c6000396000f3fe60806040526004361061001e5760003560e01c80632307f882146100c1575b60008060009054906101000a90046001600160a01b03166001600160a01b031663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009691906100fd565b90503660008037600080366000846127105a03f43d806000803e8180156100bc57816000f35b816000fd5b3480156100cd57600080fd5b506000546100e1906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121561010f57600080fd5b81516001600160a01b038116811461012657600080fd5b939250505056fea26469706673582212208904e4f9819cea39ae1d90e15c3badbeb9dd717ef6921acb25ad130cb9a6a7fc64736f6c63430008110033",
  "deployedBytecode": "0x60806040526004361061001e5760003560e01c80632307f882146100c1575b60008060009054906101000a90046001600160a01b03166001600160a01b031663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009691906100fd565b90503660008037600080366000846127105a03f43d806000803e8180156100bc57816000f35b816000fd5b3480156100cd57600080fd5b506000546100e1906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121561010f57600080fd5b81516001600160a01b038116811461012657600080fd5b939250505056fea26469706673582212208904e4f9819cea39ae1d90e15c3badbeb9dd717ef6921acb25ad130cb9a6a7fc64736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:4225:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "74:117:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "84:22:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "99:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "93:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "93:13:54"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "84:5:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "169:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "178:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "181:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "171:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "171:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "171:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "128:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "139:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "154:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "159:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "150:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "150:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "163:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "146:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "146:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "135:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "135:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "125:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "125:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "118:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "118:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "115:70:54"
                }
              ]
            },
            "name": "abi_decode_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "53:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "64:5:54",
                "type": ""
              }
            ],
            "src": "14:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "228:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "245:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "252:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "257:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "248:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "248:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "238:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "238:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "238:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "285:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "288:4:54",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "278:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "278:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "278:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "309:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "312:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "302:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "302:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "302:15:54"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "196:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "394:184:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "404:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "413:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "408:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "473:63:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "498:3:54"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "503:1:54"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "494:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "494:11:54"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "517:3:54"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "522:1:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "513:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "513:11:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "507:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "507:18:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "487:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "487:39:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "487:39:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "434:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "437:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "431:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "431:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "445:19:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "447:15:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "456:1:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "459:2:54",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "452:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "452:10:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "447:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "427:3:54",
                    "statements": []
                  },
                  "src": "423:113:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "556:3:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "561:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "552:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "552:16:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "570:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "545:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "545:27:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "545:27:54"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "372:3:54",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "377:3:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "382:6:54",
                "type": ""
              }
            ],
            "src": "328:250:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "647:635:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "696:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "705:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "708:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "698:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "698:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "698:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "675:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "683:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "671:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "671:17:54"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "690:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "667:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "667:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "660:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "660:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "657:55:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "721:23:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "737:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "731:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "731:13:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "725:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "753:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "771:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "775:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "767:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "767:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "779:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "763:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "763:18:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "757:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "804:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "806:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "806:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "806:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "796:2:54"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "800:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "793:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "793:10:54"
                  },
                  "nodeType": "YulIf",
                  "src": "790:36:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "835:17:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "849:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "845:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "845:7:54"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "839:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "861:23:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "881:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "875:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "875:9:54"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "865:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "893:71:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "915:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:2:54"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "943:4:54",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "935:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "935:13:54"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "950:2:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "931:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "931:22:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "955:2:54",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "927:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "927:31:54"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "960:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "923:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "923:40:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "911:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "911:53:54"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "897:10:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1023:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1025:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1025:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1025:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "982:10:54"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "994:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "979:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "979:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1002:10:54"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1014:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "999:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "999:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "976:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "976:46:54"
                  },
                  "nodeType": "YulIf",
                  "src": "973:72:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1061:2:54",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "1065:10:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1054:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1054:22:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1054:22:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1092:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1100:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1085:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1085:18:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1085:18:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1151:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1160:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1163:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1153:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1153:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1153:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1126:6:54"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1134:2:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1122:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1122:15:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1139:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1118:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1118:26:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1146:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1115:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1115:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1112:55:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1215:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1223:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1211:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1211:17:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1234:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1242:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1230:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1230:17:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1249:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "1176:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1176:76:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1176:76:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1261:15:54",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1270:6:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1261:5:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_string_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "621:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "629:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "637:5:54",
                "type": ""
              }
            ],
            "src": "583:699:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1488:855:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1535:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1544:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1547:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1537:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1537:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1537:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1509:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1518:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1505:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1505:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1530:3:54",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1501:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1501:33:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1498:53:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1560:50:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1600:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1570:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1570:40:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1560:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1619:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1663:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1674:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1659:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1659:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1629:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1629:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1619:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1687:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1731:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1742:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1727:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1727:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1697:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1697:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "1687:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1755:39:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1779:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1790:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1775:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1775:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1769:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1769:25:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1759:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1803:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1821:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1825:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "1817:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1817:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1829:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "1813:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1813:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1807:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1858:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1867:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1870:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1860:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1860:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1860:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1846:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1854:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1843:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1843:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1840:34:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1883:71:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1926:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1937:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1922:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1922:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1946:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1893:28:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1893:61:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "1883:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1963:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1989:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2000:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1985:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1985:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1979:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1979:26:54"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "1967:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2034:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2043:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2046:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2036:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2036:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2036:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "2020:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2030:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2017:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2017:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2014:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2059:73:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2102:9:54"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "2113:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2098:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2098:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2124:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "2069:28:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2069:63:54"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "2059:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2141:39:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2164:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2175:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2160:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2160:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2154:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2154:26:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2145:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2228:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2237:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2240:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2230:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2230:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2230:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2202:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2213:5:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2220:4:54",
                                "type": "",
                                "value": "0xff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2209:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2209:16:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "2199:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2199:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2192:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2192:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2189:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2253:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2263:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "2253:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2277:60:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2321:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2332:3:54",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2317:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2317:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "2287:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2287:50:54"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "2277:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_addresst_string_memory_ptrt_string_memory_ptrt_uint8t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1406:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1417:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1429:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1437:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1445:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "1453:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "1461:6:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "1469:6:54",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "1477:6:54",
                "type": ""
              }
            ],
            "src": "1287:1056:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2429:127:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2475:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2484:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2487:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2477:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2477:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2477:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2450:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2459:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2446:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2446:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2471:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2442:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2442:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2439:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2500:50:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2540:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "2510:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2510:40:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2500:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2395:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2406:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2418:6:54",
                "type": ""
              }
            ],
            "src": "2348:208:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2611:221:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2621:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2641:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2635:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2635:12:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2625:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2663:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2668:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2656:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2656:19:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2656:19:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2723:5:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2730:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2719:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2719:16:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2741:3:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2746:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2737:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2737:14:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2753:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "2684:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2684:76:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2684:76:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2769:57:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2784:3:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2797:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2805:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2793:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2793:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2814:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "2810:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2810:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2789:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2789:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2780:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2780:39:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2821:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2776:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2776:50:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "2769:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2588:5:54",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2595:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2603:3:54",
                "type": ""
              }
            ],
            "src": "2561:271:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3114:466:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3124:29:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3142:3:54",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3147:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3138:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3138:11:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3151:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "3134:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3134:19:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3128:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3169:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3184:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3192:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3180:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3180:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3162:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3162:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3162:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3216:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3227:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3212:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3212:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "3236:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3244:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3232:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3232:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3205:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3205:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3205:43:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3268:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3279:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3264:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3264:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3284:3:54",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3257:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3257:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3257:31:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3297:60:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "3329:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3341:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3352:3:54",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3337:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3337:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "3311:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3311:46:54"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "3301:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3377:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3388:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3373:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3373:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "3397:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3405:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3393:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3393:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3366:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3366:50:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3366:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3425:41:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "3451:6:54"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "3459:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "3433:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3433:33:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3425:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3486:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3497:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3482:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3482:19:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value4",
                            "nodeType": "YulIdentifier",
                            "src": "3507:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3515:4:54",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3503:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3503:17:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3475:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3475:46:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3475:46:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3541:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3552:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3537:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3537:19:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value5",
                            "nodeType": "YulIdentifier",
                            "src": "3562:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3570:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3558:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3558:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3530:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3530:44:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3530:44:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_string_memory_ptr_t_uint8_t_address__to_t_address_t_address_t_string_memory_ptr_t_string_memory_ptr_t_uint8_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3043:9:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "3054:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "3062:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "3070:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3078:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3086:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3094:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3105:4:54",
                "type": ""
              }
            ],
            "src": "2837:743:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3722:150:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3732:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "3752:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3746:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3746:13:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "3736:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3807:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3815:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3803:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3803:17:54"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3822:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3827:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "3768:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3768:66:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3768:66:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3843:23:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3854:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3859:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3850:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3850:16:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3843:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3698:3:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3703:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3714:3:54",
                "type": ""
              }
            ],
            "src": "3585:287:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4051:172:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4068:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4079:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4061:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4061:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4061:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4102:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4113:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4098:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4098:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4118:2:54",
                        "type": "",
                        "value": "22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4091:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4091:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4091:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4141:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4152:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4137:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4137:18:54"
                      },
                      {
                        "hexValue": "496e697469616c697a6174696f6e206661696c65642e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4157:24:54",
                        "type": "",
                        "value": "Initialization failed."
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4130:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4130:52:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4130:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4191:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4203:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4214:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4199:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4199:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4191:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_84817bd958e2e6d9a7351828ba5fd352a3aaf3cf97a67f6d55271e39a5b3e2ad__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4028:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4042:4:54",
                "type": ""
              }
            ],
            "src": "3877:346:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(offset, 0x20), add(memPtr, 0x20), _1)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_string_memory_ptrt_string_memory_ptrt_uint8t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        let offset := mload(add(headStart, 96))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value3 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        let value := mload(add(headStart, 160))\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value5 := value\n        value6 := abi_decode_address_fromMemory(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_string_memory_ptr_t_uint8_t_address__to_t_address_t_address_t_string_memory_ptr_t_string_memory_ptr_t_uint8_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 192)\n        let tail_1 := abi_encode_string(value2, add(headStart, 192))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        tail := abi_encode_string(value3, tail_1)\n        mstore(add(headStart, 128), and(value4, 0xff))\n        mstore(add(headStart, 160), and(value5, _1))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_84817bd958e2e6d9a7351828ba5fd352a3aaf3cf97a67f6d55271e39a5b3e2ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Initialization failed.\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:514:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "95:209:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "141:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "150:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "153:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "143:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "143:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "143:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "116:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "125:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "112:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "112:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "137:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "108:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "108:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "105:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "166:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "185:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "179:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "179:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "170:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "258:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "267:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "270:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "260:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "260:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "260:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "217:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "228:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "243:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "252:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "235:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "235:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "224:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "224:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "214:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "214:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "207:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "207:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "204:70:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "283:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "293:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "283:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "61:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "72:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "84:6:54",
                "type": ""
              }
            ],
            "src": "14:290:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "410:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "420:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "432:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "443:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "428:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "428:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "420:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "462:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "477:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "493:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "498:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "489:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "489:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "502:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "485:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "485:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "473:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "473:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "455:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "455:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "455:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "379:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "390:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "401:4:54",
                "type": ""
              }
            ],
            "src": "309:203:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(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}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "1224:1596:33:-:0;;;1295:908;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1542:23;:50;;-1:-1:-1;;;;;;1542:50:33;-1:-1:-1;;;;;1542:50:33;;;;;;;1619:69;;;-1:-1:-1;;;1619:69:33;;;;:67;;:69;;;;;;;;;;;;;;;1542:50;1619:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1603:85;;1759:12;1789:5;-1:-1:-1;;;;;1789:18:33;1943:17;1982:11;2015:5;2042:7;2071:9;2102:10;1825:305;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1825:305:33;;;;;;;;;;;;;;-1:-1:-1;;;;;1825:305:33;-1:-1:-1;;;1825:305:33;;;1789:355;;;1825:305;1789:355;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1758:386;;;2162:7;2154:42;;;;-1:-1:-1;;;2154:42:33;;4079:2:54;2154:42:33;;;4061:21:54;4118:2;4098:18;;;4091:30;4157:24;4137:18;;;4130:52;4199:18;;2154:42:33;;;;;;;;1532:671;;1295:908;;;;;;;1224:1596;;14:177:54;93:13;;-1:-1:-1;;;;;135:31:54;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:250;413:1;423:113;437:6;434:1;431:13;423:113;;;513:11;;;507:18;494:11;;;487:39;459:2;452:10;423:113;;;-1:-1:-1;;570:1:54;552:16;;545:27;328:250::o;583:699::-;637:5;690:3;683:4;675:6;671:17;667:27;657:55;;708:1;705;698:12;657:55;731:13;;-1:-1:-1;;;;;793:10:54;;;790:36;;;806:18;;:::i;:::-;881:2;875:9;849:2;935:13;;-1:-1:-1;;931:22:54;;;955:2;927:31;923:40;911:53;;;979:18;;;999:22;;;976:46;973:72;;;1025:18;;:::i;:::-;1065:10;1061:2;1054:22;1100:2;1092:6;1085:18;1146:3;1139:4;1134:2;1126:6;1122:15;1118:26;1115:35;1112:55;;;1163:1;1160;1153:12;1112:55;1176:76;1249:2;1242:4;1234:6;1230:17;1223:4;1215:6;1211:17;1176:76;:::i;:::-;1270:6;583:699;-1:-1:-1;;;;;;583:699:54:o;1287:1056::-;1429:6;1437;1445;1453;1461;1469;1477;1530:3;1518:9;1509:7;1505:23;1501:33;1498:53;;;1547:1;1544;1537:12;1498:53;1570:40;1600:9;1570:40;:::i;:::-;1560:50;;1629:49;1674:2;1663:9;1659:18;1629:49;:::i;:::-;1619:59;;1697:49;1742:2;1731:9;1727:18;1697:49;:::i;:::-;1790:2;1775:18;;1769:25;1687:59;;-1:-1:-1;;;;;;1843:14:54;;;1840:34;;;1870:1;1867;1860:12;1840:34;1893:61;1946:7;1937:6;1926:9;1922:22;1893:61;:::i;:::-;1883:71;;2000:3;1989:9;1985:19;1979:26;1963:42;;2030:2;2020:8;2017:16;2014:36;;;2046:1;2043;2036:12;2014:36;;2069:63;2124:7;2113:8;2102:9;2098:24;2069:63;:::i;:::-;2059:73;;;2175:3;2164:9;2160:19;2154:26;2220:4;2213:5;2209:16;2202:5;2199:27;2189:55;;2240:1;2237;2230:12;2189:55;2263:5;-1:-1:-1;2287:50:54;2332:3;2317:19;;2287:50;:::i;:::-;2277:60;;1287:1056;;;;;;;;;;:::o;2348:208::-;2418:6;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2510:40;2540:9;2510:40;:::i;:::-;2500:50;2348:208;-1:-1:-1;;;2348:208:54:o;2561:271::-;2603:3;2641:5;2635:12;2668:6;2663:3;2656:19;2684:76;2753:6;2746:4;2741:3;2737:14;2730:4;2723:5;2719:16;2684:76;:::i;:::-;2814:2;2793:15;-1:-1:-1;;2789:29:54;2780:39;;;;2821:4;2776:50;;2561:271;-1:-1:-1;;2561:271:54:o;2837:743::-;3105:4;3151:1;3147;3142:3;3138:11;3134:19;3192:2;3184:6;3180:15;3169:9;3162:34;3244:2;3236:6;3232:15;3227:2;3216:9;3212:18;3205:43;3284:3;3279:2;3268:9;3264:18;3257:31;3311:46;3352:3;3341:9;3337:19;3329:6;3311:46;:::i;:::-;3405:9;3397:6;3393:22;3388:2;3377:9;3373:18;3366:50;3433:33;3459:6;3451;3433:33;:::i;:::-;3515:4;3503:17;;;;3497:3;3482:19;;3475:46;-1:-1:-1;3558:15:54;;;;3552:3;3537:19;;;3530:44;-1:-1:-1;3425:41:54;2837:743;-1:-1:-1;;;;2837:743:54:o;3585:287::-;3714:3;3752:6;3746:13;3768:66;3827:6;3822:3;3815:4;3807:6;3803:17;3768:66;:::i;:::-;3850:16;;;;;3585:287;-1:-1:-1;;3585:287:54:o;3877:346::-;1224:1596:33;;;;;;",
  "deployedSourceMap": "1224:1596:33:-:0;;;;;;;;;;;;;;;;;;2247:13;2288:23;;;;;;;;;-1:-1:-1;;;;;2288:23:33;-1:-1:-1;;;;;2263:67:33;;:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2247:85;;2424:14;2419:3;2414;2401:38;2530:1;2527;2511:14;2506:3;2499:5;2491;2484;2480:17;2467:65;2558:16;2608:5;2605:1;2602;2587:27;2634:7;2658:63;;;;2778:5;2775:1;2768:16;2658:63;2697:5;2694:1;2687:16;1250:38;;;;;;;;;;-1:-1:-1;1250:38:33;;;;-1:-1:-1;;;;;1250:38:33;;;;;;-1:-1:-1;;;;;473:32:54;;;455:51;;443:2;428:18;1250:38:33;;;;;;;14:290:54;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o",
  "source": "// SPDX-License-Identifier: GPL-3.0\n/**\n *     NOTICE\n *\n *     The T-REX software is licensed under a proprietary license or the GPL v.3.\n *     If you choose to receive it under the GPL v.3 license, the following applies:\n *     T-REX is a suite of smart contracts developed by Tokeny to manage and transfer financial assets on the ethereum blockchain\n *\n *     Copyright (C) 2021, Tokeny sàrl.\n *\n *     This program is free software: you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation, either version 3 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n\npragma solidity ^0.8.0;\n\ninterface IImplementationAuthority {\n    function getImplementation() external view returns (address);\n}\n\ncontract TokenProxy {\n    address public implementationAuthority;\n\n    constructor(\n        address _implementationAuthority,\n        address _identityRegistry,\n        address _compliance,\n        string memory _name,\n        string memory _symbol,\n        uint8 _decimals,\n        address _onchainID\n    ) {\n        implementationAuthority = _implementationAuthority;\n\n        address logic = IImplementationAuthority(implementationAuthority).getImplementation();\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, ) =\n            logic.delegatecall(\n                abi.encodeWithSignature(\n                    'init(address,address,string,string,uint8,address)',\n                    _identityRegistry,\n                    _compliance,\n                    _name,\n                    _symbol,\n                    _decimals,\n                    _onchainID\n                )\n            );\n        require(success, 'Initialization failed.');\n    }\n\n    fallback() external payable {\n        address logic = IImplementationAuthority(implementationAuthority).getImplementation();\n\n        assembly {\n            // solium-disable-line\n            calldatacopy(0x0, 0x0, calldatasize())\n            let success := delegatecall(sub(gas(), 10000), logic, 0x0, calldatasize(), 0, 0)\n            let retSz := returndatasize()\n            returndatacopy(0, 0, retSz)\n            switch success\n                case 0 {\n                    revert(0, retSz)\n                }\n                default {\n                    return(0, retSz)\n                }\n        }\n    }\n}\n",
  "sourcePath": "/home/webxpert/workspace/shipfinex/latest-repos/tokenx_smartcontract/contracts/proxy/TokenProxy.sol",
  "ast": {
    "absolutePath": "project:/contracts/proxy/TokenProxy.sol",
    "exportedSymbols": {
      "IImplementationAuthority": [
        6201
      ],
      "TokenProxy": [
        6268
      ]
    },
    "id": 6269,
    "license": "GPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6195,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "1093:23:33"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IImplementationAuthority",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 6201,
        "linearizedBaseContracts": [
          6201
        ],
        "name": "IImplementationAuthority",
        "nameLocation": "1128:24:33",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "aaf10f42",
            "id": 6200,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getImplementation",
            "nameLocation": "1168:17:33",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6196,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1185:2:33"
            },
            "returnParameters": {
              "id": 6199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6198,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6200,
                  "src": "1211:7:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6197,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1210:9:33"
            },
            "scope": 6201,
            "src": "1159:61:33",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6269,
        "src": "1118:104:33",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "TokenProxy",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 6268,
        "linearizedBaseContracts": [
          6268
        ],
        "name": "TokenProxy",
        "nameLocation": "1233:10:33",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "2307f882",
            "id": 6203,
            "mutability": "mutable",
            "name": "implementationAuthority",
            "nameLocation": "1265:23:33",
            "nodeType": "VariableDeclaration",
            "scope": 6268,
            "src": "1250:38:33",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 6202,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1250:7:33",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 6253,
              "nodeType": "Block",
              "src": "1532:671:33",
              "statements": [
                {
                  "expression": {
                    "id": 6222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6220,
                      "name": "implementationAuthority",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6203,
                      "src": "1542:23:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6221,
                      "name": "_implementationAuthority",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6205,
                      "src": "1568:24:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1542:50:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6223,
                  "nodeType": "ExpressionStatement",
                  "src": "1542:50:33"
                },
                {
                  "assignments": [
                    6225
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6225,
                      "mutability": "mutable",
                      "name": "logic",
                      "nameLocation": "1611:5:33",
                      "nodeType": "VariableDeclaration",
                      "scope": 6253,
                      "src": "1603:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6224,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1603:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6231,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 6227,
                            "name": "implementationAuthority",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6203,
                            "src": "1644:23:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6226,
                          "name": "IImplementationAuthority",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6201,
                          "src": "1619:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IImplementationAuthority_$6201_$",
                            "typeString": "type(contract IImplementationAuthority)"
                          }
                        },
                        "id": 6228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1619:49:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IImplementationAuthority_$6201",
                          "typeString": "contract IImplementationAuthority"
                        }
                      },
                      "id": 6229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1669:17:33",
                      "memberName": "getImplementation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6200,
                      "src": "1619:67:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 6230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1619:69:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1603:85:33"
                },
                {
                  "assignments": [
                    6233,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6233,
                      "mutability": "mutable",
                      "name": "success",
                      "nameLocation": "1764:7:33",
                      "nodeType": "VariableDeclaration",
                      "scope": 6253,
                      "src": "1759:12:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6232,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1759:4:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 6247,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "696e697428616464726573732c616464726573732c737472696e672c737472696e672c75696e74382c6164647265737329",
                            "id": 6238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1870:51:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f91b619c3c8d8df92d41549a809cd2e4f7fab7a8f3547d66a1f707ce3409a212",
                              "typeString": "literal_string \"init(address,address,string,string,uint8,address)\""
                            },
                            "value": "init(address,address,string,string,uint8,address)"
                          },
                          {
                            "id": 6239,
                            "name": "_identityRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6207,
                            "src": "1943:17:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 6240,
                            "name": "_compliance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6209,
                            "src": "1982:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 6241,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6211,
                            "src": "2015:5:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 6242,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6213,
                            "src": "2042:7:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 6243,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6215,
                            "src": "2071:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "id": 6244,
                            "name": "_onchainID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6217,
                            "src": "2102:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f91b619c3c8d8df92d41549a809cd2e4f7fab7a8f3547d66a1f707ce3409a212",
                              "typeString": "literal_string \"init(address,address,string,string,uint8,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 6236,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1825:3:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 6237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1829:19:33",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1825:23:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 6245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1825:305:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 6234,
                        "name": "logic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6225,
                        "src": "1789:5:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 6235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1795:12:33",
                      "memberName": "delegatecall",
                      "nodeType": "MemberAccess",
                      "src": "1789:18:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                      }
                    },
                    "id": 6246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1789:355:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1758:386:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6249,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6233,
                        "src": "2162:7:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e697469616c697a6174696f6e206661696c65642e",
                        "id": 6250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2171:24:33",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_84817bd958e2e6d9a7351828ba5fd352a3aaf3cf97a67f6d55271e39a5b3e2ad",
                          "typeString": "literal_string \"Initialization failed.\""
                        },
                        "value": "Initialization failed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_84817bd958e2e6d9a7351828ba5fd352a3aaf3cf97a67f6d55271e39a5b3e2ad",
                          "typeString": "literal_string \"Initialization failed.\""
                        }
                      ],
                      "id": 6248,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2154:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:42:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6252,
                  "nodeType": "ExpressionStatement",
                  "src": "2154:42:33"
                }
              ]
            },
            "id": 6254,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6218,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6205,
                  "mutability": "mutable",
                  "name": "_implementationAuthority",
                  "nameLocation": "1324:24:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1316:32:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6204,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1316:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6207,
                  "mutability": "mutable",
                  "name": "_identityRegistry",
                  "nameLocation": "1366:17:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1358:25:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1358:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6209,
                  "mutability": "mutable",
                  "name": "_compliance",
                  "nameLocation": "1401:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1393:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6208,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1393:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6211,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1436:5:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1422:19:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6210,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1422:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6213,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1465:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1451:21:33",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6212,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1451:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6215,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nameLocation": "1488:9:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1482:15:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6214,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1482:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6217,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "1515:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 6254,
                  "src": "1507:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6216,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1507:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1306:225:33"
            },
            "returnParameters": {
              "id": 6219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1532:0:33"
            },
            "scope": 6268,
            "src": "1295:908:33",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6266,
              "nodeType": "Block",
              "src": "2237:581:33",
              "statements": [
                {
                  "assignments": [
                    6258
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6258,
                      "mutability": "mutable",
                      "name": "logic",
                      "nameLocation": "2255:5:33",
                      "nodeType": "VariableDeclaration",
                      "scope": 6266,
                      "src": "2247:13:33",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6257,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2247:7:33",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6264,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 6260,
                            "name": "implementationAuthority",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6203,
                            "src": "2288:23:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6259,
                          "name": "IImplementationAuthority",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6201,
                          "src": "2263:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IImplementationAuthority_$6201_$",
                            "typeString": "type(contract IImplementationAuthority)"
                          }
                        },
                        "id": 6261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2263:49:33",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IImplementationAuthority_$6201",
                          "typeString": "contract IImplementationAuthority"
                        }
                      },
                      "id": 6262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2313:17:33",
                      "memberName": "getImplementation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6200,
                      "src": "2263:67:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 6263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2263:69:33",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2247:85:33"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "2352:460:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2414:3:33",
                              "type": "",
                              "value": "0x0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2419:3:33",
                              "type": "",
                              "value": "0x0"
                            },
                            {
                              "arguments": [],
                              "functionName": {
                                "name": "calldatasize",
                                "nodeType": "YulIdentifier",
                                "src": "2424:12:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2424:14:33"
                            }
                          ],
                          "functionName": {
                            "name": "calldatacopy",
                            "nodeType": "YulIdentifier",
                            "src": "2401:12:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2401:38:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2401:38:33"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2452:80:33",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "gas",
                                    "nodeType": "YulIdentifier",
                                    "src": "2484:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2484:5:33"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2491:5:33",
                                  "type": "",
                                  "value": "10000"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nodeType": "YulIdentifier",
                                "src": "2480:3:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2480:17:33"
                            },
                            {
                              "name": "logic",
                              "nodeType": "YulIdentifier",
                              "src": "2499:5:33"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2506:3:33",
                              "type": "",
                              "value": "0x0"
                            },
                            {
                              "arguments": [],
                              "functionName": {
                                "name": "calldatasize",
                                "nodeType": "YulIdentifier",
                                "src": "2511:12:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2511:14:33"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2527:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2530:1:33",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "delegatecall",
                            "nodeType": "YulIdentifier",
                            "src": "2467:12:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2467:65:33"
                        },
                        "variables": [
                          {
                            "name": "success",
                            "nodeType": "YulTypedName",
                            "src": "2456:7:33",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2545:29:33",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "returndatasize",
                            "nodeType": "YulIdentifier",
                            "src": "2558:14:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2558:16:33"
                        },
                        "variables": [
                          {
                            "name": "retSz",
                            "nodeType": "YulTypedName",
                            "src": "2549:5:33",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2602:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2605:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "name": "retSz",
                              "nodeType": "YulIdentifier",
                              "src": "2608:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "returndatacopy",
                            "nodeType": "YulIdentifier",
                            "src": "2587:14:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2587:27:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2587:27:33"
                      },
                      {
                        "cases": [
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "2665:56:33",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2694:1:33",
                                        "type": "",
                                        "value": "0"
                                      },
                                      {
                                        "name": "retSz",
                                        "nodeType": "YulIdentifier",
                                        "src": "2697:5:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "revert",
                                      "nodeType": "YulIdentifier",
                                      "src": "2687:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2687:16:33"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "2687:16:33"
                                }
                              ]
                            },
                            "nodeType": "YulCase",
                            "src": "2658:63:33",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2663:1:33",
                              "type": "",
                              "value": "0"
                            }
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "2746:56:33",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2775:1:33",
                                        "type": "",
                                        "value": "0"
                                      },
                                      {
                                        "name": "retSz",
                                        "nodeType": "YulIdentifier",
                                        "src": "2778:5:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "return",
                                      "nodeType": "YulIdentifier",
                                      "src": "2768:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2768:16:33"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "2768:16:33"
                                }
                              ]
                            },
                            "nodeType": "YulCase",
                            "src": "2738:64:33",
                            "value": "default"
                          }
                        ],
                        "expression": {
                          "name": "success",
                          "nodeType": "YulIdentifier",
                          "src": "2634:7:33"
                        },
                        "nodeType": "YulSwitch",
                        "src": "2627:175:33"
                      }
                    ]
                  },
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 6258,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2499:5:33",
                      "valueSize": 1
                    }
                  ],
                  "id": 6265,
                  "nodeType": "InlineAssembly",
                  "src": "2343:469:33"
                }
              ]
            },
            "id": 6267,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6255,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2217:2:33"
            },
            "returnParameters": {
              "id": 6256,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2237:0:33"
            },
            "scope": 6268,
            "src": "2209:609:33",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6269,
        "src": "1224:1596:33",
        "usedErrors": []
      }
    ],
    "src": "1093:1728:33"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.365Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}