circom-compat/tests/verifier_artifact.json

2 lines
230 KiB
JSON

{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256[]","name":"input","type":"uint256[]"},{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"A","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"B","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"C","type":"tuple"}],"internalType":"struct Verifier.Proof","name":"proof","type":"tuple"},{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"alfa1","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"beta2","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"gamma2","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"delta2","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point[]","name":"IC","type":"tuple[]"}],"internalType":"struct Verifier.VerifyingKey","name":"vk","type":"tuple"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610c99806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639416c1ee14610030575b600080fd5b61004361003e366004610a2f565b610059565b6040516100509190610afc565b60405180910390f35b600080610067858585610085565b90508061007857600191505061007e565b60009150505b9392505050565b60808101515183516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191600101146100db5760405162461bcd60e51b81526004016100d290610b07565b60405180910390fd5b604080518082019091526000808252602082018190525b8651811015610177578287828151811061010857fe5b60200260200101511061012d5760405162461bcd60e51b81526004016100d290610b5f565b61016d826101688760800151846001018151811061014757fe5b60200260200101518a858151811061015b57fe5b60200260200101516101eb565b610256565b91506001016100f2565b5061019a81856080015160008151811061018d57fe5b6020026020010151610256565b90506101d06101ac86600001516102bd565b8660200151866000015187602001518589604001518b604001518b60600151610349565b6101df5760019250505061007e565b50600095945050505050565b6101f36106dc565b6101fb6106f6565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561022e57610230565bfe5b508061024e5760405162461bcd60e51b81526004016100d290610b33565b505092915050565b61025e6106dc565b610266610714565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561022e57508061024e5760405162461bcd60e51b81526004016100d290610bc6565b6102c56106dc565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156102f857506020830151155b156103185750506040805180820190915260008082526020820152610344565b6040518060400160405280846000015181526020018285602001518161033a57fe5b0683038152509150505b919050565b60408051600480825260a08201909252600091829190816020015b61036c6106dc565b81526020019060019003908161036457505060408051600480825260a0820190925291925060009190602082015b6103a2610732565b81526020019060019003908161039a5790505090508a826000815181106103c557fe5b602002602001018190525088826001815181106103de57fe5b602002602001018190525086826002815181106103f757fe5b6020026020010181905250848260038151811061041057fe5b6020026020010181905250898160008151811061042957fe5b6020026020010181905250878160018151811061044257fe5b6020026020010181905250858160028151811061045b57fe5b6020026020010181905250838160038151811061047457fe5b60200260200101819052506104898282610498565b9b9a5050505050505050505050565b600081518351146104bb5760405162461bcd60e51b81526004016100d290610b96565b82516006810260008167ffffffffffffffff811180156104da57600080fd5b50604051908082528060200260200182016040528015610504578160200160208202803683370190505b50905060005b838110156106895786818151811061051e57fe5b60200260200101516000015182826006026000018151811061053c57fe5b60200260200101818152505086818151811061055457fe5b60200260200101516020015182826006026001018151811061057257fe5b60200260200101818152505085818151811061058a57fe5b6020908102919091010151515182518390600260068502019081106105ab57fe5b6020026020010181815250508581815181106105c357fe5b602090810291909101015151600160200201518282600602600301815181106105e857fe5b60200260200101818152505085818151811061060057fe5b60200260200101516020015160006002811061061857fe5b602002015182826006026004018151811061062f57fe5b60200260200101818152505085818151811061064757fe5b60200260200101516020015160016002811061065f57fe5b602002015182826006026005018151811061067657fe5b602090810291909101015260010161050a565b50610692610757565b6000602082602086026020860160086107d05a03fa905080801561022e5750806106ce5760405162461bcd60e51b81526004016100d290610bf2565b505115159695505050505050565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610745610775565b8152602001610752610775565b905290565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600082601f8301126107a3578081fd5b813560206107b86107b383610c45565b610c21565b828152818101908583016040808602880185018910156107d6578687fd5b865b868110156107fc576107ea8a84610879565b855293850193918101916001016107d8565b509198975050505050505050565b600082601f83011261081a578081fd5b6040516040810181811067ffffffffffffffff8211171561083757fe5b806040525080838560408601111561084d578384fd5b835b600281101561086e57813583526020928301929091019060010161084f565b509195945050505050565b60006040828403121561088a578081fd5b6040516040810181811067ffffffffffffffff821117156108a757fe5b604052823581526020928301359281019290925250919050565b6000608082840312156108d2578081fd5b6040516040810181811067ffffffffffffffff821117156108ef57fe5b6040529050806108ff848461080a565b815261090e846040850161080a565b60208201525092915050565b6000610100828403121561092c578081fd5b6040516060810181811067ffffffffffffffff8211171561094957fe5b6040529050806109598484610879565b815261096884604085016108c1565b602082015261097a8460c08501610879565b60408201525092915050565b60006101e08284031215610998578081fd5b60405160a0810167ffffffffffffffff82821081831117156109b657fe5b816040528293506109c78686610879565b83526109d686604087016108c1565b60208401526109e88660c087016108c1565b60408401526109fb8661014087016108c1565b60608401526101c0850135915080821115610a1557600080fd5b50610a2285828601610793565b6080830152505092915050565b60008060006101408486031215610a44578283fd5b833567ffffffffffffffff80821115610a5b578485fd5b818601915086601f830112610a6e578485fd5b81356020610a7e6107b383610c45565b82815281810190858301838502870184018c1015610a9a57898afd5b8996505b84871015610abc578035835260019690960195918301918301610a9e565b509750610acd90508989830161091a565b95505050610120860135915080821115610ae5578283fd5b50610af286828701610986565b9150509250925092565b901515815260200190565b6020808252601290820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b604082015260600190565b6020808252601f908201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604082015260600190565b6020808252601690820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5859190b59985a5b195960721b604082015260600190565b6020808252601590820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604082015260600190565b60405181810167ffffffffffffffff81118282101715610c3d57fe5b604052919050565b600067ffffffffffffffff821115610c5957fe5b506020908102019056fea26469706673582212209a2c6205a848844df554808272357e43d3f44aca27cb62f8160a5bf34625abc264736f6c63430007060033","sourceMap":"1307:423:0:-:0;;;1334:16;;;;;;;;;;1307:423;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639416c1ee14610030575b600080fd5b61004361003e366004610a2f565b610059565b6040516100509190610afc565b60405180910390f35b600080610067858585610085565b90508061007857600191505061007e565b60009150505b9392505050565b60808101515183516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191600101146100db5760405162461bcd60e51b81526004016100d290610b07565b60405180910390fd5b604080518082019091526000808252602082018190525b8651811015610177578287828151811061010857fe5b60200260200101511061012d5760405162461bcd60e51b81526004016100d290610b5f565b61016d826101688760800151846001018151811061014757fe5b60200260200101518a858151811061015b57fe5b60200260200101516101eb565b610256565b91506001016100f2565b5061019a81856080015160008151811061018d57fe5b6020026020010151610256565b90506101d06101ac86600001516102bd565b8660200151866000015187602001518589604001518b604001518b60600151610349565b6101df5760019250505061007e565b50600095945050505050565b6101f36106dc565b6101fb6106f6565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561022e57610230565bfe5b508061024e5760405162461bcd60e51b81526004016100d290610b33565b505092915050565b61025e6106dc565b610266610714565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561022e57508061024e5760405162461bcd60e51b81526004016100d290610bc6565b6102c56106dc565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47901580156102f857506020830151155b156103185750506040805180820190915260008082526020820152610344565b6040518060400160405280846000015181526020018285602001518161033a57fe5b0683038152509150505b919050565b60408051600480825260a08201909252600091829190816020015b61036c6106dc565b81526020019060019003908161036457505060408051600480825260a0820190925291925060009190602082015b6103a2610732565b81526020019060019003908161039a5790505090508a826000815181106103c557fe5b602002602001018190525088826001815181106103de57fe5b602002602001018190525086826002815181106103f757fe5b6020026020010181905250848260038151811061041057fe5b6020026020010181905250898160008151811061042957fe5b6020026020010181905250878160018151811061044257fe5b6020026020010181905250858160028151811061045b57fe5b6020026020010181905250838160038151811061047457fe5b60200260200101819052506104898282610498565b9b9a5050505050505050505050565b600081518351146104bb5760405162461bcd60e51b81526004016100d290610b96565b82516006810260008167ffffffffffffffff811180156104da57600080fd5b50604051908082528060200260200182016040528015610504578160200160208202803683370190505b50905060005b838110156106895786818151811061051e57fe5b60200260200101516000015182826006026000018151811061053c57fe5b60200260200101818152505086818151811061055457fe5b60200260200101516020015182826006026001018151811061057257fe5b60200260200101818152505085818151811061058a57fe5b6020908102919091010151515182518390600260068502019081106105ab57fe5b6020026020010181815250508581815181106105c357fe5b602090810291909101015151600160200201518282600602600301815181106105e857fe5b60200260200101818152505085818151811061060057fe5b60200260200101516020015160006002811061061857fe5b602002015182826006026004018151811061062f57fe5b60200260200101818152505085818151811061064757fe5b60200260200101516020015160016002811061065f57fe5b602002015182826006026005018151811061067657fe5b602090810291909101015260010161050a565b50610692610757565b6000602082602086026020860160086107d05a03fa905080801561022e5750806106ce5760405162461bcd60e51b81526004016100d290610bf2565b505115159695505050505050565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610745610775565b8152602001610752610775565b905290565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600082601f8301126107a3578081fd5b813560206107b86107b383610c45565b610c21565b828152818101908583016040808602880185018910156107d6578687fd5b865b868110156107fc576107ea8a84610879565b855293850193918101916001016107d8565b509198975050505050505050565b600082601f83011261081a578081fd5b6040516040810181811067ffffffffffffffff8211171561083757fe5b806040525080838560408601111561084d578384fd5b835b600281101561086e57813583526020928301929091019060010161084f565b509195945050505050565b60006040828403121561088a578081fd5b6040516040810181811067ffffffffffffffff821117156108a757fe5b604052823581526020928301359281019290925250919050565b6000608082840312156108d2578081fd5b6040516040810181811067ffffffffffffffff821117156108ef57fe5b6040529050806108ff848461080a565b815261090e846040850161080a565b60208201525092915050565b6000610100828403121561092c578081fd5b6040516060810181811067ffffffffffffffff8211171561094957fe5b6040529050806109598484610879565b815261096884604085016108c1565b602082015261097a8460c08501610879565b60408201525092915050565b60006101e08284031215610998578081fd5b60405160a0810167ffffffffffffffff82821081831117156109b657fe5b816040528293506109c78686610879565b83526109d686604087016108c1565b60208401526109e88660c087016108c1565b60408401526109fb8661014087016108c1565b60608401526101c0850135915080821115610a1557600080fd5b50610a2285828601610793565b6080830152505092915050565b60008060006101408486031215610a44578283fd5b833567ffffffffffffffff80821115610a5b578485fd5b818601915086601f830112610a6e578485fd5b81356020610a7e6107b383610c45565b82815281810190858301838502870184018c1015610a9a57898afd5b8996505b84871015610abc578035835260019690960195918301918301610a9e565b509750610acd90508989830161091a565b95505050610120860135915080821115610ae5578283fd5b50610af286828701610986565b9150509250925092565b901515815260200190565b6020808252601290820152711d995c9a599a595c8b5898590b5a5b9c1d5d60721b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5b5d5b0b59985a5b195960721b604082015260600190565b6020808252601f908201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604082015260600190565b6020808252601690820152751c185a5c9a5b99cb5b195b99dd1a1ccb59985a5b195960521b604082015260600190565b6020808252601290820152711c185a5c9a5b99cb5859190b59985a5b195960721b604082015260600190565b6020808252601590820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604082015260600190565b60405181810167ffffffffffffffff81118282101715610c3d57fe5b604052919050565b600067ffffffffffffffff821115610c5957fe5b506020908102019056fea26469706673582212209a2c6205a848844df554808272357e43d3f44aca27cb62f8160a5bf34625abc264736f6c63430007060033","sourceMap":"1307:423:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1356:372;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1509:4;1525:11;1539:79;1568:5;1587;1606:2;1539:15;:79::i;:::-;1525:93;-1:-1:-1;1633:8:0;1629:93;;1664:4;1657:11;;;;;1629:93;1706:5;1699:12;;;1356:372;;;;;;:::o;2075:1054::-;2375:5;;;;:12;2355;;2212:7;;2260:77;;2370:1;2355:16;:32;2347:63;;;;-1:-1:-1;;;2347:63:0;;;;;;;:::i;:::-;;;;;;;;;2497:21;;;;;;;;;2467:27;2497:21;;;;;;;;;2528:228;2552:5;:12;2548:1;:16;2528:228;;;2604:18;2593:5;2599:1;2593:8;;;;;;;;;;;;;;:29;2585:73;;;;-1:-1:-1;;;2585:73:0;;;;;;;:::i;:::-;2679:66;2696:4;2702:42;2721:2;:5;;;2727:1;2731;2727:5;2721:12;;;;;;;;;;;;;;2735:5;2741:1;2735:8;;;;;;;;;;;;;;2702:18;:42::i;:::-;2679:16;:66::i;:::-;2672:73;-1:-1:-1;2566:3:0;;2528:228;;;;2772:32;2789:4;2795:2;:5;;;2801:1;2795:8;;;;;;;;;;;;;;2772:16;:32::i;:::-;2765:39;;2832:253;2870:23;2885:5;:7;;;2870:14;:23::i;:::-;2911:5;:7;;;2936:2;:8;;;2962:2;:8;;;2988:4;3010:2;:9;;;3037:5;:7;;;3062:2;:9;;;2832:20;:253::i;:::-;2814:290;;3103:1;3096:8;;;;;;2814:290;-1:-1:-1;3121:1:0;;2075:1054;-1:-1:-1;;;;;2075:1054:0:o;6418:625::-;6514:16;;:::i;:::-;6546:23;;:::i;:::-;6590:3;;6579:14;;:8;6614:3;;;;6603:8;;;:14;6627:8;;;:12;;;-1:-1:-1;6817:4:0;6814:1;6808:4;6579:14;6798:1;6791:4;6784:5;6780:16;6769:53;6758:64;-1:-1:-1;6758:64:0;6923:56;;;;6892:87;;6923:56;6952:9;6892:87;;7006:7;6998:38;;;;-1:-1:-1;;;6998:38:0;;;;;;;:::i;:::-;6418:625;;;;;;:::o;5600:662::-;5703:16;;:::i;:::-;5735:23;;:::i;:::-;5779:4;;5768:15;;:8;5804:4;;;;5793:8;;;:15;5829:4;;5818:8;;;:15;5854:4;;;5843:8;;;;:15;;;;-1:-1:-1;;6033:1:0;6027:4;5768:15;6017:1;6010:4;6003:5;5999:16;5988:53;5977:64;-1:-1:-1;5977:64:0;6142:56;;;;6111:87;6225:7;6217:38;;;;-1:-1:-1;;;6217:38:0;;;;;;;:::i;5202:346::-;5259:16;;:::i;:::-;5455:3;;5364:77;;5455:8;:20;;;;-1:-1:-1;5467:3:0;;;;:8;5455:20;5451:46;;;-1:-1:-1;;5484:13:0;;;;;;;;;-1:-1:-1;5484:13:0;;;;;;;5477:20;;5451:46;5514:27;;;;;;;;5522:1;:3;;;5514:27;;;;5538:1;5532;:3;;;:7;;;;;;5527:1;:13;5514:27;;;5507:34;;;5202:346;;;;:::o;9554:568::-;9859:16;;;9873:1;9859:16;;;;;;;;;9821:4;;;;9859:16;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;9907:16:0;;;9921:1;9907:16;;;;;;;;;9837:38;;-1:-1:-1;9885:19:0;;9907:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9885:38;;9941:2;9933;9936:1;9933:5;;;;;;;;;;;;;:10;;;;9961:2;9953;9956:1;9953:5;;;;;;;;;;;;;:10;;;;9981:2;9973;9976:1;9973:5;;;;;;;;;;;;;:10;;;;10001:2;9993;9996:1;9993:5;;;;;;;;;;;;;:10;;;;10021:2;10013;10016:1;10013:5;;;;;;;;;;;;;:10;;;;10041:2;10033;10036:1;10033:5;;;;;;;;;;;;;:10;;;;10061:2;10053;10056:1;10053:5;;;;;;;;;;;;;:10;;;;10081:2;10073;10076:1;10073:5;;;;;;;;;;;;;:10;;;;10100:15;10108:2;10112;10100:7;:15::i;:::-;10093:22;9554:568;-1:-1:-1;;;;;;;;;;;9554:568:0:o;7255:1238::-;7361:4;7402:2;:9;7389:2;:9;:22;7381:57;;;;-1:-1:-1;;;7381:57:0;;;;;;;:::i;:::-;7467:9;;7517:1;7506:12;;7448:16;7506:12;7553:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7553:24:0;;7528:49;;7592:9;7587:302;7611:8;7607:1;:12;7587:302;;;7659:2;7662:1;7659:5;;;;;;;;;;;;;;:7;;;7640:5;7646:1;7650;7646:5;7654:1;7646:9;7640:16;;;;;;;;;;;;;:26;;;;;7699:2;7702:1;7699:5;;;;;;;;;;;;;;:7;;;7680:5;7686:1;7690;7686:5;7694:1;7686:9;7680:16;;;;;;;;;;;;;:26;;;;;7739:2;7742:1;7739:5;;;;;;;;;;;;;;;;;;:7;:10;7720:16;;:5;;7734:1;7730;7726:5;;:9;;7720:16;;;;;;;;;;;:29;;;;;7782:2;7785:1;7782:5;;;;;;;;;;;;;;;;;;:7;7790:1;7782:10;;;;7763:5;7769:1;7773;7769:5;7777:1;7769:9;7763:16;;;;;;;;;;;;;:29;;;;;7825:2;7828:1;7825:5;;;;;;;;;;;;;;:7;;;7833:1;7825:10;;;;;;;;;;;7806:5;7812:1;7816;7812:5;7820:1;7812:9;7806:16;;;;;;;;;;;;;:29;;;;;7868:2;7871:1;7868:5;;;;;;;;;;;;;;:7;;;7876:1;7868:10;;;;;;;;;;;7849:5;7855:1;7859;7855:5;7863:1;7855:9;7849:16;;;;;;;;;;;;;;;;;:29;7621:3;;7587:302;;;;7898:21;;:::i;:::-;7929:12;8223:4;8202:3;8179:4;8168:9;8164:20;8141:4;8134:5;8130:16;8111:1;8088:4;8081:5;8077:16;8049:192;8038:203;-1:-1:-1;8038:203:0;8342:56;;;;8311:87;8425:7;8417:41;;;;-1:-1:-1;;;8417:41:0;;;;;;;:::i;:::-;-1:-1:-1;8475:6:0;:11;;;;-1:-1:-1;;;;;;7255:1238:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:765:1:-;;135:3;128:4;120:6;116:17;112:27;102:2;;157:5;150;143:20;102:2;197:6;184:20;223:4;247:73;262:57;316:2;262:57;:::i;:::-;247:73;:::i;:::-;354:15;;;385:12;;;;417:15;;;451:4;486:11;;;474:24;;470:33;;467:42;-1:-1:-1;464:2:1;;;526:5;519;512:20;464:2;552:5;566:184;580:2;577:1;574:9;566:184;;;637:38;671:3;666;637:38;:::i;:::-;625:51;;696:12;;;;728;;;;598:1;591:9;566:184;;;-1:-1:-1;768:5:1;;92:687;-1:-1:-1;;;;;;;;92:687:1:o;784:698::-;;892:3;885:4;877:6;873:17;869:27;859:2;;914:5;907;900:20;859:2;951;945:9;993:2;985:6;981:15;1062:6;1050:10;1047:22;1026:18;1014:10;1011:34;1008:62;1005:2;;;1073:9;1005:2;1104:10;1100:2;1093:22;;1135:6;1161;1199:3;1194:2;1186:6;1182:15;1179:24;1176:2;;;1220:5;1213;1206:20;1176:2;1246:5;1260:192;1274:4;1271:1;1268:11;1260:192;;;1333:17;;1321:30;;1374:4;1398:12;;;;1430;;;;1294:1;1287:9;1260:192;;;-1:-1:-1;1470:6:1;;849:633;-1:-1:-1;;;;;849:633:1:o;1487:478::-;;1592:4;1580:9;1575:3;1571:19;1567:30;1564:2;;;1614:5;1607;1600:20;1564:2;1651:4;1645:11;1695:4;1687:6;1683:17;1766:6;1754:10;1751:22;1730:18;1718:10;1715:34;1712:62;1709:2;;;1777:9;1709:2;1804:4;1797:24;1869:23;;1854:39;;1954:2;1939:18;;;1926:32;1909:15;;;1902:57;;;;-1:-1:-1;1839:6:1;1554:411;-1:-1:-1;1554:411:1:o;1970:526::-;;2075:4;2063:9;2058:3;2054:19;2050:30;2047:2;;;2097:5;2090;2083:20;2047:2;2134:4;2128:11;2178:4;2170:6;2166:17;2249:6;2237:10;2234:22;2213:18;2201:10;2198:34;2195:62;2192:2;;;2260:9;2192:2;2287:4;2280:24;2322:6;-1:-1:-1;2322:6:1;2352:45;2393:3;2382:9;2352:45;:::i;:::-;2344:6;2337:61;2433:56;2485:3;2478:4;2467:9;2463:20;2433:56;:::i;:::-;2426:4;2418:6;2414:17;2407:83;;2037:459;;;;:::o;2501:606::-;;2604:6;2592:9;2587:3;2583:19;2579:32;2576:2;;;2628:5;2621;2614:20;2576:2;2665;2659:9;2707:4;2699:6;2695:17;2778:6;2766:10;2763:22;2742:18;2730:10;2727:34;2724:62;2721:2;;;2789:9;2721:2;2816;2809:22;2849:6;-1:-1:-1;2849:6:1;2879:44;2919:3;2908:9;2879:44;:::i;:::-;2871:6;2864:60;2959:53;3008:3;3003:2;2992:9;2988:18;2959:53;:::i;:::-;2952:4;2944:6;2940:17;2933:80;3046:54;3096:3;3090;3079:9;3075:19;3046:54;:::i;:::-;3041:2;3033:6;3029:15;3022:79;;2566:541;;;;:::o;3112:930::-;;3222:6;3210:9;3205:3;3201:19;3197:32;3194:2;;;3246:5;3239;3232:20;3194:2;3283;3277:9;3325:4;3317:6;3313:17;3349:18;3417:6;3405:10;3402:22;3397:2;3385:10;3382:18;3379:46;3376:2;;;3428:9;3376:2;3459:10;3455:2;3448:22;3488:6;3479:15;;3518:44;3558:3;3547:9;3518:44;:::i;:::-;3510:6;3503:60;3598:53;3647:3;3642:2;3631:9;3627:18;3598:53;:::i;:::-;3591:4;3583:6;3579:17;3572:80;3685:54;3735:3;3729;3718:9;3714:19;3685:54;:::i;:::-;3680:2;3672:6;3668:15;3661:79;3775:54;3825:3;3819;3808:9;3804:19;3775:54;:::i;:::-;3768:4;3760:6;3756:17;3749:81;3881:3;3870:9;3866:19;3853:33;3839:47;;3909:2;3901:6;3898:14;3895:2;;;3925:1;3922;3915:12;3895:2;;3964:71;4031:3;4022:6;4011:9;4007:22;3964:71;:::i;:::-;3957:4;3949:6;3945:17;3938:98;;;3184:858;;;;:::o;4047:1342::-;;;;4267:3;4255:9;4246:7;4242:23;4238:33;4235:2;;;4289:6;4281;4274:22;4235:2;4334:9;4321:23;4363:18;4404:2;4396:6;4393:14;4390:2;;;4425:6;4417;4410:22;4390:2;4468:6;4457:9;4453:22;4443:32;;4513:7;4506:4;4502:2;4498:13;4494:27;4484:2;;4540:6;4532;4525:22;4484:2;4581;4568:16;4603:4;4627:73;4642:57;4696:2;4642:57;:::i;4627:73::-;4734:15;;;4765:12;;;;4797:11;;;4835;;;4827:20;;4823:29;;4820:42;-1:-1:-1;4817:2:1;;;4880:6;4872;4865:22;4817:2;4907:6;4898:15;;4922:163;4936:2;4933:1;4930:9;4922:163;;;4993:17;;4981:30;;4954:1;4947:9;;;;;5031:12;;;;5063;;4922:163;;;-1:-1:-1;5104:5:1;-1:-1:-1;5128:55:1;;-1:-1:-1;5175:7:1;5155:18;;;5128:55;:::i;:::-;5118:65;;;;5236:3;5225:9;5221:19;5208:33;5192:49;;5266:2;5256:8;5253:16;5250:2;;;5287:6;5279;5272:22;5250:2;;5315:68;5375:7;5364:8;5353:9;5349:24;5315:68;:::i;:::-;5305:78;;;4225:1164;;;;;:::o;5394:187::-;5559:14;;5552:22;5534:41;;5522:2;5507:18;;5489:92::o;5586:342::-;5788:2;5770:21;;;5827:2;5807:18;;;5800:30;-1:-1:-1;;;5861:2:1;5846:18;;5839:48;5919:2;5904:18;;5760:168::o;5933:342::-;6135:2;6117:21;;;6174:2;6154:18;;;6147:30;-1:-1:-1;;;6208:2:1;6193:18;;6186:48;6266:2;6251:18;;6107:168::o;6280:355::-;6482:2;6464:21;;;6521:2;6501:18;;;6494:30;6560:33;6555:2;6540:18;;6533:61;6626:2;6611:18;;6454:181::o;6640:346::-;6842:2;6824:21;;;6881:2;6861:18;;;6854:30;-1:-1:-1;;;6915:2:1;6900:18;;6893:52;6977:2;6962:18;;6814:172::o;6991:342::-;7193:2;7175:21;;;7232:2;7212:18;;;7205:30;-1:-1:-1;;;7266:2:1;7251:18;;7244:48;7324:2;7309:18;;7165:168::o;7338:345::-;7540:2;7522:21;;;7579:2;7559:18;;;7552:30;-1:-1:-1;;;7613:2:1;7598:18;;7591:51;7674:2;7659:18;;7512:171::o;7688:242::-;7758:2;7752:9;7788:17;;;7835:18;7820:34;;7856:22;;;7817:62;7814:2;;;7882:9;7814:2;7909;7902:22;7732:198;;-1:-1:-1;7732:198:1:o;7935:191::-;;8042:18;8034:6;8031:30;8028:2;;;8064:9;8028:2;-1:-1:-1;8115:4:1;8096:17;;;8092:28;;8018:108::o","linkReferences":{}},"methodIdentifiers":{"verify(uint256[],((uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256)),((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))":"9416c1ee"},"ast":{"absolutePath":"src\/verifier.sol","id":869,"exportedSymbols":{"Pairing":[868],"TestVerifier":[39],"Verifier":[279]},"nodeType":"SourceUnit","src":"1262:8864:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"1262:23:0","literals":["solidity","^","0.7",".6"]},{"id":2,"nodeType":"PragmaDirective","src":"1286:19:0","literals":["abicoder","v2"]},{"id":39,"nodeType":"ContractDefinition","src":"1307:423:0","nodes":[{"id":6,"nodeType":"FunctionDefinition","src":"1334:16:0","body":{"id":5,"nodeType":"Block","src":"1348:2:0","statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"1345:2:0"},"returnParameters":{"id":4,"nodeType":"ParameterList","parameters":[],"src":"1348:0:0"},"scope":39,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":38,"nodeType":"FunctionDefinition","src":"1356:372:0","body":{"id":37,"nodeType":"Block","src":"1515:213:0","statements":[{"assignments":[19],"declarations":[{"constant":false,"id":19,"mutability":"mutable","name":"err","nodeType":"VariableDeclaration","scope":37,"src":"1525:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18,"name":"uint256","nodeType":"ElementaryTypeName","src":"1525:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26,"initialValue":{"arguments":[{"id":22,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"1568:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":23,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"1587:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},{"id":24,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"1606:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"},{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}],"expression":{"id":20,"name":"Verifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"1539:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Verifier_$279_$","typeString":"type(library Verifier)"}},"id":21,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":178,"src":"1539:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_Proof_$60_memory_ptr_$_t_struct$_VerifyingKey_$53_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,struct Verifier.Proof memory,struct Verifier.VerifyingKey memory) view returns (uint256)"}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1539:79:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1525:93:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"1633:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":28,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1640:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1633:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":35,"nodeType":"Block","src":"1685:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1706:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":17,"id":34,"nodeType":"Return","src":"1699:12:0"}]},"id":36,"nodeType":"IfStatement","src":"1629:93:0","trueBody":{"id":32,"nodeType":"Block","src":"1643:36:0","statements":[{"expression":{"hexValue":"74727565","id":30,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1664:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":17,"id":31,"nodeType":"Return","src":"1657:11:0"}]}}]},"functionSelector":"9416c1ee","implemented":true,"kind":"function","modifiers":[],"name":"verify","parameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":38,"src":"1381:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7,"name":"uint256","nodeType":"ElementaryTypeName","src":"1381:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8,"nodeType":"ArrayTypeName","src":"1381:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11,"mutability":"mutable","name":"proof","nodeType":"VariableDeclaration","scope":38,"src":"1413:27:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof"},"typeName":{"id":10,"name":"Verifier.Proof","nodeType":"UserDefinedTypeName","referencedDeclaration":60,"src":"1413:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_storage_ptr","typeString":"struct Verifier.Proof"}},"visibility":"internal"},{"constant":false,"id":13,"mutability":"mutable","name":"vk","nodeType":"VariableDeclaration","scope":38,"src":"1450:31:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey"},"typeName":{"id":12,"name":"Verifier.VerifyingKey","nodeType":"UserDefinedTypeName","referencedDeclaration":53,"src":"1450:21:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_storage_ptr","typeString":"struct Verifier.VerifyingKey"}},"visibility":"internal"}],"src":"1371:116:0"},"returnParameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":38,"src":"1509:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15,"name":"bool","nodeType":"ElementaryTypeName","src":"1509:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1508:6:0"},"scope":39,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[39],"name":"TestVerifier","scope":869},{"id":279,"nodeType":"ContractDefinition","src":"1732:1942:0","nodes":[{"id":41,"nodeType":"UsingForDirective","src":"1755:20:0","libraryName":{"id":40,"name":"Pairing","nodeType":"UserDefinedTypeName","referencedDeclaration":868,"src":"1761:7:0","typeDescriptions":{"typeIdentifier":"t_contract$_Pairing_$868","typeString":"library Pairing"}}},{"id":53,"nodeType":"StructDefinition","src":"1780:183:0","canonicalName":"Verifier.VerifyingKey","members":[{"constant":false,"id":43,"mutability":"mutable","name":"alfa1","nodeType":"VariableDeclaration","scope":53,"src":"1810:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":42,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"1810:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":45,"mutability":"mutable","name":"beta2","nodeType":"VariableDeclaration","scope":53,"src":"1841:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":44,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"1841:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":47,"mutability":"mutable","name":"gamma2","nodeType":"VariableDeclaration","scope":53,"src":"1872:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":46,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"1872:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":49,"mutability":"mutable","name":"delta2","nodeType":"VariableDeclaration","scope":53,"src":"1904:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":48,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"1904:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":52,"mutability":"mutable","name":"IC","nodeType":"VariableDeclaration","scope":53,"src":"1936:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":50,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"1936:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":51,"nodeType":"ArrayTypeName","src":"1936:17:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"name":"VerifyingKey","scope":279,"visibility":"public"},{"id":60,"nodeType":"StructDefinition","src":"1968:101:0","canonicalName":"Verifier.Proof","members":[{"constant":false,"id":55,"mutability":"mutable","name":"A","nodeType":"VariableDeclaration","scope":60,"src":"1991:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":54,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"1991:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"B","nodeType":"VariableDeclaration","scope":60,"src":"2018:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":56,"name":"Pairing.G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"2018:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"C","nodeType":"VariableDeclaration","scope":60,"src":"2045:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":58,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"2045:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"name":"Proof","scope":279,"visibility":"public"},{"id":178,"nodeType":"FunctionDefinition","src":"2075:1054:0","body":{"id":177,"nodeType":"Block","src":"2221:908:0","statements":[{"assignments":[73],"declarations":[{"constant":false,"id":73,"mutability":"mutable","name":"snark_scalar_field","nodeType":"VariableDeclaration","scope":177,"src":"2231:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"2231:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75,"initialValue":{"hexValue":"3231383838323432383731383339323735323232323436343035373435323537323735303838353438333634343030343136303334333433363938323034313836353735383038343935363137","id":74,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2260:77:0","typeDescriptions":{"typeIdentifier":"t_rational_21888242871839275222246405745257275088548364400416034343698204186575808495617_by_1","typeString":"int_const 2188...(69 digits omitted)...5617"},"value":"21888242871839275222246405745257275088548364400416034343698204186575808495617"},"nodeType":"VariableDeclarationStatement","src":"2231:106:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2355:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2355:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":79,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2370:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2355:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":81,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2375:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":82,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"IC","nodeType":"MemberAccess","referencedDeclaration":52,"src":"2375:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2375:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2355:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"76657269666965722d6261642d696e707574","id":85,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2389:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_62f18c0da782e23b7e947e83d22170e983c1918040b5b1bd1c1e3ee5a50cc57a","typeString":"literal_string \"verifier-bad-input\""},"value":"verifier-bad-input"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_62f18c0da782e23b7e947e83d22170e983c1918040b5b1bd1c1e3ee5a50cc57a","typeString":"literal_string \"verifier-bad-input\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2347:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2347:63:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87,"nodeType":"ExpressionStatement","src":"2347:63:0"},{"assignments":[91],"declarations":[{"constant":false,"id":91,"mutability":"mutable","name":"vk_x","nodeType":"VariableDeclaration","scope":177,"src":"2467:27:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":90,"name":"Pairing.G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"2467:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"id":97,"initialValue":{"arguments":[{"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2513:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2516:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":92,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2497:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":93,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G1Point","nodeType":"MemberAccess","referencedDeclaration":284,"src":"2497:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":96,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"VariableDeclarationStatement","src":"2467:51:0"},{"body":{"id":137,"nodeType":"Block","src":"2571:185:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":110,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2593:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":112,"indexExpression":{"id":111,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2599:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2593:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":113,"name":"snark_scalar_field","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"2604:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2593:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"76657269666965722d6774652d736e61726b2d7363616c61722d6669656c64","id":115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2624:33:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8cb5a586d84bd3fa5140c79c44fd5cd5a5b0e7e59a1ddee2846426486e57f847","typeString":"literal_string \"verifier-gte-snark-scalar-field\""},"value":"verifier-gte-snark-scalar-field"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8cb5a586d84bd3fa5140c79c44fd5cd5a5b0e7e59a1ddee2846426486e57f847","typeString":"literal_string \"verifier-gte-snark-scalar-field\""}],"id":109,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2585:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2585:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":117,"nodeType":"ExpressionStatement","src":"2585:73:0"},{"expression":{"id":135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2672:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":121,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2696:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"arguments":[{"baseExpression":{"expression":{"id":124,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2721:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"IC","nodeType":"MemberAccess","referencedDeclaration":52,"src":"2721:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":129,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2727:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2731:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2727:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2721:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"baseExpression":{"id":130,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2735:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":132,"indexExpression":{"id":131,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2741:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2735:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":122,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2702:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"scalar_mul","nodeType":"MemberAccess","referencedDeclaration":463,"src":"2702:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_uint256_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory,uint256) view returns (struct Pairing.G1Point memory)"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2702:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}],"expression":{"id":119,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2679:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addition","nodeType":"MemberAccess","referencedDeclaration":416,"src":"2679:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) view returns (struct Pairing.G1Point memory)"}},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2679:66:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"2672:73:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":136,"nodeType":"ExpressionStatement","src":"2672:73:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":102,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2548:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":103,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2552:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2552:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2548:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":138,"initializationExpression":{"assignments":[99],"declarations":[{"constant":false,"id":99,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":138,"src":"2533:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":101,"initialValue":{"hexValue":"30","id":100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2545:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2533:13:0"},"loopExpression":{"expression":{"id":107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2566:3:0","subExpression":{"id":106,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"2566:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":108,"nodeType":"ExpressionStatement","src":"2566:3:0"},"nodeType":"ForStatement","src":"2528:228:0"},{"expression":{"id":148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":139,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2765:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":142,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2789:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"baseExpression":{"expression":{"id":143,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2795:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"IC","nodeType":"MemberAccess","referencedDeclaration":52,"src":"2795:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":146,"indexExpression":{"hexValue":"30","id":145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2795:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}],"expression":{"id":140,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2772:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addition","nodeType":"MemberAccess","referencedDeclaration":416,"src":"2772:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory,struct Pairing.G1Point memory) view returns (struct Pairing.G1Point memory)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2772:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"2765:39:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":149,"nodeType":"ExpressionStatement","src":"2765:39:0"},{"condition":{"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2831:254:0","subExpression":{"arguments":[{"arguments":[{"expression":{"id":154,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"2885:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"A","nodeType":"MemberAccess","referencedDeclaration":55,"src":"2885:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}],"expression":{"id":152,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2870:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"negate","nodeType":"MemberAccess","referencedDeclaration":361,"src":"2870:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_G1Point_$284_memory_ptr_$returns$_t_struct$_G1Point_$284_memory_ptr_$","typeString":"function (struct Pairing.G1Point memory) pure returns (struct Pairing.G1Point memory)"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2870:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":157,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"2911:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"B","nodeType":"MemberAccess","referencedDeclaration":57,"src":"2911:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},{"expression":{"id":159,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2936:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"alfa1","nodeType":"MemberAccess","referencedDeclaration":43,"src":"2936:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":161,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2962:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beta2","nodeType":"MemberAccess","referencedDeclaration":45,"src":"2962:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},{"id":163,"name":"vk_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"2988:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":164,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"3010:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"gamma2","nodeType":"MemberAccess","referencedDeclaration":47,"src":"3010:9:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},{"expression":{"id":166,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"3037:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"C","nodeType":"MemberAccess","referencedDeclaration":59,"src":"3037:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},{"expression":{"id":168,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"3062:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}},"id":169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"delta2","nodeType":"MemberAccess","referencedDeclaration":49,"src":"3062:9:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"},{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"},{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}],"expression":{"id":150,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2832:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairingProd4","nodeType":"MemberAccess","referencedDeclaration":867,"src":"2832:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$_t_struct$_G1Point_$284_memory_ptr_$_t_struct$_G2Point_$293_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory,struct Pairing.G1Point memory,struct Pairing.G2Point memory) view returns (bool)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2832:253:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":174,"nodeType":"IfStatement","src":"2814:290:0","trueBody":{"expression":{"hexValue":"31","id":172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3103:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":71,"id":173,"nodeType":"Return","src":"3096:8:0"}},{"expression":{"hexValue":"30","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3121:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":71,"id":176,"nodeType":"Return","src":"3114:8:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"verify","parameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":178,"src":"2100:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":61,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62,"nodeType":"ArrayTypeName","src":"2100:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":65,"mutability":"mutable","name":"proof","nodeType":"VariableDeclaration","scope":178,"src":"2132:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof"},"typeName":{"id":64,"name":"Proof","nodeType":"UserDefinedTypeName","referencedDeclaration":60,"src":"2132:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_storage_ptr","typeString":"struct Verifier.Proof"}},"visibility":"internal"},{"constant":false,"id":67,"mutability":"mutable","name":"vk","nodeType":"VariableDeclaration","scope":178,"src":"2160:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey"},"typeName":{"id":66,"name":"VerifyingKey","nodeType":"UserDefinedTypeName","referencedDeclaration":53,"src":"2160:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_storage_ptr","typeString":"struct Verifier.VerifyingKey"}},"visibility":"internal"}],"src":"2090:98:0"},"returnParameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":178,"src":"2212:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69,"name":"uint256","nodeType":"ElementaryTypeName","src":"2212:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2211:9:0"},"scope":279,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":278,"nodeType":"FunctionDefinition","src":"3135:537:0","body":{"id":277,"nodeType":"Block","src":"3345:327:0","statements":[{"assignments":[203],"declarations":[{"constant":false,"id":203,"mutability":"mutable","name":"proof","nodeType":"VariableDeclaration","scope":277,"src":"3355:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof"},"typeName":{"id":202,"name":"Proof","nodeType":"UserDefinedTypeName","referencedDeclaration":60,"src":"3355:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_storage_ptr","typeString":"struct Verifier.Proof"}},"visibility":"internal"}],"id":204,"nodeType":"VariableDeclarationStatement","src":"3355:18:0"},{"expression":{"id":217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":205,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3383:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"A","nodeType":"MemberAccess","referencedDeclaration":55,"src":"3383:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":210,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"3409:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":212,"indexExpression":{"hexValue":"30","id":211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3411:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3409:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":213,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"3415:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":215,"indexExpression":{"hexValue":"31","id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3417:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3415:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":208,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"3393:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G1Point","nodeType":"MemberAccess","referencedDeclaration":284,"src":"3393:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3393:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"3383:37:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":218,"nodeType":"ExpressionStatement","src":"3383:37:0"},{"expression":{"id":247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":219,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3430:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"B","nodeType":"MemberAccess","referencedDeclaration":57,"src":"3430:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"components":[{"baseExpression":{"baseExpression":{"id":224,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3457:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":226,"indexExpression":{"hexValue":"30","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3459:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3457:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":228,"indexExpression":{"hexValue":"30","id":227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3457:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":229,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3466:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":231,"indexExpression":{"hexValue":"30","id":230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3468:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3466:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":233,"indexExpression":{"hexValue":"31","id":232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3466:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":234,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3456:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},{"components":[{"baseExpression":{"baseExpression":{"id":235,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3477:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":237,"indexExpression":{"hexValue":"31","id":236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3479:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3477:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":239,"indexExpression":{"hexValue":"30","id":238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3482:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3477:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":240,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3486:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2] memory[2] memory"}},"id":242,"indexExpression":{"hexValue":"31","id":241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3488:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3486:4:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":244,"indexExpression":{"hexValue":"31","id":243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3491:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3486:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":245,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3476:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"},{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"expression":{"id":222,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"3440:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G2Point","nodeType":"MemberAccess","referencedDeclaration":293,"src":"3440:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G2Point_$293_storage_ptr_$","typeString":"type(struct Pairing.G2Point storage pointer)"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3440:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"3430:65:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":248,"nodeType":"ExpressionStatement","src":"3430:65:0"},{"expression":{"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":249,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3505:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},"id":251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"C","nodeType":"MemberAccess","referencedDeclaration":59,"src":"3505:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":254,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"3531:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":256,"indexExpression":{"hexValue":"30","id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3533:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3531:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":257,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"3537:1:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":259,"indexExpression":{"hexValue":"31","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3539:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3537:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":252,"name":"Pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"3515:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pairing_$868_$","typeString":"type(library Pairing)"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"G1Point","nodeType":"MemberAccess","referencedDeclaration":284,"src":"3515:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3515:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"3505:37:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":262,"nodeType":"ExpressionStatement","src":"3505:37:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":264,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"3563:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":265,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":203,"src":"3570:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"}},{"id":266,"name":"vk","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"3577:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_struct$_Proof_$60_memory_ptr","typeString":"struct Verifier.Proof memory"},{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey memory"}],"id":263,"name":"verify","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"3556:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_Proof_$60_memory_ptr_$_t_struct$_VerifyingKey_$53_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,struct Verifier.Proof memory,struct Verifier.VerifyingKey memory) view returns (uint256)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3556:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3584:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3556:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":275,"nodeType":"Block","src":"3629:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3650:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":201,"id":274,"nodeType":"Return","src":"3643:12:0"}]},"id":276,"nodeType":"IfStatement","src":"3552:114:0","trueBody":{"id":272,"nodeType":"Block","src":"3587:36:0","statements":[{"expression":{"hexValue":"74727565","id":270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3608:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":201,"id":271,"nodeType":"Return","src":"3601:11:0"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"verifyProof","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":278,"src":"3165:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":179,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":181,"length":{"hexValue":"32","id":180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3173:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3165:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":278,"src":"3194:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_memory_ptr_$2_memory_ptr","typeString":"uint256[2][2]"},"typeName":{"baseType":{"baseTyp":{"id":183,"name":"uint256","nodeType":"ElementaryTypeName","src":"3194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":185,"length":{"hexValue":"32","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3202:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3194:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"id":187,"length":{"hexValue":"32","id":186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3194:13:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr","typeString":"uint256[2][2]"}},"visibility":"internal"},{"constant":false,"id":192,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":278,"src":"3226:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":189,"name":"uint256","nodeType":"ElementaryTypeName","src":"3226:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":191,"length":{"hexValue":"32","id":190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3234:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3226:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":278,"src":"3255:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":193,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":194,"nodeType":"ArrayTypeName","src":"3255:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":197,"mutability":"mutable","name":"vk","nodeType":"VariableDeclaration","scope":278,"src":"3287:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_memory_ptr","typeString":"struct Verifier.VerifyingKey"},"typeName":{"id":196,"name":"VerifyingKey","nodeType":"UserDefinedTypeName","referencedDeclaration":53,"src":"3287:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_VerifyingKey_$53_storage_ptr","typeString":"struct Verifier.VerifyingKey"}},"visibility":"internal"}],"src":"3155:160:0"},"returnParameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":278,"src":"3339:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":199,"name":"bool","nodeType":"ElementaryTypeName","src":"3339:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3338:6:0"},"scope":279,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[279],"name":"Verifier","scope":869},{"id":868,"nodeType":"ContractDefinition","src":"3676:6448:0","nodes":[{"id":284,"nodeType":"StructDefinition","src":"3698:60:0","canonicalName":"Pairing.G1Point","members":[{"constant":false,"id":281,"mutability":"mutable","name":"X","nodeType":"VariableDeclaration","scope":284,"src":"3723:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":280,"name":"uint256","nodeType":"ElementaryTypeName","src":"3723:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"Y","nodeType":"VariableDeclaration","scope":284,"src":"3742:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"3742:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"G1Point","scope":868,"visibility":"public"},{"id":293,"nodeType":"StructDefinition","src":"3817:66:0","canonicalName":"Pairing.G2Point","members":[{"constant":false,"id":288,"mutability":"mutable","name":"X","nodeType":"VariableDeclaration","scope":293,"src":"3842:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":285,"name":"uint256","nodeType":"ElementaryTypeName","src":"3842:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":287,"length":{"hexValue":"32","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3850:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3842:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"Y","nodeType":"VariableDeclaration","scope":293,"src":"3864:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":289,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":291,"length":{"hexValue":"32","id":290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3872:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"3864:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"name":"G2Point","scope":868,"visibility":"public"},{"id":305,"nodeType":"FunctionDefinition","src":"3925:90:0","body":{"id":304,"nodeType":"Block","src":"3978:37:0","statements":[{"expression":{"arguments":[{"hexValue":"31","id":300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4003:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"32","id":301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4006:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":299,"name":"G1Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"3995:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"functionReturnParameters":298,"id":303,"nodeType":"Return","src":"3988:20:0"}]},"documentation":{"id":294,"nodeType":"StructuredDocumentation","src":"3889:31:0","text":"@return the generator of G1"},"implemented":true,"kind":"function","modifiers":[],"name":"P1","parameters":{"id":295,"nodeType":"ParameterList","parameters":[],"src":"3936:2:0"},"returnParameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":297,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":305,"src":"3962:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":296,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"3962:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"3961:16:0"},"scope":868,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":321,"nodeType":"FunctionDefinition","src":"4057:1058:0","body":{"id":320,"nodeType":"Block","src":"4110:1005:0","statements":[{"expression":{"arguments":[{"components":[{"hexValue":"3131353539373332303332393836333837313037393931303034303231333932323835373833393235383132383631383231313932353330393137343033313531343532333931383035363334","id":312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4217:77:0","typeDescriptions":{"typeIdentifier":"t_rational_11559732032986387107991004021392285783925812861821192530917403151452391805634_by_1","typeString":"int_const 1155...(69 digits omitted)...5634"},"value":"11559732032986387107991004021392285783925812861821192530917403151452391805634"},{"hexValue":"3130383537303436393939303233303537313335393434353730373632323332383239343831333730373536333539353738353138303836393930353139393933323835363535383532373831","id":313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4316:77:0","typeDescriptions":{"typeIdentifier":"t_rational_10857046999023057135944570762232829481370756359578518086990519993285655852781_by_1","typeString":"int_const 1085...(69 digits omitted)...2781"},"value":"10857046999023057135944570762232829481370756359578518086990519993285655852781"}],"id":314,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4195:216:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},{"components":[{"hexValue":"34303832333637383735383633343333363831333332323033343033313435343335353638333136383531333237353933343031323038313035373431303736323134313230303933353331","id":315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4451:76:0","typeDescriptions":{"typeIdentifier":"t_rational_4082367875863433681332203403145435568316851327593401208105741076214120093531_by_1","typeString":"int_const 4082...(68 digits omitted)...3531"},"value":"4082367875863433681332203403145435568316851327593401208105741076214120093531"},{"hexValue":"38343935363533393233313233343331343137363034393733323437343839323732343338343138313930353837323633363030313438373730323830363439333036393538313031393330","id":316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4549:76:0","typeDescriptions":{"typeIdentifier":"t_rational_8495653923123431417604973247489272438418190587263600148770280649306958101930_by_1","typeString":"int_const 8495...(68 digits omitted)...1930"},"value":"8495653923123431417604973247489272438418190587263600148770280649306958101930"}],"id":317,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4429:214:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"},{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"id":311,"name":"G2Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"4170:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G2Point_$293_storage_ptr_$","typeString":"type(struct Pairing.G2Point storage pointer)"}},"id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4170:487:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"functionReturnParameters":310,"id":319,"nodeType":"Return","src":"4151:506:0"}]},"documentation":{"id":306,"nodeType":"StructuredDocumentation","src":"4021:31:0","text":"@return the generator of G2"},"implemented":true,"kind":"function","modifiers":[],"name":"P2","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"4068:2:0"},"returnParameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":321,"src":"4094:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":308,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"4094:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"4093:16:0"},"scope":868,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":361,"nodeType":"FunctionDefinition","src":"5202:346:0","body":{"id":360,"nodeType":"Block","src":"5277:271:0","statements":[{"assignments":[330],"declarations":[{"constant":false,"id":330,"mutability":"mutable","name":"q","nodeType":"VariableDeclaration","scope":360,"src":"5343:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":329,"name":"uint256","nodeType":"ElementaryTypeName","src":"5343:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":332,"initialValue":{"hexValue":"3231383838323432383731383339323735323232323436343035373435323537323735303838363936333131313537323937383233363632363839303337383934363435323236323038353833","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:77:0","typeDescriptions":{"typeIdentifier":"t_rational_21888242871839275222246405745257275088696311157297823662689037894645226208583_by_1","typeString":"int_const 2188...(69 digits omitted)...8583"},"value":"21888242871839275222246405745257275088696311157297823662689037894645226208583"},"nodeType":"VariableDeclarationStatement","src":"5343:98:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":333,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5455:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5455:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5462:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5455:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":337,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5467:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5467:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5474:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5467:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5455:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"5451:46:0","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5492:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5495:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":342,"name":"G1Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"5484:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5484:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"functionReturnParameters":328,"id":346,"nodeType":"Return","src":"5477:20:0"}},{"expression":{"arguments":[{"expression":{"id":349,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5522:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5522:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":351,"name":"q","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"5527:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":352,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"5532:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5532:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":354,"name":"q","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"5538:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5532:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5531:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":348,"name":"G1Point","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"5514:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_G1Point_$284_storage_ptr_$","typeString":"type(struct Pairing.G1Point storage pointer)"}},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5514:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"functionReturnParameters":328,"id":359,"nodeType":"Return","src":"5507:34:0"}]},"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"5121:76:0","text":"@return r the negation of p, i.e. p.addition(p.negate()) should be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"negate","parameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"p","nodeType":"VariableDeclaration","scope":361,"src":"5218:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":323,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5218:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5217:18:0"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":327,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":361,"src":"5259:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":326,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5259:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5258:18:0"},"scope":868,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":416,"nodeType":"FunctionDefinition","src":"5600:662:0","body":{"id":415,"nodeType":"Block","src":"5725:537:0","statements":[{"assignments":[376],"declarations":[{"constant":false,"id":376,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":415,"src":"5735:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":374,"name":"uint256","nodeType":"ElementaryTypeName","src":"5735:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":375,"length":{"hexValue":"34","id":373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5743:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"5735:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"id":377,"nodeType":"VariableDeclarationStatement","src":"5735:23:0"},{"expression":{"id":383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":378,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5768:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":380,"indexExpression":{"hexValue":"30","id":379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5774:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5768:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":381,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5779:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5779:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5768:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":384,"nodeType":"ExpressionStatement","src":"5768:15:0"},{"expression":{"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":385,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5793:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":387,"indexExpression":{"hexValue":"31","id":386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5799:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5793:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":388,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5804:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5804:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5793:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":391,"nodeType":"ExpressionStatement","src":"5793:15:0"},{"expression":{"id":397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":392,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5818:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":394,"indexExpression":{"hexValue":"32","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5824:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5818:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":395,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"5829:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"5829:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5818:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":398,"nodeType":"ExpressionStatement","src":"5818:15:0"},{"expression":{"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":399,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"5843:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":401,"indexExpression":{"hexValue":"33","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5849:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5843:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":402,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"5854:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"5854:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5843:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":405,"nodeType":"ExpressionStatement","src":"5843:15:0"},{"assignments":[407],"declarations":[{"constant":false,"id":407,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":415,"src":"5868:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":406,"name":"bool","nodeType":"ElementaryTypeName","src":"5868:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":408,"nodeType":"VariableDeclarationStatement","src":"5868:12:0"},{"AST":{"nodeType":"YulBlock","src":"5963:245:0","statements":[{"nodeType":"YulAssignment","src":"5977:64:0","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"6003:3:0"},"nodeType":"YulFunctionCall","src":"6003:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6010:4:0","type":"","value":"2000"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5999:3:0"},"nodeType":"YulFunctionCall","src":"5999:16:0"},{"kind":"number","nodeType":"YulLiteral","src":"6017:1:0","type":"","value":"6"},{"name":"input","nodeType":"YulIdentifier","src":"6020:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6027:4:0","type":"","value":"0xc0"},{"name":"r","nodeType":"YulIdentifier","src":"6033:1:0"},{"kind":"number","nodeType":"YulLiteral","src":"6036:4:0","type":"","value":"0x60"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"5988:10:0"},"nodeType":"YulFunctionCall","src":"5988:53:0"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"5977:7:0"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"6149:49:0","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6171:7:0"},"nodeType":"YulFunctionCall","src":"6171:9:0"},"nodeType":"YulExpressionStatement","src":"6171:9:0"}]},"nodeType":"YulCase","src":"6142:56:0","value":{"kind":"number","nodeType":"YulLiteral","src":"6147:1:0","type":"","value":"0"}}],"expression":{"name":"success","nodeType":"YulIdentifier","src":"6118:7:0"},"nodeType":"YulSwitch","src":"6111:87:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":376,"isOffset":false,"isSlot":false,"src":"6020:5:0","valueSize":1},{"declaration":369,"isOffset":false,"isSlot":false,"src":"6033:1:0","valueSize":1},{"declaration":407,"isOffset":false,"isSlot":false,"src":"5977:7:0","valueSize":1},{"declaration":407,"isOffset":false,"isSlot":false,"src":"6118:7:0","valueSize":1}],"id":409,"nodeType":"InlineAssembly","src":"5954:254:0"},{"expression":{"arguments":[{"id":411,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6225:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6164642d6661696c6564","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6234:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e428a53e578d13ee2fc3b8849114332d6a94afed893fa747a37e281039728688","typeString":"literal_string \"pairing-add-failed\""},"value":"pairing-add-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e428a53e578d13ee2fc3b8849114332d6a94afed893fa747a37e281039728688","typeString":"literal_string \"pairing-add-failed\""}],"id":410,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6217:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6217:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":414,"nodeType":"ExpressionStatement","src":"6217:38:0"}]},"documentation":{"id":362,"nodeType":"StructuredDocumentation","src":"5554:41:0","text":"@return r the sum of two points of G1"},"implemented":true,"kind":"function","modifiers":[],"name":"addition","parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":416,"src":"5618:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":363,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5618:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":416,"src":"5637:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":365,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5637:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5617:38:0"},"returnParameters":{"id":370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":369,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":416,"src":"5703:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":368,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"5703:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"5702:18:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":463,"nodeType":"FunctionDefinition","src":"6418:625:0","body":{"id":462,"nodeType":"Block","src":"6536:507:0","statements":[{"assignments":[431],"declarations":[{"constant":false,"id":431,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":462,"src":"6546:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3]"},"typeName":{"baseType":{"id":429,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":430,"length":{"hexValue":"33","id":428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6554:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"6546:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_storage_ptr","typeString":"uint256[3]"}},"visibility":"internal"}],"id":432,"nodeType":"VariableDeclarationStatement","src":"6546:23:0"},{"expression":{"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":433,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"6579:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3] memory"}},"id":435,"indexExpression":{"hexValue":"30","id":434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6585:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6579:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":436,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"6590:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"6590:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6579:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":439,"nodeType":"ExpressionStatement","src":"6579:14:0"},{"expression":{"id":445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":440,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"6603:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3] memory"}},"id":442,"indexExpression":{"hexValue":"31","id":441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6609:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6603:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":443,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"6614:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"6614:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6603:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":446,"nodeType":"ExpressionStatement","src":"6603:14:0"},{"expression":{"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":447,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"6627:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$3_memory_ptr","typeString":"uint256[3] memory"}},"id":449,"indexExpression":{"hexValue":"32","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6633:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6627:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":450,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"6638:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6627:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":452,"nodeType":"ExpressionStatement","src":"6627:12:0"},{"assignments":[454],"declarations":[{"constant":false,"id":454,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":462,"src":"6649:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":453,"name":"bool","nodeType":"ElementaryTypeName","src":"6649:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":455,"nodeType":"VariableDeclarationStatement","src":"6649:12:0"},{"AST":{"nodeType":"YulBlock","src":"6744:245:0","statements":[{"nodeType":"YulAssignment","src":"6758:64:0","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"6784:3:0"},"nodeType":"YulFunctionCall","src":"6784:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6791:4:0","type":"","value":"2000"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6780:3:0"},"nodeType":"YulFunctionCall","src":"6780:16:0"},{"kind":"number","nodeType":"YulLiteral","src":"6798:1:0","type":"","value":"7"},{"name":"input","nodeType":"YulIdentifier","src":"6801:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:0","type":"","value":"0x80"},{"name":"r","nodeType":"YulIdentifier","src":"6814:1:0"},{"kind":"number","nodeType":"YulLiteral","src":"6817:4:0","type":"","value":"0x60"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"6769:10:0"},"nodeType":"YulFunctionCall","src":"6769:53:0"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"6758:7:0"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"6930:49:0","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"6952:7:0"},"nodeType":"YulFunctionCall","src":"6952:9:0"},"nodeType":"YulExpressionStatement","src":"6952:9:0"}]},"nodeType":"YulCase","src":"6923:56:0","value":{"kind":"number","nodeType":"YulLiteral","src":"6928:1:0","type":"","value":"0"}}],"expression":{"name":"success","nodeType":"YulIdentifier","src":"6899:7:0"},"nodeType":"YulSwitch","src":"6892:87:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":431,"isOffset":false,"isSlot":false,"src":"6801:5:0","valueSize":1},{"declaration":424,"isOffset":false,"isSlot":false,"src":"6814:1:0","valueSize":1},{"declaration":454,"isOffset":false,"isSlot":false,"src":"6758:7:0","valueSize":1},{"declaration":454,"isOffset":false,"isSlot":false,"src":"6899:7:0","valueSize":1}],"id":456,"nodeType":"InlineAssembly","src":"6735:254:0"},{"expression":{"arguments":[{"id":458,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"7006:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6d756c2d6661696c6564","id":459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7015:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_63b4943691e0891cf5adcfe6e3eb490783b718accceadc0166bc4e56cf1df5de","typeString":"literal_string \"pairing-mul-failed\""},"value":"pairing-mul-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_63b4943691e0891cf5adcfe6e3eb490783b718accceadc0166bc4e56cf1df5de","typeString":"literal_string \"pairing-mul-failed\""}],"id":457,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6998:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6998:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":461,"nodeType":"ExpressionStatement","src":"6998:38:0"}]},"documentation":{"id":417,"nodeType":"StructuredDocumentation","src":"6268:145:0","text":"@return r the product of a point on G1 and a scalar, i.e.\n p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p."},"implemented":true,"kind":"function","modifiers":[],"name":"scalar_mul","parameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"p","nodeType":"VariableDeclaration","scope":463,"src":"6438:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":418,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"6438:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":463,"src":"6456:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"6456:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6437:29:0"},"returnParameters":{"id":425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":424,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":463,"src":"6514:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":423,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"6514:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"}],"src":"6513:18:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":627,"nodeType":"FunctionDefinition","src":"7255:1238:0","body":{"id":626,"nodeType":"Block","src":"7371:1122:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":476,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7389:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7389:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":478,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7402:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7402:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7389:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6c656e677468732d6661696c6564","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7413:24:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d4c505601ed3bad1341fbb75434dd6541f91bae974d0b2bc28d5491a5c4a21cc","typeString":"literal_string \"pairing-lengths-failed\""},"value":"pairing-lengths-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d4c505601ed3bad1341fbb75434dd6541f91bae974d0b2bc28d5491a5c4a21cc","typeString":"literal_string \"pairing-lengths-failed\""}],"id":475,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7381:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7381:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":483,"nodeType":"ExpressionStatement","src":"7381:57:0"},{"assignments":[485],"declarations":[{"constant":false,"id":485,"mutability":"mutable","name":"elements","nodeType":"VariableDeclaration","scope":626,"src":"7448:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":484,"name":"uint256","nodeType":"ElementaryTypeName","src":"7448:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":488,"initialValue":{"expression":{"id":486,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7467:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7467:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7448:28:0"},{"assignments":[490],"declarations":[{"constant":false,"id":490,"mutability":"mutable","name":"inputSize","nodeType":"VariableDeclaration","scope":626,"src":"7486:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7486:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":494,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":491,"name":"elements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"7506:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7517:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7506:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7486:32:0"},{"assignments":[499],"declarations":[{"constant":false,"id":499,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":626,"src":"7528:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":497,"name":"uint256","nodeType":"ElementaryTypeName","src":"7528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":498,"nodeType":"ArrayTypeName","src":"7528:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":505,"initialValue":{"arguments":[{"id":503,"name":"inputSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"7567:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7553:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":500,"name":"uint256","nodeType":"ElementaryTypeName","src":"7557:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":501,"nodeType":"ArrayTypeName","src":"7557:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7553:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7528:49:0"},{"body":{"id":602,"nodeType":"Block","src":"7626:263:0","statements":[{"expression":{"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":516,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7640:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":522,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":517,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7646:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7650:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7646:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7654:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7646:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7640:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":523,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7659:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":525,"indexExpression":{"id":524,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7662:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7659:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":281,"src":"7659:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7640:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":528,"nodeType":"ExpressionStatement","src":"7640:26:0"},{"expression":{"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":529,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7680:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":535,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":530,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7686:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7690:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7686:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7694:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7686:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7680:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":536,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"7699:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":538,"indexExpression":{"id":537,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7702:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7699:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":283,"src":"7699:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7680:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":541,"nodeType":"ExpressionStatement","src":"7680:26:0"},{"expression":{"id":555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":542,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7720:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":548,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7726:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7730:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7726:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7734:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7726:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7720:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":549,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7739:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":551,"indexExpression":{"id":550,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7742:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7739:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":288,"src":"7739:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":554,"indexExpression":{"hexValue":"30","id":553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7747:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7739:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7720:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":556,"nodeType":"ExpressionStatement","src":"7720:29:0"},{"expression":{"id":570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":557,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7763:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":563,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":558,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7769:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7773:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7769:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7777:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"7769:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7763:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":564,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7782:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":566,"indexExpression":{"id":565,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7785:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7782:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"X","nodeType":"MemberAccess","referencedDeclaration":288,"src":"7782:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":569,"indexExpression":{"hexValue":"31","id":568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7790:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7782:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7763:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":571,"nodeType":"ExpressionStatement","src":"7763:29:0"},{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":572,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7806:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":578,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":573,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7812:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7812:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7812:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7806:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":579,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7825:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":581,"indexExpression":{"id":580,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7828:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7825:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":292,"src":"7825:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":584,"indexExpression":{"hexValue":"30","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7833:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7825:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7806:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":586,"nodeType":"ExpressionStatement","src":"7806:29:0"},{"expression":{"id":600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":587,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"7849:5:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":593,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":588,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7855:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"36","id":589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7859:1:0","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7855:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"35","id":591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7863:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"7855:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7849:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":594,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":470,"src":"7868:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":596,"indexExpression":{"id":595,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7871:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7868:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"Y","nodeType":"MemberAccess","referencedDeclaration":292,"src":"7868:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":599,"indexExpression":{"hexValue":"31","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7868:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7849:29:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":601,"nodeType":"ExpressionStatement","src":"7849:29:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":510,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7607:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":511,"name":"elements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"7611:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7607:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":603,"initializationExpression":{"assignments":[507],"declarations":[{"constant":false,"id":507,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":603,"src":"7592:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":506,"name":"uint256","nodeType":"ElementaryTypeName","src":"7592:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":509,"initialValue":{"hexValue":"30","id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7604:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7592:13:0"},"loopExpression":{"expression":{"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7621:3:0","subExpression":{"id":513,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"7621:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":515,"nodeType":"ExpressionStatement","src":"7621:3:0"},"nodeType":"ForStatement","src":"7587:302:0"},{"assignments":[609],"declarations":[{"constant":false,"id":609,"mutability":"mutable","name":"out","nodeType":"VariableDeclaration","scope":626,"src":"7898:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$1_memory_ptr","typeString":"uint256[1]"},"typeName":{"baseType":{"id":607,"name":"uint256","nodeType":"ElementaryTypeName","src":"7898:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":608,"length":{"hexValue":"31","id":606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7906:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"ArrayTypeName","src":"7898:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$1_storage_ptr","typeString":"uint256[1]"}},"visibility":"internal"}],"id":610,"nodeType":"VariableDeclarationStatement","src":"7898:21:0"},{"assignments":[612],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":626,"src":"7929:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":611,"name":"bool","nodeType":"ElementaryTypeName","src":"7929:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":613,"nodeType":"VariableDeclarationStatement","src":"7929:12:0"},{"AST":{"nodeType":"YulBlock","src":"8024:384:0","statements":[{"nodeType":"YulAssignment","src":"8038:203:0","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"8081:3:0"},"nodeType":"YulFunctionCall","src":"8081:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"8088:4:0","type":"","value":"2000"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8077:3:0"},"nodeType":"YulFunctionCall","src":"8077:16:0"},{"kind":"number","nodeType":"YulLiteral","src":"8111:1:0","type":"","value":"8"},{"arguments":[{"name":"input","nodeType":"YulIdentifier","src":"8134:5:0"},{"kind":"number","nodeType":"YulLiteral","src":"8141:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8130:3:0"},"nodeType":"YulFunctionCall","src":"8130:16:0"},{"arguments":[{"name":"inputSize","nodeType":"YulIdentifier","src":"8168:9:0"},{"kind":"number","nodeType":"YulLiteral","src":"8179:4:0","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8164:3:0"},"nodeType":"YulFunctionCall","src":"8164:20:0"},{"name":"out","nodeType":"YulIdentifier","src":"8202:3:0"},{"kind":"number","nodeType":"YulLiteral","src":"8223:4:0","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"8049:10:0"},"nodeType":"YulFunctionCall","src":"8049:192:0"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"8038:7:0"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"8349:49:0","statements":[{"expression":{"arguments":[],"functionName":{"name":"invalid","nodeType":"YulIdentifier","src":"8371:7:0"},"nodeType":"YulFunctionCall","src":"8371:9:0"},"nodeType":"YulExpressionStatement","src":"8371:9:0"}]},"nodeType":"YulCase","src":"8342:56:0","value":{"kind":"number","nodeType":"YulLiteral","src":"8347:1:0","type":"","value":"0"}}],"expression":{"name":"success","nodeType":"YulIdentifier","src":"8318:7:0"},"nodeType":"YulSwitch","src":"8311:87:0"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":499,"isOffset":false,"isSlot":false,"src":"8134:5:0","valueSize":1},{"declaration":490,"isOffset":false,"isSlot":false,"src":"8168:9:0","valueSize":1},{"declaration":609,"isOffset":false,"isSlot":false,"src":"8202:3:0","valueSize":1},{"declaration":612,"isOffset":false,"isSlot":false,"src":"8038:7:0","valueSize":1},{"declaration":612,"isOffset":false,"isSlot":false,"src":"8318:7:0","valueSize":1}],"id":614,"nodeType":"InlineAssembly","src":"8015:393:0"},{"expression":{"arguments":[{"id":616,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"8425:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70616972696e672d6f70636f64652d6661696c6564","id":617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8434:23:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_f3220b3ef654fc0d9a13e2b6d8c956cb8fb22df61a3a050ded181d8902069fe5","typeString":"literal_string \"pairing-opcode-failed\""},"value":"pairing-opcode-failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f3220b3ef654fc0d9a13e2b6d8c956cb8fb22df61a3a050ded181d8902069fe5","typeString":"literal_string \"pairing-opcode-failed\""}],"id":615,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8417:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8417:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":619,"nodeType":"ExpressionStatement","src":"8417:41:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":620,"name":"out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"8475:3:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$1_memory_ptr","typeString":"uint256[1] memory"}},"id":622,"indexExpression":{"hexValue":"30","id":621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8479:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8475:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8485:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8475:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":474,"id":625,"nodeType":"Return","src":"8468:18:0"}]},"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"7049:201:0","text":"@return the result of computing the pairing check\n e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1\n For example pairing([P1(), P1().negate()], [P2(), P2()]) should\n return true."},"implemented":true,"kind":"function","modifiers":[],"name":"pairing","parameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":627,"src":"7272:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":465,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"7272:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":466,"nodeType":"ArrayTypeName","src":"7272:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"},{"constant":false,"id":470,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":627,"src":"7293:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":468,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"7293:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":469,"nodeType":"ArrayTypeName","src":"7293:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"src":"7271:42:0"},"returnParameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":627,"src":"7361:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":472,"name":"bool","nodeType":"ElementaryTypeName","src":"7361:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7360:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":691,"nodeType":"FunctionDefinition","src":"8561:380:0","body":{"id":690,"nodeType":"Block","src":"8726:215:0","statements":[{"assignments":[644],"declarations":[{"constant":false,"id":644,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":690,"src":"8736:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":642,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8736:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":643,"nodeType":"ArrayTypeName","src":"8736:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"id":650,"initialValue":{"arguments":[{"hexValue":"32","id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8772:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8758:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"},"typeName":{"baseType":{"id":645,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8762:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":646,"nodeType":"ArrayTypeName","src":"8762:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}}},"id":649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8758:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8736:38:0"},{"assignments":[654],"declarations":[{"constant":false,"id":654,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":690,"src":"8784:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":652,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8784:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":653,"nodeType":"ArrayTypeName","src":"8784:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"id":660,"initialValue":{"arguments":[{"hexValue":"32","id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8820:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8806:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"},"typeName":{"baseType":{"id":655,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8810:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":656,"nodeType":"ArrayTypeName","src":"8810:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}}},"id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8806:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8784:38:0"},{"expression":{"id":665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":661,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"8832:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":663,"indexExpression":{"hexValue":"30","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8835:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8832:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":664,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"8840:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"8832:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":666,"nodeType":"ExpressionStatement","src":"8832:10:0"},{"expression":{"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":667,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"8852:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":669,"indexExpression":{"hexValue":"31","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8855:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8852:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":670,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"8860:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"8852:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":672,"nodeType":"ExpressionStatement","src":"8852:10:0"},{"expression":{"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":673,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"8872:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":675,"indexExpression":{"hexValue":"30","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8875:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8872:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":676,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"8880:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"8872:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":678,"nodeType":"ExpressionStatement","src":"8872:10:0"},{"expression":{"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":679,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"8892:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":681,"indexExpression":{"hexValue":"31","id":680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8895:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8892:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":682,"name":"b2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"8900:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"8892:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":684,"nodeType":"ExpressionStatement","src":"8892:10:0"},{"expression":{"arguments":[{"id":686,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":644,"src":"8927:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},{"id":687,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"8931:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"},{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}],"id":685,"name":"pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"8919:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) view returns (bool)"}},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8919:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":640,"id":689,"nodeType":"Return","src":"8912:22:0"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"8499:57:0","text":"Convenience method for a pairing check for two pairs."},"implemented":true,"kind":"function","modifiers":[],"name":"pairingProd2","parameters":{"id":637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"a1","nodeType":"VariableDeclaration","scope":691,"src":"8592:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":629,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8592:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"a2","nodeType":"VariableDeclaration","scope":691,"src":"8619:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":631,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8619:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"b1","nodeType":"VariableDeclaration","scope":691,"src":"8646:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":633,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"8646:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":636,"mutability":"mutable","name":"b2","nodeType":"VariableDeclaration","scope":691,"src":"8673:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":635,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"8673:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"8582:114:0"},"returnParameters":{"id":640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":639,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":691,"src":"8720:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":638,"name":"bool","nodeType":"ElementaryTypeName","src":"8720:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8719:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":771,"nodeType":"FunctionDefinition","src":"9011:474:0","body":{"id":770,"nodeType":"Block","src":"9230:255:0","statements":[{"assignments":[712],"declarations":[{"constant":false,"id":712,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":770,"src":"9240:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":710,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9240:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":711,"nodeType":"ArrayTypeName","src":"9240:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"id":718,"initialValue":{"arguments":[{"hexValue":"33","id":716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9276:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9262:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"},"typeName":{"baseType":{"id":713,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9266:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":714,"nodeType":"ArrayTypeName","src":"9266:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}}},"id":717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9262:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9240:38:0"},{"assignments":[722],"declarations":[{"constant":false,"id":722,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":770,"src":"9288:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":720,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9288:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":721,"nodeType":"ArrayTypeName","src":"9288:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"id":728,"initialValue":{"arguments":[{"hexValue":"33","id":726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9324:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9310:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"},"typeName":{"baseType":{"id":723,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9314:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":724,"nodeType":"ArrayTypeName","src":"9314:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}}},"id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9310:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9288:38:0"},{"expression":{"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":729,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9336:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":731,"indexExpression":{"hexValue":"30","id":730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9339:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9336:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":732,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"9344:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9336:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":734,"nodeType":"ExpressionStatement","src":"9336:10:0"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":735,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9356:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":737,"indexExpression":{"hexValue":"31","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9359:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9356:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":738,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"9364:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9356:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":740,"nodeType":"ExpressionStatement","src":"9356:10:0"},{"expression":{"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":741,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9376:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":743,"indexExpression":{"hexValue":"32","id":742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9379:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9376:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":744,"name":"c1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"9384:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9376:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":746,"nodeType":"ExpressionStatement","src":"9376:10:0"},{"expression":{"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":747,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9396:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":749,"indexExpression":{"hexValue":"30","id":748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9399:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9396:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":750,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"9404:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"9396:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":752,"nodeType":"ExpressionStatement","src":"9396:10:0"},{"expression":{"id":757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":753,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9416:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":755,"indexExpression":{"hexValue":"31","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9419:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9416:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":756,"name":"b2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"9424:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"9416:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":758,"nodeType":"ExpressionStatement","src":"9416:10:0"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":759,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9436:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":761,"indexExpression":{"hexValue":"32","id":760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9439:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9436:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":762,"name":"c2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":704,"src":"9444:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"9436:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":764,"nodeType":"ExpressionStatement","src":"9436:10:0"},{"expression":{"arguments":[{"id":766,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"9471:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},{"id":767,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"9475:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"},{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}],"id":765,"name":"pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"9463:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) view returns (bool)"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9463:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":708,"id":769,"nodeType":"Return","src":"9456:22:0"}]},"documentation":{"id":692,"nodeType":"StructuredDocumentation","src":"8947:59:0","text":"Convenience method for a pairing check for three pairs."},"implemented":true,"kind":"function","modifiers":[],"name":"pairingProd3","parameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"a1","nodeType":"VariableDeclaration","scope":771,"src":"9042:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":693,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9042:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":696,"mutability":"mutable","name":"a2","nodeType":"VariableDeclaration","scope":771,"src":"9069:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":695,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9069:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":698,"mutability":"mutable","name":"b1","nodeType":"VariableDeclaration","scope":771,"src":"9096:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":697,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9096:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":700,"mutability":"mutable","name":"b2","nodeType":"VariableDeclaration","scope":771,"src":"9123:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":699,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9123:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":702,"mutability":"mutable","name":"c1","nodeType":"VariableDeclaration","scope":771,"src":"9150:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":701,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9150:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":704,"mutability":"mutable","name":"c2","nodeType":"VariableDeclaration","scope":771,"src":"9177:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":703,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9177:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"9032:168:0"},"returnParameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":707,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":771,"src":"9224:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":706,"name":"bool","nodeType":"ElementaryTypeName","src":"9224:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9223:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":867,"nodeType":"FunctionDefinition","src":"9554:568:0","body":{"id":866,"nodeType":"Block","src":"9827:295:0","statements":[{"assignments":[796],"declarations":[{"constant":false,"id":796,"mutability":"mutable","name":"p1","nodeType":"VariableDeclaration","scope":866,"src":"9837:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point[]"},"typeName":{"baseType":{"id":794,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9837:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":795,"nodeType":"ArrayTypeName","src":"9837:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}},"visibility":"internal"}],"id":802,"initialValue":{"arguments":[{"hexValue":"34","id":800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"id":799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9859:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G1Point memory[] memory)"},"typeName":{"baseType":{"id":797,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9863:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"id":798,"nodeType":"ArrayTypeName","src":"9863:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_storage_$dyn_storage_ptr","typeString":"struct Pairing.G1Point[]"}}},"id":801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9859:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9837:38:0"},{"assignments":[806],"declarations":[{"constant":false,"id":806,"mutability":"mutable","name":"p2","nodeType":"VariableDeclaration","scope":866,"src":"9885:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point[]"},"typeName":{"baseType":{"id":804,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9885:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":805,"nodeType":"ArrayTypeName","src":"9885:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[{"hexValue":"34","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9921:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"id":809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9907:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Pairing.G2Point memory[] memory)"},"typeName":{"baseType":{"id":807,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9911:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"id":808,"nodeType":"ArrayTypeName","src":"9911:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_storage_$dyn_storage_ptr","typeString":"struct Pairing.G2Point[]"}}},"id":811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9907:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9885:38:0"},{"expression":{"id":817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":813,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9933:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":815,"indexExpression":{"hexValue":"30","id":814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9936:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9933:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":816,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"9941:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9933:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":818,"nodeType":"ExpressionStatement","src":"9933:10:0"},{"expression":{"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":819,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9953:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":821,"indexExpression":{"hexValue":"31","id":820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9956:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9953:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":822,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"9961:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9953:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":824,"nodeType":"ExpressionStatement","src":"9953:10:0"},{"expression":{"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":825,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9973:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":827,"indexExpression":{"hexValue":"32","id":826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9976:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9973:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":828,"name":"c1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":782,"src":"9981:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9973:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":830,"nodeType":"ExpressionStatement","src":"9973:10:0"},{"expression":{"id":835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":831,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"9993:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},"id":833,"indexExpression":{"hexValue":"33","id":832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9996:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9993:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":834,"name":"d1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"10001:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"src":"9993:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point memory"}},"id":836,"nodeType":"ExpressionStatement","src":"9993:10:0"},{"expression":{"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":837,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10013:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":839,"indexExpression":{"hexValue":"30","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10016:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10013:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":840,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"10021:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10013:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":842,"nodeType":"ExpressionStatement","src":"10013:10:0"},{"expression":{"id":847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":843,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10033:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":845,"indexExpression":{"hexValue":"31","id":844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10033:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":846,"name":"b2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"10041:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10033:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":848,"nodeType":"ExpressionStatement","src":"10033:10:0"},{"expression":{"id":853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":849,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10053:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":851,"indexExpression":{"hexValue":"32","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10056:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10053:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":852,"name":"c2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"10061:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10053:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":854,"nodeType":"ExpressionStatement","src":"10053:10:0"},{"expression":{"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":855,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10073:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}},"id":857,"indexExpression":{"hexValue":"33","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10076:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10073:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":858,"name":"d2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"10081:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"src":"10073:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point memory"}},"id":860,"nodeType":"ExpressionStatement","src":"10073:10:0"},{"expression":{"arguments":[{"id":862,"name":"p1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"10108:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"}},{"id":863,"name":"p2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"10112:2:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G1Point memory[] memory"},{"typeIdentifier":"t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr","typeString":"struct Pairing.G2Point memory[] memory"}],"id":861,"name":"pairing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"10100:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_G1Point_$284_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_G2Point_$293_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (struct Pairing.G1Point memory[] memory,struct Pairing.G2Point memory[] memory) view returns (bool)"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10100:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":792,"id":865,"nodeType":"Return","src":"10093:22:0"}]},"documentation":{"id":772,"nodeType":"StructuredDocumentation","src":"9491:58:0","text":"Convenience method for a pairing check for four pairs."},"implemented":true,"kind":"function","modifiers":[],"name":"pairingProd4","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":774,"mutability":"mutable","name":"a1","nodeType":"VariableDeclaration","scope":867,"src":"9585:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":773,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9585:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":776,"mutability":"mutable","name":"a2","nodeType":"VariableDeclaration","scope":867,"src":"9612:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":775,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9612:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"b1","nodeType":"VariableDeclaration","scope":867,"src":"9639:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":777,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9639:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":780,"mutability":"mutable","name":"b2","nodeType":"VariableDeclaration","scope":867,"src":"9666:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":779,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9666:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":782,"mutability":"mutable","name":"c1","nodeType":"VariableDeclaration","scope":867,"src":"9693:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":781,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9693:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":784,"mutability":"mutable","name":"c2","nodeType":"VariableDeclaration","scope":867,"src":"9720:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":783,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9720:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"d1","nodeType":"VariableDeclaration","scope":867,"src":"9747:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_memory_ptr","typeString":"struct Pairing.G1Point"},"typeName":{"id":785,"name":"G1Point","nodeType":"UserDefinedTypeName","referencedDeclaration":284,"src":"9747:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G1Point_$284_storage_ptr","typeString":"struct Pairing.G1Point"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"d2","nodeType":"VariableDeclaration","scope":867,"src":"9774:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_memory_ptr","typeString":"struct Pairing.G2Point"},"typeName":{"id":787,"name":"G2Point","nodeType":"UserDefinedTypeName","referencedDeclaration":293,"src":"9774:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_G2Point_$293_storage_ptr","typeString":"struct Pairing.G2Point"}},"visibility":"internal"}],"src":"9575:222:0"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":791,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":867,"src":"9821:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":790,"name":"bool","nodeType":"ElementaryTypeName","src":"9821:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9820:6:0"},"scope":868,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[868],"name":"Pairing","scope":869}]},"id":0}