{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "representation",
          "type": "address"
        }
      ],
      "name": "TokenDeployed",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "canonicalToRepresentation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_custom",
          "type": "address"
        }
      ],
      "name": "enrollCustom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "ensureLocalToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "exposed_defaultDetails",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "exposed_deployToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "exposed_localDomain",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "name": "exposed_setCanonicalToRepresentation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "name": "exposed_setRepresentationToCanonical",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "name": "getCanonicalTokenId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "getLocalAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "getLocalAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "getRepresentationAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "_representation",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_local",
          "type": "address"
        }
      ],
      "name": "getTokenId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenBeacon",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_xAppConnectionManager",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "isLocalOrigin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "mustHaveLocalToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_oldRepr",
          "type": "address"
        }
      ],
      "name": "oldReprToCurrentRepr",
      "outputs": [
        {
          "internalType": "address",
          "name": "_currentRepr",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "representationToCanonical",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "domain",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_xAppConnectionManager",
          "type": "address"
        }
      ],
      "name": "setXAppConnectionManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenBeacon",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xAppConnectionManager",
      "outputs": [
        {
          "internalType": "contract XAppConnectionManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50612763806100206000396000f3fe60806040523480156200001157600080fd5b5060043610620001c05760003560e01c80638da5cb5b11620000f9578063ccf5a77c1162000099578063ec694a14116200006f578063ec694a1414620005d1578063f153768614620006e1578063f2fde38b146200071757620001c0565b8063ccf5a77c1462000559578063d82d05311462000563578063dc9685a714620005a557620001c0565b8063b9730eaf11620000cf578063b9730eaf1462000491578063c2561f6514620004c7578063c86415cb146200050f57620001c0565b80638da5cb5b146200042f5780639d2f254f1462000439578063b869d89a146200046557620001c0565b80633339df961162000165578063589b3c64116200013b578063589b3c6414620003b1578063715018a614620003dd57806380350c2214620003e757620001c0565b80633339df96146200033357806341bdc8b5146200033d578063485cc955146200037357620001c0565b80631ecf6f9f116200019b5780631ecf6f9f146200029d57806328b1aea014620002bd5780632c3da59c146200030757620001c0565b806303e418c214620001c55780630e71e251146200021b5780630fdeeba9146200027a575b600080fd5b620001fb60048036036020811015620001dd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166200074d565b6040805163ffffffff909316835260208301919091528051918290030190f35b62000251600480360360208110156200023357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166200076f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b620002846200083f565b6040805163ffffffff9092168252519081900360200190f35b6200025160048036036020811015620002b557600080fd5b503562000850565b6200030560048036036060811015620002d557600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000878565b005b62000251600480360360408110156200031f57600080fd5b5063ffffffff813516906020013562000944565b62000251620009e1565b62000305600480360360208110156200035557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16620009fd565b62000305600480360360408110156200038b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351662000af1565b6200025160048036036040811015620003c957600080fd5b5063ffffffff813516906020013562000c59565b6200030562000c98565b6200030560048036036060811015620003ff57600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000932565b6200025162000d47565b62000251600480360360408110156200045157600080fd5b5063ffffffff813516906020013562000d63565b62000251600480360360408110156200047d57600080fd5b5063ffffffff813516906020013562000d71565b620001fb60048036036020811015620004a957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000e56565b6200030560048036036060811015620004df57600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000ea1565b62000545600480360360208110156200052757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000eae565b604080519115158252519081900360200190f35b6200025162000ef4565b62000251600480360360408110156200057b57600080fd5b50803563ffffffff16906020013573ffffffffffffffffffffffffffffffffffffffff1662000f10565b6200025160048036036040811015620005bd57600080fd5b5063ffffffff813516906020013562000f28565b620005fd60048036036040811015620005e957600080fd5b5063ffffffff813516906020013562000f96565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156200064057818101518382015260200162000626565b50505050905090810190601f1680156200066e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620006a357818101518382015260200162000689565b50505050905090810190601f168015620006d15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b620001fb60048036036020811015620006f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000fb0565b62000305600480360360208110156200072f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001031565b6098602052600090815260409020805460019091015463ffffffff9091169082565b73ffffffffffffffffffffffffffffffffffffffff811660009081526098602090815260408083208151808301909252805463ffffffff1680835260019091015492820192909252906200082457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2172657072000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620008388160000151826020015162000f28565b9392505050565b60006200084b620011da565b905090565b60996020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b62000882620011e6565b73ffffffffffffffffffffffffffffffffffffffff16620008a262000d47565b73ffffffffffffffffffffffffffffffffffffffff16146200092557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b62000932838383620011ea565b6200093f838383620012bc565b505050565b60008062000953848462000c59565b905073ffffffffffffffffffffffffffffffffffffffff8116620009d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21746f6b656e0000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b90505b92915050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b62000a07620011e6565b73ffffffffffffffffffffffffffffffffffffffff1662000a2762000d47565b73ffffffffffffffffffffffffffffffffffffffff161462000aaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff168062000b0d575062000b0d620013d6565b8062000b1c575060005460ff16155b62000b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562000bda57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905562000c2582620013e9565b80156200093f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b600062000c65620011da565b63ffffffff168363ffffffff16141562000c8c5762000c848262001550565b9050620009db565b620009d8838362000f28565b62000ca2620011e6565b73ffffffffffffffffffffffffffffffffffffffff1662000cc262000d47565b73ffffffffffffffffffffffffffffffffffffffff161462000d4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6000620009d8838362001553565b600062000d7d620011e6565b73ffffffffffffffffffffffffffffffffffffffff1662000d9d62000d47565b73ffffffffffffffffffffffffffffffffffffffff161462000e2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b62000e2c838362000c59565b905073ffffffffffffffffffffffffffffffffffffffff8116620009db57620009d8838362001553565b73ffffffffffffffffffffffffffffffffffffffff166000908152609860209081526040918290208251808401909352805463ffffffff168084526001909101549290910182905291565b6200093f838383620011ea565b73ffffffffffffffffffffffffffffffffffffffff811660009081526098602052604081205463ffffffff161562000ee95750600062000eef565b50803b15155b919050565b60975473ffffffffffffffffffffffffffffffffffffffff1681565b6000620009d88362000f22846200187e565b62000c59565b60008062000f37848462001897565b9050600062000f687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620018f0565b60009081526099602052604090205473ffffffffffffffffffffffffffffffffffffffff1695945050505050565b60608062000fa5848462001933565b915091509250929050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526098602090815260408083208151808301909252805463ffffffff168083526001909101549282019290925282916200101e5762001009620011da565b925062001016846200187e565b91506200102b565b8051602082015190935091505b50915091565b6200103b620011e6565b73ffffffffffffffffffffffffffffffffffffffff166200105b62000d47565b73ffffffffffffffffffffffffffffffffffffffff1614620010de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166200114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180620027036026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006200084b62001a13565b3390565b63ffffffff83166200125d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f216e756c6c20646f6d61696e0000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260986020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff93909316929092178255600190910155565b73ffffffffffffffffffffffffffffffffffffffff81166200133f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f216e756c6c207265707200000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006200134d848462001897565b905060006200137e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620018f0565b600090815260996020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925550505050565b6000620013e33062001ab2565b15905090565b600054610100900460ff168062001405575062001405620013d6565b8062001414575060005460ff16155b6200146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff16158015620014d257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790556200151c62001ab8565b80156200154c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b90565b60975460405160009173ffffffffffffffffffffffffffffffffffffffff16906200157e9062002192565b73ffffffffffffffffffffffffffffffffffffffff909116815260406020820181905260008183018190529051918290036060019190f080158015620015c8573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200161457600080fd5b505af115801562001629573d6000803e3d6000fd5b505050506000806200163c858562001933565b915091508273ffffffffffffffffffffffffffffffffffffffff1663654935f4838360126040518463ffffffff1660e01b8152600401808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015620016b85781810151838201526020016200169e565b50505050905090810190601f168015620016e65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200171b57818101518382015260200162001701565b50505050905090810190601f168015620017495780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156200176c57600080fd5b505af115801562001781573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663f2fde38b620017ab62000d47565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620017f857600080fd5b505af11580156200180d573d6000803e3d6000fd5b505050506200181e858585620012bc565b6200182b858585620011ea565b8273ffffffffffffffffffffffffffffffffffffffff16848663ffffffff167f84d5e3618bf276f3d29a931646fdd996b398a3efa3cf6bceefc1fe7f0304059f60405160405180910390a4505092915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000620009d86001604080517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16602082015260248082018790528251808303909101815260449091019091529062001be8565b600080620018fe8362001c0e565b6bffffffffffffffffffffffff16905060006200191b8462001c22565b6bffffffffffffffffffffffff169091209392505050565b6060806000620019438462001c36565b915050620019518562001d0e565b6040805160b09290921b7fffffffffffffffffffff000000000000000000000000000000000000000000001660208301527f2e00000000000000000000000000000000000000000000000000000000000000602a83015260e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016602b8301528051808303600f9081018252602f8401818152606f85019093529095509091604f01818036833701905050915060208301516020830152509250929050565b606554604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801562001a7f57600080fd5b505afa15801562001a94573d6000803e3d6000fd5b505050506040513d602081101562001aab57600080fd5b5051905090565b3b151590565b600054610100900460ff168062001ad4575062001ad4620013d6565b8062001ae3575060005460ff16155b62001b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562001ba157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b62001bab62001d70565b62001bb562001e8a565b801562001be557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b81516000906020840162001c0564ffffffffff8516828462002024565b95945050505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b600080601f5b600f8160ff16111562001ca35760ff600882021684901c62001c5e8162002081565b61ffff16841793508160ff1660101462001c7a57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162001c3c565b50600f5b60ff8160ff1610156200102b5760ff600882021684901c62001cc98162002081565b61ffff16831792508160ff1660001462001ce557601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162001ca7565b60006030815b600a8160ff16101562001d695760ff600882021682600a63ffffffff87160663ffffffff160169ffffffffffffffffffff16901b83179250600a8463ffffffff168162001d5d57fe5b04935060010162001d14565b5050919050565b600054610100900460ff168062001d8c575062001d8c620013d6565b8062001d9b575060005460ff16155b62001df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562001bb557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911661010017166001179055801562001be557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff168062001ea6575062001ea6620013d6565b8062001eb5575060005460ff16155b62001f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562001f7357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600062001f7f620011e6565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562001be557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600080620020338484620020b5565b905060405181111562002044575060005b8062002074577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505062000838565b62001c0585858562002128565b60006200209560048360ff16901c6200213b565b60ff161760081b62ffff0016620020ac826200213b565b60ff1617919050565b81810182811015620009db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f841691829081106200218357fe5b016020015160f81c9392505050565b61056280620021a18339019056fe60a06040526040516105623803806105628339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b506040525050506100f0826101d060201b6100291760201c565b610134576040805162461bcd60e51b815260206004820152601060248201526f18995858dbdb880858dbdb9d1c9858dd60821b604482015290519081900360640190fd5b6001600160601b0319606083901b166080526000610151836101d6565b9050610166816101d060201b6100291760201c565b6101b7576040805162461bcd60e51b815260206004820152601f60248201527f626561636f6e20696d706c656d656e746174696f6e2021636f6e747261637400604482015290519081900360640190fd5b8151156101c8576101c881836102d6565b50505061038f565b3b151590565b604051600090819081906001600160a01b0385169082818181855afa9150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b50915091508181906102b65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561027b578181015183820152602001610263565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156102cc57600080fd5b5051949350505050565b6000826001600160a01b0316826040518082805190602001908083835b602083106103125780518252601f1990920191602091820191016102f3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610372576040519150601f19603f3d011682016040523d82523d6000602084013e610377565b606091505b505090508061038a573d6000803e3d6000fd5b505050565b60805160601c6101b76103ab60003980603652506101b76000f3fe60806040523661001357610011610017565b005b6100115b61002761002261002f565b61005f565b565b3b151590565b600061005a7f0000000000000000000000000000000000000000000000000000000000000000610083565b905090565b3660008037600080366000845af43d6000803e80801561007e573d6000f35b3d6000fd5b6040516000908190819073ffffffffffffffffffffffffffffffffffffffff85169082818181855afa9150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b509150915081819061018a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156101a057600080fd5b505194935050505056fea164736f6c6343000706000a4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a164736f6c6343000706000a",
    "sourceMap": "126:964:56:-:0;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x60806040523480156200001157600080fd5b5060043610620001c05760003560e01c80638da5cb5b11620000f9578063ccf5a77c1162000099578063ec694a14116200006f578063ec694a1414620005d1578063f153768614620006e1578063f2fde38b146200071757620001c0565b8063ccf5a77c1462000559578063d82d05311462000563578063dc9685a714620005a557620001c0565b8063b9730eaf11620000cf578063b9730eaf1462000491578063c2561f6514620004c7578063c86415cb146200050f57620001c0565b80638da5cb5b146200042f5780639d2f254f1462000439578063b869d89a146200046557620001c0565b80633339df961162000165578063589b3c64116200013b578063589b3c6414620003b1578063715018a614620003dd57806380350c2214620003e757620001c0565b80633339df96146200033357806341bdc8b5146200033d578063485cc955146200037357620001c0565b80631ecf6f9f116200019b5780631ecf6f9f146200029d57806328b1aea014620002bd5780632c3da59c146200030757620001c0565b806303e418c214620001c55780630e71e251146200021b5780630fdeeba9146200027a575b600080fd5b620001fb60048036036020811015620001dd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166200074d565b6040805163ffffffff909316835260208301919091528051918290030190f35b62000251600480360360208110156200023357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166200076f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b620002846200083f565b6040805163ffffffff9092168252519081900360200190f35b6200025160048036036020811015620002b557600080fd5b503562000850565b6200030560048036036060811015620002d557600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000878565b005b62000251600480360360408110156200031f57600080fd5b5063ffffffff813516906020013562000944565b62000251620009e1565b62000305600480360360208110156200035557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16620009fd565b62000305600480360360408110156200038b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351662000af1565b6200025160048036036040811015620003c957600080fd5b5063ffffffff813516906020013562000c59565b6200030562000c98565b6200030560048036036060811015620003ff57600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000932565b6200025162000d47565b62000251600480360360408110156200045157600080fd5b5063ffffffff813516906020013562000d63565b62000251600480360360408110156200047d57600080fd5b5063ffffffff813516906020013562000d71565b620001fb60048036036020811015620004a957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000e56565b6200030560048036036060811015620004df57600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000ea1565b62000545600480360360208110156200052757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000eae565b604080519115158252519081900360200190f35b6200025162000ef4565b62000251600480360360408110156200057b57600080fd5b50803563ffffffff16906020013573ffffffffffffffffffffffffffffffffffffffff1662000f10565b6200025160048036036040811015620005bd57600080fd5b5063ffffffff813516906020013562000f28565b620005fd60048036036040811015620005e957600080fd5b5063ffffffff813516906020013562000f96565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156200064057818101518382015260200162000626565b50505050905090810190601f1680156200066e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620006a357818101518382015260200162000689565b50505050905090810190601f168015620006d15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b620001fb60048036036020811015620006f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000fb0565b62000305600480360360208110156200072f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001031565b6098602052600090815260409020805460019091015463ffffffff9091169082565b73ffffffffffffffffffffffffffffffffffffffff811660009081526098602090815260408083208151808301909252805463ffffffff1680835260019091015492820192909252906200082457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2172657072000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620008388160000151826020015162000f28565b9392505050565b60006200084b620011da565b905090565b60996020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b62000882620011e6565b73ffffffffffffffffffffffffffffffffffffffff16620008a262000d47565b73ffffffffffffffffffffffffffffffffffffffff16146200092557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b62000932838383620011ea565b6200093f838383620012bc565b505050565b60008062000953848462000c59565b905073ffffffffffffffffffffffffffffffffffffffff8116620009d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21746f6b656e0000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b90505b92915050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b62000a07620011e6565b73ffffffffffffffffffffffffffffffffffffffff1662000a2762000d47565b73ffffffffffffffffffffffffffffffffffffffff161462000aaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff168062000b0d575062000b0d620013d6565b8062000b1c575060005460ff16155b62000b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562000bda57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905562000c2582620013e9565b80156200093f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b600062000c65620011da565b63ffffffff168363ffffffff16141562000c8c5762000c848262001550565b9050620009db565b620009d8838362000f28565b62000ca2620011e6565b73ffffffffffffffffffffffffffffffffffffffff1662000cc262000d47565b73ffffffffffffffffffffffffffffffffffffffff161462000d4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6000620009d8838362001553565b600062000d7d620011e6565b73ffffffffffffffffffffffffffffffffffffffff1662000d9d62000d47565b73ffffffffffffffffffffffffffffffffffffffff161462000e2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b62000e2c838362000c59565b905073ffffffffffffffffffffffffffffffffffffffff8116620009db57620009d8838362001553565b73ffffffffffffffffffffffffffffffffffffffff166000908152609860209081526040918290208251808401909352805463ffffffff168084526001909101549290910182905291565b6200093f838383620011ea565b73ffffffffffffffffffffffffffffffffffffffff811660009081526098602052604081205463ffffffff161562000ee95750600062000eef565b50803b15155b919050565b60975473ffffffffffffffffffffffffffffffffffffffff1681565b6000620009d88362000f22846200187e565b62000c59565b60008062000f37848462001897565b9050600062000f687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620018f0565b60009081526099602052604090205473ffffffffffffffffffffffffffffffffffffffff1695945050505050565b60608062000fa5848462001933565b915091509250929050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526098602090815260408083208151808301909252805463ffffffff168083526001909101549282019290925282916200101e5762001009620011da565b925062001016846200187e565b91506200102b565b8051602082015190935091505b50915091565b6200103b620011e6565b73ffffffffffffffffffffffffffffffffffffffff166200105b62000d47565b73ffffffffffffffffffffffffffffffffffffffff1614620010de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166200114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180620027036026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006200084b62001a13565b3390565b63ffffffff83166200125d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f216e756c6c20646f6d61696e0000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260986020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff93909316929092178255600190910155565b73ffffffffffffffffffffffffffffffffffffffff81166200133f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f216e756c6c207265707200000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006200134d848462001897565b905060006200137e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620018f0565b600090815260996020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925550505050565b6000620013e33062001ab2565b15905090565b600054610100900460ff168062001405575062001405620013d6565b8062001414575060005460ff16155b6200146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff16158015620014d257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790556200151c62001ab8565b80156200154c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b90565b60975460405160009173ffffffffffffffffffffffffffffffffffffffff16906200157e9062002192565b73ffffffffffffffffffffffffffffffffffffffff909116815260406020820181905260008183018190529051918290036060019190f080158015620015c8573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200161457600080fd5b505af115801562001629573d6000803e3d6000fd5b505050506000806200163c858562001933565b915091508273ffffffffffffffffffffffffffffffffffffffff1663654935f4838360126040518463ffffffff1660e01b8152600401808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015620016b85781810151838201526020016200169e565b50505050905090810190601f168015620016e65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200171b57818101518382015260200162001701565b50505050905090810190601f168015620017495780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156200176c57600080fd5b505af115801562001781573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663f2fde38b620017ab62000d47565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620017f857600080fd5b505af11580156200180d573d6000803e3d6000fd5b505050506200181e858585620012bc565b6200182b858585620011ea565b8273ffffffffffffffffffffffffffffffffffffffff16848663ffffffff167f84d5e3618bf276f3d29a931646fdd996b398a3efa3cf6bceefc1fe7f0304059f60405160405180910390a4505092915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000620009d86001604080517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16602082015260248082018790528251808303909101815260449091019091529062001be8565b600080620018fe8362001c0e565b6bffffffffffffffffffffffff16905060006200191b8462001c22565b6bffffffffffffffffffffffff169091209392505050565b6060806000620019438462001c36565b915050620019518562001d0e565b6040805160b09290921b7fffffffffffffffffffff000000000000000000000000000000000000000000001660208301527f2e00000000000000000000000000000000000000000000000000000000000000602a83015260e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016602b8301528051808303600f9081018252602f8401818152606f85019093529095509091604f01818036833701905050915060208301516020830152509250929050565b606554604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801562001a7f57600080fd5b505afa15801562001a94573d6000803e3d6000fd5b505050506040513d602081101562001aab57600080fd5b5051905090565b3b151590565b600054610100900460ff168062001ad4575062001ad4620013d6565b8062001ae3575060005460ff16155b62001b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562001ba157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b62001bab62001d70565b62001bb562001e8a565b801562001be557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b81516000906020840162001c0564ffffffffff8516828462002024565b95945050505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b600080601f5b600f8160ff16111562001ca35760ff600882021684901c62001c5e8162002081565b61ffff16841793508160ff1660101462001c7a57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162001c3c565b50600f5b60ff8160ff1610156200102b5760ff600882021684901c62001cc98162002081565b61ffff16831792508160ff1660001462001ce557601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162001ca7565b60006030815b600a8160ff16101562001d695760ff600882021682600a63ffffffff87160663ffffffff160169ffffffffffffffffffff16901b83179250600a8463ffffffff168162001d5d57fe5b04935060010162001d14565b5050919050565b600054610100900460ff168062001d8c575062001d8c620013d6565b8062001d9b575060005460ff16155b62001df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562001bb557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911661010017166001179055801562001be557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff168062001ea6575062001ea6620013d6565b8062001eb5575060005460ff16155b62001f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062002729602e913960400191505060405180910390fd5b600054610100900460ff1615801562001f7357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600062001f7f620011e6565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562001be557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600080620020338484620020b5565b905060405181111562002044575060005b8062002074577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505062000838565b62001c0585858562002128565b60006200209560048360ff16901c6200213b565b60ff161760081b62ffff0016620020ac826200213b565b60ff1617919050565b81810182811015620009db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f841691829081106200218357fe5b016020015160f81c9392505050565b61056280620021a18339019056fe60a06040526040516105623803806105628339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b506040525050506100f0826101d060201b6100291760201c565b610134576040805162461bcd60e51b815260206004820152601060248201526f18995858dbdb880858dbdb9d1c9858dd60821b604482015290519081900360640190fd5b6001600160601b0319606083901b166080526000610151836101d6565b9050610166816101d060201b6100291760201c565b6101b7576040805162461bcd60e51b815260206004820152601f60248201527f626561636f6e20696d706c656d656e746174696f6e2021636f6e747261637400604482015290519081900360640190fd5b8151156101c8576101c881836102d6565b50505061038f565b3b151590565b604051600090819081906001600160a01b0385169082818181855afa9150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b50915091508181906102b65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561027b578181015183820152602001610263565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156102cc57600080fd5b5051949350505050565b6000826001600160a01b0316826040518082805190602001908083835b602083106103125780518252601f1990920191602091820191016102f3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610372576040519150601f19603f3d011682016040523d82523d6000602084013e610377565b606091505b505090508061038a573d6000803e3d6000fd5b505050565b60805160601c6101b76103ab60003980603652506101b76000f3fe60806040523661001357610011610017565b005b6100115b61002761002261002f565b61005f565b565b3b151590565b600061005a7f0000000000000000000000000000000000000000000000000000000000000000610083565b905090565b3660008037600080366000845af43d6000803e80801561007e573d6000f35b3d6000fd5b6040516000908190819073ffffffffffffffffffffffffffffffffffffffff85169082818181855afa9150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b509150915081819061018a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156101a057600080fd5b505194935050505056fea164736f6c6343000706000a4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564a164736f6c6343000706000a",
    "sourceMap": "126:964:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2278:74:38;;;;;;;;;;;;;;;;-1:-1:-1;2278:74:38;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;7400:535;;;;;;;;;;;;;;;;-1:-1:-1;7400:535:38;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;988:100:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2507:60:38;;;;;;;;;;;;;;;;-1:-1:-1;2507:60:38;;:::i;6678:302::-;;;;;;;;;;;;;;;;-1:-1:-1;6678:302:38;;;;;;;;;;;;;;;;:::i;:::-;;10696:276;;;;;;;;;;;;;;;;-1:-1:-1;10696:276:38;;;;;;;;;:::i;504:50:80:-;;;:::i;1353:191::-;;;;;;;;;;;;;;;;-1:-1:-1;1353:191:80;;;;:::i;3228:223:38:-;;;;;;;;;;;;;;;;-1:-1:-1;3228:223:38;;;;;;;;;;;:::i;9975:435::-;;;;;;;;;;;;;;;;-1:-1:-1;9975:435:38;;;;;;;;;:::i;16161:84::-;;;:::i;401:216:56:-;;;;;;;;;;;;;;;;-1:-1:-1;401:216:56;;;;;;;;;;;;;;;;:::i;1335:85:7:-;;;:::i;623:158:56:-;;;;;;;;;;;;;;;;-1:-1:-1;623:158:56;;;;;;;;;:::i;5207:390:38:-;;;;;;;;;;;;;;;;-1:-1:-1;5207:390:38;;;;;;;;;:::i;3831:323::-;;;;;;;;;;;;;;;;-1:-1:-1;3831:323:38;;;;:::i;179:216:56:-;;;;;;;;;;;;;;;;-1:-1:-1;179:216:56;;;;;;;;;;;;;;;;:::i;11099:733:38:-;;;;;;;;;;;;;;;;-1:-1:-1;11099:733:38;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2192:26;;;:::i;9272:204::-;;;;;;;;;;;;;;;;-1:-1:-1;9272:204:38;;;;;;;;;;;:::i;4454:321::-;;;;;;;;;;;;;;;;-1:-1:-1;4454:321:38;;;;;;;;;:::i;787:195:56:-;;;;;;;;;;;;;;;;-1:-1:-1;787:195:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;787:195:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8303:470:38;;;;;;;;;;;;;;;;-1:-1:-1;8303:470:38;;;;:::i;2261:240:7:-;;;;;;;;;;;;;;;;-1:-1:-1;2261:240:7;;;;:::i;2278:74:38:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7400:535::-;7662:57;;;7512:20;7662:57;;;:25;:57;;;;;;;;7622:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;7729:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7874:54;7899:8;:15;;;7916:8;:11;;;7874:24;:54::i;:::-;7859:69;7400:535;-1:-1:-1;;;7400:535:38:o;988:100:56:-;1042:6;1067:14;:12;:14::i;:::-;1060:21;;988:100;:::o;2507:60:38:-;;;;;;;;;;;;;;;:::o;6678:302::-;1558:12:7;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6859:52:38::1;6889:7;6898:3;6903:7;6859:29;:52::i;:::-;6921;6951:7;6960:3;6965:7;6921:29;:52::i;:::-;6678:302:::0;;;:::o;10696:276::-;10817:6;10839:14;10856:29;10872:7;10881:3;10856:15;:29::i;:::-;10839:46;-1:-1:-1;10903:20:38;;;10895:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10958:6;-1:-1:-1;10696:276:38;;;;;:::o;504:50:80:-;;;;;;:::o;1353:191::-;1558:12:7;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1468:21:80::1;:69:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1353:191::o;3228:223:38:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:19;1647:13;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;3351:11:38::1;:26:::0;;;::::1;;::::0;::::1;;::::0;;3387:57:::1;3421:22:::0;3387:33:::1;:57::i;:::-;1794:14:11::0;1790:66;;;1840:5;1824:21;;;;;;3228:223:38;;;:::o;9975:435::-;10091:14;10136;:12;:14::i;:::-;10125:25;;:7;:25;;;10121:283;;;10215:31;10242:3;10215:26;:31::i;:::-;10206:40;;10121:283;;;10355:38;10380:7;10389:3;10355:24;:38::i;16161:84::-;1558:12:7;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16161:84:38:o;1335:85:7:-;1407:6;;;;1335:85;:::o;623:158:56:-;713:14;750:24;763:6;771:2;750:12;:24::i;5207:390:38:-;5331:14;1558:12:7;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5370:29:38::1;5386:7;5395:3;5370:15;:29::i;:::-;5361:38:::0;-1:-1:-1;5413:20:38::1;::::0;::::1;5409:182;;5554:26;5567:7;5576:3;5554:12;:26::i;3831:323::-:0;4017:64;;3932:14;4017:64;;;:25;:64;;;;;;;;;3975:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;3831:323::o;179:216:56:-;328:60;358:7;367:3;372:15;328:29;:60::i;11099:733:38:-;11378:33;;;11202:4;11378:33;;;:25;:33;;;;;:40;;;:45;11374:88;;-1:-1:-1;11446:5:38;11439:12;;11374:88;-1:-1:-1;11766:19:38;;11811:14;;11099:733;;;;:::o;2192:26::-;;;;;;:::o;9272:204::-;9373:14;9412:57;9428:7;9437:31;9464:3;9437:26;:31::i;:::-;9412:15;:57::i;4454:321::-;4562:23;4601:16;4620:41;4648:7;4657:3;4620:27;:41::i;:::-;4601:60;-1:-1:-1;4671:15:38;4689:17;:15;;;;:17::i;:::-;4734:34;;;;:25;:34;;;;;;;;;4454:321;-1:-1:-1;;;;;4454:321:38:o;787:195:56:-;895:13;910;946:29;962:7;971:3;946:15;:29::i;:::-;939:36;;;;787:195;;;;;:::o;8303:470:38:-;8486:55;;;8403:14;8486:55;;;:25;:55;;;;;;;;8446:95;;;;;;;;;;;;;;;;;;;;;;;;;;;8403:14;;8551:216;;8601:14;:12;:14::i;:::-;8591:24;;8635:34;8662:6;8635:26;:34::i;:::-;8629:40;;8551:216;;;8710:15;;8745:11;;;;8710:15;;-1:-1:-1;8745:11:38;-1:-1:-1;8551:216:38;8303:470;;;;:::o;2261:240:7:-;1558:12;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:22:::1;::::0;::::1;2341:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2450:6;::::0;2429:38:::1;::::0;::::1;::::0;;::::1;::::0;2450:6:::1;::::0;2429:38:::1;::::0;2450:6:::1;::::0;2429:38:::1;2477:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2261:240::o;15787:181:38:-;15897:6;15926:35;:33;:35::i;828:104:18:-;915:10;828:104;:::o;12157:316:38:-;12307:12;;;12299:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12346:42;;;;;;:25;:42;;;;;:59;;;;;;;;;;;;;;;-1:-1:-1;12415:45:38;;;:51;12157:316::o;12750:378::-;12900:29;;;12892:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12954:16;12973:41;13001:7;13010:3;12973:27;:41::i;:::-;12954:60;-1:-1:-1;13024:15:38;13042:17;:15;;;;:17::i;:::-;13069:34;;;;:25;:34;;;;;:52;;;;;;;;;;;;;;;;-1:-1:-1;;;;12750:378:38:o;1952:123:11:-;2000:4;2024:44;2062:4;2024:29;:44::i;:::-;2023:45;2016:52;;1952:123;:::o;884:228:80:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:19;1647:13;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;1010:21:80::1;:69:::0;;;::::1;;::::0;::::1;;::::0;;1089:16:::1;:14;:16::i;:::-;1794:14:11::0;1790:66;;;1840:5;1824:21;;;;;;1790:66;884:228:80;;:::o;1167:127:75:-;1280:4;1167:127::o;13355:1067:38:-;13562:11;;13539:39;;13440:14;;13562:11;;;13539:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13522:57;;13810:6;13797:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13888:19;13909:21;13934:63;13963:7;13984:3;13934:15;:63::i;:::-;13887:110;;;;14020:6;14007:31;;;14039:5;14046:7;14055:2;14007:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14007:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14127:6;14114:38;;;14153:7;:5;:7::i;:::-;14114:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14206:51;14236:7;14245:3;14250:6;14206:29;:51::i;:::-;14267;14297:7;14306:3;14311:6;14267:29;:51::i;:::-;14408:6;14380:35;;14403:3;14394:7;14380:35;;;;;;;;;;;;13355:1067;;;;;;:::o;999:129:75:-;1097:23;;;999:129::o;7247:193:33:-;7346:7;7376:57;7418:13;7376:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:34;:57::i;21799:298:32:-;21855:14;21881:12;21896;21900:7;21896:3;:12::i;:::-;21881:27;;;;21918:12;21933;21937:7;21933:3;:12::i;:::-;21918:27;;22060:21;;;;21964:127;-1:-1:-1;;;21964:127:32:o;14832:758:38:-;14933:19;;15051:21;15076:32;15103:3;15076:18;:32::i;:::-;15048:60;;;15261:31;15284:7;15261:22;:31::i;:::-;15227:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15468:22;;;;;;;;;15227:155;;-1:-1:-1;15227:155:38;;15468:22;;15227:155;;15468:22;;;;;-1:-1:-1;15468:22:38;15458:32;;15567:4;15560:5;15556:16;15550:23;15543:4;15534:7;15530:18;15523:51;15509:75;;;;;;:::o;2391:122:80:-;2471:21;;:35;;;;;;;;2446:6;;2471:21;;;:33;;:35;;;;;;;;;;;;;;:21;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2471:35:80;;-1:-1:-1;2391:122:80;:::o;737:413:17:-;1097:20;1135:8;;;737:413::o;935:126:7:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:19;1647:13;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;992:26:7::1;:24;:26::i;:::-;1028;:24;:26::i;:::-;1794:14:11::0;1790:66;;;1840:5;1824:21;;;;;;1790:66;935:126:7;:::o;13237:368:32:-;13341:10;;13307:7;;13496:4;13487:14;;13572:26;;;;13487:14;13341:10;13572:5;:26::i;:::-;13565:33;13237:368;-1:-1:-1;;;;;13237:368:32:o;14658:373::-;14994:3;14990:17;2800:26;14986:29;;14811:214::o;15855:291::-;16110:2;16106:16;2800:26;16102:28;;16008:132::o;1175:614:37:-;1257:18;;1327:2;1312:211;1335:2;1331:1;:6;;;1312:211;;;1378:17;1393:1;1389:5;;1378:17;;;;1424:12;1378:17;1424:8;:12::i;:::-;1410:26;;;;;;1454:1;:7;;1459:2;1454:7;1450:63;;1496:2;1481:17;;;;;1450:63;-1:-1:-1;1339:6:37;;1312:211;;;-1:-1:-1;1585:2:37;1570:213;1593:3;1589:1;:7;;;1570:213;;;1637:17;1652:1;1648:5;;1637:17;;;;1684:12;1637:17;1684:8;:12::i;:::-;1669:27;;;;;;1714:1;:6;;1719:1;1714:6;1710:63;;1756:2;1740:18;;;;;1710:63;-1:-1:-1;1598:6:37;;1570:213;;489:390;572:15;620:4;572:15;738:135;760:2;756:1;:6;;;738:135;;;798:34;830:1;826:5;;798:34;813:7;807:2;800:9;;;;799:21;;;798:34;;;;786:46;;;;860:2;853:4;:9;;;;;;;;;-1:-1:-1;769:1:37;764:6;738:135;;;;489:390;;;;:::o;759:64:18:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:19;1647:13;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1794:14;1790:66;;;1840:5;1824:21;;;;;;759:64:18;:::o;1067:192:7:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:19;1647:13;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;1134:17:7::1;1154:12;:10;:12::i;:::-;1176:6;:18:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1209:43:::1;::::0;1176:18;;-1:-1:-1;1176:18:7;-1:-1:-1;;1209:43:7::1;::::0;-1:-1:-1;;1209:43:7::1;1778:1:11;1794:14:::0;1790:66;;;1840:5;1824:21;;;;;;1067:192:7;:::o;12397:443:32:-;12478:15;;12520:14;:4;12529;12520:8;:14::i;:::-;12505:29;;12657:4;12651:11;12645:4;12642:21;12639:2;;;-1:-1:-1;12690:1:32;12639:2;12728:9;12724:51;;12760:4;12753:11;;;;;12724:51;12794:39;12815:5;12822:4;12828;12794:20;:39::i;2333:214:37:-;2386:15;2425:22;2445:1;2436:5;:10;;;;2425;:22::i;:::-;2413:34;;;2484:1;2471:14;;;2507:17;2518:5;2507:10;:17::i;:::-;2495:29;;;;2333:214;-1:-1:-1;2333:214:37:o;2553:172:31:-;2638:7;;;2663;;;;2655:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11432:426:32;11664:2;11660:27;;;11734:17;;;;11726:26;;;11799:17;11795:2;11791:26;;11563:289::o;1986:186:37:-;2142:13;;;;;;;;;;;;;;;;;;2041:11;;2088:4;2080:12;;;;;2142:22;;;;;;;;;;;;;1986:186;-1:-1:-1;;;1986:186:37:o;-1:-1:-1:-;;;;;;;;:::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "canonicalToRepresentation(bytes32)": "1ecf6f9f",
    "enrollCustom(uint32,bytes32,address)": "28b1aea0",
    "ensureLocalToken(uint32,bytes32)": "b869d89a",
    "exposed_defaultDetails(uint32,bytes32)": "ec694a14",
    "exposed_deployToken(uint32,bytes32)": "9d2f254f",
    "exposed_localDomain()": "0fdeeba9",
    "exposed_setCanonicalToRepresentation(uint32,bytes32,address)": "80350c22",
    "exposed_setRepresentationToCanonical(uint32,bytes32,address)": "c2561f65",
    "getCanonicalTokenId(address)": "b9730eaf",
    "getLocalAddress(uint32,address)": "d82d0531",
    "getLocalAddress(uint32,bytes32)": "589b3c64",
    "getRepresentationAddress(uint32,bytes32)": "dc9685a7",
    "getTokenId(address)": "f1537686",
    "initialize(address,address)": "485cc955",
    "isLocalOrigin(address)": "c86415cb",
    "mustHaveLocalToken(uint32,bytes32)": "2c3da59c",
    "oldReprToCurrentRepr(address)": "0e71e251",
    "owner()": "8da5cb5b",
    "renounceOwnership()": "715018a6",
    "representationToCanonical(address)": "03e418c2",
    "setXAppConnectionManager(address)": "41bdc8b5",
    "tokenBeacon()": "ccf5a77c",
    "transferOwnership(address)": "f2fde38b",
    "xAppConnectionManager()": "3339df96"
  },
  "ast": {
    "absolutePath": "packages/contracts-bridge/contracts/test/harness/TokenRegistryHarness.sol",
    "id": 42157,
    "exportedSymbols": {
      "TokenRegistry": [
        32603
      ],
      "TokenRegistryHarness": [
        42156
      ]
    },
    "nodeType": "SourceUnit",
    "src": "46:1045:56",
    "nodes": [
      {
        "id": 42078,
        "nodeType": "PragmaDirective",
        "src": "46:22:56",
        "literals": [
          "solidity",
          "0.7",
          ".6"
        ]
      },
      {
        "id": 42080,
        "nodeType": "ImportDirective",
        "src": "70:54:56",
        "absolutePath": "packages/contracts-bridge/contracts/TokenRegistry.sol",
        "file": "../../TokenRegistry.sol",
        "scope": 42157,
        "sourceUnit": 32604,
        "symbolAliases": [
          {
            "foreign": {
              "id": 42079,
              "name": "TokenRegistry",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "78:13:56",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 42156,
        "nodeType": "ContractDefinition",
        "src": "126:964:56",
        "nodes": [
          {
            "id": 42098,
            "nodeType": "FunctionDefinition",
            "src": "179:216:56",
            "body": {
              "id": 42097,
              "nodeType": "Block",
              "src": "318:77:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42092,
                        "name": "_domain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42084,
                        "src": "358:7:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 42093,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42086,
                        "src": "367:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 42094,
                        "name": "_representation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42088,
                        "src": "372:15:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 42091,
                      "name": "_setRepresentationToCanonical",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32415,
                      "src": "328:29:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (uint32,bytes32,address)"
                      }
                    },
                    "id": 42095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "328:60:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 42096,
                  "nodeType": "ExpressionStatement",
                  "src": "328:60:56"
                }
              ]
            },
            "functionSelector": "c2561f65",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_setRepresentationToCanonical",
            "parameters": {
              "id": 42089,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42084,
                  "mutability": "mutable",
                  "name": "_domain",
                  "nodeType": "VariableDeclaration",
                  "scope": 42098,
                  "src": "234:14:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 42083,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "234:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42086,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 42098,
                  "src": "258:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42085,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "258:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42088,
                  "mutability": "mutable",
                  "name": "_representation",
                  "nodeType": "VariableDeclaration",
                  "scope": 42098,
                  "src": "279:23:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 42087,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "279:7:56",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "224:84:56"
            },
            "returnParameters": {
              "id": 42090,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "318:0:56"
            },
            "scope": 42156,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 42114,
            "nodeType": "FunctionDefinition",
            "src": "401:216:56",
            "body": {
              "id": 42113,
              "nodeType": "Block",
              "src": "540:77:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42108,
                        "name": "_domain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42100,
                        "src": "580:7:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 42109,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42102,
                        "src": "589:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 42110,
                        "name": "_representation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42104,
                        "src": "594:15:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 42107,
                      "name": "_setCanonicalToRepresentation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32456,
                      "src": "550:29:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (uint32,bytes32,address)"
                      }
                    },
                    "id": 42111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "550:60:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 42112,
                  "nodeType": "ExpressionStatement",
                  "src": "550:60:56"
                }
              ]
            },
            "functionSelector": "80350c22",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_setCanonicalToRepresentation",
            "parameters": {
              "id": 42105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42100,
                  "mutability": "mutable",
                  "name": "_domain",
                  "nodeType": "VariableDeclaration",
                  "scope": 42114,
                  "src": "456:14:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 42099,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "456:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42102,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 42114,
                  "src": "480:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42101,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42104,
                  "mutability": "mutable",
                  "name": "_representation",
                  "nodeType": "VariableDeclaration",
                  "scope": 42114,
                  "src": "501:23:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 42103,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:7:56",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "446:84:56"
            },
            "returnParameters": {
              "id": 42106,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "540:0:56"
            },
            "scope": 42156,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 42129,
            "nodeType": "FunctionDefinition",
            "src": "623:158:56",
            "body": {
              "id": 42128,
              "nodeType": "Block",
              "src": "733:48:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42124,
                        "name": "domain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42116,
                        "src": "763:6:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 42125,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42118,
                        "src": "771:2:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 42123,
                      "name": "_deployToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32528,
                      "src": "750:12:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (uint32,bytes32) returns (address)"
                      }
                    },
                    "id": 42126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "750:24:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 42122,
                  "id": 42127,
                  "nodeType": "Return",
                  "src": "743:31:56"
                }
              ]
            },
            "functionSelector": "9d2f254f",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_deployToken",
            "parameters": {
              "id": 42119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42116,
                  "mutability": "mutable",
                  "name": "domain",
                  "nodeType": "VariableDeclaration",
                  "scope": 42129,
                  "src": "652:13:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 42115,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42118,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 42129,
                  "src": "667:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42117,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "667:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "651:27:56"
            },
            "returnParameters": {
              "id": 42122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42121,
                  "mutability": "mutable",
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 42129,
                  "src": "713:14:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 42120,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "713:7:56",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "712:16:56"
            },
            "scope": 42156,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 42146,
            "nodeType": "FunctionDefinition",
            "src": "787:195:56",
            "body": {
              "id": 42145,
              "nodeType": "Block",
              "src": "929:53:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42141,
                        "name": "_domain",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42131,
                        "src": "962:7:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 42142,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42133,
                        "src": "971:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 42140,
                      "name": "_defaultDetails",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32581,
                      "src": "946:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_bytes32_$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$",
                        "typeString": "function (uint32,bytes32) pure returns (string memory,string memory)"
                      }
                    },
                    "id": 42143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "946:29:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$",
                      "typeString": "tuple(string memory,string memory)"
                    }
                  },
                  "functionReturnParameters": 42139,
                  "id": 42144,
                  "nodeType": "Return",
                  "src": "939:36:56"
                }
              ]
            },
            "functionSelector": "ec694a14",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_defaultDetails",
            "parameters": {
              "id": 42134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42131,
                  "mutability": "mutable",
                  "name": "_domain",
                  "nodeType": "VariableDeclaration",
                  "scope": 42146,
                  "src": "819:14:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 42130,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "819:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42133,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 42146,
                  "src": "835:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42132,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "835:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "818:29:56"
            },
            "returnParameters": {
              "id": 42139,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42136,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 42146,
                  "src": "895:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42135,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "895:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42138,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 42146,
                  "src": "910:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42137,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "910:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "894:30:56"
            },
            "scope": 42156,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 42155,
            "nodeType": "FunctionDefinition",
            "src": "988:100:56",
            "body": {
              "id": 42154,
              "nodeType": "Block",
              "src": "1050:38:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 42151,
                      "name": "_localDomain",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        32594
                      ],
                      "referencedDeclaration": 32594,
                      "src": "1067:12:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                        "typeString": "function () view returns (uint32)"
                      }
                    },
                    "id": 42152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1067:14:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 42150,
                  "id": 42153,
                  "nodeType": "Return",
                  "src": "1060:21:56"
                }
              ]
            },
            "functionSelector": "0fdeeba9",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_localDomain",
            "parameters": {
              "id": 42147,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1016:2:56"
            },
            "returnParameters": {
              "id": 42150,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42149,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 42155,
                  "src": "1042:6:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 42148,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1042:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1041:8:56"
            },
            "scope": 42156,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 42081,
              "name": "TokenRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32603,
              "src": "159:13:56",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenRegistry_$32603",
                "typeString": "contract TokenRegistry"
              }
            },
            "id": 42082,
            "nodeType": "InheritanceSpecifier",
            "src": "159:13:56"
          }
        ],
        "contractDependencies": [
          23168,
          23676,
          25131,
          32603,
          33703,
          46866
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          42156,
          32603,
          33703,
          46866,
          23168,
          25131,
          23676
        ],
        "name": "TokenRegistryHarness",
        "scope": 42157
      }
    ],
    "license": "MIT OR Apache-2.0"
  },
  "id": 56
}