@verified-network/verified-sdk 0.8.0 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/abi/assetmanager/BalancerManager.json +36659 -23205
  2. package/dist/abi/assetmanager/Client.json +11249 -0
  3. package/dist/abi/assetmanager/Products.json +3094 -0
  4. package/dist/abi/assetmanager/VerifiedProducts.json +861 -0
  5. package/dist/abi/liquidity/Liquidity.json +8644 -8155
  6. package/dist/abi/securities/Bonds.json +7054 -7415
  7. package/dist/abi/securities/Products.json +5322 -5534
  8. package/dist/abi/securities/Stocks.json +5361 -5722
  9. package/dist/contract/account/index.js +1 -1
  10. package/dist/contract/assetmanager/index.js +48 -5
  11. package/dist/contract/bond/index.js +0 -1
  12. package/dist/contract/bonds/index.js +26 -1
  13. package/dist/contract/cash/index.js +0 -1
  14. package/dist/contract/client/index.js +4 -3
  15. package/dist/contract/custody/index.js +1 -1
  16. package/dist/contract/distribution/index.js +1 -1
  17. package/dist/contract/factory/index.js +2 -1
  18. package/dist/contract/holder/index.js +0 -1
  19. package/dist/contract/kyc/index.js +1 -1
  20. package/dist/contract/ledger/index.js +0 -1
  21. package/dist/contract/liquidity/index.js +1 -1
  22. package/dist/contract/oracle/index.js +1 -1
  23. package/dist/contract/orderpool/index.js +0 -1
  24. package/dist/contract/poolfactory/index.js +1 -1
  25. package/dist/contract/posttrade/index.js +1 -1
  26. package/dist/contract/pretrade/index.js +1 -1
  27. package/dist/contract/product/index.js +6 -1
  28. package/dist/contract/public/bond/index.js +0 -1
  29. package/dist/contract/public/cash/index.js +0 -1
  30. package/dist/contract/public/client/index.js +59 -0
  31. package/dist/contract/public/distribution/index.js +1 -1
  32. package/dist/contract/public/factory/index.js +1 -1
  33. package/dist/contract/public/product/index.js +24 -0
  34. package/dist/contract/public/rates/index.js +1 -1
  35. package/dist/contract/public/security/index.js +1 -1
  36. package/dist/contract/rates/index.js +1 -1
  37. package/dist/contract/securitiesregistry/index.js +1 -1
  38. package/dist/contract/security/index.js +0 -1
  39. package/dist/contract/stocks/index.js +26 -1
  40. package/dist/contract/system/index.js +1 -1
  41. package/dist/contract/token/index.js +0 -1
  42. package/dist/contract/trade/index.js +1 -1
  43. package/dist/contractAddress/index.js +8 -8
  44. package/dist/index.js +5 -1
  45. package/package.json +1 -1
@@ -0,0 +1,3094 @@
1
+ {
2
+ "contractName": "Products",
3
+ "abi": [
4
+ {
5
+ "anonymous": false,
6
+ "inputs": [
7
+ {
8
+ "indexed": true,
9
+ "internalType": "address",
10
+ "name": "previousOwner",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "indexed": true,
15
+ "internalType": "address",
16
+ "name": "newOwner",
17
+ "type": "address"
18
+ }
19
+ ],
20
+ "name": "OwnershipTransferred",
21
+ "type": "event"
22
+ },
23
+ {
24
+ "inputs": [],
25
+ "name": "owner",
26
+ "outputs": [
27
+ {
28
+ "internalType": "address",
29
+ "name": "",
30
+ "type": "address"
31
+ }
32
+ ],
33
+ "stateMutability": "view",
34
+ "type": "function",
35
+ "constant": true
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "renounceOwnership",
40
+ "outputs": [],
41
+ "stateMutability": "nonpayable",
42
+ "type": "function"
43
+ },
44
+ {
45
+ "inputs": [
46
+ {
47
+ "internalType": "address",
48
+ "name": "newOwner",
49
+ "type": "address"
50
+ }
51
+ ],
52
+ "name": "transferOwnership",
53
+ "outputs": [],
54
+ "stateMutability": "nonpayable",
55
+ "type": "function"
56
+ },
57
+ {
58
+ "inputs": [
59
+ {
60
+ "internalType": "address",
61
+ "name": "_signer",
62
+ "type": "address"
63
+ }
64
+ ],
65
+ "name": "initialize",
66
+ "outputs": [],
67
+ "stateMutability": "nonpayable",
68
+ "type": "function"
69
+ },
70
+ {
71
+ "inputs": [
72
+ {
73
+ "internalType": "address",
74
+ "name": "_signer",
75
+ "type": "address"
76
+ }
77
+ ],
78
+ "name": "setSigner",
79
+ "outputs": [],
80
+ "stateMutability": "nonpayable",
81
+ "type": "function"
82
+ },
83
+ {
84
+ "inputs": [
85
+ {
86
+ "internalType": "address",
87
+ "name": "_issue",
88
+ "type": "address"
89
+ },
90
+ {
91
+ "internalType": "bytes32",
92
+ "name": "_ref",
93
+ "type": "bytes32"
94
+ },
95
+ {
96
+ "internalType": "bytes32",
97
+ "name": "_hashedMessage",
98
+ "type": "bytes32"
99
+ },
100
+ {
101
+ "internalType": "uint8",
102
+ "name": "_v",
103
+ "type": "uint8"
104
+ },
105
+ {
106
+ "internalType": "bytes32",
107
+ "name": "_r",
108
+ "type": "bytes32"
109
+ },
110
+ {
111
+ "internalType": "bytes32",
112
+ "name": "_s",
113
+ "type": "bytes32"
114
+ }
115
+ ],
116
+ "name": "issueProduct",
117
+ "outputs": [],
118
+ "stateMutability": "nonpayable",
119
+ "type": "function"
120
+ },
121
+ {
122
+ "inputs": [
123
+ {
124
+ "internalType": "address",
125
+ "name": "_issue",
126
+ "type": "address"
127
+ }
128
+ ],
129
+ "name": "checkProduct",
130
+ "outputs": [
131
+ {
132
+ "internalType": "bool",
133
+ "name": "",
134
+ "type": "bool"
135
+ }
136
+ ],
137
+ "stateMutability": "view",
138
+ "type": "function",
139
+ "constant": true
140
+ }
141
+ ],
142
+ "metadata": "{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issue\",\"type\":\"address\"}],\"name\":\"checkProduct\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issue\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_ref\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"issueProduct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"_signer\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Products.sol\":\"Products\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x14f18d0c0051d5412a250536a9850f2698fe1ede9e4760d94142762a039f053b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21535a4a50a1f1acf80c543b1e44fc80671787a0364c1e3f0437e7c499f15258\",\"dweb:/ipfs/QmR9EMgjmdQRJHFrmD2Tjb9BqN2rNgvi6je5yh71oxebav\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol\":{\"keccak256\":\"0x53e476d8641ec8d7502efcfaa666981c22fced87c553cf8bb206790af68798c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3eb7bbe7b8706130bd7c646766bec6d8ffb5792c20aac3b127f2a09aee9d8bc4\",\"dweb:/ipfs/QmcQdUBz6AozKU4rvBYLbZqcKy85fXPkKnhCbnthQi9k61\"]},\"project:/contracts/Products.sol\":{\"keccak256\":\"0xc60122f94ab1718e5424da45439923fe074da366e979b02e55b6ce37931480ef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e51a8a98175643e89957b807dbcb09fa4f669f10eeb6d8f8533aeec7a68c38c0\",\"dweb:/ipfs/QmU8PM9SzzdCPdXSAd5vDe7KTghb117C9tT1PsrPd3mdd7\"]},\"project:/contracts/interfaces/VerifiedProducts.sol\":{\"keccak256\":\"0xe75b9f762a14597117f13d09202346f26f3b67d5a2d6b057c523539989221425\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25ca1a77b4d6fae1f8a475384a4c16f368d1305b11824fd52b85b027ed3cb97a\",\"dweb:/ipfs/QmWK4YQbv62XQmYuUmMbuYusiw7nTYBF2o29W9hNcQjssJ\"]}},\"version\":1}",
143
+ "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36104a08061005f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ec578063c4d66de8146100bc578063e45f837e14610110578063f2fde38b146101575761007d565b80633ea6c82d146100825780636c19e783146100bc578063715018a6146100e4575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661017d565b604080519115158252519081900360200190f35b6100e2600480360360208110156100d257600080fd5b50356001600160a01b03166101ac565b005b6100e26101ec565b6100f4610242565b604080516001600160a01b039092168252519081900360200190f35b6100e2600480360360c081101561012657600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610251565b6100e26004803603602081101561016d57600080fd5b50356001600160a01b0316610387565b6001600160a01b038116600090815260016020526040812054156101a3575060016101a7565b5060005b919050565b6101ca336101b8610242565b6001600160a01b0316146101aa610405565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6101f8336101b8610242565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60408051602080820187905281830183905260066060830152654c32746f4c3160d01b6080808401919091528351808403909101815260a0830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060c084015260dc8084018290528451808503909101815260fc8401808652815191840191909120600254600090925261011c850180875281905260ff891661013c86015261015c850188905261017c850187905294519194936001600160a01b039091169260019261019c80840193601f198301929081900390910190855afa158015610345573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461036257600080fd5b5050506001600160a01b03909416600090815260016020526040902092909255505050565b610393336101b8610242565b6103aa6001600160a01b03821615156101ab610405565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b816104135761041381610417565b5050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fdfea26469706673582212206aa4ff476d3220a1a9157a9310c50d2ab3288c50e70aa1c1172f34de0e158fe064736f6c63430007010033",
144
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ec578063c4d66de8146100bc578063e45f837e14610110578063f2fde38b146101575761007d565b80633ea6c82d146100825780636c19e783146100bc578063715018a6146100e4575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661017d565b604080519115158252519081900360200190f35b6100e2600480360360208110156100d257600080fd5b50356001600160a01b03166101ac565b005b6100e26101ec565b6100f4610242565b604080516001600160a01b039092168252519081900360200190f35b6100e2600480360360c081101561012657600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610251565b6100e26004803603602081101561016d57600080fd5b50356001600160a01b0316610387565b6001600160a01b038116600090815260016020526040812054156101a3575060016101a7565b5060005b919050565b6101ca336101b8610242565b6001600160a01b0316146101aa610405565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6101f8336101b8610242565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60408051602080820187905281830183905260066060830152654c32746f4c3160d01b6080808401919091528351808403909101815260a0830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060c084015260dc8084018290528451808503909101815260fc8401808652815191840191909120600254600090925261011c850180875281905260ff891661013c86015261015c850188905261017c850187905294519194936001600160a01b039091169260019261019c80840193601f198301929081900390910190855afa158015610345573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461036257600080fd5b5050506001600160a01b03909416600090815260016020526040902092909255505050565b610393336101b8610242565b6103aa6001600160a01b03821615156101ab610405565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b816104135761041381610417565b5050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fdfea26469706673582212206aa4ff476d3220a1a9157a9310c50d2ab3288c50e70aa1c1172f34de0e158fe064736f6c63430007010033",
145
+ "immutableReferences": {},
146
+ "sourceMap": "265:1074:39:-:0;;;;;;;;;;;;-1:-1:-1;993:6:24;:19;;-1:-1:-1;;;;;;993:19:24;1002:10;993:19;;;;;1027:44;;1002:10;;993:6;1027:44;;993:6;;1027:44;265:1074:39;;;;;;",
147
+ "deployedSourceMap": "265:1074:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1123:211;;;;;;;;;;;;;;;;-1:-1:-1;1123:211:39;-1:-1:-1;;;;;1123:211:39;;:::i;:::-;;;;;;;;;;;;;;;;;;557:98;;;;;;;;;;;;;;;;-1:-1:-1;557:98:39;-1:-1:-1;;;;;557:98:39;;:::i;:::-;;1777:145:24;;;:::i;1154:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1154:85:24;;;;;;;;;;;;;;664:450:39;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;664:450:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2071:225:24:-;;;;;;;;;;;;;;;;-1:-1:-1;2071:225:24;-1:-1:-1;;;;;2071:225:24;;:::i;1123:211:39:-;-1:-1:-1;;;;;1241:14:39;;1222:4;1241:14;;;:6;:14;;;;;;:18;1238:88;;-1:-1:-1;1281:4:39;1274:11;;1238:88;-1:-1:-1;1321:5:39;1238:88;1123:211;;;:::o;557:98::-;1358:59:24;1378:10;1367:7;:5;:7::i;:::-;-1:-1:-1;;;;;1367:21:24;;9498:3:7;1358:8:24;:59::i;:::-;631:6:39::1;:16:::0;;-1:-1:-1;;;;;;631:16:39::1;-1:-1:-1::0;;;;;631:16:39;;;::::1;::::0;;;::::1;::::0;;557:98::o;1777:145:24:-;1358:59;1378:10;1367:7;:5;:7::i;1358:59::-;1883:1:::1;1867:6:::0;;1846:40:::1;::::0;-1:-1:-1;;;;;1867:6:24;;::::1;::::0;1846:40:::1;::::0;1883:1;;1846:40:::1;1913:1;1896:19:::0;;-1:-1:-1;;;;;;1896:19:24::1;::::0;;1777:145::o;1154:85::-;1200:7;1226:6;-1:-1:-1;;;;;1226:6:24;1154:85;:::o;664:450:39:-;865:36;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;865:36:39;;;;;;;;;;;;;;;;;;;;;;;855:47;;;;;;945:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;935:76;;;;;;;;;1067:6;;833:19;1030:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;855:47;;935:76;-1:-1:-1;;;;;1067:6:39;;;;;;1030:34;;;;;-1:-1:-1;;1030:34:39;;;;;;;;;;;1067:6;1030:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1030:43:39;;1022:52;;;;;;-1:-1:-1;;;;;;;;1085:14:39;;;;;;;:6;:14;;;;;:21;;;;-1:-1:-1;;;664:450:39:o;2071:225:24:-;1358:59;1378:10;1367:7;:5;:7::i;1358:59::-;2151:58:::1;-1:-1:-1::0;;;;;2160:22:24;::::1;::::0;::::1;9553:3:7;2151:8:24;:58::i;:::-;2245:6;::::0;;2224:38:::1;::::0;-1:-1:-1;;;;;2224:38:24;;::::1;::::0;2245:6;::::1;::::0;2224:38:::1;::::0;::::1;2272:6;:17:::0;;-1:-1:-1;;;;;;2272:17:24::1;-1:-1:-1::0;;;;;2272:17:24;;;::::1;::::0;;;::::1;::::0;;2071:225::o;866:101:7:-;935:9;930:34;;946:18;954:9;946:7;:18::i;:::-;866:101;;:::o;1074:3172::-;-1:-1:-1;;;3588:3:7;3581:79;;;3799:66;3793:4;3786:80;3941:1;3935:4;3928:15;2999:73;2210:2;2243:18;;;2288;;;2215:4;2284:29;;;3040:1;3036:14;2195:18;;;;3025:26;;;;2336:18;;;;2383;;;2379:29;;;3057:2;3053:17;3021:50;;;;2999:73;2994:3;2990:83;4008:4;4001:26;4234:3;;4224:14",
148
+ "source": "// Verified products\r\n// (c) Kallol Borah, Verified Network, 2022\r\n\r\n//\"SPDX-License-Identifier: UNLICENSED\"\r\n\r\npragma solidity ^0.7.1;\r\n\r\nimport \"./interfaces/VerifiedProducts.sol\";\r\nimport '@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol';\r\n\r\ncontract Products is VerifiedProducts, Ownable {\r\n\r\n //mapping product issued to product reference\r\n mapping(address => bytes32) private issues;\r\n\r\n //bridge\r\n address bridge;\r\n\r\n function initialize(address _signer) onlyOwner public {\r\n bridge = _signer;\r\n }\r\n\r\n function setSigner(address _signer) onlyOwner override external{\r\n bridge = _signer;\r\n } \r\n\r\n function issueProduct(address _issue, bytes32 _ref, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n override external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n issues[_issue] = _ref;\r\n } \r\n\r\n function checkProduct(address _issue) \r\n override external view returns(bool){\r\n if(issues[_issue]!='')\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n}",
149
+ "sourcePath": "D:\\Code\\verified-quorum\\balancer\\contracts\\Products.sol",
150
+ "ast": {
151
+ "absolutePath": "project:/contracts/Products.sol",
152
+ "exportedSymbols": {
153
+ "Products": [
154
+ 11083
155
+ ]
156
+ },
157
+ "id": 11084,
158
+ "license": "UNLICENSED",
159
+ "nodeType": "SourceUnit",
160
+ "nodes": [
161
+ {
162
+ "id": 10972,
163
+ "literals": [
164
+ "solidity",
165
+ "^",
166
+ "0.7",
167
+ ".1"
168
+ ],
169
+ "nodeType": "PragmaDirective",
170
+ "src": "112:23:39"
171
+ },
172
+ {
173
+ "absolutePath": "project:/contracts/interfaces/VerifiedProducts.sol",
174
+ "file": "./interfaces/VerifiedProducts.sol",
175
+ "id": 10973,
176
+ "nodeType": "ImportDirective",
177
+ "scope": 11084,
178
+ "sourceUnit": 11640,
179
+ "src": "139:43:39",
180
+ "symbolAliases": [],
181
+ "unitAlias": ""
182
+ },
183
+ {
184
+ "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
185
+ "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
186
+ "id": 10974,
187
+ "nodeType": "ImportDirective",
188
+ "scope": 11084,
189
+ "sourceUnit": 6369,
190
+ "src": "184:77:39",
191
+ "symbolAliases": [],
192
+ "unitAlias": ""
193
+ },
194
+ {
195
+ "abstract": false,
196
+ "baseContracts": [
197
+ {
198
+ "baseName": {
199
+ "id": 10975,
200
+ "name": "VerifiedProducts",
201
+ "nodeType": "UserDefinedTypeName",
202
+ "referencedDeclaration": 11639,
203
+ "src": "286:16:39",
204
+ "typeDescriptions": {
205
+ "typeIdentifier": "t_contract$_VerifiedProducts_$11639",
206
+ "typeString": "contract VerifiedProducts"
207
+ }
208
+ },
209
+ "id": 10976,
210
+ "nodeType": "InheritanceSpecifier",
211
+ "src": "286:16:39"
212
+ },
213
+ {
214
+ "baseName": {
215
+ "id": 10977,
216
+ "name": "Ownable",
217
+ "nodeType": "UserDefinedTypeName",
218
+ "referencedDeclaration": 6368,
219
+ "src": "304:7:39",
220
+ "typeDescriptions": {
221
+ "typeIdentifier": "t_contract$_Ownable_$6368",
222
+ "typeString": "contract Ownable"
223
+ }
224
+ },
225
+ "id": 10978,
226
+ "nodeType": "InheritanceSpecifier",
227
+ "src": "304:7:39"
228
+ }
229
+ ],
230
+ "contractDependencies": [
231
+ 6368,
232
+ 11639
233
+ ],
234
+ "contractKind": "contract",
235
+ "fullyImplemented": true,
236
+ "id": 11083,
237
+ "linearizedBaseContracts": [
238
+ 11083,
239
+ 6368,
240
+ 11639
241
+ ],
242
+ "name": "Products",
243
+ "nodeType": "ContractDefinition",
244
+ "nodes": [
245
+ {
246
+ "constant": false,
247
+ "id": 10982,
248
+ "mutability": "mutable",
249
+ "name": "issues",
250
+ "nodeType": "VariableDeclaration",
251
+ "scope": 11083,
252
+ "src": "372:42:39",
253
+ "stateVariable": true,
254
+ "storageLocation": "default",
255
+ "typeDescriptions": {
256
+ "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
257
+ "typeString": "mapping(address => bytes32)"
258
+ },
259
+ "typeName": {
260
+ "id": 10981,
261
+ "keyType": {
262
+ "id": 10979,
263
+ "name": "address",
264
+ "nodeType": "ElementaryTypeName",
265
+ "src": "380:7:39",
266
+ "typeDescriptions": {
267
+ "typeIdentifier": "t_address",
268
+ "typeString": "address"
269
+ }
270
+ },
271
+ "nodeType": "Mapping",
272
+ "src": "372:27:39",
273
+ "typeDescriptions": {
274
+ "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
275
+ "typeString": "mapping(address => bytes32)"
276
+ },
277
+ "valueType": {
278
+ "id": 10980,
279
+ "name": "bytes32",
280
+ "nodeType": "ElementaryTypeName",
281
+ "src": "391:7:39",
282
+ "typeDescriptions": {
283
+ "typeIdentifier": "t_bytes32",
284
+ "typeString": "bytes32"
285
+ }
286
+ }
287
+ },
288
+ "visibility": "private"
289
+ },
290
+ {
291
+ "constant": false,
292
+ "id": 10984,
293
+ "mutability": "mutable",
294
+ "name": "bridge",
295
+ "nodeType": "VariableDeclaration",
296
+ "scope": 11083,
297
+ "src": "437:14:39",
298
+ "stateVariable": true,
299
+ "storageLocation": "default",
300
+ "typeDescriptions": {
301
+ "typeIdentifier": "t_address",
302
+ "typeString": "address"
303
+ },
304
+ "typeName": {
305
+ "id": 10983,
306
+ "name": "address",
307
+ "nodeType": "ElementaryTypeName",
308
+ "src": "437:7:39",
309
+ "stateMutability": "nonpayable",
310
+ "typeDescriptions": {
311
+ "typeIdentifier": "t_address",
312
+ "typeString": "address"
313
+ }
314
+ },
315
+ "visibility": "internal"
316
+ },
317
+ {
318
+ "body": {
319
+ "id": 10995,
320
+ "nodeType": "Block",
321
+ "src": "514:35:39",
322
+ "statements": [
323
+ {
324
+ "expression": {
325
+ "id": 10993,
326
+ "isConstant": false,
327
+ "isLValue": false,
328
+ "isPure": false,
329
+ "lValueRequested": false,
330
+ "leftHandSide": {
331
+ "id": 10991,
332
+ "name": "bridge",
333
+ "nodeType": "Identifier",
334
+ "overloadedDeclarations": [],
335
+ "referencedDeclaration": 10984,
336
+ "src": "525:6:39",
337
+ "typeDescriptions": {
338
+ "typeIdentifier": "t_address",
339
+ "typeString": "address"
340
+ }
341
+ },
342
+ "nodeType": "Assignment",
343
+ "operator": "=",
344
+ "rightHandSide": {
345
+ "id": 10992,
346
+ "name": "_signer",
347
+ "nodeType": "Identifier",
348
+ "overloadedDeclarations": [],
349
+ "referencedDeclaration": 10986,
350
+ "src": "534:7:39",
351
+ "typeDescriptions": {
352
+ "typeIdentifier": "t_address",
353
+ "typeString": "address"
354
+ }
355
+ },
356
+ "src": "525:16:39",
357
+ "typeDescriptions": {
358
+ "typeIdentifier": "t_address",
359
+ "typeString": "address"
360
+ }
361
+ },
362
+ "id": 10994,
363
+ "nodeType": "ExpressionStatement",
364
+ "src": "525:16:39"
365
+ }
366
+ ]
367
+ },
368
+ "functionSelector": "c4d66de8",
369
+ "id": 10996,
370
+ "implemented": true,
371
+ "kind": "function",
372
+ "modifiers": [
373
+ {
374
+ "id": 10989,
375
+ "modifierName": {
376
+ "id": 10988,
377
+ "name": "onlyOwner",
378
+ "nodeType": "Identifier",
379
+ "overloadedDeclarations": [],
380
+ "referencedDeclaration": 6316,
381
+ "src": "497:9:39",
382
+ "typeDescriptions": {
383
+ "typeIdentifier": "t_modifier$__$",
384
+ "typeString": "modifier ()"
385
+ }
386
+ },
387
+ "nodeType": "ModifierInvocation",
388
+ "src": "497:9:39"
389
+ }
390
+ ],
391
+ "name": "initialize",
392
+ "nodeType": "FunctionDefinition",
393
+ "parameters": {
394
+ "id": 10987,
395
+ "nodeType": "ParameterList",
396
+ "parameters": [
397
+ {
398
+ "constant": false,
399
+ "id": 10986,
400
+ "mutability": "mutable",
401
+ "name": "_signer",
402
+ "nodeType": "VariableDeclaration",
403
+ "scope": 10996,
404
+ "src": "480:15:39",
405
+ "stateVariable": false,
406
+ "storageLocation": "default",
407
+ "typeDescriptions": {
408
+ "typeIdentifier": "t_address",
409
+ "typeString": "address"
410
+ },
411
+ "typeName": {
412
+ "id": 10985,
413
+ "name": "address",
414
+ "nodeType": "ElementaryTypeName",
415
+ "src": "480:7:39",
416
+ "stateMutability": "nonpayable",
417
+ "typeDescriptions": {
418
+ "typeIdentifier": "t_address",
419
+ "typeString": "address"
420
+ }
421
+ },
422
+ "visibility": "internal"
423
+ }
424
+ ],
425
+ "src": "479:17:39"
426
+ },
427
+ "returnParameters": {
428
+ "id": 10990,
429
+ "nodeType": "ParameterList",
430
+ "parameters": [],
431
+ "src": "514:0:39"
432
+ },
433
+ "scope": 11083,
434
+ "src": "460:89:39",
435
+ "stateMutability": "nonpayable",
436
+ "virtual": false,
437
+ "visibility": "public"
438
+ },
439
+ {
440
+ "baseFunctions": [
441
+ 11638
442
+ ],
443
+ "body": {
444
+ "id": 11008,
445
+ "nodeType": "Block",
446
+ "src": "620:35:39",
447
+ "statements": [
448
+ {
449
+ "expression": {
450
+ "id": 11006,
451
+ "isConstant": false,
452
+ "isLValue": false,
453
+ "isPure": false,
454
+ "lValueRequested": false,
455
+ "leftHandSide": {
456
+ "id": 11004,
457
+ "name": "bridge",
458
+ "nodeType": "Identifier",
459
+ "overloadedDeclarations": [],
460
+ "referencedDeclaration": 10984,
461
+ "src": "631:6:39",
462
+ "typeDescriptions": {
463
+ "typeIdentifier": "t_address",
464
+ "typeString": "address"
465
+ }
466
+ },
467
+ "nodeType": "Assignment",
468
+ "operator": "=",
469
+ "rightHandSide": {
470
+ "id": 11005,
471
+ "name": "_signer",
472
+ "nodeType": "Identifier",
473
+ "overloadedDeclarations": [],
474
+ "referencedDeclaration": 10998,
475
+ "src": "640:7:39",
476
+ "typeDescriptions": {
477
+ "typeIdentifier": "t_address",
478
+ "typeString": "address"
479
+ }
480
+ },
481
+ "src": "631:16:39",
482
+ "typeDescriptions": {
483
+ "typeIdentifier": "t_address",
484
+ "typeString": "address"
485
+ }
486
+ },
487
+ "id": 11007,
488
+ "nodeType": "ExpressionStatement",
489
+ "src": "631:16:39"
490
+ }
491
+ ]
492
+ },
493
+ "functionSelector": "6c19e783",
494
+ "id": 11009,
495
+ "implemented": true,
496
+ "kind": "function",
497
+ "modifiers": [
498
+ {
499
+ "id": 11001,
500
+ "modifierName": {
501
+ "id": 11000,
502
+ "name": "onlyOwner",
503
+ "nodeType": "Identifier",
504
+ "overloadedDeclarations": [],
505
+ "referencedDeclaration": 6316,
506
+ "src": "593:9:39",
507
+ "typeDescriptions": {
508
+ "typeIdentifier": "t_modifier$__$",
509
+ "typeString": "modifier ()"
510
+ }
511
+ },
512
+ "nodeType": "ModifierInvocation",
513
+ "src": "593:9:39"
514
+ }
515
+ ],
516
+ "name": "setSigner",
517
+ "nodeType": "FunctionDefinition",
518
+ "overrides": {
519
+ "id": 11002,
520
+ "nodeType": "OverrideSpecifier",
521
+ "overrides": [],
522
+ "src": "603:8:39"
523
+ },
524
+ "parameters": {
525
+ "id": 10999,
526
+ "nodeType": "ParameterList",
527
+ "parameters": [
528
+ {
529
+ "constant": false,
530
+ "id": 10998,
531
+ "mutability": "mutable",
532
+ "name": "_signer",
533
+ "nodeType": "VariableDeclaration",
534
+ "scope": 11009,
535
+ "src": "576:15:39",
536
+ "stateVariable": false,
537
+ "storageLocation": "default",
538
+ "typeDescriptions": {
539
+ "typeIdentifier": "t_address",
540
+ "typeString": "address"
541
+ },
542
+ "typeName": {
543
+ "id": 10997,
544
+ "name": "address",
545
+ "nodeType": "ElementaryTypeName",
546
+ "src": "576:7:39",
547
+ "stateMutability": "nonpayable",
548
+ "typeDescriptions": {
549
+ "typeIdentifier": "t_address",
550
+ "typeString": "address"
551
+ }
552
+ },
553
+ "visibility": "internal"
554
+ }
555
+ ],
556
+ "src": "575:17:39"
557
+ },
558
+ "returnParameters": {
559
+ "id": 11003,
560
+ "nodeType": "ParameterList",
561
+ "parameters": [],
562
+ "src": "620:0:39"
563
+ },
564
+ "scope": 11083,
565
+ "src": "557:98:39",
566
+ "stateMutability": "nonpayable",
567
+ "virtual": false,
568
+ "visibility": "external"
569
+ },
570
+ {
571
+ "baseFunctions": [
572
+ 11626
573
+ ],
574
+ "body": {
575
+ "id": 11062,
576
+ "nodeType": "Block",
577
+ "src": "822:292:39",
578
+ "statements": [
579
+ {
580
+ "assignments": [
581
+ 11026
582
+ ],
583
+ "declarations": [
584
+ {
585
+ "constant": false,
586
+ "id": 11026,
587
+ "mutability": "mutable",
588
+ "name": "payloadHash",
589
+ "nodeType": "VariableDeclaration",
590
+ "scope": 11062,
591
+ "src": "833:19:39",
592
+ "stateVariable": false,
593
+ "storageLocation": "default",
594
+ "typeDescriptions": {
595
+ "typeIdentifier": "t_bytes32",
596
+ "typeString": "bytes32"
597
+ },
598
+ "typeName": {
599
+ "id": 11025,
600
+ "name": "bytes32",
601
+ "nodeType": "ElementaryTypeName",
602
+ "src": "833:7:39",
603
+ "typeDescriptions": {
604
+ "typeIdentifier": "t_bytes32",
605
+ "typeString": "bytes32"
606
+ }
607
+ },
608
+ "visibility": "internal"
609
+ }
610
+ ],
611
+ "id": 11034,
612
+ "initialValue": {
613
+ "arguments": [
614
+ {
615
+ "arguments": [
616
+ {
617
+ "id": 11030,
618
+ "name": "_hashedMessage",
619
+ "nodeType": "Identifier",
620
+ "overloadedDeclarations": [],
621
+ "referencedDeclaration": 11015,
622
+ "src": "876:14:39",
623
+ "typeDescriptions": {
624
+ "typeIdentifier": "t_bytes32",
625
+ "typeString": "bytes32"
626
+ }
627
+ },
628
+ {
629
+ "hexValue": "4c32746f4c31",
630
+ "id": 11031,
631
+ "isConstant": false,
632
+ "isLValue": false,
633
+ "isPure": true,
634
+ "kind": "string",
635
+ "lValueRequested": false,
636
+ "nodeType": "Literal",
637
+ "src": "892:8:39",
638
+ "typeDescriptions": {
639
+ "typeIdentifier": "t_stringliteral_a642929fe0ec57585e72a67355d0d02840f474582764f73bbf501283ca413332",
640
+ "typeString": "literal_string \"L2toL1\""
641
+ },
642
+ "value": "L2toL1"
643
+ }
644
+ ],
645
+ "expression": {
646
+ "argumentTypes": [
647
+ {
648
+ "typeIdentifier": "t_bytes32",
649
+ "typeString": "bytes32"
650
+ },
651
+ {
652
+ "typeIdentifier": "t_stringliteral_a642929fe0ec57585e72a67355d0d02840f474582764f73bbf501283ca413332",
653
+ "typeString": "literal_string \"L2toL1\""
654
+ }
655
+ ],
656
+ "expression": {
657
+ "id": 11028,
658
+ "name": "abi",
659
+ "nodeType": "Identifier",
660
+ "overloadedDeclarations": [],
661
+ "referencedDeclaration": -1,
662
+ "src": "865:3:39",
663
+ "typeDescriptions": {
664
+ "typeIdentifier": "t_magic_abi",
665
+ "typeString": "abi"
666
+ }
667
+ },
668
+ "id": 11029,
669
+ "isConstant": false,
670
+ "isLValue": false,
671
+ "isPure": true,
672
+ "lValueRequested": false,
673
+ "memberName": "encode",
674
+ "nodeType": "MemberAccess",
675
+ "src": "865:10:39",
676
+ "typeDescriptions": {
677
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
678
+ "typeString": "function () pure returns (bytes memory)"
679
+ }
680
+ },
681
+ "id": 11032,
682
+ "isConstant": false,
683
+ "isLValue": false,
684
+ "isPure": false,
685
+ "kind": "functionCall",
686
+ "lValueRequested": false,
687
+ "names": [],
688
+ "nodeType": "FunctionCall",
689
+ "src": "865:36:39",
690
+ "tryCall": false,
691
+ "typeDescriptions": {
692
+ "typeIdentifier": "t_bytes_memory_ptr",
693
+ "typeString": "bytes memory"
694
+ }
695
+ }
696
+ ],
697
+ "expression": {
698
+ "argumentTypes": [
699
+ {
700
+ "typeIdentifier": "t_bytes_memory_ptr",
701
+ "typeString": "bytes memory"
702
+ }
703
+ ],
704
+ "id": 11027,
705
+ "name": "keccak256",
706
+ "nodeType": "Identifier",
707
+ "overloadedDeclarations": [],
708
+ "referencedDeclaration": -8,
709
+ "src": "855:9:39",
710
+ "typeDescriptions": {
711
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
712
+ "typeString": "function (bytes memory) pure returns (bytes32)"
713
+ }
714
+ },
715
+ "id": 11033,
716
+ "isConstant": false,
717
+ "isLValue": false,
718
+ "isPure": false,
719
+ "kind": "functionCall",
720
+ "lValueRequested": false,
721
+ "names": [],
722
+ "nodeType": "FunctionCall",
723
+ "src": "855:47:39",
724
+ "tryCall": false,
725
+ "typeDescriptions": {
726
+ "typeIdentifier": "t_bytes32",
727
+ "typeString": "bytes32"
728
+ }
729
+ },
730
+ "nodeType": "VariableDeclarationStatement",
731
+ "src": "833:69:39"
732
+ },
733
+ {
734
+ "assignments": [
735
+ 11036
736
+ ],
737
+ "declarations": [
738
+ {
739
+ "constant": false,
740
+ "id": 11036,
741
+ "mutability": "mutable",
742
+ "name": "messageHash",
743
+ "nodeType": "VariableDeclaration",
744
+ "scope": 11062,
745
+ "src": "913:19:39",
746
+ "stateVariable": false,
747
+ "storageLocation": "default",
748
+ "typeDescriptions": {
749
+ "typeIdentifier": "t_bytes32",
750
+ "typeString": "bytes32"
751
+ },
752
+ "typeName": {
753
+ "id": 11035,
754
+ "name": "bytes32",
755
+ "nodeType": "ElementaryTypeName",
756
+ "src": "913:7:39",
757
+ "typeDescriptions": {
758
+ "typeIdentifier": "t_bytes32",
759
+ "typeString": "bytes32"
760
+ }
761
+ },
762
+ "visibility": "internal"
763
+ }
764
+ ],
765
+ "id": 11044,
766
+ "initialValue": {
767
+ "arguments": [
768
+ {
769
+ "arguments": [
770
+ {
771
+ "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
772
+ "id": 11040,
773
+ "isConstant": false,
774
+ "isLValue": false,
775
+ "isPure": true,
776
+ "kind": "string",
777
+ "lValueRequested": false,
778
+ "nodeType": "Literal",
779
+ "src": "962:34:39",
780
+ "typeDescriptions": {
781
+ "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
782
+ "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
783
+ },
784
+ "value": "\u0019Ethereum Signed Message:\n32"
785
+ },
786
+ {
787
+ "id": 11041,
788
+ "name": "payloadHash",
789
+ "nodeType": "Identifier",
790
+ "overloadedDeclarations": [],
791
+ "referencedDeclaration": 11026,
792
+ "src": "998:11:39",
793
+ "typeDescriptions": {
794
+ "typeIdentifier": "t_bytes32",
795
+ "typeString": "bytes32"
796
+ }
797
+ }
798
+ ],
799
+ "expression": {
800
+ "argumentTypes": [
801
+ {
802
+ "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
803
+ "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
804
+ },
805
+ {
806
+ "typeIdentifier": "t_bytes32",
807
+ "typeString": "bytes32"
808
+ }
809
+ ],
810
+ "expression": {
811
+ "id": 11038,
812
+ "name": "abi",
813
+ "nodeType": "Identifier",
814
+ "overloadedDeclarations": [],
815
+ "referencedDeclaration": -1,
816
+ "src": "945:3:39",
817
+ "typeDescriptions": {
818
+ "typeIdentifier": "t_magic_abi",
819
+ "typeString": "abi"
820
+ }
821
+ },
822
+ "id": 11039,
823
+ "isConstant": false,
824
+ "isLValue": false,
825
+ "isPure": true,
826
+ "lValueRequested": false,
827
+ "memberName": "encodePacked",
828
+ "nodeType": "MemberAccess",
829
+ "src": "945:16:39",
830
+ "typeDescriptions": {
831
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
832
+ "typeString": "function () pure returns (bytes memory)"
833
+ }
834
+ },
835
+ "id": 11042,
836
+ "isConstant": false,
837
+ "isLValue": false,
838
+ "isPure": false,
839
+ "kind": "functionCall",
840
+ "lValueRequested": false,
841
+ "names": [],
842
+ "nodeType": "FunctionCall",
843
+ "src": "945:65:39",
844
+ "tryCall": false,
845
+ "typeDescriptions": {
846
+ "typeIdentifier": "t_bytes_memory_ptr",
847
+ "typeString": "bytes memory"
848
+ }
849
+ }
850
+ ],
851
+ "expression": {
852
+ "argumentTypes": [
853
+ {
854
+ "typeIdentifier": "t_bytes_memory_ptr",
855
+ "typeString": "bytes memory"
856
+ }
857
+ ],
858
+ "id": 11037,
859
+ "name": "keccak256",
860
+ "nodeType": "Identifier",
861
+ "overloadedDeclarations": [],
862
+ "referencedDeclaration": -8,
863
+ "src": "935:9:39",
864
+ "typeDescriptions": {
865
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
866
+ "typeString": "function (bytes memory) pure returns (bytes32)"
867
+ }
868
+ },
869
+ "id": 11043,
870
+ "isConstant": false,
871
+ "isLValue": false,
872
+ "isPure": false,
873
+ "kind": "functionCall",
874
+ "lValueRequested": false,
875
+ "names": [],
876
+ "nodeType": "FunctionCall",
877
+ "src": "935:76:39",
878
+ "tryCall": false,
879
+ "typeDescriptions": {
880
+ "typeIdentifier": "t_bytes32",
881
+ "typeString": "bytes32"
882
+ }
883
+ },
884
+ "nodeType": "VariableDeclarationStatement",
885
+ "src": "913:98:39"
886
+ },
887
+ {
888
+ "expression": {
889
+ "arguments": [
890
+ {
891
+ "commonType": {
892
+ "typeIdentifier": "t_address",
893
+ "typeString": "address"
894
+ },
895
+ "id": 11053,
896
+ "isConstant": false,
897
+ "isLValue": false,
898
+ "isPure": false,
899
+ "lValueRequested": false,
900
+ "leftExpression": {
901
+ "arguments": [
902
+ {
903
+ "id": 11047,
904
+ "name": "messageHash",
905
+ "nodeType": "Identifier",
906
+ "overloadedDeclarations": [],
907
+ "referencedDeclaration": 11036,
908
+ "src": "1040:11:39",
909
+ "typeDescriptions": {
910
+ "typeIdentifier": "t_bytes32",
911
+ "typeString": "bytes32"
912
+ }
913
+ },
914
+ {
915
+ "id": 11048,
916
+ "name": "_v",
917
+ "nodeType": "Identifier",
918
+ "overloadedDeclarations": [],
919
+ "referencedDeclaration": 11017,
920
+ "src": "1053:2:39",
921
+ "typeDescriptions": {
922
+ "typeIdentifier": "t_uint8",
923
+ "typeString": "uint8"
924
+ }
925
+ },
926
+ {
927
+ "id": 11049,
928
+ "name": "_r",
929
+ "nodeType": "Identifier",
930
+ "overloadedDeclarations": [],
931
+ "referencedDeclaration": 11019,
932
+ "src": "1057:2:39",
933
+ "typeDescriptions": {
934
+ "typeIdentifier": "t_bytes32",
935
+ "typeString": "bytes32"
936
+ }
937
+ },
938
+ {
939
+ "id": 11050,
940
+ "name": "_s",
941
+ "nodeType": "Identifier",
942
+ "overloadedDeclarations": [],
943
+ "referencedDeclaration": 11021,
944
+ "src": "1061:2:39",
945
+ "typeDescriptions": {
946
+ "typeIdentifier": "t_bytes32",
947
+ "typeString": "bytes32"
948
+ }
949
+ }
950
+ ],
951
+ "expression": {
952
+ "argumentTypes": [
953
+ {
954
+ "typeIdentifier": "t_bytes32",
955
+ "typeString": "bytes32"
956
+ },
957
+ {
958
+ "typeIdentifier": "t_uint8",
959
+ "typeString": "uint8"
960
+ },
961
+ {
962
+ "typeIdentifier": "t_bytes32",
963
+ "typeString": "bytes32"
964
+ },
965
+ {
966
+ "typeIdentifier": "t_bytes32",
967
+ "typeString": "bytes32"
968
+ }
969
+ ],
970
+ "id": 11046,
971
+ "name": "ecrecover",
972
+ "nodeType": "Identifier",
973
+ "overloadedDeclarations": [],
974
+ "referencedDeclaration": -6,
975
+ "src": "1030:9:39",
976
+ "typeDescriptions": {
977
+ "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
978
+ "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
979
+ }
980
+ },
981
+ "id": 11051,
982
+ "isConstant": false,
983
+ "isLValue": false,
984
+ "isPure": false,
985
+ "kind": "functionCall",
986
+ "lValueRequested": false,
987
+ "names": [],
988
+ "nodeType": "FunctionCall",
989
+ "src": "1030:34:39",
990
+ "tryCall": false,
991
+ "typeDescriptions": {
992
+ "typeIdentifier": "t_address",
993
+ "typeString": "address"
994
+ }
995
+ },
996
+ "nodeType": "BinaryOperation",
997
+ "operator": "==",
998
+ "rightExpression": {
999
+ "id": 11052,
1000
+ "name": "bridge",
1001
+ "nodeType": "Identifier",
1002
+ "overloadedDeclarations": [],
1003
+ "referencedDeclaration": 10984,
1004
+ "src": "1067:6:39",
1005
+ "typeDescriptions": {
1006
+ "typeIdentifier": "t_address",
1007
+ "typeString": "address"
1008
+ }
1009
+ },
1010
+ "src": "1030:43:39",
1011
+ "typeDescriptions": {
1012
+ "typeIdentifier": "t_bool",
1013
+ "typeString": "bool"
1014
+ }
1015
+ }
1016
+ ],
1017
+ "expression": {
1018
+ "argumentTypes": [
1019
+ {
1020
+ "typeIdentifier": "t_bool",
1021
+ "typeString": "bool"
1022
+ }
1023
+ ],
1024
+ "id": 11045,
1025
+ "name": "require",
1026
+ "nodeType": "Identifier",
1027
+ "overloadedDeclarations": [
1028
+ -18,
1029
+ -18
1030
+ ],
1031
+ "referencedDeclaration": -18,
1032
+ "src": "1022:7:39",
1033
+ "typeDescriptions": {
1034
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
1035
+ "typeString": "function (bool) pure"
1036
+ }
1037
+ },
1038
+ "id": 11054,
1039
+ "isConstant": false,
1040
+ "isLValue": false,
1041
+ "isPure": false,
1042
+ "kind": "functionCall",
1043
+ "lValueRequested": false,
1044
+ "names": [],
1045
+ "nodeType": "FunctionCall",
1046
+ "src": "1022:52:39",
1047
+ "tryCall": false,
1048
+ "typeDescriptions": {
1049
+ "typeIdentifier": "t_tuple$__$",
1050
+ "typeString": "tuple()"
1051
+ }
1052
+ },
1053
+ "id": 11055,
1054
+ "nodeType": "ExpressionStatement",
1055
+ "src": "1022:52:39"
1056
+ },
1057
+ {
1058
+ "expression": {
1059
+ "id": 11060,
1060
+ "isConstant": false,
1061
+ "isLValue": false,
1062
+ "isPure": false,
1063
+ "lValueRequested": false,
1064
+ "leftHandSide": {
1065
+ "baseExpression": {
1066
+ "id": 11056,
1067
+ "name": "issues",
1068
+ "nodeType": "Identifier",
1069
+ "overloadedDeclarations": [],
1070
+ "referencedDeclaration": 10982,
1071
+ "src": "1085:6:39",
1072
+ "typeDescriptions": {
1073
+ "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
1074
+ "typeString": "mapping(address => bytes32)"
1075
+ }
1076
+ },
1077
+ "id": 11058,
1078
+ "indexExpression": {
1079
+ "id": 11057,
1080
+ "name": "_issue",
1081
+ "nodeType": "Identifier",
1082
+ "overloadedDeclarations": [],
1083
+ "referencedDeclaration": 11011,
1084
+ "src": "1092:6:39",
1085
+ "typeDescriptions": {
1086
+ "typeIdentifier": "t_address",
1087
+ "typeString": "address"
1088
+ }
1089
+ },
1090
+ "isConstant": false,
1091
+ "isLValue": true,
1092
+ "isPure": false,
1093
+ "lValueRequested": true,
1094
+ "nodeType": "IndexAccess",
1095
+ "src": "1085:14:39",
1096
+ "typeDescriptions": {
1097
+ "typeIdentifier": "t_bytes32",
1098
+ "typeString": "bytes32"
1099
+ }
1100
+ },
1101
+ "nodeType": "Assignment",
1102
+ "operator": "=",
1103
+ "rightHandSide": {
1104
+ "id": 11059,
1105
+ "name": "_ref",
1106
+ "nodeType": "Identifier",
1107
+ "overloadedDeclarations": [],
1108
+ "referencedDeclaration": 11013,
1109
+ "src": "1102:4:39",
1110
+ "typeDescriptions": {
1111
+ "typeIdentifier": "t_bytes32",
1112
+ "typeString": "bytes32"
1113
+ }
1114
+ },
1115
+ "src": "1085:21:39",
1116
+ "typeDescriptions": {
1117
+ "typeIdentifier": "t_bytes32",
1118
+ "typeString": "bytes32"
1119
+ }
1120
+ },
1121
+ "id": 11061,
1122
+ "nodeType": "ExpressionStatement",
1123
+ "src": "1085:21:39"
1124
+ }
1125
+ ]
1126
+ },
1127
+ "functionSelector": "e45f837e",
1128
+ "id": 11063,
1129
+ "implemented": true,
1130
+ "kind": "function",
1131
+ "modifiers": [],
1132
+ "name": "issueProduct",
1133
+ "nodeType": "FunctionDefinition",
1134
+ "overrides": {
1135
+ "id": 11023,
1136
+ "nodeType": "OverrideSpecifier",
1137
+ "overrides": [],
1138
+ "src": "804:8:39"
1139
+ },
1140
+ "parameters": {
1141
+ "id": 11022,
1142
+ "nodeType": "ParameterList",
1143
+ "parameters": [
1144
+ {
1145
+ "constant": false,
1146
+ "id": 11011,
1147
+ "mutability": "mutable",
1148
+ "name": "_issue",
1149
+ "nodeType": "VariableDeclaration",
1150
+ "scope": 11063,
1151
+ "src": "686:14:39",
1152
+ "stateVariable": false,
1153
+ "storageLocation": "default",
1154
+ "typeDescriptions": {
1155
+ "typeIdentifier": "t_address",
1156
+ "typeString": "address"
1157
+ },
1158
+ "typeName": {
1159
+ "id": 11010,
1160
+ "name": "address",
1161
+ "nodeType": "ElementaryTypeName",
1162
+ "src": "686:7:39",
1163
+ "stateMutability": "nonpayable",
1164
+ "typeDescriptions": {
1165
+ "typeIdentifier": "t_address",
1166
+ "typeString": "address"
1167
+ }
1168
+ },
1169
+ "visibility": "internal"
1170
+ },
1171
+ {
1172
+ "constant": false,
1173
+ "id": 11013,
1174
+ "mutability": "mutable",
1175
+ "name": "_ref",
1176
+ "nodeType": "VariableDeclaration",
1177
+ "scope": 11063,
1178
+ "src": "702:12:39",
1179
+ "stateVariable": false,
1180
+ "storageLocation": "default",
1181
+ "typeDescriptions": {
1182
+ "typeIdentifier": "t_bytes32",
1183
+ "typeString": "bytes32"
1184
+ },
1185
+ "typeName": {
1186
+ "id": 11012,
1187
+ "name": "bytes32",
1188
+ "nodeType": "ElementaryTypeName",
1189
+ "src": "702:7:39",
1190
+ "typeDescriptions": {
1191
+ "typeIdentifier": "t_bytes32",
1192
+ "typeString": "bytes32"
1193
+ }
1194
+ },
1195
+ "visibility": "internal"
1196
+ },
1197
+ {
1198
+ "constant": false,
1199
+ "id": 11015,
1200
+ "mutability": "mutable",
1201
+ "name": "_hashedMessage",
1202
+ "nodeType": "VariableDeclaration",
1203
+ "scope": 11063,
1204
+ "src": "716:22:39",
1205
+ "stateVariable": false,
1206
+ "storageLocation": "default",
1207
+ "typeDescriptions": {
1208
+ "typeIdentifier": "t_bytes32",
1209
+ "typeString": "bytes32"
1210
+ },
1211
+ "typeName": {
1212
+ "id": 11014,
1213
+ "name": "bytes32",
1214
+ "nodeType": "ElementaryTypeName",
1215
+ "src": "716:7:39",
1216
+ "typeDescriptions": {
1217
+ "typeIdentifier": "t_bytes32",
1218
+ "typeString": "bytes32"
1219
+ }
1220
+ },
1221
+ "visibility": "internal"
1222
+ },
1223
+ {
1224
+ "constant": false,
1225
+ "id": 11017,
1226
+ "mutability": "mutable",
1227
+ "name": "_v",
1228
+ "nodeType": "VariableDeclaration",
1229
+ "scope": 11063,
1230
+ "src": "740:8:39",
1231
+ "stateVariable": false,
1232
+ "storageLocation": "default",
1233
+ "typeDescriptions": {
1234
+ "typeIdentifier": "t_uint8",
1235
+ "typeString": "uint8"
1236
+ },
1237
+ "typeName": {
1238
+ "id": 11016,
1239
+ "name": "uint8",
1240
+ "nodeType": "ElementaryTypeName",
1241
+ "src": "740:5:39",
1242
+ "typeDescriptions": {
1243
+ "typeIdentifier": "t_uint8",
1244
+ "typeString": "uint8"
1245
+ }
1246
+ },
1247
+ "visibility": "internal"
1248
+ },
1249
+ {
1250
+ "constant": false,
1251
+ "id": 11019,
1252
+ "mutability": "mutable",
1253
+ "name": "_r",
1254
+ "nodeType": "VariableDeclaration",
1255
+ "scope": 11063,
1256
+ "src": "750:10:39",
1257
+ "stateVariable": false,
1258
+ "storageLocation": "default",
1259
+ "typeDescriptions": {
1260
+ "typeIdentifier": "t_bytes32",
1261
+ "typeString": "bytes32"
1262
+ },
1263
+ "typeName": {
1264
+ "id": 11018,
1265
+ "name": "bytes32",
1266
+ "nodeType": "ElementaryTypeName",
1267
+ "src": "750:7:39",
1268
+ "typeDescriptions": {
1269
+ "typeIdentifier": "t_bytes32",
1270
+ "typeString": "bytes32"
1271
+ }
1272
+ },
1273
+ "visibility": "internal"
1274
+ },
1275
+ {
1276
+ "constant": false,
1277
+ "id": 11021,
1278
+ "mutability": "mutable",
1279
+ "name": "_s",
1280
+ "nodeType": "VariableDeclaration",
1281
+ "scope": 11063,
1282
+ "src": "762:10:39",
1283
+ "stateVariable": false,
1284
+ "storageLocation": "default",
1285
+ "typeDescriptions": {
1286
+ "typeIdentifier": "t_bytes32",
1287
+ "typeString": "bytes32"
1288
+ },
1289
+ "typeName": {
1290
+ "id": 11020,
1291
+ "name": "bytes32",
1292
+ "nodeType": "ElementaryTypeName",
1293
+ "src": "762:7:39",
1294
+ "typeDescriptions": {
1295
+ "typeIdentifier": "t_bytes32",
1296
+ "typeString": "bytes32"
1297
+ }
1298
+ },
1299
+ "visibility": "internal"
1300
+ }
1301
+ ],
1302
+ "src": "685:88:39"
1303
+ },
1304
+ "returnParameters": {
1305
+ "id": 11024,
1306
+ "nodeType": "ParameterList",
1307
+ "parameters": [],
1308
+ "src": "822:0:39"
1309
+ },
1310
+ "scope": 11083,
1311
+ "src": "664:450:39",
1312
+ "stateMutability": "nonpayable",
1313
+ "virtual": false,
1314
+ "visibility": "external"
1315
+ },
1316
+ {
1317
+ "baseFunctions": [
1318
+ 11633
1319
+ ],
1320
+ "body": {
1321
+ "id": 11081,
1322
+ "nodeType": "Block",
1323
+ "src": "1227:107:39",
1324
+ "statements": [
1325
+ {
1326
+ "condition": {
1327
+ "commonType": {
1328
+ "typeIdentifier": "t_bytes32",
1329
+ "typeString": "bytes32"
1330
+ },
1331
+ "id": 11075,
1332
+ "isConstant": false,
1333
+ "isLValue": false,
1334
+ "isPure": false,
1335
+ "lValueRequested": false,
1336
+ "leftExpression": {
1337
+ "baseExpression": {
1338
+ "id": 11071,
1339
+ "name": "issues",
1340
+ "nodeType": "Identifier",
1341
+ "overloadedDeclarations": [],
1342
+ "referencedDeclaration": 10982,
1343
+ "src": "1241:6:39",
1344
+ "typeDescriptions": {
1345
+ "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
1346
+ "typeString": "mapping(address => bytes32)"
1347
+ }
1348
+ },
1349
+ "id": 11073,
1350
+ "indexExpression": {
1351
+ "id": 11072,
1352
+ "name": "_issue",
1353
+ "nodeType": "Identifier",
1354
+ "overloadedDeclarations": [],
1355
+ "referencedDeclaration": 11065,
1356
+ "src": "1248:6:39",
1357
+ "typeDescriptions": {
1358
+ "typeIdentifier": "t_address",
1359
+ "typeString": "address"
1360
+ }
1361
+ },
1362
+ "isConstant": false,
1363
+ "isLValue": true,
1364
+ "isPure": false,
1365
+ "lValueRequested": false,
1366
+ "nodeType": "IndexAccess",
1367
+ "src": "1241:14:39",
1368
+ "typeDescriptions": {
1369
+ "typeIdentifier": "t_bytes32",
1370
+ "typeString": "bytes32"
1371
+ }
1372
+ },
1373
+ "nodeType": "BinaryOperation",
1374
+ "operator": "!=",
1375
+ "rightExpression": {
1376
+ "hexValue": "",
1377
+ "id": 11074,
1378
+ "isConstant": false,
1379
+ "isLValue": false,
1380
+ "isPure": true,
1381
+ "kind": "string",
1382
+ "lValueRequested": false,
1383
+ "nodeType": "Literal",
1384
+ "src": "1257:2:39",
1385
+ "typeDescriptions": {
1386
+ "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
1387
+ "typeString": "literal_string \"\""
1388
+ },
1389
+ "value": ""
1390
+ },
1391
+ "src": "1241:18:39",
1392
+ "typeDescriptions": {
1393
+ "typeIdentifier": "t_bool",
1394
+ "typeString": "bool"
1395
+ }
1396
+ },
1397
+ "falseBody": {
1398
+ "expression": {
1399
+ "hexValue": "66616c7365",
1400
+ "id": 11078,
1401
+ "isConstant": false,
1402
+ "isLValue": false,
1403
+ "isPure": true,
1404
+ "kind": "bool",
1405
+ "lValueRequested": false,
1406
+ "nodeType": "Literal",
1407
+ "src": "1321:5:39",
1408
+ "typeDescriptions": {
1409
+ "typeIdentifier": "t_bool",
1410
+ "typeString": "bool"
1411
+ },
1412
+ "value": "false"
1413
+ },
1414
+ "functionReturnParameters": 11070,
1415
+ "id": 11079,
1416
+ "nodeType": "Return",
1417
+ "src": "1314:12:39"
1418
+ },
1419
+ "id": 11080,
1420
+ "nodeType": "IfStatement",
1421
+ "src": "1238:88:39",
1422
+ "trueBody": {
1423
+ "expression": {
1424
+ "hexValue": "74727565",
1425
+ "id": 11076,
1426
+ "isConstant": false,
1427
+ "isLValue": false,
1428
+ "isPure": true,
1429
+ "kind": "bool",
1430
+ "lValueRequested": false,
1431
+ "nodeType": "Literal",
1432
+ "src": "1281:4:39",
1433
+ "typeDescriptions": {
1434
+ "typeIdentifier": "t_bool",
1435
+ "typeString": "bool"
1436
+ },
1437
+ "value": "true"
1438
+ },
1439
+ "functionReturnParameters": 11070,
1440
+ "id": 11077,
1441
+ "nodeType": "Return",
1442
+ "src": "1274:11:39"
1443
+ }
1444
+ }
1445
+ ]
1446
+ },
1447
+ "functionSelector": "3ea6c82d",
1448
+ "id": 11082,
1449
+ "implemented": true,
1450
+ "kind": "function",
1451
+ "modifiers": [],
1452
+ "name": "checkProduct",
1453
+ "nodeType": "FunctionDefinition",
1454
+ "overrides": {
1455
+ "id": 11067,
1456
+ "nodeType": "OverrideSpecifier",
1457
+ "overrides": [],
1458
+ "src": "1191:8:39"
1459
+ },
1460
+ "parameters": {
1461
+ "id": 11066,
1462
+ "nodeType": "ParameterList",
1463
+ "parameters": [
1464
+ {
1465
+ "constant": false,
1466
+ "id": 11065,
1467
+ "mutability": "mutable",
1468
+ "name": "_issue",
1469
+ "nodeType": "VariableDeclaration",
1470
+ "scope": 11082,
1471
+ "src": "1145:14:39",
1472
+ "stateVariable": false,
1473
+ "storageLocation": "default",
1474
+ "typeDescriptions": {
1475
+ "typeIdentifier": "t_address",
1476
+ "typeString": "address"
1477
+ },
1478
+ "typeName": {
1479
+ "id": 11064,
1480
+ "name": "address",
1481
+ "nodeType": "ElementaryTypeName",
1482
+ "src": "1145:7:39",
1483
+ "stateMutability": "nonpayable",
1484
+ "typeDescriptions": {
1485
+ "typeIdentifier": "t_address",
1486
+ "typeString": "address"
1487
+ }
1488
+ },
1489
+ "visibility": "internal"
1490
+ }
1491
+ ],
1492
+ "src": "1144:16:39"
1493
+ },
1494
+ "returnParameters": {
1495
+ "id": 11070,
1496
+ "nodeType": "ParameterList",
1497
+ "parameters": [
1498
+ {
1499
+ "constant": false,
1500
+ "id": 11069,
1501
+ "mutability": "mutable",
1502
+ "name": "",
1503
+ "nodeType": "VariableDeclaration",
1504
+ "scope": 11082,
1505
+ "src": "1222:4:39",
1506
+ "stateVariable": false,
1507
+ "storageLocation": "default",
1508
+ "typeDescriptions": {
1509
+ "typeIdentifier": "t_bool",
1510
+ "typeString": "bool"
1511
+ },
1512
+ "typeName": {
1513
+ "id": 11068,
1514
+ "name": "bool",
1515
+ "nodeType": "ElementaryTypeName",
1516
+ "src": "1222:4:39",
1517
+ "typeDescriptions": {
1518
+ "typeIdentifier": "t_bool",
1519
+ "typeString": "bool"
1520
+ }
1521
+ },
1522
+ "visibility": "internal"
1523
+ }
1524
+ ],
1525
+ "src": "1221:6:39"
1526
+ },
1527
+ "scope": 11083,
1528
+ "src": "1123:211:39",
1529
+ "stateMutability": "view",
1530
+ "virtual": false,
1531
+ "visibility": "external"
1532
+ }
1533
+ ],
1534
+ "scope": 11084,
1535
+ "src": "265:1074:39"
1536
+ }
1537
+ ],
1538
+ "src": "112:1227:39"
1539
+ },
1540
+ "legacyAST": {
1541
+ "attributes": {
1542
+ "absolutePath": "project:/contracts/Products.sol",
1543
+ "exportedSymbols": {
1544
+ "Products": [
1545
+ 11083
1546
+ ]
1547
+ },
1548
+ "license": "UNLICENSED"
1549
+ },
1550
+ "children": [
1551
+ {
1552
+ "attributes": {
1553
+ "literals": [
1554
+ "solidity",
1555
+ "^",
1556
+ "0.7",
1557
+ ".1"
1558
+ ]
1559
+ },
1560
+ "id": 10972,
1561
+ "name": "PragmaDirective",
1562
+ "src": "112:23:39"
1563
+ },
1564
+ {
1565
+ "attributes": {
1566
+ "SourceUnit": 11640,
1567
+ "absolutePath": "project:/contracts/interfaces/VerifiedProducts.sol",
1568
+ "file": "./interfaces/VerifiedProducts.sol",
1569
+ "scope": 11084,
1570
+ "symbolAliases": [
1571
+ null
1572
+ ],
1573
+ "unitAlias": ""
1574
+ },
1575
+ "id": 10973,
1576
+ "name": "ImportDirective",
1577
+ "src": "139:43:39"
1578
+ },
1579
+ {
1580
+ "attributes": {
1581
+ "SourceUnit": 6369,
1582
+ "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
1583
+ "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
1584
+ "scope": 11084,
1585
+ "symbolAliases": [
1586
+ null
1587
+ ],
1588
+ "unitAlias": ""
1589
+ },
1590
+ "id": 10974,
1591
+ "name": "ImportDirective",
1592
+ "src": "184:77:39"
1593
+ },
1594
+ {
1595
+ "attributes": {
1596
+ "abstract": false,
1597
+ "contractDependencies": [
1598
+ 6368,
1599
+ 11639
1600
+ ],
1601
+ "contractKind": "contract",
1602
+ "fullyImplemented": true,
1603
+ "linearizedBaseContracts": [
1604
+ 11083,
1605
+ 6368,
1606
+ 11639
1607
+ ],
1608
+ "name": "Products",
1609
+ "scope": 11084
1610
+ },
1611
+ "children": [
1612
+ {
1613
+ "attributes": {},
1614
+ "children": [
1615
+ {
1616
+ "attributes": {
1617
+ "name": "VerifiedProducts",
1618
+ "referencedDeclaration": 11639,
1619
+ "type": "contract VerifiedProducts"
1620
+ },
1621
+ "id": 10975,
1622
+ "name": "UserDefinedTypeName",
1623
+ "src": "286:16:39"
1624
+ }
1625
+ ],
1626
+ "id": 10976,
1627
+ "name": "InheritanceSpecifier",
1628
+ "src": "286:16:39"
1629
+ },
1630
+ {
1631
+ "attributes": {},
1632
+ "children": [
1633
+ {
1634
+ "attributes": {
1635
+ "name": "Ownable",
1636
+ "referencedDeclaration": 6368,
1637
+ "type": "contract Ownable"
1638
+ },
1639
+ "id": 10977,
1640
+ "name": "UserDefinedTypeName",
1641
+ "src": "304:7:39"
1642
+ }
1643
+ ],
1644
+ "id": 10978,
1645
+ "name": "InheritanceSpecifier",
1646
+ "src": "304:7:39"
1647
+ },
1648
+ {
1649
+ "attributes": {
1650
+ "constant": false,
1651
+ "mutability": "mutable",
1652
+ "name": "issues",
1653
+ "scope": 11083,
1654
+ "stateVariable": true,
1655
+ "storageLocation": "default",
1656
+ "type": "mapping(address => bytes32)",
1657
+ "visibility": "private"
1658
+ },
1659
+ "children": [
1660
+ {
1661
+ "attributes": {
1662
+ "type": "mapping(address => bytes32)"
1663
+ },
1664
+ "children": [
1665
+ {
1666
+ "attributes": {
1667
+ "name": "address",
1668
+ "type": "address"
1669
+ },
1670
+ "id": 10979,
1671
+ "name": "ElementaryTypeName",
1672
+ "src": "380:7:39"
1673
+ },
1674
+ {
1675
+ "attributes": {
1676
+ "name": "bytes32",
1677
+ "type": "bytes32"
1678
+ },
1679
+ "id": 10980,
1680
+ "name": "ElementaryTypeName",
1681
+ "src": "391:7:39"
1682
+ }
1683
+ ],
1684
+ "id": 10981,
1685
+ "name": "Mapping",
1686
+ "src": "372:27:39"
1687
+ }
1688
+ ],
1689
+ "id": 10982,
1690
+ "name": "VariableDeclaration",
1691
+ "src": "372:42:39"
1692
+ },
1693
+ {
1694
+ "attributes": {
1695
+ "constant": false,
1696
+ "mutability": "mutable",
1697
+ "name": "bridge",
1698
+ "scope": 11083,
1699
+ "stateVariable": true,
1700
+ "storageLocation": "default",
1701
+ "type": "address",
1702
+ "visibility": "internal"
1703
+ },
1704
+ "children": [
1705
+ {
1706
+ "attributes": {
1707
+ "name": "address",
1708
+ "stateMutability": "nonpayable",
1709
+ "type": "address"
1710
+ },
1711
+ "id": 10983,
1712
+ "name": "ElementaryTypeName",
1713
+ "src": "437:7:39"
1714
+ }
1715
+ ],
1716
+ "id": 10984,
1717
+ "name": "VariableDeclaration",
1718
+ "src": "437:14:39"
1719
+ },
1720
+ {
1721
+ "attributes": {
1722
+ "functionSelector": "c4d66de8",
1723
+ "implemented": true,
1724
+ "isConstructor": false,
1725
+ "kind": "function",
1726
+ "name": "initialize",
1727
+ "scope": 11083,
1728
+ "stateMutability": "nonpayable",
1729
+ "virtual": false,
1730
+ "visibility": "public"
1731
+ },
1732
+ "children": [
1733
+ {
1734
+ "children": [
1735
+ {
1736
+ "attributes": {
1737
+ "constant": false,
1738
+ "mutability": "mutable",
1739
+ "name": "_signer",
1740
+ "scope": 10996,
1741
+ "stateVariable": false,
1742
+ "storageLocation": "default",
1743
+ "type": "address",
1744
+ "visibility": "internal"
1745
+ },
1746
+ "children": [
1747
+ {
1748
+ "attributes": {
1749
+ "name": "address",
1750
+ "stateMutability": "nonpayable",
1751
+ "type": "address"
1752
+ },
1753
+ "id": 10985,
1754
+ "name": "ElementaryTypeName",
1755
+ "src": "480:7:39"
1756
+ }
1757
+ ],
1758
+ "id": 10986,
1759
+ "name": "VariableDeclaration",
1760
+ "src": "480:15:39"
1761
+ }
1762
+ ],
1763
+ "id": 10987,
1764
+ "name": "ParameterList",
1765
+ "src": "479:17:39"
1766
+ },
1767
+ {
1768
+ "attributes": {
1769
+ "parameters": [
1770
+ null
1771
+ ]
1772
+ },
1773
+ "children": [],
1774
+ "id": 10990,
1775
+ "name": "ParameterList",
1776
+ "src": "514:0:39"
1777
+ },
1778
+ {
1779
+ "attributes": {},
1780
+ "children": [
1781
+ {
1782
+ "attributes": {
1783
+ "overloadedDeclarations": [
1784
+ null
1785
+ ],
1786
+ "referencedDeclaration": 6316,
1787
+ "type": "modifier ()",
1788
+ "value": "onlyOwner"
1789
+ },
1790
+ "id": 10988,
1791
+ "name": "Identifier",
1792
+ "src": "497:9:39"
1793
+ }
1794
+ ],
1795
+ "id": 10989,
1796
+ "name": "ModifierInvocation",
1797
+ "src": "497:9:39"
1798
+ },
1799
+ {
1800
+ "children": [
1801
+ {
1802
+ "children": [
1803
+ {
1804
+ "attributes": {
1805
+ "isConstant": false,
1806
+ "isLValue": false,
1807
+ "isPure": false,
1808
+ "lValueRequested": false,
1809
+ "operator": "=",
1810
+ "type": "address"
1811
+ },
1812
+ "children": [
1813
+ {
1814
+ "attributes": {
1815
+ "overloadedDeclarations": [
1816
+ null
1817
+ ],
1818
+ "referencedDeclaration": 10984,
1819
+ "type": "address",
1820
+ "value": "bridge"
1821
+ },
1822
+ "id": 10991,
1823
+ "name": "Identifier",
1824
+ "src": "525:6:39"
1825
+ },
1826
+ {
1827
+ "attributes": {
1828
+ "overloadedDeclarations": [
1829
+ null
1830
+ ],
1831
+ "referencedDeclaration": 10986,
1832
+ "type": "address",
1833
+ "value": "_signer"
1834
+ },
1835
+ "id": 10992,
1836
+ "name": "Identifier",
1837
+ "src": "534:7:39"
1838
+ }
1839
+ ],
1840
+ "id": 10993,
1841
+ "name": "Assignment",
1842
+ "src": "525:16:39"
1843
+ }
1844
+ ],
1845
+ "id": 10994,
1846
+ "name": "ExpressionStatement",
1847
+ "src": "525:16:39"
1848
+ }
1849
+ ],
1850
+ "id": 10995,
1851
+ "name": "Block",
1852
+ "src": "514:35:39"
1853
+ }
1854
+ ],
1855
+ "id": 10996,
1856
+ "name": "FunctionDefinition",
1857
+ "src": "460:89:39"
1858
+ },
1859
+ {
1860
+ "attributes": {
1861
+ "baseFunctions": [
1862
+ 11638
1863
+ ],
1864
+ "functionSelector": "6c19e783",
1865
+ "implemented": true,
1866
+ "isConstructor": false,
1867
+ "kind": "function",
1868
+ "name": "setSigner",
1869
+ "scope": 11083,
1870
+ "stateMutability": "nonpayable",
1871
+ "virtual": false,
1872
+ "visibility": "external"
1873
+ },
1874
+ "children": [
1875
+ {
1876
+ "attributes": {
1877
+ "overrides": [
1878
+ null
1879
+ ]
1880
+ },
1881
+ "id": 11002,
1882
+ "name": "OverrideSpecifier",
1883
+ "src": "603:8:39"
1884
+ },
1885
+ {
1886
+ "children": [
1887
+ {
1888
+ "attributes": {
1889
+ "constant": false,
1890
+ "mutability": "mutable",
1891
+ "name": "_signer",
1892
+ "scope": 11009,
1893
+ "stateVariable": false,
1894
+ "storageLocation": "default",
1895
+ "type": "address",
1896
+ "visibility": "internal"
1897
+ },
1898
+ "children": [
1899
+ {
1900
+ "attributes": {
1901
+ "name": "address",
1902
+ "stateMutability": "nonpayable",
1903
+ "type": "address"
1904
+ },
1905
+ "id": 10997,
1906
+ "name": "ElementaryTypeName",
1907
+ "src": "576:7:39"
1908
+ }
1909
+ ],
1910
+ "id": 10998,
1911
+ "name": "VariableDeclaration",
1912
+ "src": "576:15:39"
1913
+ }
1914
+ ],
1915
+ "id": 10999,
1916
+ "name": "ParameterList",
1917
+ "src": "575:17:39"
1918
+ },
1919
+ {
1920
+ "attributes": {
1921
+ "parameters": [
1922
+ null
1923
+ ]
1924
+ },
1925
+ "children": [],
1926
+ "id": 11003,
1927
+ "name": "ParameterList",
1928
+ "src": "620:0:39"
1929
+ },
1930
+ {
1931
+ "attributes": {},
1932
+ "children": [
1933
+ {
1934
+ "attributes": {
1935
+ "overloadedDeclarations": [
1936
+ null
1937
+ ],
1938
+ "referencedDeclaration": 6316,
1939
+ "type": "modifier ()",
1940
+ "value": "onlyOwner"
1941
+ },
1942
+ "id": 11000,
1943
+ "name": "Identifier",
1944
+ "src": "593:9:39"
1945
+ }
1946
+ ],
1947
+ "id": 11001,
1948
+ "name": "ModifierInvocation",
1949
+ "src": "593:9:39"
1950
+ },
1951
+ {
1952
+ "children": [
1953
+ {
1954
+ "children": [
1955
+ {
1956
+ "attributes": {
1957
+ "isConstant": false,
1958
+ "isLValue": false,
1959
+ "isPure": false,
1960
+ "lValueRequested": false,
1961
+ "operator": "=",
1962
+ "type": "address"
1963
+ },
1964
+ "children": [
1965
+ {
1966
+ "attributes": {
1967
+ "overloadedDeclarations": [
1968
+ null
1969
+ ],
1970
+ "referencedDeclaration": 10984,
1971
+ "type": "address",
1972
+ "value": "bridge"
1973
+ },
1974
+ "id": 11004,
1975
+ "name": "Identifier",
1976
+ "src": "631:6:39"
1977
+ },
1978
+ {
1979
+ "attributes": {
1980
+ "overloadedDeclarations": [
1981
+ null
1982
+ ],
1983
+ "referencedDeclaration": 10998,
1984
+ "type": "address",
1985
+ "value": "_signer"
1986
+ },
1987
+ "id": 11005,
1988
+ "name": "Identifier",
1989
+ "src": "640:7:39"
1990
+ }
1991
+ ],
1992
+ "id": 11006,
1993
+ "name": "Assignment",
1994
+ "src": "631:16:39"
1995
+ }
1996
+ ],
1997
+ "id": 11007,
1998
+ "name": "ExpressionStatement",
1999
+ "src": "631:16:39"
2000
+ }
2001
+ ],
2002
+ "id": 11008,
2003
+ "name": "Block",
2004
+ "src": "620:35:39"
2005
+ }
2006
+ ],
2007
+ "id": 11009,
2008
+ "name": "FunctionDefinition",
2009
+ "src": "557:98:39"
2010
+ },
2011
+ {
2012
+ "attributes": {
2013
+ "baseFunctions": [
2014
+ 11626
2015
+ ],
2016
+ "functionSelector": "e45f837e",
2017
+ "implemented": true,
2018
+ "isConstructor": false,
2019
+ "kind": "function",
2020
+ "modifiers": [
2021
+ null
2022
+ ],
2023
+ "name": "issueProduct",
2024
+ "scope": 11083,
2025
+ "stateMutability": "nonpayable",
2026
+ "virtual": false,
2027
+ "visibility": "external"
2028
+ },
2029
+ "children": [
2030
+ {
2031
+ "attributes": {
2032
+ "overrides": [
2033
+ null
2034
+ ]
2035
+ },
2036
+ "id": 11023,
2037
+ "name": "OverrideSpecifier",
2038
+ "src": "804:8:39"
2039
+ },
2040
+ {
2041
+ "children": [
2042
+ {
2043
+ "attributes": {
2044
+ "constant": false,
2045
+ "mutability": "mutable",
2046
+ "name": "_issue",
2047
+ "scope": 11063,
2048
+ "stateVariable": false,
2049
+ "storageLocation": "default",
2050
+ "type": "address",
2051
+ "visibility": "internal"
2052
+ },
2053
+ "children": [
2054
+ {
2055
+ "attributes": {
2056
+ "name": "address",
2057
+ "stateMutability": "nonpayable",
2058
+ "type": "address"
2059
+ },
2060
+ "id": 11010,
2061
+ "name": "ElementaryTypeName",
2062
+ "src": "686:7:39"
2063
+ }
2064
+ ],
2065
+ "id": 11011,
2066
+ "name": "VariableDeclaration",
2067
+ "src": "686:14:39"
2068
+ },
2069
+ {
2070
+ "attributes": {
2071
+ "constant": false,
2072
+ "mutability": "mutable",
2073
+ "name": "_ref",
2074
+ "scope": 11063,
2075
+ "stateVariable": false,
2076
+ "storageLocation": "default",
2077
+ "type": "bytes32",
2078
+ "visibility": "internal"
2079
+ },
2080
+ "children": [
2081
+ {
2082
+ "attributes": {
2083
+ "name": "bytes32",
2084
+ "type": "bytes32"
2085
+ },
2086
+ "id": 11012,
2087
+ "name": "ElementaryTypeName",
2088
+ "src": "702:7:39"
2089
+ }
2090
+ ],
2091
+ "id": 11013,
2092
+ "name": "VariableDeclaration",
2093
+ "src": "702:12:39"
2094
+ },
2095
+ {
2096
+ "attributes": {
2097
+ "constant": false,
2098
+ "mutability": "mutable",
2099
+ "name": "_hashedMessage",
2100
+ "scope": 11063,
2101
+ "stateVariable": false,
2102
+ "storageLocation": "default",
2103
+ "type": "bytes32",
2104
+ "visibility": "internal"
2105
+ },
2106
+ "children": [
2107
+ {
2108
+ "attributes": {
2109
+ "name": "bytes32",
2110
+ "type": "bytes32"
2111
+ },
2112
+ "id": 11014,
2113
+ "name": "ElementaryTypeName",
2114
+ "src": "716:7:39"
2115
+ }
2116
+ ],
2117
+ "id": 11015,
2118
+ "name": "VariableDeclaration",
2119
+ "src": "716:22:39"
2120
+ },
2121
+ {
2122
+ "attributes": {
2123
+ "constant": false,
2124
+ "mutability": "mutable",
2125
+ "name": "_v",
2126
+ "scope": 11063,
2127
+ "stateVariable": false,
2128
+ "storageLocation": "default",
2129
+ "type": "uint8",
2130
+ "visibility": "internal"
2131
+ },
2132
+ "children": [
2133
+ {
2134
+ "attributes": {
2135
+ "name": "uint8",
2136
+ "type": "uint8"
2137
+ },
2138
+ "id": 11016,
2139
+ "name": "ElementaryTypeName",
2140
+ "src": "740:5:39"
2141
+ }
2142
+ ],
2143
+ "id": 11017,
2144
+ "name": "VariableDeclaration",
2145
+ "src": "740:8:39"
2146
+ },
2147
+ {
2148
+ "attributes": {
2149
+ "constant": false,
2150
+ "mutability": "mutable",
2151
+ "name": "_r",
2152
+ "scope": 11063,
2153
+ "stateVariable": false,
2154
+ "storageLocation": "default",
2155
+ "type": "bytes32",
2156
+ "visibility": "internal"
2157
+ },
2158
+ "children": [
2159
+ {
2160
+ "attributes": {
2161
+ "name": "bytes32",
2162
+ "type": "bytes32"
2163
+ },
2164
+ "id": 11018,
2165
+ "name": "ElementaryTypeName",
2166
+ "src": "750:7:39"
2167
+ }
2168
+ ],
2169
+ "id": 11019,
2170
+ "name": "VariableDeclaration",
2171
+ "src": "750:10:39"
2172
+ },
2173
+ {
2174
+ "attributes": {
2175
+ "constant": false,
2176
+ "mutability": "mutable",
2177
+ "name": "_s",
2178
+ "scope": 11063,
2179
+ "stateVariable": false,
2180
+ "storageLocation": "default",
2181
+ "type": "bytes32",
2182
+ "visibility": "internal"
2183
+ },
2184
+ "children": [
2185
+ {
2186
+ "attributes": {
2187
+ "name": "bytes32",
2188
+ "type": "bytes32"
2189
+ },
2190
+ "id": 11020,
2191
+ "name": "ElementaryTypeName",
2192
+ "src": "762:7:39"
2193
+ }
2194
+ ],
2195
+ "id": 11021,
2196
+ "name": "VariableDeclaration",
2197
+ "src": "762:10:39"
2198
+ }
2199
+ ],
2200
+ "id": 11022,
2201
+ "name": "ParameterList",
2202
+ "src": "685:88:39"
2203
+ },
2204
+ {
2205
+ "attributes": {
2206
+ "parameters": [
2207
+ null
2208
+ ]
2209
+ },
2210
+ "children": [],
2211
+ "id": 11024,
2212
+ "name": "ParameterList",
2213
+ "src": "822:0:39"
2214
+ },
2215
+ {
2216
+ "children": [
2217
+ {
2218
+ "attributes": {
2219
+ "assignments": [
2220
+ 11026
2221
+ ]
2222
+ },
2223
+ "children": [
2224
+ {
2225
+ "attributes": {
2226
+ "constant": false,
2227
+ "mutability": "mutable",
2228
+ "name": "payloadHash",
2229
+ "scope": 11062,
2230
+ "stateVariable": false,
2231
+ "storageLocation": "default",
2232
+ "type": "bytes32",
2233
+ "visibility": "internal"
2234
+ },
2235
+ "children": [
2236
+ {
2237
+ "attributes": {
2238
+ "name": "bytes32",
2239
+ "type": "bytes32"
2240
+ },
2241
+ "id": 11025,
2242
+ "name": "ElementaryTypeName",
2243
+ "src": "833:7:39"
2244
+ }
2245
+ ],
2246
+ "id": 11026,
2247
+ "name": "VariableDeclaration",
2248
+ "src": "833:19:39"
2249
+ },
2250
+ {
2251
+ "attributes": {
2252
+ "isConstant": false,
2253
+ "isLValue": false,
2254
+ "isPure": false,
2255
+ "isStructConstructorCall": false,
2256
+ "lValueRequested": false,
2257
+ "names": [
2258
+ null
2259
+ ],
2260
+ "tryCall": false,
2261
+ "type": "bytes32",
2262
+ "type_conversion": false
2263
+ },
2264
+ "children": [
2265
+ {
2266
+ "attributes": {
2267
+ "argumentTypes": [
2268
+ {
2269
+ "typeIdentifier": "t_bytes_memory_ptr",
2270
+ "typeString": "bytes memory"
2271
+ }
2272
+ ],
2273
+ "overloadedDeclarations": [
2274
+ null
2275
+ ],
2276
+ "referencedDeclaration": -8,
2277
+ "type": "function (bytes memory) pure returns (bytes32)",
2278
+ "value": "keccak256"
2279
+ },
2280
+ "id": 11027,
2281
+ "name": "Identifier",
2282
+ "src": "855:9:39"
2283
+ },
2284
+ {
2285
+ "attributes": {
2286
+ "isConstant": false,
2287
+ "isLValue": false,
2288
+ "isPure": false,
2289
+ "isStructConstructorCall": false,
2290
+ "lValueRequested": false,
2291
+ "names": [
2292
+ null
2293
+ ],
2294
+ "tryCall": false,
2295
+ "type": "bytes memory",
2296
+ "type_conversion": false
2297
+ },
2298
+ "children": [
2299
+ {
2300
+ "attributes": {
2301
+ "argumentTypes": [
2302
+ {
2303
+ "typeIdentifier": "t_bytes32",
2304
+ "typeString": "bytes32"
2305
+ },
2306
+ {
2307
+ "typeIdentifier": "t_stringliteral_a642929fe0ec57585e72a67355d0d02840f474582764f73bbf501283ca413332",
2308
+ "typeString": "literal_string \"L2toL1\""
2309
+ }
2310
+ ],
2311
+ "isConstant": false,
2312
+ "isLValue": false,
2313
+ "isPure": true,
2314
+ "lValueRequested": false,
2315
+ "member_name": "encode",
2316
+ "type": "function () pure returns (bytes memory)"
2317
+ },
2318
+ "children": [
2319
+ {
2320
+ "attributes": {
2321
+ "overloadedDeclarations": [
2322
+ null
2323
+ ],
2324
+ "referencedDeclaration": -1,
2325
+ "type": "abi",
2326
+ "value": "abi"
2327
+ },
2328
+ "id": 11028,
2329
+ "name": "Identifier",
2330
+ "src": "865:3:39"
2331
+ }
2332
+ ],
2333
+ "id": 11029,
2334
+ "name": "MemberAccess",
2335
+ "src": "865:10:39"
2336
+ },
2337
+ {
2338
+ "attributes": {
2339
+ "overloadedDeclarations": [
2340
+ null
2341
+ ],
2342
+ "referencedDeclaration": 11015,
2343
+ "type": "bytes32",
2344
+ "value": "_hashedMessage"
2345
+ },
2346
+ "id": 11030,
2347
+ "name": "Identifier",
2348
+ "src": "876:14:39"
2349
+ },
2350
+ {
2351
+ "attributes": {
2352
+ "hexvalue": "4c32746f4c31",
2353
+ "isConstant": false,
2354
+ "isLValue": false,
2355
+ "isPure": true,
2356
+ "lValueRequested": false,
2357
+ "token": "string",
2358
+ "type": "literal_string \"L2toL1\"",
2359
+ "value": "L2toL1"
2360
+ },
2361
+ "id": 11031,
2362
+ "name": "Literal",
2363
+ "src": "892:8:39"
2364
+ }
2365
+ ],
2366
+ "id": 11032,
2367
+ "name": "FunctionCall",
2368
+ "src": "865:36:39"
2369
+ }
2370
+ ],
2371
+ "id": 11033,
2372
+ "name": "FunctionCall",
2373
+ "src": "855:47:39"
2374
+ }
2375
+ ],
2376
+ "id": 11034,
2377
+ "name": "VariableDeclarationStatement",
2378
+ "src": "833:69:39"
2379
+ },
2380
+ {
2381
+ "attributes": {
2382
+ "assignments": [
2383
+ 11036
2384
+ ]
2385
+ },
2386
+ "children": [
2387
+ {
2388
+ "attributes": {
2389
+ "constant": false,
2390
+ "mutability": "mutable",
2391
+ "name": "messageHash",
2392
+ "scope": 11062,
2393
+ "stateVariable": false,
2394
+ "storageLocation": "default",
2395
+ "type": "bytes32",
2396
+ "visibility": "internal"
2397
+ },
2398
+ "children": [
2399
+ {
2400
+ "attributes": {
2401
+ "name": "bytes32",
2402
+ "type": "bytes32"
2403
+ },
2404
+ "id": 11035,
2405
+ "name": "ElementaryTypeName",
2406
+ "src": "913:7:39"
2407
+ }
2408
+ ],
2409
+ "id": 11036,
2410
+ "name": "VariableDeclaration",
2411
+ "src": "913:19:39"
2412
+ },
2413
+ {
2414
+ "attributes": {
2415
+ "isConstant": false,
2416
+ "isLValue": false,
2417
+ "isPure": false,
2418
+ "isStructConstructorCall": false,
2419
+ "lValueRequested": false,
2420
+ "names": [
2421
+ null
2422
+ ],
2423
+ "tryCall": false,
2424
+ "type": "bytes32",
2425
+ "type_conversion": false
2426
+ },
2427
+ "children": [
2428
+ {
2429
+ "attributes": {
2430
+ "argumentTypes": [
2431
+ {
2432
+ "typeIdentifier": "t_bytes_memory_ptr",
2433
+ "typeString": "bytes memory"
2434
+ }
2435
+ ],
2436
+ "overloadedDeclarations": [
2437
+ null
2438
+ ],
2439
+ "referencedDeclaration": -8,
2440
+ "type": "function (bytes memory) pure returns (bytes32)",
2441
+ "value": "keccak256"
2442
+ },
2443
+ "id": 11037,
2444
+ "name": "Identifier",
2445
+ "src": "935:9:39"
2446
+ },
2447
+ {
2448
+ "attributes": {
2449
+ "isConstant": false,
2450
+ "isLValue": false,
2451
+ "isPure": false,
2452
+ "isStructConstructorCall": false,
2453
+ "lValueRequested": false,
2454
+ "names": [
2455
+ null
2456
+ ],
2457
+ "tryCall": false,
2458
+ "type": "bytes memory",
2459
+ "type_conversion": false
2460
+ },
2461
+ "children": [
2462
+ {
2463
+ "attributes": {
2464
+ "argumentTypes": [
2465
+ {
2466
+ "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
2467
+ "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\""
2468
+ },
2469
+ {
2470
+ "typeIdentifier": "t_bytes32",
2471
+ "typeString": "bytes32"
2472
+ }
2473
+ ],
2474
+ "isConstant": false,
2475
+ "isLValue": false,
2476
+ "isPure": true,
2477
+ "lValueRequested": false,
2478
+ "member_name": "encodePacked",
2479
+ "type": "function () pure returns (bytes memory)"
2480
+ },
2481
+ "children": [
2482
+ {
2483
+ "attributes": {
2484
+ "overloadedDeclarations": [
2485
+ null
2486
+ ],
2487
+ "referencedDeclaration": -1,
2488
+ "type": "abi",
2489
+ "value": "abi"
2490
+ },
2491
+ "id": 11038,
2492
+ "name": "Identifier",
2493
+ "src": "945:3:39"
2494
+ }
2495
+ ],
2496
+ "id": 11039,
2497
+ "name": "MemberAccess",
2498
+ "src": "945:16:39"
2499
+ },
2500
+ {
2501
+ "attributes": {
2502
+ "hexvalue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
2503
+ "isConstant": false,
2504
+ "isLValue": false,
2505
+ "isPure": true,
2506
+ "lValueRequested": false,
2507
+ "token": "string",
2508
+ "type": "literal_string \"\u0019Ethereum Signed Message:\n32\"",
2509
+ "value": "\u0019Ethereum Signed Message:\n32"
2510
+ },
2511
+ "id": 11040,
2512
+ "name": "Literal",
2513
+ "src": "962:34:39"
2514
+ },
2515
+ {
2516
+ "attributes": {
2517
+ "overloadedDeclarations": [
2518
+ null
2519
+ ],
2520
+ "referencedDeclaration": 11026,
2521
+ "type": "bytes32",
2522
+ "value": "payloadHash"
2523
+ },
2524
+ "id": 11041,
2525
+ "name": "Identifier",
2526
+ "src": "998:11:39"
2527
+ }
2528
+ ],
2529
+ "id": 11042,
2530
+ "name": "FunctionCall",
2531
+ "src": "945:65:39"
2532
+ }
2533
+ ],
2534
+ "id": 11043,
2535
+ "name": "FunctionCall",
2536
+ "src": "935:76:39"
2537
+ }
2538
+ ],
2539
+ "id": 11044,
2540
+ "name": "VariableDeclarationStatement",
2541
+ "src": "913:98:39"
2542
+ },
2543
+ {
2544
+ "children": [
2545
+ {
2546
+ "attributes": {
2547
+ "isConstant": false,
2548
+ "isLValue": false,
2549
+ "isPure": false,
2550
+ "isStructConstructorCall": false,
2551
+ "lValueRequested": false,
2552
+ "names": [
2553
+ null
2554
+ ],
2555
+ "tryCall": false,
2556
+ "type": "tuple()",
2557
+ "type_conversion": false
2558
+ },
2559
+ "children": [
2560
+ {
2561
+ "attributes": {
2562
+ "argumentTypes": [
2563
+ {
2564
+ "typeIdentifier": "t_bool",
2565
+ "typeString": "bool"
2566
+ }
2567
+ ],
2568
+ "overloadedDeclarations": [
2569
+ -18,
2570
+ -18
2571
+ ],
2572
+ "referencedDeclaration": -18,
2573
+ "type": "function (bool) pure",
2574
+ "value": "require"
2575
+ },
2576
+ "id": 11045,
2577
+ "name": "Identifier",
2578
+ "src": "1022:7:39"
2579
+ },
2580
+ {
2581
+ "attributes": {
2582
+ "commonType": {
2583
+ "typeIdentifier": "t_address",
2584
+ "typeString": "address"
2585
+ },
2586
+ "isConstant": false,
2587
+ "isLValue": false,
2588
+ "isPure": false,
2589
+ "lValueRequested": false,
2590
+ "operator": "==",
2591
+ "type": "bool"
2592
+ },
2593
+ "children": [
2594
+ {
2595
+ "attributes": {
2596
+ "isConstant": false,
2597
+ "isLValue": false,
2598
+ "isPure": false,
2599
+ "isStructConstructorCall": false,
2600
+ "lValueRequested": false,
2601
+ "names": [
2602
+ null
2603
+ ],
2604
+ "tryCall": false,
2605
+ "type": "address",
2606
+ "type_conversion": false
2607
+ },
2608
+ "children": [
2609
+ {
2610
+ "attributes": {
2611
+ "argumentTypes": [
2612
+ {
2613
+ "typeIdentifier": "t_bytes32",
2614
+ "typeString": "bytes32"
2615
+ },
2616
+ {
2617
+ "typeIdentifier": "t_uint8",
2618
+ "typeString": "uint8"
2619
+ },
2620
+ {
2621
+ "typeIdentifier": "t_bytes32",
2622
+ "typeString": "bytes32"
2623
+ },
2624
+ {
2625
+ "typeIdentifier": "t_bytes32",
2626
+ "typeString": "bytes32"
2627
+ }
2628
+ ],
2629
+ "overloadedDeclarations": [
2630
+ null
2631
+ ],
2632
+ "referencedDeclaration": -6,
2633
+ "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
2634
+ "value": "ecrecover"
2635
+ },
2636
+ "id": 11046,
2637
+ "name": "Identifier",
2638
+ "src": "1030:9:39"
2639
+ },
2640
+ {
2641
+ "attributes": {
2642
+ "overloadedDeclarations": [
2643
+ null
2644
+ ],
2645
+ "referencedDeclaration": 11036,
2646
+ "type": "bytes32",
2647
+ "value": "messageHash"
2648
+ },
2649
+ "id": 11047,
2650
+ "name": "Identifier",
2651
+ "src": "1040:11:39"
2652
+ },
2653
+ {
2654
+ "attributes": {
2655
+ "overloadedDeclarations": [
2656
+ null
2657
+ ],
2658
+ "referencedDeclaration": 11017,
2659
+ "type": "uint8",
2660
+ "value": "_v"
2661
+ },
2662
+ "id": 11048,
2663
+ "name": "Identifier",
2664
+ "src": "1053:2:39"
2665
+ },
2666
+ {
2667
+ "attributes": {
2668
+ "overloadedDeclarations": [
2669
+ null
2670
+ ],
2671
+ "referencedDeclaration": 11019,
2672
+ "type": "bytes32",
2673
+ "value": "_r"
2674
+ },
2675
+ "id": 11049,
2676
+ "name": "Identifier",
2677
+ "src": "1057:2:39"
2678
+ },
2679
+ {
2680
+ "attributes": {
2681
+ "overloadedDeclarations": [
2682
+ null
2683
+ ],
2684
+ "referencedDeclaration": 11021,
2685
+ "type": "bytes32",
2686
+ "value": "_s"
2687
+ },
2688
+ "id": 11050,
2689
+ "name": "Identifier",
2690
+ "src": "1061:2:39"
2691
+ }
2692
+ ],
2693
+ "id": 11051,
2694
+ "name": "FunctionCall",
2695
+ "src": "1030:34:39"
2696
+ },
2697
+ {
2698
+ "attributes": {
2699
+ "overloadedDeclarations": [
2700
+ null
2701
+ ],
2702
+ "referencedDeclaration": 10984,
2703
+ "type": "address",
2704
+ "value": "bridge"
2705
+ },
2706
+ "id": 11052,
2707
+ "name": "Identifier",
2708
+ "src": "1067:6:39"
2709
+ }
2710
+ ],
2711
+ "id": 11053,
2712
+ "name": "BinaryOperation",
2713
+ "src": "1030:43:39"
2714
+ }
2715
+ ],
2716
+ "id": 11054,
2717
+ "name": "FunctionCall",
2718
+ "src": "1022:52:39"
2719
+ }
2720
+ ],
2721
+ "id": 11055,
2722
+ "name": "ExpressionStatement",
2723
+ "src": "1022:52:39"
2724
+ },
2725
+ {
2726
+ "children": [
2727
+ {
2728
+ "attributes": {
2729
+ "isConstant": false,
2730
+ "isLValue": false,
2731
+ "isPure": false,
2732
+ "lValueRequested": false,
2733
+ "operator": "=",
2734
+ "type": "bytes32"
2735
+ },
2736
+ "children": [
2737
+ {
2738
+ "attributes": {
2739
+ "isConstant": false,
2740
+ "isLValue": true,
2741
+ "isPure": false,
2742
+ "lValueRequested": true,
2743
+ "type": "bytes32"
2744
+ },
2745
+ "children": [
2746
+ {
2747
+ "attributes": {
2748
+ "overloadedDeclarations": [
2749
+ null
2750
+ ],
2751
+ "referencedDeclaration": 10982,
2752
+ "type": "mapping(address => bytes32)",
2753
+ "value": "issues"
2754
+ },
2755
+ "id": 11056,
2756
+ "name": "Identifier",
2757
+ "src": "1085:6:39"
2758
+ },
2759
+ {
2760
+ "attributes": {
2761
+ "overloadedDeclarations": [
2762
+ null
2763
+ ],
2764
+ "referencedDeclaration": 11011,
2765
+ "type": "address",
2766
+ "value": "_issue"
2767
+ },
2768
+ "id": 11057,
2769
+ "name": "Identifier",
2770
+ "src": "1092:6:39"
2771
+ }
2772
+ ],
2773
+ "id": 11058,
2774
+ "name": "IndexAccess",
2775
+ "src": "1085:14:39"
2776
+ },
2777
+ {
2778
+ "attributes": {
2779
+ "overloadedDeclarations": [
2780
+ null
2781
+ ],
2782
+ "referencedDeclaration": 11013,
2783
+ "type": "bytes32",
2784
+ "value": "_ref"
2785
+ },
2786
+ "id": 11059,
2787
+ "name": "Identifier",
2788
+ "src": "1102:4:39"
2789
+ }
2790
+ ],
2791
+ "id": 11060,
2792
+ "name": "Assignment",
2793
+ "src": "1085:21:39"
2794
+ }
2795
+ ],
2796
+ "id": 11061,
2797
+ "name": "ExpressionStatement",
2798
+ "src": "1085:21:39"
2799
+ }
2800
+ ],
2801
+ "id": 11062,
2802
+ "name": "Block",
2803
+ "src": "822:292:39"
2804
+ }
2805
+ ],
2806
+ "id": 11063,
2807
+ "name": "FunctionDefinition",
2808
+ "src": "664:450:39"
2809
+ },
2810
+ {
2811
+ "attributes": {
2812
+ "baseFunctions": [
2813
+ 11633
2814
+ ],
2815
+ "functionSelector": "3ea6c82d",
2816
+ "implemented": true,
2817
+ "isConstructor": false,
2818
+ "kind": "function",
2819
+ "modifiers": [
2820
+ null
2821
+ ],
2822
+ "name": "checkProduct",
2823
+ "scope": 11083,
2824
+ "stateMutability": "view",
2825
+ "virtual": false,
2826
+ "visibility": "external"
2827
+ },
2828
+ "children": [
2829
+ {
2830
+ "attributes": {
2831
+ "overrides": [
2832
+ null
2833
+ ]
2834
+ },
2835
+ "id": 11067,
2836
+ "name": "OverrideSpecifier",
2837
+ "src": "1191:8:39"
2838
+ },
2839
+ {
2840
+ "children": [
2841
+ {
2842
+ "attributes": {
2843
+ "constant": false,
2844
+ "mutability": "mutable",
2845
+ "name": "_issue",
2846
+ "scope": 11082,
2847
+ "stateVariable": false,
2848
+ "storageLocation": "default",
2849
+ "type": "address",
2850
+ "visibility": "internal"
2851
+ },
2852
+ "children": [
2853
+ {
2854
+ "attributes": {
2855
+ "name": "address",
2856
+ "stateMutability": "nonpayable",
2857
+ "type": "address"
2858
+ },
2859
+ "id": 11064,
2860
+ "name": "ElementaryTypeName",
2861
+ "src": "1145:7:39"
2862
+ }
2863
+ ],
2864
+ "id": 11065,
2865
+ "name": "VariableDeclaration",
2866
+ "src": "1145:14:39"
2867
+ }
2868
+ ],
2869
+ "id": 11066,
2870
+ "name": "ParameterList",
2871
+ "src": "1144:16:39"
2872
+ },
2873
+ {
2874
+ "children": [
2875
+ {
2876
+ "attributes": {
2877
+ "constant": false,
2878
+ "mutability": "mutable",
2879
+ "name": "",
2880
+ "scope": 11082,
2881
+ "stateVariable": false,
2882
+ "storageLocation": "default",
2883
+ "type": "bool",
2884
+ "visibility": "internal"
2885
+ },
2886
+ "children": [
2887
+ {
2888
+ "attributes": {
2889
+ "name": "bool",
2890
+ "type": "bool"
2891
+ },
2892
+ "id": 11068,
2893
+ "name": "ElementaryTypeName",
2894
+ "src": "1222:4:39"
2895
+ }
2896
+ ],
2897
+ "id": 11069,
2898
+ "name": "VariableDeclaration",
2899
+ "src": "1222:4:39"
2900
+ }
2901
+ ],
2902
+ "id": 11070,
2903
+ "name": "ParameterList",
2904
+ "src": "1221:6:39"
2905
+ },
2906
+ {
2907
+ "children": [
2908
+ {
2909
+ "children": [
2910
+ {
2911
+ "attributes": {
2912
+ "commonType": {
2913
+ "typeIdentifier": "t_bytes32",
2914
+ "typeString": "bytes32"
2915
+ },
2916
+ "isConstant": false,
2917
+ "isLValue": false,
2918
+ "isPure": false,
2919
+ "lValueRequested": false,
2920
+ "operator": "!=",
2921
+ "type": "bool"
2922
+ },
2923
+ "children": [
2924
+ {
2925
+ "attributes": {
2926
+ "isConstant": false,
2927
+ "isLValue": true,
2928
+ "isPure": false,
2929
+ "lValueRequested": false,
2930
+ "type": "bytes32"
2931
+ },
2932
+ "children": [
2933
+ {
2934
+ "attributes": {
2935
+ "overloadedDeclarations": [
2936
+ null
2937
+ ],
2938
+ "referencedDeclaration": 10982,
2939
+ "type": "mapping(address => bytes32)",
2940
+ "value": "issues"
2941
+ },
2942
+ "id": 11071,
2943
+ "name": "Identifier",
2944
+ "src": "1241:6:39"
2945
+ },
2946
+ {
2947
+ "attributes": {
2948
+ "overloadedDeclarations": [
2949
+ null
2950
+ ],
2951
+ "referencedDeclaration": 11065,
2952
+ "type": "address",
2953
+ "value": "_issue"
2954
+ },
2955
+ "id": 11072,
2956
+ "name": "Identifier",
2957
+ "src": "1248:6:39"
2958
+ }
2959
+ ],
2960
+ "id": 11073,
2961
+ "name": "IndexAccess",
2962
+ "src": "1241:14:39"
2963
+ },
2964
+ {
2965
+ "attributes": {
2966
+ "hexvalue": "",
2967
+ "isConstant": false,
2968
+ "isLValue": false,
2969
+ "isPure": true,
2970
+ "lValueRequested": false,
2971
+ "token": "string",
2972
+ "type": "literal_string \"\"",
2973
+ "value": ""
2974
+ },
2975
+ "id": 11074,
2976
+ "name": "Literal",
2977
+ "src": "1257:2:39"
2978
+ }
2979
+ ],
2980
+ "id": 11075,
2981
+ "name": "BinaryOperation",
2982
+ "src": "1241:18:39"
2983
+ },
2984
+ {
2985
+ "attributes": {
2986
+ "functionReturnParameters": 11070
2987
+ },
2988
+ "children": [
2989
+ {
2990
+ "attributes": {
2991
+ "hexvalue": "74727565",
2992
+ "isConstant": false,
2993
+ "isLValue": false,
2994
+ "isPure": true,
2995
+ "lValueRequested": false,
2996
+ "token": "bool",
2997
+ "type": "bool",
2998
+ "value": "true"
2999
+ },
3000
+ "id": 11076,
3001
+ "name": "Literal",
3002
+ "src": "1281:4:39"
3003
+ }
3004
+ ],
3005
+ "id": 11077,
3006
+ "name": "Return",
3007
+ "src": "1274:11:39"
3008
+ },
3009
+ {
3010
+ "attributes": {
3011
+ "functionReturnParameters": 11070
3012
+ },
3013
+ "children": [
3014
+ {
3015
+ "attributes": {
3016
+ "hexvalue": "66616c7365",
3017
+ "isConstant": false,
3018
+ "isLValue": false,
3019
+ "isPure": true,
3020
+ "lValueRequested": false,
3021
+ "token": "bool",
3022
+ "type": "bool",
3023
+ "value": "false"
3024
+ },
3025
+ "id": 11078,
3026
+ "name": "Literal",
3027
+ "src": "1321:5:39"
3028
+ }
3029
+ ],
3030
+ "id": 11079,
3031
+ "name": "Return",
3032
+ "src": "1314:12:39"
3033
+ }
3034
+ ],
3035
+ "id": 11080,
3036
+ "name": "IfStatement",
3037
+ "src": "1238:88:39"
3038
+ }
3039
+ ],
3040
+ "id": 11081,
3041
+ "name": "Block",
3042
+ "src": "1227:107:39"
3043
+ }
3044
+ ],
3045
+ "id": 11082,
3046
+ "name": "FunctionDefinition",
3047
+ "src": "1123:211:39"
3048
+ }
3049
+ ],
3050
+ "id": 11083,
3051
+ "name": "ContractDefinition",
3052
+ "src": "265:1074:39"
3053
+ }
3054
+ ],
3055
+ "id": 11084,
3056
+ "name": "SourceUnit",
3057
+ "src": "112:1227:39"
3058
+ },
3059
+ "compiler": {
3060
+ "name": "solc",
3061
+ "version": "0.7.1+commit.f4a555be.Emscripten.clang"
3062
+ },
3063
+ "networks": {
3064
+ "5": {
3065
+ "events": {},
3066
+ "links": {},
3067
+ "address": "0xF647F22e8Ce31d912c2786135610f9f4A45c8690",
3068
+ "transactionHash": "0xa3557970107b7c93f5f9ee4463efc68871ccebc8316462154c316d3f68b8763e"
3069
+ }
3070
+ },
3071
+ "schemaVersion": "3.4.3",
3072
+ "updatedAt": "2022-06-08T07:04:26.205Z",
3073
+ "networkType": "ethereum",
3074
+ "devdoc": {
3075
+ "kind": "dev",
3076
+ "methods": {
3077
+ "owner()": {
3078
+ "details": "Returns the address of the current owner."
3079
+ },
3080
+ "renounceOwnership()": {
3081
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
3082
+ },
3083
+ "transferOwnership(address)": {
3084
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
3085
+ }
3086
+ },
3087
+ "version": 1
3088
+ },
3089
+ "userdoc": {
3090
+ "kind": "user",
3091
+ "methods": {},
3092
+ "version": 1
3093
+ }
3094
+ }