SHARE
TWEET

Untitled

a guest Aug 26th, 2019 184 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.   "contractName": "SolnSquareVerifier",
  3.   "abi": [
  4.     {
  5.       "constant": true,
  6.       "inputs": [
  7.         {
  8.           "name": "interfaceId",
  9.           "type": "bytes4"
  10.         }
  11.       ],
  12.       "name": "supportsInterface",
  13.       "outputs": [
  14.         {
  15.           "name": "",
  16.           "type": "bool"
  17.         }
  18.       ],
  19.       "payable": false,
  20.       "stateMutability": "view",
  21.       "type": "function"
  22.     },
  23.     {
  24.       "constant": false,
  25.       "inputs": [
  26.         {
  27.           "name": "pauseContract",
  28.           "type": "bool"
  29.         }
  30.       ],
  31.       "name": "pause",
  32.       "outputs": [],
  33.       "payable": false,
  34.       "stateMutability": "nonpayable",
  35.       "type": "function"
  36.     },
  37.     {
  38.       "constant": true,
  39.       "inputs": [],
  40.       "name": "name",
  41.       "outputs": [
  42.         {
  43.           "name": "",
  44.           "type": "string"
  45.         }
  46.       ],
  47.       "payable": false,
  48.       "stateMutability": "view",
  49.       "type": "function"
  50.     },
  51.     {
  52.       "constant": true,
  53.       "inputs": [
  54.         {
  55.           "name": "tokenId",
  56.           "type": "uint256"
  57.         }
  58.       ],
  59.       "name": "getApproved",
  60.       "outputs": [
  61.         {
  62.           "name": "",
  63.           "type": "address"
  64.         }
  65.       ],
  66.       "payable": false,
  67.       "stateMutability": "view",
  68.       "type": "function"
  69.     },
  70.     {
  71.       "constant": false,
  72.       "inputs": [
  73.         {
  74.           "name": "to",
  75.           "type": "address"
  76.         },
  77.         {
  78.           "name": "tokenId",
  79.           "type": "uint256"
  80.         }
  81.       ],
  82.       "name": "approve",
  83.       "outputs": [],
  84.       "payable": false,
  85.       "stateMutability": "nonpayable",
  86.       "type": "function"
  87.     },
  88.     {
  89.       "constant": true,
  90.       "inputs": [],
  91.       "name": "totalSupply",
  92.       "outputs": [
  93.         {
  94.           "name": "",
  95.           "type": "uint256"
  96.         }
  97.       ],
  98.       "payable": false,
  99.       "stateMutability": "view",
  100.       "type": "function"
  101.     },
  102.     {
  103.       "constant": false,
  104.       "inputs": [
  105.         {
  106.           "name": "from",
  107.           "type": "address"
  108.         },
  109.         {
  110.           "name": "to",
  111.           "type": "address"
  112.         },
  113.         {
  114.           "name": "tokenId",
  115.           "type": "uint256"
  116.         }
  117.       ],
  118.       "name": "transferFrom",
  119.       "outputs": [],
  120.       "payable": false,
  121.       "stateMutability": "nonpayable",
  122.       "type": "function"
  123.     },
  124.     {
  125.       "constant": true,
  126.       "inputs": [
  127.         {
  128.           "name": "_myid",
  129.           "type": "bytes32"
  130.         },
  131.         {
  132.           "name": "_result",
  133.           "type": "string"
  134.         }
  135.       ],
  136.       "name": "__callback",
  137.       "outputs": [],
  138.       "payable": false,
  139.       "stateMutability": "pure",
  140.       "type": "function"
  141.     },
  142.     {
  143.       "constant": true,
  144.       "inputs": [],
  145.       "name": "verifier",
  146.       "outputs": [
  147.         {
  148.           "name": "",
  149.           "type": "address"
  150.         }
  151.       ],
  152.       "payable": false,
  153.       "stateMutability": "view",
  154.       "type": "function"
  155.     },
  156.     {
  157.       "constant": true,
  158.       "inputs": [
  159.         {
  160.           "name": "owner",
  161.           "type": "address"
  162.         },
  163.         {
  164.           "name": "index",
  165.           "type": "uint256"
  166.         }
  167.       ],
  168.       "name": "tokenOfOwnerByIndex",
  169.       "outputs": [
  170.         {
  171.           "name": "",
  172.           "type": "uint256"
  173.         }
  174.       ],
  175.       "payable": false,
  176.       "stateMutability": "view",
  177.       "type": "function"
  178.     },
  179.     {
  180.       "constant": true,
  181.       "inputs": [
  182.         {
  183.           "name": "_myid",
  184.           "type": "bytes32"
  185.         },
  186.         {
  187.           "name": "_result",
  188.           "type": "string"
  189.         },
  190.         {
  191.           "name": "_proof",
  192.           "type": "bytes"
  193.         }
  194.       ],
  195.       "name": "__callback",
  196.       "outputs": [],
  197.       "payable": false,
  198.       "stateMutability": "pure",
  199.       "type": "function"
  200.     },
  201.     {
  202.       "constant": false,
  203.       "inputs": [
  204.         {
  205.           "name": "to",
  206.           "type": "address"
  207.         },
  208.         {
  209.           "name": "tokenId",
  210.           "type": "uint256"
  211.         }
  212.       ],
  213.       "name": "mint",
  214.       "outputs": [
  215.         {
  216.           "name": "",
  217.           "type": "bool"
  218.         }
  219.       ],
  220.       "payable": false,
  221.       "stateMutability": "nonpayable",
  222.       "type": "function"
  223.     },
  224.     {
  225.       "constant": false,
  226.       "inputs": [
  227.         {
  228.           "name": "from",
  229.           "type": "address"
  230.         },
  231.         {
  232.           "name": "to",
  233.           "type": "address"
  234.         },
  235.         {
  236.           "name": "tokenId",
  237.           "type": "uint256"
  238.         }
  239.       ],
  240.       "name": "safeTransferFrom",
  241.       "outputs": [],
  242.       "payable": false,
  243.       "stateMutability": "nonpayable",
  244.       "type": "function"
  245.     },
  246.     {
  247.       "constant": true,
  248.       "inputs": [
  249.         {
  250.           "name": "index",
  251.           "type": "uint256"
  252.         }
  253.       ],
  254.       "name": "tokenByIndex",
  255.       "outputs": [
  256.         {
  257.           "name": "",
  258.           "type": "uint256"
  259.         }
  260.       ],
  261.       "payable": false,
  262.       "stateMutability": "view",
  263.       "type": "function"
  264.     },
  265.     {
  266.       "constant": true,
  267.       "inputs": [
  268.         {
  269.           "name": "tokenId",
  270.           "type": "uint256"
  271.         }
  272.       ],
  273.       "name": "ownerOf",
  274.       "outputs": [
  275.         {
  276.           "name": "",
  277.           "type": "address"
  278.         }
  279.       ],
  280.       "payable": false,
  281.       "stateMutability": "view",
  282.       "type": "function"
  283.     },
  284.     {
  285.       "constant": true,
  286.       "inputs": [
  287.         {
  288.           "name": "owner",
  289.           "type": "address"
  290.         }
  291.       ],
  292.       "name": "balanceOf",
  293.       "outputs": [
  294.         {
  295.           "name": "",
  296.           "type": "uint256"
  297.         }
  298.       ],
  299.       "payable": false,
  300.       "stateMutability": "view",
  301.       "type": "function"
  302.     },
  303.     {
  304.       "constant": true,
  305.       "inputs": [],
  306.       "name": "owner",
  307.       "outputs": [
  308.         {
  309.           "name": "",
  310.           "type": "address"
  311.         }
  312.       ],
  313.       "payable": false,
  314.       "stateMutability": "view",
  315.       "type": "function"
  316.     },
  317.     {
  318.       "constant": true,
  319.       "inputs": [],
  320.       "name": "symbol",
  321.       "outputs": [
  322.         {
  323.           "name": "",
  324.           "type": "string"
  325.         }
  326.       ],
  327.       "payable": false,
  328.       "stateMutability": "view",
  329.       "type": "function"
  330.     },
  331.     {
  332.       "constant": false,
  333.       "inputs": [
  334.         {
  335.           "name": "to",
  336.           "type": "address"
  337.         },
  338.         {
  339.           "name": "approved",
  340.           "type": "bool"
  341.         }
  342.       ],
  343.       "name": "setApprovalForAll",
  344.       "outputs": [],
  345.       "payable": false,
  346.       "stateMutability": "nonpayable",
  347.       "type": "function"
  348.     },
  349.     {
  350.       "constant": false,
  351.       "inputs": [
  352.         {
  353.           "name": "from",
  354.           "type": "address"
  355.         },
  356.         {
  357.           "name": "to",
  358.           "type": "address"
  359.         },
  360.         {
  361.           "name": "tokenId",
  362.           "type": "uint256"
  363.         },
  364.         {
  365.           "name": "_data",
  366.           "type": "bytes"
  367.         }
  368.       ],
  369.       "name": "safeTransferFrom",
  370.       "outputs": [],
  371.       "payable": false,
  372.       "stateMutability": "nonpayable",
  373.       "type": "function"
  374.     },
  375.     {
  376.       "constant": true,
  377.       "inputs": [
  378.         {
  379.           "name": "tokenId",
  380.           "type": "uint256"
  381.         }
  382.       ],
  383.       "name": "tokenURI",
  384.       "outputs": [
  385.         {
  386.           "name": "",
  387.           "type": "string"
  388.         }
  389.       ],
  390.       "payable": false,
  391.       "stateMutability": "view",
  392.       "type": "function"
  393.     },
  394.     {
  395.       "constant": true,
  396.       "inputs": [],
  397.       "name": "baseTokenURI",
  398.       "outputs": [
  399.         {
  400.           "name": "",
  401.           "type": "string"
  402.         }
  403.       ],
  404.       "payable": false,
  405.       "stateMutability": "view",
  406.       "type": "function"
  407.     },
  408.     {
  409.       "constant": true,
  410.       "inputs": [
  411.         {
  412.           "name": "owner",
  413.           "type": "address"
  414.         },
  415.         {
  416.           "name": "operator",
  417.           "type": "address"
  418.         }
  419.       ],
  420.       "name": "isApprovedForAll",
  421.       "outputs": [
  422.         {
  423.           "name": "",
  424.           "type": "bool"
  425.         }
  426.       ],
  427.       "payable": false,
  428.       "stateMutability": "view",
  429.       "type": "function"
  430.     },
  431.     {
  432.       "constant": false,
  433.       "inputs": [
  434.         {
  435.           "name": "newOwner",
  436.           "type": "address"
  437.         }
  438.       ],
  439.       "name": "transferOwnership",
  440.       "outputs": [],
  441.       "payable": false,
  442.       "stateMutability": "nonpayable",
  443.       "type": "function"
  444.     },
  445.     {
  446.       "inputs": [
  447.         {
  448.           "name": "verifierAddress",
  449.           "type": "address"
  450.         }
  451.       ],
  452.       "payable": false,
  453.       "stateMutability": "nonpayable",
  454.       "type": "constructor"
  455.     },
  456.     {
  457.       "anonymous": false,
  458.       "inputs": [
  459.         {
  460.           "indexed": false,
  461.           "name": "tokenId",
  462.           "type": "uint256"
  463.         },
  464.         {
  465.           "indexed": false,
  466.           "name": "to",
  467.           "type": "address"
  468.         }
  469.       ],
  470.       "name": "SolutionAdded",
  471.       "type": "event"
  472.     },
  473.     {
  474.       "anonymous": false,
  475.       "inputs": [
  476.         {
  477.           "indexed": true,
  478.           "name": "from",
  479.           "type": "address"
  480.         },
  481.         {
  482.           "indexed": true,
  483.           "name": "to",
  484.           "type": "address"
  485.         },
  486.         {
  487.           "indexed": true,
  488.           "name": "tokenId",
  489.           "type": "uint256"
  490.         }
  491.       ],
  492.       "name": "Transfer",
  493.       "type": "event"
  494.     },
  495.     {
  496.       "anonymous": false,
  497.       "inputs": [
  498.         {
  499.           "indexed": true,
  500.           "name": "owner",
  501.           "type": "address"
  502.         },
  503.         {
  504.           "indexed": true,
  505.           "name": "approved",
  506.           "type": "address"
  507.         },
  508.         {
  509.           "indexed": true,
  510.           "name": "tokenId",
  511.           "type": "uint256"
  512.         }
  513.       ],
  514.       "name": "Approval",
  515.       "type": "event"
  516.     },
  517.     {
  518.       "anonymous": false,
  519.       "inputs": [
  520.         {
  521.           "indexed": true,
  522.           "name": "owner",
  523.           "type": "address"
  524.         },
  525.         {
  526.           "indexed": true,
  527.           "name": "operator",
  528.           "type": "address"
  529.         },
  530.         {
  531.           "indexed": false,
  532.           "name": "approved",
  533.           "type": "bool"
  534.         }
  535.       ],
  536.       "name": "ApprovalForAll",
  537.       "type": "event"
  538.     },
  539.     {
  540.       "anonymous": false,
  541.       "inputs": [
  542.         {
  543.           "indexed": false,
  544.           "name": "from",
  545.           "type": "address"
  546.         }
  547.       ],
  548.       "name": "Paused",
  549.       "type": "event"
  550.     },
  551.     {
  552.       "anonymous": false,
  553.       "inputs": [
  554.         {
  555.           "indexed": false,
  556.           "name": "from",
  557.           "type": "address"
  558.         }
  559.       ],
  560.       "name": "UnPaused",
  561.       "type": "event"
  562.     },
  563.     {
  564.       "anonymous": false,
  565.       "inputs": [
  566.         {
  567.           "indexed": false,
  568.           "name": "newOwner",
  569.           "type": "address"
  570.         }
  571.       ],
  572.       "name": "OwnershipIsTransferred",
  573.       "type": "event"
  574.     },
  575.     {
  576.       "constant": false,
  577.       "inputs": [
  578.         {
  579.           "name": "_to",
  580.           "type": "address"
  581.         },
  582.         {
  583.           "name": "_tokenId",
  584.           "type": "uint256"
  585.         },
  586.         {
  587.           "name": "key",
  588.           "type": "bytes32"
  589.         }
  590.       ],
  591.       "name": "addSolution",
  592.       "outputs": [],
  593.       "payable": false,
  594.       "stateMutability": "nonpayable",
  595.       "type": "function"
  596.     },
  597.     {
  598.       "constant": false,
  599.       "inputs": [
  600.         {
  601.           "name": "_to",
  602.           "type": "address"
  603.         },
  604.         {
  605.           "name": "_tokenId",
  606.           "type": "uint256"
  607.         },
  608.         {
  609.           "name": "a",
  610.           "type": "uint256[2]"
  611.         },
  612.         {
  613.           "name": "b",
  614.           "type": "uint256[2][2]"
  615.         },
  616.         {
  617.           "name": "c",
  618.           "type": "uint256[2]"
  619.         },
  620.         {
  621.           "name": "input",
  622.           "type": "uint256[2]"
  623.         }
  624.       ],
  625.       "name": "mintToken",
  626.       "outputs": [],
  627.       "payable": false,
  628.       "stateMutability": "nonpayable",
  629.       "type": "function"
  630.     }
  631.   ],
  632.   "metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"pauseContract\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_myid\",\"type\":\"bytes32\"},{\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"__callback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_myid\",\"type\":\"bytes32\"},{\"name\":\"_result\",\"type\":\"string\"},{\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"__callback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"addSolution\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"a\",\"type\":\"uint256[2]\"},{\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"name\":\"c\",\"type\":\"uint256[2]\"},{\"name\":\"input\",\"type\":\"uint256[2]\"}],\"name\":\"mintToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"verifierAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SolutionAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"from\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"from\",\"type\":\"address\"}],\"name\":\"UnPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipIsTransferred\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"isApprovedForAll(address,address)\":{\"details\":\"Tells whether an operator is approved by a given owner\\r\",\"params\":{\"operator\":\"operator address which you want to query the approval of\\r\",\"owner\":\"owner address which you want to query the approval of\\r\"},\"return\":\"bool whether the given operator is approved by the given owner\\r\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Sets or unsets the approval of a given operator\\r An operator is allowed to transfer all tokens of the sender on their behalf\\r\",\"params\":{\"approved\":\"representing the status of the approval to be set\\r\",\"to\":\"operator address to set the approval\\r\"}},\"supportsInterface(bytes4)\":{\"details\":\"implement supportsInterface(bytes4) using a lookup table\\r\"},\"tokenByIndex(uint256)\":{\"details\":\"Gets the token ID at a given index of all the tokens in this contract\\r Reverts if the index is greater or equal to the total number of tokens\\r\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the tokens list\\r\"},\"return\":\"uint256 token ID at the given index of the tokens list\\r\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Gets the token ID at a given index of the tokens list of the requested owner\\r\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the requested tokens list\\r\",\"owner\":\"address owning the tokens list to be accessed\\r\"},\"return\":\"uint256 token ID at the given index of the tokens list owned by the requested address\\r\"},\"totalSupply()\":{\"details\":\"Gets the total amount of tokens stored by the contract\\r\",\"return\":\"uint256 representing the total amount of tokens\\r\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/SolnSquareVerifier.sol\":\"SolnSquareVerifier\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/ERC721Mintable.sol\":{\"keccak256\":\"0xd8fb80a0e3631f1019d49e5bdedac40496bcc09785ccb3c4f28475bb74330a67\",\"urls\":[\"bzzr://bc31c289ad344100c0a20a0c525d0660ee5050f9ef83156251746b005b041a9f\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/Oraclize.sol\":{\"keccak256\":\"0xc9b7567999ef16b4f5cd8a81182fe3a1eda77f6978f1a478033c5c0b4d14492a\",\"urls\":[\"bzzr://7c59d9d93490ba2cd3026a64adfcc108662d398045df93d990f55aa0519b176c\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/SolnSquareVerifier.sol\":{\"keccak256\":\"0xcad2e7eb31d62abad8e8d233bcd05cb504e828a5706388196f87ad87b18396f3\",\"urls\":[\"bzzr://4570f5f50986e0d67c07dc3ee51c1f6502b0477407d5216f877beb7cd18dadff\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/Verifier.sol\":{\"keccak256\":\"0x10a5e4b437e24a5bb455852d96e0528dc43a9a8e7e2023b9a7d49661f9921ae7\",\"urls\":[\"bzzr://1e656664a61b800fffb3a76d236241257968c800269731b4c49930ee37e97034\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/node_modules/openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzzr://ecd0352164978c418c8f5b0080c972b65e4b07f6afc593fb7cdd856185a458ea\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzzr://2466b6491600969dd9ffdeb0b705e7cecc38418aa215cec64b2481273bba9076\"]},\"/D/Projects/Udacity_P7_Blockchain_Capstone/node_modules/openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzzr://f7f6da60a184233fd666ac44e6fb2bd51ca6ebdc4867a310d368049aa4e62786\"]}},\"version\":1}",
  633.   "bytecode": "0x60806040523480156200001157600080fd5b5060405160208062003cf1833981018060405260208110156200003357600080fd5b81019080805190602001909291905050506040805190810160405280601181526020017f5265616c2045737461746520546f6b656e0000000000000000000000000000008152506040805190810160405280600381526020017f5245540000000000000000000000000000000000000000000000000000000000815250606060405190810160405280603f815260200162003cb2603f9139336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5cbe81168dcddce2148f967befd43fee01778c000a65af692467d7a7386f495d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160008060146101000a81548160ff021916908315150217905550620001e66301ffc9a77c01000000000000000000000000000000000000000000000000000000000262000333640100000000026401000000009004565b620002236380ac58cd7c01000000000000000000000000000000000000000000000000000000000262000333640100000000026401000000009004565b6200026063780e9d637c01000000000000000000000000000000000000000000000000000000000262000333640100000000026401000000009004565b82600f908051906020019062000278929190620003f1565b50816010908051906020019062000291929190620003f1565b508060119080519060200190620002aa929190620003f1565b50620002e8635b5e139f7c01000000000000000000000000000000000000000000000000000000000262000333640100000000026401000000009004565b50505080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620004a0565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156200038557600080fd5b6001806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043457805160ff191683800117855562000465565b8280016001018555821562000465579182015b828111156200046457825182559160200191906001019062000447565b5b50905062000474919062000478565b5090565b6200049d91905b80821115620004995760008160009055506001016200047f565b5090565b90565b61380280620004b06000396000f3fe608060405234801561001057600080fd5b50600436106101ab576000357c0100000000000000000000000000000000000000000000000000000000900480634f6ccce7116100fb578063a22cb465116100b4578063ccd5835a1161008e578063ccd5835a14610bda578063d547cfb714610d65578063e985e9c514610de8578063f2fde38b14610e64576101ab565b8063a22cb465146109de578063b88d4fde14610a2e578063c87b56dd14610b33576101ab565b80634f6ccce7146107b15780636352211e146107f357806370a082311461086157806374690502146108b95780638da5cb5b1461091157806395d89b411461095b576101ab565b806323b872dd116101685780632f745c59116101425780632f745c591461051f57806338bbfa501461058157806340c10f19146106dd57806342842e0e14610743576101ab565b806323b872dd146103a257806327dc297e146104105780632b7ac3f3146104d5576101ab565b806301ffc9a7146101b057806302329a291461021557806306fdde0314610245578063081812fc146102c8578063095ea7b31461033657806318160ddd14610384575b600080fd5b6101fb600480360360208110156101c657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ea8565b604051808215151515815260200191505060405180910390f35b6102436004803603602081101561022b57600080fd5b81019080803515159060200190929190505050610f10565b005b61024d6110a6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028d578082015181840152602081019050610272565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f4600480360360208110156102de57600080fd5b8101908080359060200190929190505050611148565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103826004803603604081101561034c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611185565b005b61038c611362565b6040518082815260200191505060405180910390f35b61040e600480360360608110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136f565b005b6104d36004803603604081101561042657600080fd5b81019080803590602001909291908035906020019064010000000081111561044d57600080fd5b82018360208201111561045f57600080fd5b8035906020019184600183028401116401000000008311171561048157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611394565b005b6104dd6113d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61056b6004803603604081101561053557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113fd565b6040518082815260200191505060405180910390f35b6106db6004803603606081101561059757600080fd5b8101908080359060200190929190803590602001906401000000008111156105be57600080fd5b8201836020820111156105d057600080fd5b803590602001918460018302840111640100000000831117156105f257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561065557600080fd5b82018360208201111561066757600080fd5b8035906020019184600183028401116401000000008311171561068957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611474565b005b610729600480360360408110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611479565b604051808215151515815260200191505060405180910390f35b6107af6004803603606081101561075957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153f565b005b6107dd600480360360208110156107c757600080fd5b8101908080359060200190929190505050611560565b6040518082815260200191505060405180910390f35b61081f6004803603602081101561080957600080fd5b8101908080359060200190929190505050611598565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108a36004803603602081101561087757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d5565b6040518082815260200191505060405180910390f35b61090f600480360360608110156108cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506116cc565b005b61091961185c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610963611885565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a3578082015181840152602081019050610988565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a2c600480360360408110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611927565b005b610b3160048036036080811015610a4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610aab57600080fd5b820183602082011115610abd57600080fd5b80359060200191846001830284011164010000000083111715610adf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611a63565b005b610b5f60048036036020811015610b4957600080fd5b8101908080359060200190929190505050611a8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9f578082015181840152602081019050610b84565b50505050905090810190601f168015610bcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d636004803603610180811015610bf157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192908060800190600280602002604051908101604052809291906000905b82821015610cd0578382604002016002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505081526020019060010190610c7c565b50505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050611b54565b005b610d6d611f6e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dad578082015181840152602081019050610d92565b50505050905090810190601f168015610dda5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e4a60048036036040811015610dfe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612010565b604051808215151515815260200191505060405180910390f35b610ea660048036036020811015610e7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120a4565b005b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b46023913960400191505060405180910390fd5b80600060146101000a81548160ff021916908315150217905550801561103f577f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16110a3565b7fff2b959f2bcdb44c7ecb4b16dae055431019d7350607125cfc2b74a06632c90e33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b6060600f8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561113e5780601f106111135761010080835404028352916020019161113e565b820191906000526020600020905b81548152906001019060200180831161112157829003601f168201915b5050505050905090565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061119082611598565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061370f6034913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061125957506112588133612010565b5b15156112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806137436047913960600191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600880549050905090565b6113793382612298565b151561138457600080fd5b61138f83838361232d565b505050565b6113d3828260006040519080825280601f01601f1916602001820160405280156113cd5781602001600182028038833980820191505090505b50611474565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611408836115d5565b8210151561141557600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561146157fe5b9060005260206000200154905092915050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611522576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b46023913960400191505060405180910390fd5b61152c8383612351565b61153582612372565b6001905092915050565b61155b8383836020604051908101604052806000815250611a63565b505050565b600061156a611362565b8210151561157757600080fd5b60088281548110151561158657fe5b90600052602060002001549050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561167d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b6116c4600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206124c5565b915050919050565b6116d461360d565b60408051908101604052808481526020018573ffffffffffffffffffffffffffffffffffffffff168152509050601481908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080601560008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f078793128cefb19aac38a33f9e5df39f67716907f6d747e8065545699e0b2b8d8385604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060108054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561191d5780601f106118f25761010080835404028352916020019161191d565b820191906000526020600020905b81548152906001019060200180831161190057829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561196257600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611a6e84848461136f565b611a7a848484846124d3565b1515611a8557600080fd5b50505050565b6060611a96826126f6565b1515611aa157600080fd5b601260008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b485780601f10611b1d57610100808354040283529160200191611b48565b820191906000526020600020905b815481529060010190602001808311611b2b57829003601f168201915b50505050509050919050565b6000848484846040516020018085600260200280838360005b83811015611b88578082015181840152602081019050611b6d565b505050509050018460026000925b81841015611bdc5782846020020151600260200280838360005b83811015611bcb578082015181840152602081019050611bb0565b505050509050019260010192611b96565b9250505083600260200280838360005b83811015611c07578082015181840152602081019050611bec565b5050505090500182600260200280838360005b83811015611c35578082015181840152602081019050611c1a565b50505050905001945050505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166015600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611d34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f536f6c7574696f6e206973206265656e2075736564000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663621e9ec0868686866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600260200280838360005b83811015611dcc578082015181840152602081019050611db1565b505050509050018460026000925b81841015611e205782846020020151600260200280838360005b83811015611e0f578082015181840152602081019050611df4565b505050509050019260010192611dda565b9250505083600260200280838360005b83811015611e4b578082015181840152602081019050611e30565b5050505090500182600260200280838360005b83811015611e79578082015181840152602081019050611e5e565b50505050905001945050505050602060405180830381600087803b158015611ea057600080fd5b505af1158015611eb4573d6000803e3d6000fd5b505050506040513d6020811015611eca57600080fd5b81019080805190602001909291905050501515611f4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f536f6c7574696f6e206973206e6f742076616c6964000000000000000000000081525060200191505060405180910390fd5b611f5a8787836116cc565b611f648787611479565b5050505050505050565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120065780601f10611fdb57610100808354040283529160200191612006565b820191906000526020600020905b815481529060010190602001808311611fe957829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561214b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b46023913960400191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5cbe81168dcddce2148f967befd43fee01778c000a65af692467d7a7386f495d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000806122a483611598565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061231357508373ffffffffffffffffffffffffffffffffffffffff166122fb84611148565b73ffffffffffffffffffffffffffffffffffffffff16145b8061232457506123238185612010565b5b91505092915050565b612338838383612768565b61234283826129e6565b61234c8282612b8a565b505050565b61235b8282612c51565b6123658282612b8a565b61236e81612e6f565b5050565b61237b816126f6565b15156123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e20646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b61249b60118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124885780601f1061245d57610100808354040283529160200191612488565b820191906000526020600020905b81548152906001019060200180831161246b57829003601f168201915b505050505061249683612ebb565b613014565b6012600083815260200190815260200160002090805190602001906124c192919061363d565b5050565b600081600001549050919050565b60006124f48473ffffffffffffffffffffffffffffffffffffffff1661305b565b151561250357600190506126ee565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125fa5780820151818401526020810190506125df565b50505050905090810190601f1680156126275780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b505050506040513d602081101561267357600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561280e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b61281782611598565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561289c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061378a602a913960400191505060405180910390fd5b6128a58261306e565b6128ec600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061312e565b612933600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613151565b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000612a3e6001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061316790919063ffffffff16565b90506000600760008481526020019081526020016000205490508181141515612b31576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612aaf57fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612b0957fe5b9060005260206000200181905550816007600083815260200190815260200160002081905550505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003612b8391906136bd565b5050505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506007600083815260200190815260200160002081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612cf7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b612d00826126f6565b151515612d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f6b656e20616c72656164792065786973747300000000000000000000000081525060200191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612e0e600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613151565b818373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b60606000821415612f03576040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061300f565b600082905060005b600082141515612f31578080600101915050600a82811515612f2957fe5b049150612f0b565b6060816040519080825280601f01601f191660200182016040528015612f665781602001600182028038833980820191505090505b50905060006001830390505b60008614151561300757600a86811515612f8857fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515612fc357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86811515612fff57fe5b049550612f72565b819450505050505b919050565b606061305383836020604051908101604052806000815250602060405190810160405280600081525060206040519081016040528060008152506131f2565b905092915050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561312b5760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6131466001826000015461316790919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60008282111515156131e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f19166020018201604052801561324e5781602001600182028038833980820191505090505b509050606081905060008090506000809050600090505b885181101561331857888181518110151561327c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156132db57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613265565b600090505b87518110156133d057878181518110151561333457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561339357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061331d565b600090505b86518110156134885786818151811015156133ec57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561344b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506133d5565b600090505b85518110156135405785818151811015156134a457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561350357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061348d565b600090505b84518110156135f857848181518110151561355c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156135bb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613545565b82995050505050505050505095945050505050565b604080519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061367e57805160ff19168380011785556136ac565b828001600101855582156136ac579182015b828111156136ab578251825591602001919060010190613690565b5b5090506136b991906136e9565b5090565b8154818355818111156136e4578183600052602060002091820191016136e391906136e9565b5b505050565b61370b91905b808211156137075760008160009055506001016136ef565b5090565b9056fe4f776e65722061646472657373206973207468652073616d6520617320746865207472616e7366657220746f2061646472657373546f20617070726f7665206d7573742062652065697468657220636f6e7472616374206f776e6572206f7220617070726f7665642062792074686520746f6b656e206f776e657266726f6d2061646472657373206973206e6f7420746865206f776e6572206f662074686520746f6b656e436f6e7472616374204f776e65722073686f756c64206265207468652063616c6c6572a165627a7a72305820db9e4674590e757ba5ddd40e20a7ecf54acfb30f06580b73c3c51c866043ea7f002968747470733a2f2f73332d75732d776573742d322e616d617a6f6e6177732e636f6d2f756461636974792d626c6f636b636861696e2f63617073746f6e652f",
  634.   "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ab576000357c0100000000000000000000000000000000000000000000000000000000900480634f6ccce7116100fb578063a22cb465116100b4578063ccd5835a1161008e578063ccd5835a14610bda578063d547cfb714610d65578063e985e9c514610de8578063f2fde38b14610e64576101ab565b8063a22cb465146109de578063b88d4fde14610a2e578063c87b56dd14610b33576101ab565b80634f6ccce7146107b15780636352211e146107f357806370a082311461086157806374690502146108b95780638da5cb5b1461091157806395d89b411461095b576101ab565b806323b872dd116101685780632f745c59116101425780632f745c591461051f57806338bbfa501461058157806340c10f19146106dd57806342842e0e14610743576101ab565b806323b872dd146103a257806327dc297e146104105780632b7ac3f3146104d5576101ab565b806301ffc9a7146101b057806302329a291461021557806306fdde0314610245578063081812fc146102c8578063095ea7b31461033657806318160ddd14610384575b600080fd5b6101fb600480360360208110156101c657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ea8565b604051808215151515815260200191505060405180910390f35b6102436004803603602081101561022b57600080fd5b81019080803515159060200190929190505050610f10565b005b61024d6110a6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028d578082015181840152602081019050610272565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f4600480360360208110156102de57600080fd5b8101908080359060200190929190505050611148565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103826004803603604081101561034c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611185565b005b61038c611362565b6040518082815260200191505060405180910390f35b61040e600480360360608110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136f565b005b6104d36004803603604081101561042657600080fd5b81019080803590602001909291908035906020019064010000000081111561044d57600080fd5b82018360208201111561045f57600080fd5b8035906020019184600183028401116401000000008311171561048157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611394565b005b6104dd6113d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61056b6004803603604081101561053557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113fd565b6040518082815260200191505060405180910390f35b6106db6004803603606081101561059757600080fd5b8101908080359060200190929190803590602001906401000000008111156105be57600080fd5b8201836020820111156105d057600080fd5b803590602001918460018302840111640100000000831117156105f257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561065557600080fd5b82018360208201111561066757600080fd5b8035906020019184600183028401116401000000008311171561068957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611474565b005b610729600480360360408110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611479565b604051808215151515815260200191505060405180910390f35b6107af6004803603606081101561075957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153f565b005b6107dd600480360360208110156107c757600080fd5b8101908080359060200190929190505050611560565b6040518082815260200191505060405180910390f35b61081f6004803603602081101561080957600080fd5b8101908080359060200190929190505050611598565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108a36004803603602081101561087757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d5565b6040518082815260200191505060405180910390f35b61090f600480360360608110156108cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506116cc565b005b61091961185c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610963611885565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a3578082015181840152602081019050610988565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a2c600480360360408110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611927565b005b610b3160048036036080811015610a4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610aab57600080fd5b820183602082011115610abd57600080fd5b80359060200191846001830284011164010000000083111715610adf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611a63565b005b610b5f60048036036020811015610b4957600080fd5b8101908080359060200190929190505050611a8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9f578082015181840152602081019050610b84565b50505050905090810190601f168015610bcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d636004803603610180811015610bf157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192908060800190600280602002604051908101604052809291906000905b82821015610cd0578382604002016002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505081526020019060010190610c7c565b50505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050611b54565b005b610d6d611f6e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dad578082015181840152602081019050610d92565b50505050905090810190601f168015610dda5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e4a60048036036040811015610dfe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612010565b604051808215151515815260200191505060405180910390f35b610ea660048036036020811015610e7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120a4565b005b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b46023913960400191505060405180910390fd5b80600060146101000a81548160ff021916908315150217905550801561103f577f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16110a3565b7fff2b959f2bcdb44c7ecb4b16dae055431019d7350607125cfc2b74a06632c90e33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b6060600f8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561113e5780601f106111135761010080835404028352916020019161113e565b820191906000526020600020905b81548152906001019060200180831161112157829003601f168201915b5050505050905090565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061119082611598565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061370f6034913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061125957506112588133612010565b5b15156112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806137436047913960600191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600880549050905090565b6113793382612298565b151561138457600080fd5b61138f83838361232d565b505050565b6113d3828260006040519080825280601f01601f1916602001820160405280156113cd5781602001600182028038833980820191505090505b50611474565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611408836115d5565b8210151561141557600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561146157fe5b9060005260206000200154905092915050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611522576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b46023913960400191505060405180910390fd5b61152c8383612351565b61153582612372565b6001905092915050565b61155b8383836020604051908101604052806000815250611a63565b505050565b600061156a611362565b8210151561157757600080fd5b60088281548110151561158657fe5b90600052602060002001549050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561167d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b6116c4600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206124c5565b915050919050565b6116d461360d565b60408051908101604052808481526020018573ffffffffffffffffffffffffffffffffffffffff168152509050601481908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080601560008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f078793128cefb19aac38a33f9e5df39f67716907f6d747e8065545699e0b2b8d8385604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060108054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561191d5780601f106118f25761010080835404028352916020019161191d565b820191906000526020600020905b81548152906001019060200180831161190057829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561196257600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611a6e84848461136f565b611a7a848484846124d3565b1515611a8557600080fd5b50505050565b6060611a96826126f6565b1515611aa157600080fd5b601260008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b485780601f10611b1d57610100808354040283529160200191611b48565b820191906000526020600020905b815481529060010190602001808311611b2b57829003601f168201915b50505050509050919050565b6000848484846040516020018085600260200280838360005b83811015611b88578082015181840152602081019050611b6d565b505050509050018460026000925b81841015611bdc5782846020020151600260200280838360005b83811015611bcb578082015181840152602081019050611bb0565b505050509050019260010192611b96565b9250505083600260200280838360005b83811015611c07578082015181840152602081019050611bec565b5050505090500182600260200280838360005b83811015611c35578082015181840152602081019050611c1a565b50505050905001945050505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166015600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611d34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f536f6c7574696f6e206973206265656e2075736564000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663621e9ec0868686866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600260200280838360005b83811015611dcc578082015181840152602081019050611db1565b505050509050018460026000925b81841015611e205782846020020151600260200280838360005b83811015611e0f578082015181840152602081019050611df4565b505050509050019260010192611dda565b9250505083600260200280838360005b83811015611e4b578082015181840152602081019050611e30565b5050505090500182600260200280838360005b83811015611e79578082015181840152602081019050611e5e565b50505050905001945050505050602060405180830381600087803b158015611ea057600080fd5b505af1158015611eb4573d6000803e3d6000fd5b505050506040513d6020811015611eca57600080fd5b81019080805190602001909291905050501515611f4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f536f6c7574696f6e206973206e6f742076616c6964000000000000000000000081525060200191505060405180910390fd5b611f5a8787836116cc565b611f648787611479565b5050505050505050565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120065780601f10611fdb57610100808354040283529160200191612006565b820191906000526020600020905b815481529060010190602001808311611fe957829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561214b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b46023913960400191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5cbe81168dcddce2148f967befd43fee01778c000a65af692467d7a7386f495d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000806122a483611598565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061231357508373ffffffffffffffffffffffffffffffffffffffff166122fb84611148565b73ffffffffffffffffffffffffffffffffffffffff16145b8061232457506123238185612010565b5b91505092915050565b612338838383612768565b61234283826129e6565b61234c8282612b8a565b505050565b61235b8282612c51565b6123658282612b8a565b61236e81612e6f565b5050565b61237b816126f6565b15156123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e20646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b61249b60118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124885780601f1061245d57610100808354040283529160200191612488565b820191906000526020600020905b81548152906001019060200180831161246b57829003601f168201915b505050505061249683612ebb565b613014565b6012600083815260200190815260200160002090805190602001906124c192919061363d565b5050565b600081600001549050919050565b60006124f48473ffffffffffffffffffffffffffffffffffffffff1661305b565b151561250357600190506126ee565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125fa5780820151818401526020810190506125df565b50505050905090810190601f1680156126275780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b505050506040513d602081101561267357600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561280e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b61281782611598565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561289c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061378a602a913960400191505060405180910390fd5b6128a58261306e565b6128ec600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061312e565b612933600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613151565b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000612a3e6001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061316790919063ffffffff16565b90506000600760008481526020019081526020016000205490508181141515612b31576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612aaf57fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612b0957fe5b9060005260206000200181905550816007600083815260200190815260200160002081905550505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003612b8391906136bd565b5050505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506007600083815260200190815260200160002081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612cf7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41646472657373206973206e6f742076616c696400000000000000000000000081525060200191505060405180910390fd5b612d00826126f6565b151515612d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f6b656e20616c72656164792065786973747300000000000000000000000081525060200191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612e0e600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613151565b818373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b60606000821415612f03576040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061300f565b600082905060005b600082141515612f31578080600101915050600a82811515612f2957fe5b049150612f0b565b6060816040519080825280601f01601f191660200182016040528015612f665781602001600182028038833980820191505090505b50905060006001830390505b60008614151561300757600a86811515612f8857fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515612fc357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86811515612fff57fe5b049550612f72565b819450505050505b919050565b606061305383836020604051908101604052806000815250602060405190810160405280600081525060206040519081016040528060008152506131f2565b905092915050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561312b5760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6131466001826000015461316790919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60008282111515156131e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f19166020018201604052801561324e5781602001600182028038833980820191505090505b509050606081905060008090506000809050600090505b885181101561331857888181518110151561327c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156132db57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613265565b600090505b87518110156133d057878181518110151561333457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561339357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061331d565b600090505b86518110156134885786818151811015156133ec57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561344b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506133d5565b600090505b85518110156135405785818151811015156134a457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561350357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061348d565b600090505b84518110156135f857848181518110151561355c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156135bb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613545565b82995050505050505050505095945050505050565b604080519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061367e57805160ff19168380011785556136ac565b828001600101855582156136ac579182015b828111156136ab578251825591602001919060010190613690565b5b5090506136b991906136e9565b5090565b8154818355818111156136e4578183600052602060002091820191016136e391906136e9565b5b505050565b61370b91905b808211156137075760008160009055506001016136ef565b5090565b9056fe4f776e65722061646472657373206973207468652073616d6520617320746865207472616e7366657220746f2061646472657373546f20617070726f7665206d7573742062652065697468657220636f6e7472616374206f776e6572206f7220617070726f7665642062792074686520746f6b656e206f776e657266726f6d2061646472657373206973206e6f7420746865206f776e6572206f662074686520746f6b656e436f6e7472616374204f776e65722073686f756c64206265207468652063616c6c6572a165627a7a72305820db9e4674590e757ba5ddd40e20a7ecf54acfb30f06580b73c3c51c866043ea7f0029",
  635.   "sourceMap": "437:1749:3:-;;;524:117;8:9:-1;5:2;;;30:1;27;20:12;5:2;524:117:3;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;524:117:3;;;;;;;;;;;;;;;;20916:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;782:10;773:6;;:19;;;;;;;;;;;;;;;;;;808:30;831:6;;;;;;;;;;;808:30;;;;;;;;;;;;;;;;;;;;;;2400:5;2390:7;;:15;;;;;;;;;;;;;;;;;;3382:40;2963:10;3401:20;;3382:18;;;:40;;;:::i;:::-;5713;5583:10;5732:20;;5713:18;;;:40;;;:::i;:::-;13463:51;13056:10;13482:31;;13463:18;;;:51;;;:::i;:::-;21067:4;21059:5;:12;;;;;;;;;;;;:::i;:::-;;21092:6;21082:7;:16;;;;;;;;;;;;:::i;:::-;;21125:12;21109:13;:28;;;;;;;;;;;;:::i;:::-;;21150:49;20718:10;21169:29;;21150:18;;;:49;;;:::i;:::-;20916:291;;;617:15:3;589:8;;:44;;;;;;;;;;;;;;;;;;524:117;437:1749;;3745:161:0;3836:10;3821:25;;:11;:25;;;;;3813:34;;;;;;;;3894:4;3858:20;:33;3879:11;3858:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;3745:161;:::o;437:1749:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  636.   "deployedSourceMap": "437:1749:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:1749:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3526:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3526:135:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2035:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2035:230:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;21297:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21297:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7069:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7069:170:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6336:725;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6336:725:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14246:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8240:184;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8240:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15167:129:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15167:129:2;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15167:129:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15167:129:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15167:129:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15167:129:2;;;;;;;;;;;;;;;:::i;:::-;;483:32:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13903:185:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13903:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15304:174:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15304:174:2;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15304:174:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15304:174:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15304:174:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15304:174:2;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15304:174:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15304:174:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15304:174:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15304:174:2;;;;;;;;;;;;;;;:::i;:::-;;23190:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23190:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8432:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8432:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14687:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14687:151:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6095:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6095:165:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5769:318;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5769:318:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1185:265:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1185:265:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;554:78:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21390:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21390:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7539:217;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7539:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8574:214;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8574:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8574:214:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8574:214:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8574:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8574:214:0;;;;;;;;;;;;;;;:::i;:::-;;21595:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21595:154:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21595:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:511:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1672:511:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1672:511:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1672:511:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1672:511:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1672:511:3;;;;;;;;;;;;;;:::i;:::-;;21487:100:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21487:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8085:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8085:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1271:318;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1271:318:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3526:135;3596:4;3620:20;:33;3641:11;3620:33;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:40;;3526:135;;;:::o;2035:230::-;1010:6;;;;;;;;;;;996:20;;:10;:20;;;988:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:13;2098:7;;:23;;;;;;;;;;;;;;;;;;2135:13;2132:126;;;2170:18;2177:10;2170:18;;;;;;;;;;;;;;;;;;;;;;2132:126;;;2226:20;2235:10;2226:20;;;;;;;;;;;;;;;;;;;;;;2132:126;2035:230;:::o;21297:84::-;21335:13;21368:5;21361:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21297:84;:::o;7069:170::-;7128:7;7207:15;:24;7223:7;7207:24;;;;;;;;;;;;;;;;;;;;;7200:31;;7069:170;;;:::o;6336:725::-;6480:13;6496:16;6504:7;6496;:16::i;:::-;6480:32;;6540:2;6531:11;;:5;:11;;;;6523:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6739:5;6725:19;;:10;:19;;;:58;;;;6748:35;6765:5;6772:10;6748:16;:35::i;:::-;6725:58;6717:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6961:2;6934:15;:24;6950:7;6934:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7043:7;7039:2;7018:33;;7027:10;7018:33;;;;;;;;;;;;6336:725;;;:::o;14246:96::-;14290:7;14317:10;:17;;;;14310:24;;14246:96;:::o;8240:184::-;8331:39;8350:10;8362:7;8331:18;:39::i;:::-;8323:48;;;;;;;;8384:32;8398:4;8404:2;8408:7;8384:13;:32::i;:::-;8240:184;;;:::o;15167:129:2:-;15248:40;15259:5;15266:7;15285:1;15275:12;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;15275:12:2;;;;15248:10;:40::i;:::-;15167:129;;:::o;483:32:3:-;;;;;;;;;;;;;:::o;13903:185:0:-;13983:7;14019:16;14029:5;14019:9;:16::i;:::-;14011:5;:24;14003:33;;;;;;;;14054:12;:19;14067:5;14054:19;;;;;;;;;;;;;;;14074:5;14054:26;;;;;;;;;;;;;;;;;;14047:33;;13903:185;;;;:::o;15304:174:2:-;;;;:::o;23190:173:0:-;23255:4;1010:6;;;;;;;;;;;996:20;;:10;:20;;;988:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23272:24;23284:2;23288:7;23272:11;:24::i;:::-;23307:26;23325:7;23307:17;:26::i;:::-;23351:4;23344:11;;23190:173;;;;:::o;8432:134::-;8519:39;8536:4;8542:2;8546:7;8519:39;;;;;;;;;;;;;:16;:39::i;:::-;8432:134;;;:::o;14687:151::-;14745:7;14781:13;:11;:13::i;:::-;14773:5;:21;14765:30;;;;;;;;14813:10;14824:5;14813:17;;;;;;;;;;;;;;;;;;14806:24;;14687:151;;;:::o;6095:165::-;6150:7;6232:11;:20;6244:7;6232:20;;;;;;;;;;;;;;;;;;;;;6225:27;;6095:165;;;:::o;5769:318::-;5853:7;5837:5;4038:1;4022:18;;:4;:18;;;;4014:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6045:34;:17;:24;6063:5;6045:24;;;;;;;;;;;;;;;:32;:34::i;:::-;6038:41;;5769:318;;;;:::o;1185:265:3:-;1265:21;;:::i;:::-;1289:38;;;;;;;;;1308:8;1289:38;;;;1322:3;1289:38;;;;;1265:62;;1338:9;1353:5;1338:21;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1338:21:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1393:5;1370:15;:20;1386:3;1370:20;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1414;1428:8;1438:3;1414:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:265;;;;:::o;554:78:0:-;591:7;618:6;;;;;;;;;;;611:13;;554:78;:::o;21390:88::-;21430:13;21463:7;21456:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21390:88;:::o;7539:217::-;7625:10;7619:16;;:2;:16;;;;7611:25;;;;;;;;7684:8;7647:18;:30;7666:10;7647:30;;;;;;;;;;;;;;;:34;7678:2;7647:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;7735:2;7708:40;;7723:10;7708:40;;;7739:8;7708:40;;;;;;;;;;;;;;;;;;;;;;7539:217;;:::o;8574:214::-;8681:31;8694:4;8700:2;8704:7;8681:12;:31::i;:::-;8731:48;8754:4;8760:2;8764:7;8773:5;8731:22;:48::i;:::-;8723:57;;;;;;;;8574:214;;;;:::o;21595:154::-;21653:13;21687:16;21695:7;21687;:16::i;:::-;21679:25;;;;;;;;21722:10;:19;21733:7;21722:19;;;;;;;;;;;21715:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21595:154;;;:::o;1672:511:3:-;1880:11;1921:1;1924;1927;1930:5;1904:32;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1904:32:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1904:32:3;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1904:32:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1904:32:3;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1904:32:3;;;1894:43;;;;;;1880:57;;1991:1;1956:37;;:15;:20;1972:3;1956:20;;;;;;;;;;;:23;;;;;;;;;;;;:37;;;1948:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:8;;;;;;;;;;;:17;;;2056:1;2059;2062;2065:5;2038:33;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2038:33:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2038:33:3;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2038:33:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2038:33:3;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2038:33:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2038:33:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2038:33:3;;;;;;;;;;;;;;;;2030:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:31;2120:3;2125:8;2135:3;2108:11;:31::i;:::-;2150:25;2161:3;2166:8;2150:10;:25::i;:::-;;1672:511;;;;;;;:::o;21487:100:0:-;21533:13;21566;21559:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21487:100;:::o;8085:147::-;8165:4;8189:18;:25;8208:5;8189:25;;;;;;;;;;;;;;;:35;8215:8;8189:35;;;;;;;;;;;;;;;;;;;;;;;;;8182:42;;8085:147;;;;:::o;1271:318::-;1010:6;;;;;;;;;;;996:20;;:10;:20;;;988:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:8;4038:1;4022:18;;:4;:18;;;;4014:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1525:8;1516:6;;:17;;;;;;;;;;;;;;;;;;1549:32;1572:8;1549:32;;;;;;;;;;;;;;;;;;;;;;1067:1;1271:318;:::o;9513:249::-;9598:4;9615:13;9631:16;9639:7;9631;:16::i;:::-;9615:32;;9677:5;9666:16;;:7;:16;;;:51;;;;9710:7;9686:31;;:20;9698:7;9686:11;:20::i;:::-;:31;;;9666:51;:87;;;;9721:32;9738:5;9745:7;9721:16;:32::i;:::-;9666:87;9658:96;;;9513:249;;;;:::o;15222:245::-;15308:38;15328:4;15334:2;15338:7;15308:19;:38::i;:::-;15359:47;15392:4;15398:7;15359:32;:47::i;:::-;15419:40;15447:2;15451:7;15419:27;:40::i;:::-;15222:245;;;:::o;15730:202::-;15794:24;15806:2;15810:7;15794:11;:24::i;:::-;15831:40;15859:2;15863:7;15831:27;:40::i;:::-;15884;15916:7;15884:31;:40::i;:::-;15730:202;;:::o;22235:189::-;22298:16;22306:7;22298;:16::i;:::-;22290:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22373:43;22383:13;22373:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22398:17;22407:7;22398:8;:17::i;:::-;22373:9;:43::i;:::-;22351:10;:19;22362:7;22351:19;;;;;;;;;;;:65;;;;;;;;;;;;:::i;:::-;;22235:189;:::o;1063:112:5:-;1128:7;1154;:14;;;1147:21;;1063:112;;;:::o;11869:356:0:-;11991:4;12018:15;:2;:13;;;:15::i;:::-;12017:16;12013:60;;;12057:4;12050:11;;;;12013:60;12085:13;12117:2;12101:36;;;12138:10;12150:4;12156:7;12165:5;12101:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12101:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12101:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12101:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12101:70:0;;;;;;;;;;;;;;;;12085:86;;4699:10;12200:16;;12190:26;;;:6;:26;;;;12182:35;;;11869:356;;;;;;;:::o;8989:155::-;9046:4;9063:13;9079:11;:20;9091:7;9079:20;;;;;;;;;;;;;;;;;;;;;9063:36;;9134:1;9117:19;;:5;:19;;;;9110:26;;;8989:155;;;:::o;10609:721::-;10706:2;4038:1;4022:18;;:4;:18;;;;4014:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10810:16;10818:7;10810;:16::i;:::-;10802:24;;:4;:24;;;10794:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11014:23;11029:7;11014:14;:23::i;:::-;11125:35;:17;:23;11143:4;11125:23;;;;;;;;;;;;;;;:33;:35::i;:::-;11171:33;:17;:21;11189:2;11171:21;;;;;;;;;;;;;;;:31;:33::i;:::-;11238:2;11215:11;:20;11227:7;11215:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11314:7;11310:2;11295:27;;11304:4;11295:27;;;;;;;;;;;;10609:721;;;;:::o;17746:1148::-;18012:22;18037:32;18067:1;18037:12;:18;18050:4;18037:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;18012:57;;18080:18;18101:17;:26;18119:7;18101:26;;;;;;;;;;;;18080:47;;18248:14;18234:10;:28;;18230:328;;;18279:19;18301:12;:18;18314:4;18301:18;;;;;;;;;;;;;;;18320:14;18301:34;;;;;;;;;;;;;;;;;;18279:56;;18385:11;18352:12;:18;18365:4;18352:18;;;;;;;;;;;;;;;18371:10;18352:30;;;;;;;;;;;;;;;;;:44;;;;18502:10;18469:17;:30;18487:11;18469:30;;;;;;;;;;;:43;;;;18230:328;;18647:12;:18;18660:4;18647:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;17746:1148;;;;:::o;16570:186::-;16684:12;:16;16697:2;16684:16;;;;;;;;;;;;;;;:23;;;;16655:17;:26;16673:7;16655:26;;;;;;;;;;;:52;;;;16718:12;:16;16731:2;16718:16;;;;;;;;;;;;;;;16740:7;16718:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16718:30:0;;;;;;;;;;;;;;;;;;;;;;16570:186;;:::o;9923:483::-;9998:2;4038:1;4022:18;;:4;:18;;;;4014:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10108:16;10116:7;10108;:16::i;:::-;10107:17;10099:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10264:2;10241:11;:20;10253:7;10241:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10277:33;:17;:21;10295:2;10277:21;;;;;;;;;;;;;;;:31;:33::i;:::-;10390:7;10386:2;10365:33;;10382:1;10365:33;;;;;;;;;;;;9923:483;;;:::o;16957:164::-;17061:10;:17;;;;17034:15;:24;17050:7;17034:24;;;;;;;;;;;:44;;;;17089:10;17105:7;17089:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;17089:24:0;;;;;;;;;;;;;;;;;;;;;;16957:164;:::o;44316:482:2:-;44366:27;44416:1;44410:2;:7;44406:50;;;44434:10;;;;;;;;;;;;;;;;;;;;;;44406:50;44466:6;44475:2;44466:11;;44488:8;44507:69;44519:1;44514;:6;;44507:69;;;44537:5;;;;;;;44562:2;44557:7;;;;;;;;;;;44507:69;;;44586:17;44616:3;44606:14;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;44606:14:2;;;;44586:34;;44631:6;44646:1;44640:3;:7;44631:16;;44658:103;44671:1;44665:2;:7;;44658:103;;;44722:2;44717;:7;;;;;;;;44712:2;:12;44701:25;;44689:4;44694:3;;;;;;;44689:9;;;;;;;;;;;;;;:37;;;;;;;;;;;44747:2;44741:8;;;;;;;;;;;44658:103;;;44785:4;44771:19;;;;;;44316:482;;;;:::o;40659:168::-;40737:33;40790:29;40800:2;40804;40790:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;:29::i;:::-;40783:36;;40659:168;;;;:::o;542:413:8:-;602:4;805:12;914:7;902:20;894:28;;947:1;940:4;:8;933:15;;;542:413;;;:::o;12309:175:0:-;12409:1;12373:38;;:15;:24;12389:7;12373:24;;;;;;;;;;;;;;;;;;;;;:38;;;;12369:108;;;12463:1;12428:15;:24;12444:7;12428:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12369:108;12309:175;:::o;1276:108:5:-;1356:21;1375:1;1356:7;:14;;;:18;;:21;;;;:::i;:::-;1339:7;:14;;:38;;;;1276:108;:::o;1181:89::-;1262:1;1244:7;:14;;;:19;;;;;;;;;;;1181:89;:::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;1426:1;1422;:5;1410:17;;1445:1;1438:8;;;1274:179;;;;:::o;41241:1046:2:-;41373:33;41419:16;41444:2;41419:28;;41458:16;41483:2;41458:28;;41497:16;41522:2;41497:28;;41536:16;41561:2;41536:28;;41575:16;41600:2;41575:28;;41614:19;41699:3;:10;41686:3;:10;41673:3;:10;41660:3;:10;41647:3;:10;:23;:36;:49;:62;41636:74;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;41636:74:2;;;;41614:96;;41721:19;41749:5;41721:34;;41766:6;41775:1;41766:10;;41787:6;41796:1;41787:10;;41817:1;41813:5;;41808:80;41824:3;:10;41820:1;:14;41808:80;;;41870:3;41874:1;41870:6;;;;;;;;;;;;;;;;;;;;41856;41863:3;;;;;;41856:11;;;;;;;;;;;;;;:20;;;;;;;;;;;41836:3;;;;;;;41808:80;;;41907:1;41903:5;;41898:80;41914:3;:10;41910:1;:14;41898:80;;;41960:3;41964:1;41960:6;;;;;;;;;;;;;;;;;;;;41946;41953:3;;;;;;41946:11;;;;;;;;;;;;;;:20;;;;;;;;;;;41926:3;;;;;;;41898:80;;;41997:1;41993:5;;41988:80;42004:3;:10;42000:1;:14;41988:80;;;42050:3;42054:1;42050:6;;;;;;;;;;;;;;;;;;;;42036;42043:3;;;;;;42036:11;;;;;;;;;;;;;;:20;;;;;;;;;;;42016:3;;;;;;;41988:80;;;42087:1;42083:5;;42078:80;42094:3;:10;42090:1;:14;42078:80;;;42140:3;42144:1;42140:6;;;;;;;;;;;;;;;;;;;;42126;42133:3;;;;;;42126:11;;;;;;;;;;;;;;:20;;;;;;;;;;;42106:3;;;;;;;42078:80;;;42177:1;42173:5;;42168:80;42184:3;:10;42180:1;:14;42168:80;;;42230:3;42234:1;42230:6;;;;;;;;;;;;;;;;;;;;42216;42223:3;;;;;;42216:11;;;;;;;;;;;;;;:20;;;;;;;;;;;42196:3;;;;;;;42168:80;;;42272:6;42258:21;;;;;;;;;;;41241:1046;;;;;;;:::o;437:1749:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  637.   "source": "pragma solidity >=0.4.21 <0.6.0;\r\n\r\nimport \"./ERC721Mintable.sol\";\r\nimport \"./Verifier.sol\";\r\nimport \"../../node_modules/openzeppelin-solidity/contracts/utils/Address.sol\";\r\n\r\n// TODO define a contract call to the zokrates generated solidity contract <Verifier> or <renamedVerifier>\r\n\r\ncontract ZokratesVerifier is Verifier {\r\n\r\n}\r\n\r\n// TODO define another contract named SolnSquareVerifier that inherits from your ERC721Mintable class\r\ncontract SolnSquareVerifier is REToken {\r\n    ZokratesVerifier public verifier;\r\n\r\n    constructor(address verifierAddress) REToken() public {\r\n        verifier = ZokratesVerifier(verifierAddress);\r\n    }\r\n\r\n// TODO define a solutions struct that can hold an index & an address\r\n    struct Solution {\r\n        uint tokenId;\r\n        address to;\r\n    }\r\n\r\n// TODO define an array of the above struct\r\n    Solution[] solutions;\r\n\r\n// TODO define a mapping to store unique solutions submitted\r\n    mapping(bytes32 => Solution) private uniqueSolutions;\r\n\r\n// TODO Create an event to emit when a solution is added\r\n    event SolutionAdded(uint tokenId, address to);\r\n\r\n// TODO Create a function to add the solutions to the array and emit the event\r\n    function addSolution(address _to, uint _tokenId, bytes32 key) public {\r\n        Solution memory _soln = Solution({tokenId: _tokenId, to: _to});\r\n        solutions.push(_soln);\r\n        uniqueSolutions[key] = _soln;\r\n        emit SolutionAdded(_tokenId, _to);\r\n    }\r\n\r\n\r\n// TODO Create a function to mint new NFT only after the solution has been verified\r\n//  - make sure the solution is unique (has not been used before)\r\n//  - make sure you handle metadata as well as tokenSuplly\r\n    function mintToken(address _to,\r\n            uint _tokenId,\r\n            uint[2] memory a,\r\n            uint[2][2] memory b,\r\n            uint[2] memory c,\r\n            uint[2] memory input) public{\r\n        bytes32 key = keccak256(abi.encodePacked(a, b, c, input));\r\n        require(uniqueSolutions[key].to == address(0), \"Solution is been used\");\r\n        require(verifier.verifyTx(a, b, c, input), \"Solution is not valid\");\r\n        addSolution(_to, _tokenId, key);\r\n        super.mint(_to, _tokenId);\r\n    }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
  638.   "sourcePath": "D:/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/SolnSquareVerifier.sol",
  639.   "ast": {
  640.     "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/SolnSquareVerifier.sol",
  641.     "exportedSymbols": {
  642.       "SolnSquareVerifier": [
  643.         7604
  644.       ],
  645.       "ZokratesVerifier": [
  646.         7459
  647.       ]
  648.     },
  649.     "id": 7605,
  650.     "nodeType": "SourceUnit",
  651.     "nodes": [
  652.       {
  653.         "id": 7453,
  654.         "literals": [
  655.           "solidity",
  656.           ">=",
  657.           "0.4",
  658.           ".21",
  659.           "<",
  660.           "0.6",
  661.           ".0"
  662.         ],
  663.         "nodeType": "PragmaDirective",
  664.         "src": "0:32:3"
  665.       },
  666.       {
  667.         "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/ERC721Mintable.sol",
  668.         "file": "./ERC721Mintable.sol",
  669.         "id": 7454,
  670.         "nodeType": "ImportDirective",
  671.         "scope": 7605,
  672.         "sourceUnit": 1127,
  673.         "src": "36:30:3",
  674.         "symbolAliases": [],
  675.         "unitAlias": ""
  676.       },
  677.       {
  678.         "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/Verifier.sol",
  679.         "file": "./Verifier.sol",
  680.         "id": 7455,
  681.         "nodeType": "ImportDirective",
  682.         "scope": 7605,
  683.         "sourceUnit": 10163,
  684.         "src": "68:24:3",
  685.         "symbolAliases": [],
  686.         "unitAlias": ""
  687.       },
  688.       {
  689.         "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/node_modules/openzeppelin-solidity/contracts/utils/Address.sol",
  690.         "file": "../../node_modules/openzeppelin-solidity/contracts/utils/Address.sol",
  691.         "id": 7456,
  692.         "nodeType": "ImportDirective",
  693.         "scope": 7605,
  694.         "sourceUnit": 10380,
  695.         "src": "94:78:3",
  696.         "symbolAliases": [],
  697.         "unitAlias": ""
  698.       },
  699.       {
  700.         "baseContracts": [
  701.           {
  702.             "arguments": null,
  703.             "baseName": {
  704.               "contractScope": null,
  705.               "id": 7457,
  706.               "name": "Verifier",
  707.               "nodeType": "UserDefinedTypeName",
  708.               "referencedDeclaration": 10162,
  709.               "src": "315:8:3",
  710.               "typeDescriptions": {
  711.                 "typeIdentifier": "t_contract$_Verifier_$10162",
  712.                 "typeString": "contract Verifier"
  713.               }
  714.             },
  715.             "id": 7458,
  716.             "nodeType": "InheritanceSpecifier",
  717.             "src": "315:8:3"
  718.           }
  719.         ],
  720.         "contractDependencies": [
  721.           10162
  722.         ],
  723.         "contractKind": "contract",
  724.         "documentation": null,
  725.         "fullyImplemented": true,
  726.         "id": 7459,
  727.         "linearizedBaseContracts": [
  728.           7459,
  729.           10162
  730.         ],
  731.         "name": "ZokratesVerifier",
  732.         "nodeType": "ContractDefinition",
  733.         "nodes": [],
  734.         "scope": 7605,
  735.         "src": "286:44:3"
  736.       },
  737.       {
  738.         "baseContracts": [
  739.           {
  740.             "arguments": null,
  741.             "baseName": {
  742.               "contractScope": null,
  743.               "id": 7460,
  744.               "name": "REToken",
  745.               "nodeType": "UserDefinedTypeName",
  746.               "referencedDeclaration": 1126,
  747.               "src": "468:7:3",
  748.               "typeDescriptions": {
  749.                 "typeIdentifier": "t_contract$_REToken_$1126",
  750.                 "typeString": "contract REToken"
  751.               }
  752.             },
  753.             "id": 7461,
  754.             "nodeType": "InheritanceSpecifier",
  755.             "src": "468:7:3"
  756.           }
  757.         ],
  758.         "contractDependencies": [
  759.           685,
  760.           1093,
  761.           1126,
  762.           192,
  763.           983,
  764.           146,
  765.           80,
  766.           7451
  767.         ],
  768.         "contractKind": "contract",
  769.         "documentation": null,
  770.         "fullyImplemented": true,
  771.         "id": 7604,
  772.         "linearizedBaseContracts": [
  773.           7604,
  774.           1126,
  775.           1093,
  776.           7451,
  777.           983,
  778.           685,
  779.           192,
  780.           146,
  781.           80
  782.         ],
  783.         "name": "SolnSquareVerifier",
  784.         "nodeType": "ContractDefinition",
  785.         "nodes": [
  786.           {
  787.             "constant": false,
  788.             "id": 7463,
  789.             "name": "verifier",
  790.             "nodeType": "VariableDeclaration",
  791.             "scope": 7604,
  792.             "src": "483:32:3",
  793.             "stateVariable": true,
  794.             "storageLocation": "default",
  795.             "typeDescriptions": {
  796.               "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  797.               "typeString": "contract ZokratesVerifier"
  798.             },
  799.             "typeName": {
  800.               "contractScope": null,
  801.               "id": 7462,
  802.               "name": "ZokratesVerifier",
  803.               "nodeType": "UserDefinedTypeName",
  804.               "referencedDeclaration": 7459,
  805.               "src": "483:16:3",
  806.               "typeDescriptions": {
  807.                 "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  808.                 "typeString": "contract ZokratesVerifier"
  809.               }
  810.             },
  811.             "value": null,
  812.             "visibility": "public"
  813.           },
  814.           {
  815.             "body": {
  816.               "id": 7476,
  817.               "nodeType": "Block",
  818.               "src": "578:63:3",
  819.               "statements": [
  820.                 {
  821.                   "expression": {
  822.                     "argumentTypes": null,
  823.                     "id": 7474,
  824.                     "isConstant": false,
  825.                     "isLValue": false,
  826.                     "isPure": false,
  827.                     "lValueRequested": false,
  828.                     "leftHandSide": {
  829.                       "argumentTypes": null,
  830.                       "id": 7470,
  831.                       "name": "verifier",
  832.                       "nodeType": "Identifier",
  833.                       "overloadedDeclarations": [],
  834.                       "referencedDeclaration": 7463,
  835.                       "src": "589:8:3",
  836.                       "typeDescriptions": {
  837.                         "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  838.                         "typeString": "contract ZokratesVerifier"
  839.                       }
  840.                     },
  841.                     "nodeType": "Assignment",
  842.                     "operator": "=",
  843.                     "rightHandSide": {
  844.                       "argumentTypes": null,
  845.                       "arguments": [
  846.                         {
  847.                           "argumentTypes": null,
  848.                           "id": 7472,
  849.                           "name": "verifierAddress",
  850.                           "nodeType": "Identifier",
  851.                           "overloadedDeclarations": [],
  852.                           "referencedDeclaration": 7465,
  853.                           "src": "617:15:3",
  854.                           "typeDescriptions": {
  855.                             "typeIdentifier": "t_address",
  856.                             "typeString": "address"
  857.                           }
  858.                         }
  859.                       ],
  860.                       "expression": {
  861.                         "argumentTypes": [
  862.                           {
  863.                             "typeIdentifier": "t_address",
  864.                             "typeString": "address"
  865.                           }
  866.                         ],
  867.                         "id": 7471,
  868.                         "name": "ZokratesVerifier",
  869.                         "nodeType": "Identifier",
  870.                         "overloadedDeclarations": [],
  871.                         "referencedDeclaration": 7459,
  872.                         "src": "600:16:3",
  873.                         "typeDescriptions": {
  874.                           "typeIdentifier": "t_type$_t_contract$_ZokratesVerifier_$7459_$",
  875.                           "typeString": "type(contract ZokratesVerifier)"
  876.                         }
  877.                       },
  878.                       "id": 7473,
  879.                       "isConstant": false,
  880.                       "isLValue": false,
  881.                       "isPure": false,
  882.                       "kind": "typeConversion",
  883.                       "lValueRequested": false,
  884.                       "names": [],
  885.                       "nodeType": "FunctionCall",
  886.                       "src": "600:33:3",
  887.                       "typeDescriptions": {
  888.                         "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  889.                         "typeString": "contract ZokratesVerifier"
  890.                       }
  891.                     },
  892.                     "src": "589:44:3",
  893.                     "typeDescriptions": {
  894.                       "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  895.                       "typeString": "contract ZokratesVerifier"
  896.                     }
  897.                   },
  898.                   "id": 7475,
  899.                   "nodeType": "ExpressionStatement",
  900.                   "src": "589:44:3"
  901.                 }
  902.               ]
  903.             },
  904.             "documentation": null,
  905.             "id": 7477,
  906.             "implemented": true,
  907.             "kind": "constructor",
  908.             "modifiers": [
  909.               {
  910.                 "arguments": [],
  911.                 "id": 7468,
  912.                 "modifierName": {
  913.                   "argumentTypes": null,
  914.                   "id": 7467,
  915.                   "name": "REToken",
  916.                   "nodeType": "Identifier",
  917.                   "overloadedDeclarations": [],
  918.                   "referencedDeclaration": 1126,
  919.                   "src": "561:7:3",
  920.                   "typeDescriptions": {
  921.                     "typeIdentifier": "t_type$_t_contract$_REToken_$1126_$",
  922.                     "typeString": "type(contract REToken)"
  923.                   }
  924.                 },
  925.                 "nodeType": "ModifierInvocation",
  926.                 "src": "561:9:3"
  927.               }
  928.             ],
  929.             "name": "",
  930.             "nodeType": "FunctionDefinition",
  931.             "parameters": {
  932.               "id": 7466,
  933.               "nodeType": "ParameterList",
  934.               "parameters": [
  935.                 {
  936.                   "constant": false,
  937.                   "id": 7465,
  938.                   "name": "verifierAddress",
  939.                   "nodeType": "VariableDeclaration",
  940.                   "scope": 7477,
  941.                   "src": "536:23:3",
  942.                   "stateVariable": false,
  943.                   "storageLocation": "default",
  944.                   "typeDescriptions": {
  945.                     "typeIdentifier": "t_address",
  946.                     "typeString": "address"
  947.                   },
  948.                   "typeName": {
  949.                     "id": 7464,
  950.                     "name": "address",
  951.                     "nodeType": "ElementaryTypeName",
  952.                     "src": "536:7:3",
  953.                     "stateMutability": "nonpayable",
  954.                     "typeDescriptions": {
  955.                       "typeIdentifier": "t_address",
  956.                       "typeString": "address"
  957.                     }
  958.                   },
  959.                   "value": null,
  960.                   "visibility": "internal"
  961.                 }
  962.               ],
  963.               "src": "535:25:3"
  964.             },
  965.             "returnParameters": {
  966.               "id": 7469,
  967.               "nodeType": "ParameterList",
  968.               "parameters": [],
  969.               "src": "578:0:3"
  970.             },
  971.             "scope": 7604,
  972.             "src": "524:117:3",
  973.             "stateMutability": "nonpayable",
  974.             "superFunction": null,
  975.             "visibility": "public"
  976.           },
  977.           {
  978.             "canonicalName": "SolnSquareVerifier.Solution",
  979.             "id": 7482,
  980.             "members": [
  981.               {
  982.                 "constant": false,
  983.                 "id": 7479,
  984.                 "name": "tokenId",
  985.                 "nodeType": "VariableDeclaration",
  986.                 "scope": 7482,
  987.                 "src": "747:12:3",
  988.                 "stateVariable": false,
  989.                 "storageLocation": "default",
  990.                 "typeDescriptions": {
  991.                   "typeIdentifier": "t_uint256",
  992.                   "typeString": "uint256"
  993.                 },
  994.                 "typeName": {
  995.                   "id": 7478,
  996.                   "name": "uint",
  997.                   "nodeType": "ElementaryTypeName",
  998.                   "src": "747:4:3",
  999.                   "typeDescriptions": {
  1000.                     "typeIdentifier": "t_uint256",
  1001.                     "typeString": "uint256"
  1002.                   }
  1003.                 },
  1004.                 "value": null,
  1005.                 "visibility": "internal"
  1006.               },
  1007.               {
  1008.                 "constant": false,
  1009.                 "id": 7481,
  1010.                 "name": "to",
  1011.                 "nodeType": "VariableDeclaration",
  1012.                 "scope": 7482,
  1013.                 "src": "770:10:3",
  1014.                 "stateVariable": false,
  1015.                 "storageLocation": "default",
  1016.                 "typeDescriptions": {
  1017.                   "typeIdentifier": "t_address",
  1018.                   "typeString": "address"
  1019.                 },
  1020.                 "typeName": {
  1021.                   "id": 7480,
  1022.                   "name": "address",
  1023.                   "nodeType": "ElementaryTypeName",
  1024.                   "src": "770:7:3",
  1025.                   "stateMutability": "nonpayable",
  1026.                   "typeDescriptions": {
  1027.                     "typeIdentifier": "t_address",
  1028.                     "typeString": "address"
  1029.                   }
  1030.                 },
  1031.                 "value": null,
  1032.                 "visibility": "internal"
  1033.               }
  1034.             ],
  1035.             "name": "Solution",
  1036.             "nodeType": "StructDefinition",
  1037.             "scope": 7604,
  1038.             "src": "720:68:3",
  1039.             "visibility": "public"
  1040.           },
  1041.           {
  1042.             "constant": false,
  1043.             "id": 7485,
  1044.             "name": "solutions",
  1045.             "nodeType": "VariableDeclaration",
  1046.             "scope": 7604,
  1047.             "src": "841:20:3",
  1048.             "stateVariable": true,
  1049.             "storageLocation": "default",
  1050.             "typeDescriptions": {
  1051.               "typeIdentifier": "t_array$_t_struct$_Solution_$7482_storage_$dyn_storage",
  1052.               "typeString": "struct SolnSquareVerifier.Solution[]"
  1053.             },
  1054.             "typeName": {
  1055.               "baseType": {
  1056.                 "contractScope": null,
  1057.                 "id": 7483,
  1058.                 "name": "Solution",
  1059.                 "nodeType": "UserDefinedTypeName",
  1060.                 "referencedDeclaration": 7482,
  1061.                 "src": "841:8:3",
  1062.                 "typeDescriptions": {
  1063.                   "typeIdentifier": "t_struct$_Solution_$7482_storage_ptr",
  1064.                   "typeString": "struct SolnSquareVerifier.Solution"
  1065.                 }
  1066.               },
  1067.               "id": 7484,
  1068.               "length": null,
  1069.               "nodeType": "ArrayTypeName",
  1070.               "src": "841:10:3",
  1071.               "typeDescriptions": {
  1072.                 "typeIdentifier": "t_array$_t_struct$_Solution_$7482_storage_$dyn_storage_ptr",
  1073.                 "typeString": "struct SolnSquareVerifier.Solution[]"
  1074.               }
  1075.             },
  1076.             "value": null,
  1077.             "visibility": "internal"
  1078.           },
  1079.           {
  1080.             "constant": false,
  1081.             "id": 7489,
  1082.             "name": "uniqueSolutions",
  1083.             "nodeType": "VariableDeclaration",
  1084.             "scope": 7604,
  1085.             "src": "932:52:3",
  1086.             "stateVariable": true,
  1087.             "storageLocation": "default",
  1088.             "typeDescriptions": {
  1089.               "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  1090.               "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution)"
  1091.             },
  1092.             "typeName": {
  1093.               "id": 7488,
  1094.               "keyType": {
  1095.                 "id": 7486,
  1096.                 "name": "bytes32",
  1097.                 "nodeType": "ElementaryTypeName",
  1098.                 "src": "940:7:3",
  1099.                 "typeDescriptions": {
  1100.                   "typeIdentifier": "t_bytes32",
  1101.                   "typeString": "bytes32"
  1102.                 }
  1103.               },
  1104.               "nodeType": "Mapping",
  1105.               "src": "932:28:3",
  1106.               "typeDescriptions": {
  1107.                 "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  1108.                 "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution)"
  1109.               },
  1110.               "valueType": {
  1111.                 "contractScope": null,
  1112.                 "id": 7487,
  1113.                 "name": "Solution",
  1114.                 "nodeType": "UserDefinedTypeName",
  1115.                 "referencedDeclaration": 7482,
  1116.                 "src": "951:8:3",
  1117.                 "typeDescriptions": {
  1118.                   "typeIdentifier": "t_struct$_Solution_$7482_storage_ptr",
  1119.                   "typeString": "struct SolnSquareVerifier.Solution"
  1120.                 }
  1121.               }
  1122.             },
  1123.             "value": null,
  1124.             "visibility": "private"
  1125.           },
  1126.           {
  1127.             "anonymous": false,
  1128.             "documentation": null,
  1129.             "id": 7495,
  1130.             "name": "SolutionAdded",
  1131.             "nodeType": "EventDefinition",
  1132.             "parameters": {
  1133.               "id": 7494,
  1134.               "nodeType": "ParameterList",
  1135.               "parameters": [
  1136.                 {
  1137.                   "constant": false,
  1138.                   "id": 7491,
  1139.                   "indexed": false,
  1140.                   "name": "tokenId",
  1141.                   "nodeType": "VariableDeclaration",
  1142.                   "scope": 7495,
  1143.                   "src": "1071:12:3",
  1144.                   "stateVariable": false,
  1145.                   "storageLocation": "default",
  1146.                   "typeDescriptions": {
  1147.                     "typeIdentifier": "t_uint256",
  1148.                     "typeString": "uint256"
  1149.                   },
  1150.                   "typeName": {
  1151.                     "id": 7490,
  1152.                     "name": "uint",
  1153.                     "nodeType": "ElementaryTypeName",
  1154.                     "src": "1071:4:3",
  1155.                     "typeDescriptions": {
  1156.                       "typeIdentifier": "t_uint256",
  1157.                       "typeString": "uint256"
  1158.                     }
  1159.                   },
  1160.                   "value": null,
  1161.                   "visibility": "internal"
  1162.                 },
  1163.                 {
  1164.                   "constant": false,
  1165.                   "id": 7493,
  1166.                   "indexed": false,
  1167.                   "name": "to",
  1168.                   "nodeType": "VariableDeclaration",
  1169.                   "scope": 7495,
  1170.                   "src": "1085:10:3",
  1171.                   "stateVariable": false,
  1172.                   "storageLocation": "default",
  1173.                   "typeDescriptions": {
  1174.                     "typeIdentifier": "t_address",
  1175.                     "typeString": "address"
  1176.                   },
  1177.                   "typeName": {
  1178.                     "id": 7492,
  1179.                     "name": "address",
  1180.                     "nodeType": "ElementaryTypeName",
  1181.                     "src": "1085:7:3",
  1182.                     "stateMutability": "nonpayable",
  1183.                     "typeDescriptions": {
  1184.                       "typeIdentifier": "t_address",
  1185.                       "typeString": "address"
  1186.                     }
  1187.                   },
  1188.                   "value": null,
  1189.                   "visibility": "internal"
  1190.                 }
  1191.               ],
  1192.               "src": "1070:26:3"
  1193.             },
  1194.             "src": "1051:46:3"
  1195.           },
  1196.           {
  1197.             "body": {
  1198.               "id": 7528,
  1199.               "nodeType": "Block",
  1200.               "src": "1254:196:3",
  1201.               "statements": [
  1202.                 {
  1203.                   "assignments": [
  1204.                     7505
  1205.                   ],
  1206.                   "declarations": [
  1207.                     {
  1208.                       "constant": false,
  1209.                       "id": 7505,
  1210.                       "name": "_soln",
  1211.                       "nodeType": "VariableDeclaration",
  1212.                       "scope": 7528,
  1213.                       "src": "1265:21:3",
  1214.                       "stateVariable": false,
  1215.                       "storageLocation": "memory",
  1216.                       "typeDescriptions": {
  1217.                         "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  1218.                         "typeString": "struct SolnSquareVerifier.Solution"
  1219.                       },
  1220.                       "typeName": {
  1221.                         "contractScope": null,
  1222.                         "id": 7504,
  1223.                         "name": "Solution",
  1224.                         "nodeType": "UserDefinedTypeName",
  1225.                         "referencedDeclaration": 7482,
  1226.                         "src": "1265:8:3",
  1227.                         "typeDescriptions": {
  1228.                           "typeIdentifier": "t_struct$_Solution_$7482_storage_ptr",
  1229.                           "typeString": "struct SolnSquareVerifier.Solution"
  1230.                         }
  1231.                       },
  1232.                       "value": null,
  1233.                       "visibility": "internal"
  1234.                     }
  1235.                   ],
  1236.                   "id": 7510,
  1237.                   "initialValue": {
  1238.                     "argumentTypes": null,
  1239.                     "arguments": [
  1240.                       {
  1241.                         "argumentTypes": null,
  1242.                         "id": 7507,
  1243.                         "name": "_tokenId",
  1244.                         "nodeType": "Identifier",
  1245.                         "overloadedDeclarations": [],
  1246.                         "referencedDeclaration": 7499,
  1247.                         "src": "1308:8:3",
  1248.                         "typeDescriptions": {
  1249.                           "typeIdentifier": "t_uint256",
  1250.                           "typeString": "uint256"
  1251.                         }
  1252.                       },
  1253.                       {
  1254.                         "argumentTypes": null,
  1255.                         "id": 7508,
  1256.                         "name": "_to",
  1257.                         "nodeType": "Identifier",
  1258.                         "overloadedDeclarations": [],
  1259.                         "referencedDeclaration": 7497,
  1260.                         "src": "1322:3:3",
  1261.                         "typeDescriptions": {
  1262.                           "typeIdentifier": "t_address",
  1263.                           "typeString": "address"
  1264.                         }
  1265.                       }
  1266.                     ],
  1267.                     "expression": {
  1268.                       "argumentTypes": null,
  1269.                       "id": 7506,
  1270.                       "name": "Solution",
  1271.                       "nodeType": "Identifier",
  1272.                       "overloadedDeclarations": [],
  1273.                       "referencedDeclaration": 7482,
  1274.                       "src": "1289:8:3",
  1275.                       "typeDescriptions": {
  1276.                         "typeIdentifier": "t_type$_t_struct$_Solution_$7482_storage_ptr_$",
  1277.                         "typeString": "type(struct SolnSquareVerifier.Solution storage pointer)"
  1278.                       }
  1279.                     },
  1280.                     "id": 7509,
  1281.                     "isConstant": false,
  1282.                     "isLValue": false,
  1283.                     "isPure": false,
  1284.                     "kind": "structConstructorCall",
  1285.                     "lValueRequested": false,
  1286.                     "names": [
  1287.                       "tokenId",
  1288.                       "to"
  1289.                     ],
  1290.                     "nodeType": "FunctionCall",
  1291.                     "src": "1289:38:3",
  1292.                     "typeDescriptions": {
  1293.                       "typeIdentifier": "t_struct$_Solution_$7482_memory",
  1294.                       "typeString": "struct SolnSquareVerifier.Solution memory"
  1295.                     }
  1296.                   },
  1297.                   "nodeType": "VariableDeclarationStatement",
  1298.                   "src": "1265:62:3"
  1299.                 },
  1300.                 {
  1301.                   "expression": {
  1302.                     "argumentTypes": null,
  1303.                     "arguments": [
  1304.                       {
  1305.                         "argumentTypes": null,
  1306.                         "id": 7514,
  1307.                         "name": "_soln",
  1308.                         "nodeType": "Identifier",
  1309.                         "overloadedDeclarations": [],
  1310.                         "referencedDeclaration": 7505,
  1311.                         "src": "1353:5:3",
  1312.                         "typeDescriptions": {
  1313.                           "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  1314.                           "typeString": "struct SolnSquareVerifier.Solution memory"
  1315.                         }
  1316.                       }
  1317.                     ],
  1318.                     "expression": {
  1319.                       "argumentTypes": [
  1320.                         {
  1321.                           "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  1322.                           "typeString": "struct SolnSquareVerifier.Solution memory"
  1323.                         }
  1324.                       ],
  1325.                       "expression": {
  1326.                         "argumentTypes": null,
  1327.                         "id": 7511,
  1328.                         "name": "solutions",
  1329.                         "nodeType": "Identifier",
  1330.                         "overloadedDeclarations": [],
  1331.                         "referencedDeclaration": 7485,
  1332.                         "src": "1338:9:3",
  1333.                         "typeDescriptions": {
  1334.                           "typeIdentifier": "t_array$_t_struct$_Solution_$7482_storage_$dyn_storage",
  1335.                           "typeString": "struct SolnSquareVerifier.Solution storage ref[] storage ref"
  1336.                         }
  1337.                       },
  1338.                       "id": 7513,
  1339.                       "isConstant": false,
  1340.                       "isLValue": false,
  1341.                       "isPure": false,
  1342.                       "lValueRequested": false,
  1343.                       "memberName": "push",
  1344.                       "nodeType": "MemberAccess",
  1345.                       "referencedDeclaration": null,
  1346.                       "src": "1338:14:3",
  1347.                       "typeDescriptions": {
  1348.                         "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Solution_$7482_storage_$returns$_t_uint256_$",
  1349.                         "typeString": "function (struct SolnSquareVerifier.Solution storage ref) returns (uint256)"
  1350.                       }
  1351.                     },
  1352.                     "id": 7515,
  1353.                     "isConstant": false,
  1354.                     "isLValue": false,
  1355.                     "isPure": false,
  1356.                     "kind": "functionCall",
  1357.                     "lValueRequested": false,
  1358.                     "names": [],
  1359.                     "nodeType": "FunctionCall",
  1360.                     "src": "1338:21:3",
  1361.                     "typeDescriptions": {
  1362.                       "typeIdentifier": "t_uint256",
  1363.                       "typeString": "uint256"
  1364.                     }
  1365.                   },
  1366.                   "id": 7516,
  1367.                   "nodeType": "ExpressionStatement",
  1368.                   "src": "1338:21:3"
  1369.                 },
  1370.                 {
  1371.                   "expression": {
  1372.                     "argumentTypes": null,
  1373.                     "id": 7521,
  1374.                     "isConstant": false,
  1375.                     "isLValue": false,
  1376.                     "isPure": false,
  1377.                     "lValueRequested": false,
  1378.                     "leftHandSide": {
  1379.                       "argumentTypes": null,
  1380.                       "baseExpression": {
  1381.                         "argumentTypes": null,
  1382.                         "id": 7517,
  1383.                         "name": "uniqueSolutions",
  1384.                         "nodeType": "Identifier",
  1385.                         "overloadedDeclarations": [],
  1386.                         "referencedDeclaration": 7489,
  1387.                         "src": "1370:15:3",
  1388.                         "typeDescriptions": {
  1389.                           "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  1390.                           "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution storage ref)"
  1391.                         }
  1392.                       },
  1393.                       "id": 7519,
  1394.                       "indexExpression": {
  1395.                         "argumentTypes": null,
  1396.                         "id": 7518,
  1397.                         "name": "key",
  1398.                         "nodeType": "Identifier",
  1399.                         "overloadedDeclarations": [],
  1400.                         "referencedDeclaration": 7501,
  1401.                         "src": "1386:3:3",
  1402.                         "typeDescriptions": {
  1403.                           "typeIdentifier": "t_bytes32",
  1404.                           "typeString": "bytes32"
  1405.                         }
  1406.                       },
  1407.                       "isConstant": false,
  1408.                       "isLValue": true,
  1409.                       "isPure": false,
  1410.                       "lValueRequested": true,
  1411.                       "nodeType": "IndexAccess",
  1412.                       "src": "1370:20:3",
  1413.                       "typeDescriptions": {
  1414.                         "typeIdentifier": "t_struct$_Solution_$7482_storage",
  1415.                         "typeString": "struct SolnSquareVerifier.Solution storage ref"
  1416.                       }
  1417.                     },
  1418.                     "nodeType": "Assignment",
  1419.                     "operator": "=",
  1420.                     "rightHandSide": {
  1421.                       "argumentTypes": null,
  1422.                       "id": 7520,
  1423.                       "name": "_soln",
  1424.                       "nodeType": "Identifier",
  1425.                       "overloadedDeclarations": [],
  1426.                       "referencedDeclaration": 7505,
  1427.                       "src": "1393:5:3",
  1428.                       "typeDescriptions": {
  1429.                         "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  1430.                         "typeString": "struct SolnSquareVerifier.Solution memory"
  1431.                       }
  1432.                     },
  1433.                     "src": "1370:28:3",
  1434.                     "typeDescriptions": {
  1435.                       "typeIdentifier": "t_struct$_Solution_$7482_storage",
  1436.                       "typeString": "struct SolnSquareVerifier.Solution storage ref"
  1437.                     }
  1438.                   },
  1439.                   "id": 7522,
  1440.                   "nodeType": "ExpressionStatement",
  1441.                   "src": "1370:28:3"
  1442.                 },
  1443.                 {
  1444.                   "eventCall": {
  1445.                     "argumentTypes": null,
  1446.                     "arguments": [
  1447.                       {
  1448.                         "argumentTypes": null,
  1449.                         "id": 7524,
  1450.                         "name": "_tokenId",
  1451.                         "nodeType": "Identifier",
  1452.                         "overloadedDeclarations": [],
  1453.                         "referencedDeclaration": 7499,
  1454.                         "src": "1428:8:3",
  1455.                         "typeDescriptions": {
  1456.                           "typeIdentifier": "t_uint256",
  1457.                           "typeString": "uint256"
  1458.                         }
  1459.                       },
  1460.                       {
  1461.                         "argumentTypes": null,
  1462.                         "id": 7525,
  1463.                         "name": "_to",
  1464.                         "nodeType": "Identifier",
  1465.                         "overloadedDeclarations": [],
  1466.                         "referencedDeclaration": 7497,
  1467.                         "src": "1438:3:3",
  1468.                         "typeDescriptions": {
  1469.                           "typeIdentifier": "t_address",
  1470.                           "typeString": "address"
  1471.                         }
  1472.                       }
  1473.                     ],
  1474.                     "expression": {
  1475.                       "argumentTypes": [
  1476.                         {
  1477.                           "typeIdentifier": "t_uint256",
  1478.                           "typeString": "uint256"
  1479.                         },
  1480.                         {
  1481.                           "typeIdentifier": "t_address",
  1482.                           "typeString": "address"
  1483.                         }
  1484.                       ],
  1485.                       "id": 7523,
  1486.                       "name": "SolutionAdded",
  1487.                       "nodeType": "Identifier",
  1488.                       "overloadedDeclarations": [],
  1489.                       "referencedDeclaration": 7495,
  1490.                       "src": "1414:13:3",
  1491.                       "typeDescriptions": {
  1492.                         "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
  1493.                         "typeString": "function (uint256,address)"
  1494.                       }
  1495.                     },
  1496.                     "id": 7526,
  1497.                     "isConstant": false,
  1498.                     "isLValue": false,
  1499.                     "isPure": false,
  1500.                     "kind": "functionCall",
  1501.                     "lValueRequested": false,
  1502.                     "names": [],
  1503.                     "nodeType": "FunctionCall",
  1504.                     "src": "1414:28:3",
  1505.                     "typeDescriptions": {
  1506.                       "typeIdentifier": "t_tuple$__$",
  1507.                       "typeString": "tuple()"
  1508.                     }
  1509.                   },
  1510.                   "id": 7527,
  1511.                   "nodeType": "EmitStatement",
  1512.                   "src": "1409:33:3"
  1513.                 }
  1514.               ]
  1515.             },
  1516.             "documentation": null,
  1517.             "id": 7529,
  1518.             "implemented": true,
  1519.             "kind": "function",
  1520.             "modifiers": [],
  1521.             "name": "addSolution",
  1522.             "nodeType": "FunctionDefinition",
  1523.             "parameters": {
  1524.               "id": 7502,
  1525.               "nodeType": "ParameterList",
  1526.               "parameters": [
  1527.                 {
  1528.                   "constant": false,
  1529.                   "id": 7497,
  1530.                   "name": "_to",
  1531.                   "nodeType": "VariableDeclaration",
  1532.                   "scope": 7529,
  1533.                   "src": "1206:11:3",
  1534.                   "stateVariable": false,
  1535.                   "storageLocation": "default",
  1536.                   "typeDescriptions": {
  1537.                     "typeIdentifier": "t_address",
  1538.                     "typeString": "address"
  1539.                   },
  1540.                   "typeName": {
  1541.                     "id": 7496,
  1542.                     "name": "address",
  1543.                     "nodeType": "ElementaryTypeName",
  1544.                     "src": "1206:7:3",
  1545.                     "stateMutability": "nonpayable",
  1546.                     "typeDescriptions": {
  1547.                       "typeIdentifier": "t_address",
  1548.                       "typeString": "address"
  1549.                     }
  1550.                   },
  1551.                   "value": null,
  1552.                   "visibility": "internal"
  1553.                 },
  1554.                 {
  1555.                   "constant": false,
  1556.                   "id": 7499,
  1557.                   "name": "_tokenId",
  1558.                   "nodeType": "VariableDeclaration",
  1559.                   "scope": 7529,
  1560.                   "src": "1219:13:3",
  1561.                   "stateVariable": false,
  1562.                   "storageLocation": "default",
  1563.                   "typeDescriptions": {
  1564.                     "typeIdentifier": "t_uint256",
  1565.                     "typeString": "uint256"
  1566.                   },
  1567.                   "typeName": {
  1568.                     "id": 7498,
  1569.                     "name": "uint",
  1570.                     "nodeType": "ElementaryTypeName",
  1571.                     "src": "1219:4:3",
  1572.                     "typeDescriptions": {
  1573.                       "typeIdentifier": "t_uint256",
  1574.                       "typeString": "uint256"
  1575.                     }
  1576.                   },
  1577.                   "value": null,
  1578.                   "visibility": "internal"
  1579.                 },
  1580.                 {
  1581.                   "constant": false,
  1582.                   "id": 7501,
  1583.                   "name": "key",
  1584.                   "nodeType": "VariableDeclaration",
  1585.                   "scope": 7529,
  1586.                   "src": "1234:11:3",
  1587.                   "stateVariable": false,
  1588.                   "storageLocation": "default",
  1589.                   "typeDescriptions": {
  1590.                     "typeIdentifier": "t_bytes32",
  1591.                     "typeString": "bytes32"
  1592.                   },
  1593.                   "typeName": {
  1594.                     "id": 7500,
  1595.                     "name": "bytes32",
  1596.                     "nodeType": "ElementaryTypeName",
  1597.                     "src": "1234:7:3",
  1598.                     "typeDescriptions": {
  1599.                       "typeIdentifier": "t_bytes32",
  1600.                       "typeString": "bytes32"
  1601.                     }
  1602.                   },
  1603.                   "value": null,
  1604.                   "visibility": "internal"
  1605.                 }
  1606.               ],
  1607.               "src": "1205:41:3"
  1608.             },
  1609.             "returnParameters": {
  1610.               "id": 7503,
  1611.               "nodeType": "ParameterList",
  1612.               "parameters": [],
  1613.               "src": "1254:0:3"
  1614.             },
  1615.             "scope": 7604,
  1616.             "src": "1185:265:3",
  1617.             "stateMutability": "nonpayable",
  1618.             "superFunction": null,
  1619.             "visibility": "public"
  1620.           },
  1621.           {
  1622.             "body": {
  1623.               "id": 7602,
  1624.               "nodeType": "Block",
  1625.               "src": "1869:314:3",
  1626.               "statements": [
  1627.                 {
  1628.                   "assignments": [
  1629.                     7555
  1630.                   ],
  1631.                   "declarations": [
  1632.                     {
  1633.                       "constant": false,
  1634.                       "id": 7555,
  1635.                       "name": "key",
  1636.                       "nodeType": "VariableDeclaration",
  1637.                       "scope": 7602,
  1638.                       "src": "1880:11:3",
  1639.                       "stateVariable": false,
  1640.                       "storageLocation": "default",
  1641.                       "typeDescriptions": {
  1642.                         "typeIdentifier": "t_bytes32",
  1643.                         "typeString": "bytes32"
  1644.                       },
  1645.                       "typeName": {
  1646.                         "id": 7554,
  1647.                         "name": "bytes32",
  1648.                         "nodeType": "ElementaryTypeName",
  1649.                         "src": "1880:7:3",
  1650.                         "typeDescriptions": {
  1651.                           "typeIdentifier": "t_bytes32",
  1652.                           "typeString": "bytes32"
  1653.                         }
  1654.                       },
  1655.                       "value": null,
  1656.                       "visibility": "internal"
  1657.                     }
  1658.                   ],
  1659.                   "id": 7565,
  1660.                   "initialValue": {
  1661.                     "argumentTypes": null,
  1662.                     "arguments": [
  1663.                       {
  1664.                         "argumentTypes": null,
  1665.                         "arguments": [
  1666.                           {
  1667.                             "argumentTypes": null,
  1668.                             "id": 7559,
  1669.                             "name": "a",
  1670.                             "nodeType": "Identifier",
  1671.                             "overloadedDeclarations": [],
  1672.                             "referencedDeclaration": 7537,
  1673.                             "src": "1921:1:3",
  1674.                             "typeDescriptions": {
  1675.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  1676.                               "typeString": "uint256[2] memory"
  1677.                             }
  1678.                           },
  1679.                           {
  1680.                             "argumentTypes": null,
  1681.                             "id": 7560,
  1682.                             "name": "b",
  1683.                             "nodeType": "Identifier",
  1684.                             "overloadedDeclarations": [],
  1685.                             "referencedDeclaration": 7543,
  1686.                             "src": "1924:1:3",
  1687.                             "typeDescriptions": {
  1688.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  1689.                               "typeString": "uint256[2] memory[2] memory"
  1690.                             }
  1691.                           },
  1692.                           {
  1693.                             "argumentTypes": null,
  1694.                             "id": 7561,
  1695.                             "name": "c",
  1696.                             "nodeType": "Identifier",
  1697.                             "overloadedDeclarations": [],
  1698.                             "referencedDeclaration": 7547,
  1699.                             "src": "1927:1:3",
  1700.                             "typeDescriptions": {
  1701.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  1702.                               "typeString": "uint256[2] memory"
  1703.                             }
  1704.                           },
  1705.                           {
  1706.                             "argumentTypes": null,
  1707.                             "id": 7562,
  1708.                             "name": "input",
  1709.                             "nodeType": "Identifier",
  1710.                             "overloadedDeclarations": [],
  1711.                             "referencedDeclaration": 7551,
  1712.                             "src": "1930:5:3",
  1713.                             "typeDescriptions": {
  1714.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  1715.                               "typeString": "uint256[2] memory"
  1716.                             }
  1717.                           }
  1718.                         ],
  1719.                         "expression": {
  1720.                           "argumentTypes": [
  1721.                             {
  1722.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  1723.                               "typeString": "uint256[2] memory"
  1724.                             },
  1725.                             {
  1726.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  1727.                               "typeString": "uint256[2] memory[2] memory"
  1728.                             },
  1729.                             {
  1730.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  1731.                               "typeString": "uint256[2] memory"
  1732.                             },
  1733.                             {
  1734.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  1735.                               "typeString": "uint256[2] memory"
  1736.                             }
  1737.                           ],
  1738.                           "expression": {
  1739.                             "argumentTypes": null,
  1740.                             "id": 7557,
  1741.                             "name": "abi",
  1742.                             "nodeType": "Identifier",
  1743.                             "overloadedDeclarations": [],
  1744.                             "referencedDeclaration": 10381,
  1745.                             "src": "1904:3:3",
  1746.                             "typeDescriptions": {
  1747.                               "typeIdentifier": "t_magic_abi",
  1748.                               "typeString": "abi"
  1749.                             }
  1750.                           },
  1751.                           "id": 7558,
  1752.                           "isConstant": false,
  1753.                           "isLValue": false,
  1754.                           "isPure": true,
  1755.                           "lValueRequested": false,
  1756.                           "memberName": "encodePacked",
  1757.                           "nodeType": "MemberAccess",
  1758.                           "referencedDeclaration": null,
  1759.                           "src": "1904:16:3",
  1760.                           "typeDescriptions": {
  1761.                             "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
  1762.                             "typeString": "function () pure returns (bytes memory)"
  1763.                           }
  1764.                         },
  1765.                         "id": 7563,
  1766.                         "isConstant": false,
  1767.                         "isLValue": false,
  1768.                         "isPure": false,
  1769.                         "kind": "functionCall",
  1770.                         "lValueRequested": false,
  1771.                         "names": [],
  1772.                         "nodeType": "FunctionCall",
  1773.                         "src": "1904:32:3",
  1774.                         "typeDescriptions": {
  1775.                           "typeIdentifier": "t_bytes_memory_ptr",
  1776.                           "typeString": "bytes memory"
  1777.                         }
  1778.                       }
  1779.                     ],
  1780.                     "expression": {
  1781.                       "argumentTypes": [
  1782.                         {
  1783.                           "typeIdentifier": "t_bytes_memory_ptr",
  1784.                           "typeString": "bytes memory"
  1785.                         }
  1786.                       ],
  1787.                       "id": 7556,
  1788.                       "name": "keccak256",
  1789.                       "nodeType": "Identifier",
  1790.                       "overloadedDeclarations": [],
  1791.                       "referencedDeclaration": 10388,
  1792.                       "src": "1894:9:3",
  1793.                       "typeDescriptions": {
  1794.                         "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
  1795.                         "typeString": "function (bytes memory) pure returns (bytes32)"
  1796.                       }
  1797.                     },
  1798.                     "id": 7564,
  1799.                     "isConstant": false,
  1800.                     "isLValue": false,
  1801.                     "isPure": false,
  1802.                     "kind": "functionCall",
  1803.                     "lValueRequested": false,
  1804.                     "names": [],
  1805.                     "nodeType": "FunctionCall",
  1806.                     "src": "1894:43:3",
  1807.                     "typeDescriptions": {
  1808.                       "typeIdentifier": "t_bytes32",
  1809.                       "typeString": "bytes32"
  1810.                     }
  1811.                   },
  1812.                   "nodeType": "VariableDeclarationStatement",
  1813.                   "src": "1880:57:3"
  1814.                 },
  1815.                 {
  1816.                   "expression": {
  1817.                     "argumentTypes": null,
  1818.                     "arguments": [
  1819.                       {
  1820.                         "argumentTypes": null,
  1821.                         "commonType": {
  1822.                           "typeIdentifier": "t_address",
  1823.                           "typeString": "address"
  1824.                         },
  1825.                         "id": 7574,
  1826.                         "isConstant": false,
  1827.                         "isLValue": false,
  1828.                         "isPure": false,
  1829.                         "lValueRequested": false,
  1830.                         "leftExpression": {
  1831.                           "argumentTypes": null,
  1832.                           "expression": {
  1833.                             "argumentTypes": null,
  1834.                             "baseExpression": {
  1835.                               "argumentTypes": null,
  1836.                               "id": 7567,
  1837.                               "name": "uniqueSolutions",
  1838.                               "nodeType": "Identifier",
  1839.                               "overloadedDeclarations": [],
  1840.                               "referencedDeclaration": 7489,
  1841.                               "src": "1956:15:3",
  1842.                               "typeDescriptions": {
  1843.                                 "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  1844.                                 "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution storage ref)"
  1845.                               }
  1846.                             },
  1847.                             "id": 7569,
  1848.                             "indexExpression": {
  1849.                               "argumentTypes": null,
  1850.                               "id": 7568,
  1851.                               "name": "key",
  1852.                               "nodeType": "Identifier",
  1853.                               "overloadedDeclarations": [],
  1854.                               "referencedDeclaration": 7555,
  1855.                               "src": "1972:3:3",
  1856.                               "typeDescriptions": {
  1857.                                 "typeIdentifier": "t_bytes32",
  1858.                                 "typeString": "bytes32"
  1859.                               }
  1860.                             },
  1861.                             "isConstant": false,
  1862.                             "isLValue": true,
  1863.                             "isPure": false,
  1864.                             "lValueRequested": false,
  1865.                             "nodeType": "IndexAccess",
  1866.                             "src": "1956:20:3",
  1867.                             "typeDescriptions": {
  1868.                               "typeIdentifier": "t_struct$_Solution_$7482_storage",
  1869.                               "typeString": "struct SolnSquareVerifier.Solution storage ref"
  1870.                             }
  1871.                           },
  1872.                           "id": 7570,
  1873.                           "isConstant": false,
  1874.                           "isLValue": true,
  1875.                           "isPure": false,
  1876.                           "lValueRequested": false,
  1877.                           "memberName": "to",
  1878.                           "nodeType": "MemberAccess",
  1879.                           "referencedDeclaration": 7481,
  1880.                           "src": "1956:23:3",
  1881.                           "typeDescriptions": {
  1882.                             "typeIdentifier": "t_address",
  1883.                             "typeString": "address"
  1884.                           }
  1885.                         },
  1886.                         "nodeType": "BinaryOperation",
  1887.                         "operator": "==",
  1888.                         "rightExpression": {
  1889.                           "argumentTypes": null,
  1890.                           "arguments": [
  1891.                             {
  1892.                               "argumentTypes": null,
  1893.                               "hexValue": "30",
  1894.                               "id": 7572,
  1895.                               "isConstant": false,
  1896.                               "isLValue": false,
  1897.                               "isPure": true,
  1898.                               "kind": "number",
  1899.                               "lValueRequested": false,
  1900.                               "nodeType": "Literal",
  1901.                               "src": "1991:1:3",
  1902.                               "subdenomination": null,
  1903.                               "typeDescriptions": {
  1904.                                 "typeIdentifier": "t_rational_0_by_1",
  1905.                                 "typeString": "int_const 0"
  1906.                               },
  1907.                               "value": "0"
  1908.                             }
  1909.                           ],
  1910.                           "expression": {
  1911.                             "argumentTypes": [
  1912.                               {
  1913.                                 "typeIdentifier": "t_rational_0_by_1",
  1914.                                 "typeString": "int_const 0"
  1915.                               }
  1916.                             ],
  1917.                             "id": 7571,
  1918.                             "isConstant": false,
  1919.                             "isLValue": false,
  1920.                             "isPure": true,
  1921.                             "lValueRequested": false,
  1922.                             "nodeType": "ElementaryTypeNameExpression",
  1923.                             "src": "1983:7:3",
  1924.                             "typeDescriptions": {
  1925.                               "typeIdentifier": "t_type$_t_address_$",
  1926.                               "typeString": "type(address)"
  1927.                             },
  1928.                             "typeName": "address"
  1929.                           },
  1930.                           "id": 7573,
  1931.                           "isConstant": false,
  1932.                           "isLValue": false,
  1933.                           "isPure": true,
  1934.                           "kind": "typeConversion",
  1935.                           "lValueRequested": false,
  1936.                           "names": [],
  1937.                           "nodeType": "FunctionCall",
  1938.                           "src": "1983:10:3",
  1939.                           "typeDescriptions": {
  1940.                             "typeIdentifier": "t_address_payable",
  1941.                             "typeString": "address payable"
  1942.                           }
  1943.                         },
  1944.                         "src": "1956:37:3",
  1945.                         "typeDescriptions": {
  1946.                           "typeIdentifier": "t_bool",
  1947.                           "typeString": "bool"
  1948.                         }
  1949.                       },
  1950.                       {
  1951.                         "argumentTypes": null,
  1952.                         "hexValue": "536f6c7574696f6e206973206265656e2075736564",
  1953.                         "id": 7575,
  1954.                         "isConstant": false,
  1955.                         "isLValue": false,
  1956.                         "isPure": true,
  1957.                         "kind": "string",
  1958.                         "lValueRequested": false,
  1959.                         "nodeType": "Literal",
  1960.                         "src": "1995:23:3",
  1961.                         "subdenomination": null,
  1962.                         "typeDescriptions": {
  1963.                           "typeIdentifier": "t_stringliteral_94d5e603e119b9b0c2db935018bd85cc195599ba59e996423cf1f8c872629d16",
  1964.                           "typeString": "literal_string \"Solution is been used\""
  1965.                         },
  1966.                         "value": "Solution is been used"
  1967.                       }
  1968.                     ],
  1969.                     "expression": {
  1970.                       "argumentTypes": [
  1971.                         {
  1972.                           "typeIdentifier": "t_bool",
  1973.                           "typeString": "bool"
  1974.                         },
  1975.                         {
  1976.                           "typeIdentifier": "t_stringliteral_94d5e603e119b9b0c2db935018bd85cc195599ba59e996423cf1f8c872629d16",
  1977.                           "typeString": "literal_string \"Solution is been used\""
  1978.                         }
  1979.                       ],
  1980.                       "id": 7566,
  1981.                       "name": "require",
  1982.                       "nodeType": "Identifier",
  1983.                       "overloadedDeclarations": [
  1984.                         10397,
  1985.                         10398
  1986.                       ],
  1987.                       "referencedDeclaration": 10398,
  1988.                       "src": "1948:7:3",
  1989.                       "typeDescriptions": {
  1990.                         "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  1991.                         "typeString": "function (bool,string memory) pure"
  1992.                       }
  1993.                     },
  1994.                     "id": 7576,
  1995.                     "isConstant": false,
  1996.                     "isLValue": false,
  1997.                     "isPure": false,
  1998.                     "kind": "functionCall",
  1999.                     "lValueRequested": false,
  2000.                     "names": [],
  2001.                     "nodeType": "FunctionCall",
  2002.                     "src": "1948:71:3",
  2003.                     "typeDescriptions": {
  2004.                       "typeIdentifier": "t_tuple$__$",
  2005.                       "typeString": "tuple()"
  2006.                     }
  2007.                   },
  2008.                   "id": 7577,
  2009.                   "nodeType": "ExpressionStatement",
  2010.                   "src": "1948:71:3"
  2011.                 },
  2012.                 {
  2013.                   "expression": {
  2014.                     "argumentTypes": null,
  2015.                     "arguments": [
  2016.                       {
  2017.                         "argumentTypes": null,
  2018.                         "arguments": [
  2019.                           {
  2020.                             "argumentTypes": null,
  2021.                             "id": 7581,
  2022.                             "name": "a",
  2023.                             "nodeType": "Identifier",
  2024.                             "overloadedDeclarations": [],
  2025.                             "referencedDeclaration": 7537,
  2026.                             "src": "2056:1:3",
  2027.                             "typeDescriptions": {
  2028.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2029.                               "typeString": "uint256[2] memory"
  2030.                             }
  2031.                           },
  2032.                           {
  2033.                             "argumentTypes": null,
  2034.                             "id": 7582,
  2035.                             "name": "b",
  2036.                             "nodeType": "Identifier",
  2037.                             "overloadedDeclarations": [],
  2038.                             "referencedDeclaration": 7543,
  2039.                             "src": "2059:1:3",
  2040.                             "typeDescriptions": {
  2041.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  2042.                               "typeString": "uint256[2] memory[2] memory"
  2043.                             }
  2044.                           },
  2045.                           {
  2046.                             "argumentTypes": null,
  2047.                             "id": 7583,
  2048.                             "name": "c",
  2049.                             "nodeType": "Identifier",
  2050.                             "overloadedDeclarations": [],
  2051.                             "referencedDeclaration": 7547,
  2052.                             "src": "2062:1:3",
  2053.                             "typeDescriptions": {
  2054.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2055.                               "typeString": "uint256[2] memory"
  2056.                             }
  2057.                           },
  2058.                           {
  2059.                             "argumentTypes": null,
  2060.                             "id": 7584,
  2061.                             "name": "input",
  2062.                             "nodeType": "Identifier",
  2063.                             "overloadedDeclarations": [],
  2064.                             "referencedDeclaration": 7551,
  2065.                             "src": "2065:5:3",
  2066.                             "typeDescriptions": {
  2067.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2068.                               "typeString": "uint256[2] memory"
  2069.                             }
  2070.                           }
  2071.                         ],
  2072.                         "expression": {
  2073.                           "argumentTypes": [
  2074.                             {
  2075.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2076.                               "typeString": "uint256[2] memory"
  2077.                             },
  2078.                             {
  2079.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  2080.                               "typeString": "uint256[2] memory[2] memory"
  2081.                             },
  2082.                             {
  2083.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2084.                               "typeString": "uint256[2] memory"
  2085.                             },
  2086.                             {
  2087.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2088.                               "typeString": "uint256[2] memory"
  2089.                             }
  2090.                           ],
  2091.                           "expression": {
  2092.                             "argumentTypes": null,
  2093.                             "id": 7579,
  2094.                             "name": "verifier",
  2095.                             "nodeType": "Identifier",
  2096.                             "overloadedDeclarations": [],
  2097.                             "referencedDeclaration": 7463,
  2098.                             "src": "2038:8:3",
  2099.                             "typeDescriptions": {
  2100.                               "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  2101.                               "typeString": "contract ZokratesVerifier"
  2102.                             }
  2103.                           },
  2104.                           "id": 7580,
  2105.                           "isConstant": false,
  2106.                           "isLValue": false,
  2107.                           "isPure": false,
  2108.                           "lValueRequested": false,
  2109.                           "memberName": "verifyTx",
  2110.                           "nodeType": "MemberAccess",
  2111.                           "referencedDeclaration": 10161,
  2112.                           "src": "2038:17:3",
  2113.                           "typeDescriptions": {
  2114.                             "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$_t_array$_t_uint256_$2_memory_ptr_$returns$_t_bool_$",
  2115.                             "typeString": "function (uint256[2] memory,uint256[2] memory[2] memory,uint256[2] memory,uint256[2] memory) external returns (bool)"
  2116.                           }
  2117.                         },
  2118.                         "id": 7585,
  2119.                         "isConstant": false,
  2120.                         "isLValue": false,
  2121.                         "isPure": false,
  2122.                         "kind": "functionCall",
  2123.                         "lValueRequested": false,
  2124.                         "names": [],
  2125.                         "nodeType": "FunctionCall",
  2126.                         "src": "2038:33:3",
  2127.                         "typeDescriptions": {
  2128.                           "typeIdentifier": "t_bool",
  2129.                           "typeString": "bool"
  2130.                         }
  2131.                       },
  2132.                       {
  2133.                         "argumentTypes": null,
  2134.                         "hexValue": "536f6c7574696f6e206973206e6f742076616c6964",
  2135.                         "id": 7586,
  2136.                         "isConstant": false,
  2137.                         "isLValue": false,
  2138.                         "isPure": true,
  2139.                         "kind": "string",
  2140.                         "lValueRequested": false,
  2141.                         "nodeType": "Literal",
  2142.                         "src": "2073:23:3",
  2143.                         "subdenomination": null,
  2144.                         "typeDescriptions": {
  2145.                           "typeIdentifier": "t_stringliteral_75fb289e3ea969d5df5e5fcaca9ec0b57cf515c3534474bf2bfb7a74b11564f9",
  2146.                           "typeString": "literal_string \"Solution is not valid\""
  2147.                         },
  2148.                         "value": "Solution is not valid"
  2149.                       }
  2150.                     ],
  2151.                     "expression": {
  2152.                       "argumentTypes": [
  2153.                         {
  2154.                           "typeIdentifier": "t_bool",
  2155.                           "typeString": "bool"
  2156.                         },
  2157.                         {
  2158.                           "typeIdentifier": "t_stringliteral_75fb289e3ea969d5df5e5fcaca9ec0b57cf515c3534474bf2bfb7a74b11564f9",
  2159.                           "typeString": "literal_string \"Solution is not valid\""
  2160.                         }
  2161.                       ],
  2162.                       "id": 7578,
  2163.                       "name": "require",
  2164.                       "nodeType": "Identifier",
  2165.                       "overloadedDeclarations": [
  2166.                         10397,
  2167.                         10398
  2168.                       ],
  2169.                       "referencedDeclaration": 10398,
  2170.                       "src": "2030:7:3",
  2171.                       "typeDescriptions": {
  2172.                         "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  2173.                         "typeString": "function (bool,string memory) pure"
  2174.                       }
  2175.                     },
  2176.                     "id": 7587,
  2177.                     "isConstant": false,
  2178.                     "isLValue": false,
  2179.                     "isPure": false,
  2180.                     "kind": "functionCall",
  2181.                     "lValueRequested": false,
  2182.                     "names": [],
  2183.                     "nodeType": "FunctionCall",
  2184.                     "src": "2030:67:3",
  2185.                     "typeDescriptions": {
  2186.                       "typeIdentifier": "t_tuple$__$",
  2187.                       "typeString": "tuple()"
  2188.                     }
  2189.                   },
  2190.                   "id": 7588,
  2191.                   "nodeType": "ExpressionStatement",
  2192.                   "src": "2030:67:3"
  2193.                 },
  2194.                 {
  2195.                   "expression": {
  2196.                     "argumentTypes": null,
  2197.                     "arguments": [
  2198.                       {
  2199.                         "argumentTypes": null,
  2200.                         "id": 7590,
  2201.                         "name": "_to",
  2202.                         "nodeType": "Identifier",
  2203.                         "overloadedDeclarations": [],
  2204.                         "referencedDeclaration": 7531,
  2205.                         "src": "2120:3:3",
  2206.                         "typeDescriptions": {
  2207.                           "typeIdentifier": "t_address",
  2208.                           "typeString": "address"
  2209.                         }
  2210.                       },
  2211.                       {
  2212.                         "argumentTypes": null,
  2213.                         "id": 7591,
  2214.                         "name": "_tokenId",
  2215.                         "nodeType": "Identifier",
  2216.                         "overloadedDeclarations": [],
  2217.                         "referencedDeclaration": 7533,
  2218.                         "src": "2125:8:3",
  2219.                         "typeDescriptions": {
  2220.                           "typeIdentifier": "t_uint256",
  2221.                           "typeString": "uint256"
  2222.                         }
  2223.                       },
  2224.                       {
  2225.                         "argumentTypes": null,
  2226.                         "id": 7592,
  2227.                         "name": "key",
  2228.                         "nodeType": "Identifier",
  2229.                         "overloadedDeclarations": [],
  2230.                         "referencedDeclaration": 7555,
  2231.                         "src": "2135:3:3",
  2232.                         "typeDescriptions": {
  2233.                           "typeIdentifier": "t_bytes32",
  2234.                           "typeString": "bytes32"
  2235.                         }
  2236.                       }
  2237.                     ],
  2238.                     "expression": {
  2239.                       "argumentTypes": [
  2240.                         {
  2241.                           "typeIdentifier": "t_address",
  2242.                           "typeString": "address"
  2243.                         },
  2244.                         {
  2245.                           "typeIdentifier": "t_uint256",
  2246.                           "typeString": "uint256"
  2247.                         },
  2248.                         {
  2249.                           "typeIdentifier": "t_bytes32",
  2250.                           "typeString": "bytes32"
  2251.                         }
  2252.                       ],
  2253.                       "id": 7589,
  2254.                       "name": "addSolution",
  2255.                       "nodeType": "Identifier",
  2256.                       "overloadedDeclarations": [],
  2257.                       "referencedDeclaration": 7529,
  2258.                       "src": "2108:11:3",
  2259.                       "typeDescriptions": {
  2260.                         "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$__$",
  2261.                         "typeString": "function (address,uint256,bytes32)"
  2262.                       }
  2263.                     },
  2264.                     "id": 7593,
  2265.                     "isConstant": false,
  2266.                     "isLValue": false,
  2267.                     "isPure": false,
  2268.                     "kind": "functionCall",
  2269.                     "lValueRequested": false,
  2270.                     "names": [],
  2271.                     "nodeType": "FunctionCall",
  2272.                     "src": "2108:31:3",
  2273.                     "typeDescriptions": {
  2274.                       "typeIdentifier": "t_tuple$__$",
  2275.                       "typeString": "tuple()"
  2276.                     }
  2277.                   },
  2278.                   "id": 7594,
  2279.                   "nodeType": "ExpressionStatement",
  2280.                   "src": "2108:31:3"
  2281.                 },
  2282.                 {
  2283.                   "expression": {
  2284.                     "argumentTypes": null,
  2285.                     "arguments": [
  2286.                       {
  2287.                         "argumentTypes": null,
  2288.                         "id": 7598,
  2289.                         "name": "_to",
  2290.                         "nodeType": "Identifier",
  2291.                         "overloadedDeclarations": [],
  2292.                         "referencedDeclaration": 7531,
  2293.                         "src": "2161:3:3",
  2294.                         "typeDescriptions": {
  2295.                           "typeIdentifier": "t_address",
  2296.                           "typeString": "address"
  2297.                         }
  2298.                       },
  2299.                       {
  2300.                         "argumentTypes": null,
  2301.                         "id": 7599,
  2302.                         "name": "_tokenId",
  2303.                         "nodeType": "Identifier",
  2304.                         "overloadedDeclarations": [],
  2305.                         "referencedDeclaration": 7533,
  2306.                         "src": "2166:8:3",
  2307.                         "typeDescriptions": {
  2308.                           "typeIdentifier": "t_uint256",
  2309.                           "typeString": "uint256"
  2310.                         }
  2311.                       }
  2312.                     ],
  2313.                     "expression": {
  2314.                       "argumentTypes": [
  2315.                         {
  2316.                           "typeIdentifier": "t_address",
  2317.                           "typeString": "address"
  2318.                         },
  2319.                         {
  2320.                           "typeIdentifier": "t_uint256",
  2321.                           "typeString": "uint256"
  2322.                         }
  2323.                       ],
  2324.                       "expression": {
  2325.                         "argumentTypes": null,
  2326.                         "id": 7595,
  2327.                         "name": "super",
  2328.                         "nodeType": "Identifier",
  2329.                         "overloadedDeclarations": [],
  2330.                         "referencedDeclaration": 10452,
  2331.                         "src": "2150:5:3",
  2332.                         "typeDescriptions": {
  2333.                           "typeIdentifier": "t_super$_SolnSquareVerifier_$7604",
  2334.                           "typeString": "contract super SolnSquareVerifier"
  2335.                         }
  2336.                       },
  2337.                       "id": 7597,
  2338.                       "isConstant": false,
  2339.                       "isLValue": false,
  2340.                       "isPure": false,
  2341.                       "lValueRequested": false,
  2342.                       "memberName": "mint",
  2343.                       "nodeType": "MemberAccess",
  2344.                       "referencedDeclaration": 1125,
  2345.                       "src": "2150:10:3",
  2346.                       "typeDescriptions": {
  2347.                         "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
  2348.                         "typeString": "function (address,uint256) returns (bool)"
  2349.                       }
  2350.                     },
  2351.                     "id": 7600,
  2352.                     "isConstant": false,
  2353.                     "isLValue": false,
  2354.                     "isPure": false,
  2355.                     "kind": "functionCall",
  2356.                     "lValueRequested": false,
  2357.                     "names": [],
  2358.                     "nodeType": "FunctionCall",
  2359.                     "src": "2150:25:3",
  2360.                     "typeDescriptions": {
  2361.                       "typeIdentifier": "t_bool",
  2362.                       "typeString": "bool"
  2363.                     }
  2364.                   },
  2365.                   "id": 7601,
  2366.                   "nodeType": "ExpressionStatement",
  2367.                   "src": "2150:25:3"
  2368.                 }
  2369.               ]
  2370.             },
  2371.             "documentation": null,
  2372.             "id": 7603,
  2373.             "implemented": true,
  2374.             "kind": "function",
  2375.             "modifiers": [],
  2376.             "name": "mintToken",
  2377.             "nodeType": "FunctionDefinition",
  2378.             "parameters": {
  2379.               "id": 7552,
  2380.               "nodeType": "ParameterList",
  2381.               "parameters": [
  2382.                 {
  2383.                   "constant": false,
  2384.                   "id": 7531,
  2385.                   "name": "_to",
  2386.                   "nodeType": "VariableDeclaration",
  2387.                   "scope": 7603,
  2388.                   "src": "1691:11:3",
  2389.                   "stateVariable": false,
  2390.                   "storageLocation": "default",
  2391.                   "typeDescriptions": {
  2392.                     "typeIdentifier": "t_address",
  2393.                     "typeString": "address"
  2394.                   },
  2395.                   "typeName": {
  2396.                     "id": 7530,
  2397.                     "name": "address",
  2398.                     "nodeType": "ElementaryTypeName",
  2399.                     "src": "1691:7:3",
  2400.                     "stateMutability": "nonpayable",
  2401.                     "typeDescriptions": {
  2402.                       "typeIdentifier": "t_address",
  2403.                       "typeString": "address"
  2404.                     }
  2405.                   },
  2406.                   "value": null,
  2407.                   "visibility": "internal"
  2408.                 },
  2409.                 {
  2410.                   "constant": false,
  2411.                   "id": 7533,
  2412.                   "name": "_tokenId",
  2413.                   "nodeType": "VariableDeclaration",
  2414.                   "scope": 7603,
  2415.                   "src": "1717:13:3",
  2416.                   "stateVariable": false,
  2417.                   "storageLocation": "default",
  2418.                   "typeDescriptions": {
  2419.                     "typeIdentifier": "t_uint256",
  2420.                     "typeString": "uint256"
  2421.                   },
  2422.                   "typeName": {
  2423.                     "id": 7532,
  2424.                     "name": "uint",
  2425.                     "nodeType": "ElementaryTypeName",
  2426.                     "src": "1717:4:3",
  2427.                     "typeDescriptions": {
  2428.                       "typeIdentifier": "t_uint256",
  2429.                       "typeString": "uint256"
  2430.                     }
  2431.                   },
  2432.                   "value": null,
  2433.                   "visibility": "internal"
  2434.                 },
  2435.                 {
  2436.                   "constant": false,
  2437.                   "id": 7537,
  2438.                   "name": "a",
  2439.                   "nodeType": "VariableDeclaration",
  2440.                   "scope": 7603,
  2441.                   "src": "1745:16:3",
  2442.                   "stateVariable": false,
  2443.                   "storageLocation": "memory",
  2444.                   "typeDescriptions": {
  2445.                     "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2446.                     "typeString": "uint256[2]"
  2447.                   },
  2448.                   "typeName": {
  2449.                     "baseType": {
  2450.                       "id": 7534,
  2451.                       "name": "uint",
  2452.                       "nodeType": "ElementaryTypeName",
  2453.                       "src": "1745:4:3",
  2454.                       "typeDescriptions": {
  2455.                         "typeIdentifier": "t_uint256",
  2456.                         "typeString": "uint256"
  2457.                       }
  2458.                     },
  2459.                     "id": 7536,
  2460.                     "length": {
  2461.                       "argumentTypes": null,
  2462.                       "hexValue": "32",
  2463.                       "id": 7535,
  2464.                       "isConstant": false,
  2465.                       "isLValue": false,
  2466.                       "isPure": false,
  2467.                       "kind": "number",
  2468.                       "lValueRequested": false,
  2469.                       "nodeType": "Literal",
  2470.                       "src": "1750:1:3",
  2471.                       "subdenomination": null,
  2472.                       "typeDescriptions": {
  2473.                         "typeIdentifier": null,
  2474.                         "typeString": null
  2475.                       },
  2476.                       "value": "2"
  2477.                     },
  2478.                     "nodeType": "ArrayTypeName",
  2479.                     "src": "1745:7:3",
  2480.                     "typeDescriptions": {
  2481.                       "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
  2482.                       "typeString": "uint256[2]"
  2483.                     }
  2484.                   },
  2485.                   "value": null,
  2486.                   "visibility": "internal"
  2487.                 },
  2488.                 {
  2489.                   "constant": false,
  2490.                   "id": 7543,
  2491.                   "name": "b",
  2492.                   "nodeType": "VariableDeclaration",
  2493.                   "scope": 7603,
  2494.                   "src": "1776:19:3",
  2495.                   "stateVariable": false,
  2496.                   "storageLocation": "memory",
  2497.                   "typeDescriptions": {
  2498.                     "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  2499.                     "typeString": "uint256[2][2]"
  2500.                   },
  2501.                   "typeName": {
  2502.                     "baseType": {
  2503.                       "baseType": {
  2504.                         "id": 7538,
  2505.                         "name": "uint",
  2506.                         "nodeType": "ElementaryTypeName",
  2507.                         "src": "1776:4:3",
  2508.                         "typeDescriptions": {
  2509.                           "typeIdentifier": "t_uint256",
  2510.                           "typeString": "uint256"
  2511.                         }
  2512.                       },
  2513.                       "id": 7540,
  2514.                       "length": {
  2515.                         "argumentTypes": null,
  2516.                         "hexValue": "32",
  2517.                         "id": 7539,
  2518.                         "isConstant": false,
  2519.                         "isLValue": false,
  2520.                         "isPure": false,
  2521.                         "kind": "number",
  2522.                         "lValueRequested": false,
  2523.                         "nodeType": "Literal",
  2524.                         "src": "1781:1:3",
  2525.                         "subdenomination": null,
  2526.                         "typeDescriptions": {
  2527.                           "typeIdentifier": null,
  2528.                           "typeString": null
  2529.                         },
  2530.                         "value": "2"
  2531.                       },
  2532.                       "nodeType": "ArrayTypeName",
  2533.                       "src": "1776:7:3",
  2534.                       "typeDescriptions": {
  2535.                         "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
  2536.                         "typeString": "uint256[2]"
  2537.                       }
  2538.                     },
  2539.                     "id": 7542,
  2540.                     "length": {
  2541.                       "argumentTypes": null,
  2542.                       "hexValue": "32",
  2543.                       "id": 7541,
  2544.                       "isConstant": false,
  2545.                       "isLValue": false,
  2546.                       "isPure": false,
  2547.                       "kind": "number",
  2548.                       "lValueRequested": false,
  2549.                       "nodeType": "Literal",
  2550.                       "src": "1784:1:3",
  2551.                       "subdenomination": null,
  2552.                       "typeDescriptions": {
  2553.                         "typeIdentifier": null,
  2554.                         "typeString": null
  2555.                       },
  2556.                       "value": "2"
  2557.                     },
  2558.                     "nodeType": "ArrayTypeName",
  2559.                     "src": "1776:10:3",
  2560.                     "typeDescriptions": {
  2561.                       "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$2_storage_ptr",
  2562.                       "typeString": "uint256[2][2]"
  2563.                     }
  2564.                   },
  2565.                   "value": null,
  2566.                   "visibility": "internal"
  2567.                 },
  2568.                 {
  2569.                   "constant": false,
  2570.                   "id": 7547,
  2571.                   "name": "c",
  2572.                   "nodeType": "VariableDeclaration",
  2573.                   "scope": 7603,
  2574.                   "src": "1810:16:3",
  2575.                   "stateVariable": false,
  2576.                   "storageLocation": "memory",
  2577.                   "typeDescriptions": {
  2578.                     "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2579.                     "typeString": "uint256[2]"
  2580.                   },
  2581.                   "typeName": {
  2582.                     "baseType": {
  2583.                       "id": 7544,
  2584.                       "name": "uint",
  2585.                       "nodeType": "ElementaryTypeName",
  2586.                       "src": "1810:4:3",
  2587.                       "typeDescriptions": {
  2588.                         "typeIdentifier": "t_uint256",
  2589.                         "typeString": "uint256"
  2590.                       }
  2591.                     },
  2592.                     "id": 7546,
  2593.                     "length": {
  2594.                       "argumentTypes": null,
  2595.                       "hexValue": "32",
  2596.                       "id": 7545,
  2597.                       "isConstant": false,
  2598.                       "isLValue": false,
  2599.                       "isPure": false,
  2600.                       "kind": "number",
  2601.                       "lValueRequested": false,
  2602.                       "nodeType": "Literal",
  2603.                       "src": "1815:1:3",
  2604.                       "subdenomination": null,
  2605.                       "typeDescriptions": {
  2606.                         "typeIdentifier": null,
  2607.                         "typeString": null
  2608.                       },
  2609.                       "value": "2"
  2610.                     },
  2611.                     "nodeType": "ArrayTypeName",
  2612.                     "src": "1810:7:3",
  2613.                     "typeDescriptions": {
  2614.                       "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
  2615.                       "typeString": "uint256[2]"
  2616.                     }
  2617.                   },
  2618.                   "value": null,
  2619.                   "visibility": "internal"
  2620.                 },
  2621.                 {
  2622.                   "constant": false,
  2623.                   "id": 7551,
  2624.                   "name": "input",
  2625.                   "nodeType": "VariableDeclaration",
  2626.                   "scope": 7603,
  2627.                   "src": "1841:20:3",
  2628.                   "stateVariable": false,
  2629.                   "storageLocation": "memory",
  2630.                   "typeDescriptions": {
  2631.                     "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  2632.                     "typeString": "uint256[2]"
  2633.                   },
  2634.                   "typeName": {
  2635.                     "baseType": {
  2636.                       "id": 7548,
  2637.                       "name": "uint",
  2638.                       "nodeType": "ElementaryTypeName",
  2639.                       "src": "1841:4:3",
  2640.                       "typeDescriptions": {
  2641.                         "typeIdentifier": "t_uint256",
  2642.                         "typeString": "uint256"
  2643.                       }
  2644.                     },
  2645.                     "id": 7550,
  2646.                     "length": {
  2647.                       "argumentTypes": null,
  2648.                       "hexValue": "32",
  2649.                       "id": 7549,
  2650.                       "isConstant": false,
  2651.                       "isLValue": false,
  2652.                       "isPure": false,
  2653.                       "kind": "number",
  2654.                       "lValueRequested": false,
  2655.                       "nodeType": "Literal",
  2656.                       "src": "1846:1:3",
  2657.                       "subdenomination": null,
  2658.                       "typeDescriptions": {
  2659.                         "typeIdentifier": null,
  2660.                         "typeString": null
  2661.                       },
  2662.                       "value": "2"
  2663.                     },
  2664.                     "nodeType": "ArrayTypeName",
  2665.                     "src": "1841:7:3",
  2666.                     "typeDescriptions": {
  2667.                       "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
  2668.                       "typeString": "uint256[2]"
  2669.                     }
  2670.                   },
  2671.                   "value": null,
  2672.                   "visibility": "internal"
  2673.                 }
  2674.               ],
  2675.               "src": "1690:172:3"
  2676.             },
  2677.             "returnParameters": {
  2678.               "id": 7553,
  2679.               "nodeType": "ParameterList",
  2680.               "parameters": [],
  2681.               "src": "1869:0:3"
  2682.             },
  2683.             "scope": 7604,
  2684.             "src": "1672:511:3",
  2685.             "stateMutability": "nonpayable",
  2686.             "superFunction": null,
  2687.             "visibility": "public"
  2688.           }
  2689.         ],
  2690.         "scope": 7605,
  2691.         "src": "437:1749:3"
  2692.       }
  2693.     ],
  2694.     "src": "0:2240:3"
  2695.   },
  2696.   "legacyAST": {
  2697.     "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/SolnSquareVerifier.sol",
  2698.     "exportedSymbols": {
  2699.       "SolnSquareVerifier": [
  2700.         7604
  2701.       ],
  2702.       "ZokratesVerifier": [
  2703.         7459
  2704.       ]
  2705.     },
  2706.     "id": 7605,
  2707.     "nodeType": "SourceUnit",
  2708.     "nodes": [
  2709.       {
  2710.         "id": 7453,
  2711.         "literals": [
  2712.           "solidity",
  2713.           ">=",
  2714.           "0.4",
  2715.           ".21",
  2716.           "<",
  2717.           "0.6",
  2718.           ".0"
  2719.         ],
  2720.         "nodeType": "PragmaDirective",
  2721.         "src": "0:32:3"
  2722.       },
  2723.       {
  2724.         "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/ERC721Mintable.sol",
  2725.         "file": "./ERC721Mintable.sol",
  2726.         "id": 7454,
  2727.         "nodeType": "ImportDirective",
  2728.         "scope": 7605,
  2729.         "sourceUnit": 1127,
  2730.         "src": "36:30:3",
  2731.         "symbolAliases": [],
  2732.         "unitAlias": ""
  2733.       },
  2734.       {
  2735.         "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/eth-contracts/contracts/Verifier.sol",
  2736.         "file": "./Verifier.sol",
  2737.         "id": 7455,
  2738.         "nodeType": "ImportDirective",
  2739.         "scope": 7605,
  2740.         "sourceUnit": 10163,
  2741.         "src": "68:24:3",
  2742.         "symbolAliases": [],
  2743.         "unitAlias": ""
  2744.       },
  2745.       {
  2746.         "absolutePath": "/D/Projects/Udacity_P7_Blockchain_Capstone/node_modules/openzeppelin-solidity/contracts/utils/Address.sol",
  2747.         "file": "../../node_modules/openzeppelin-solidity/contracts/utils/Address.sol",
  2748.         "id": 7456,
  2749.         "nodeType": "ImportDirective",
  2750.         "scope": 7605,
  2751.         "sourceUnit": 10380,
  2752.         "src": "94:78:3",
  2753.         "symbolAliases": [],
  2754.         "unitAlias": ""
  2755.       },
  2756.       {
  2757.         "baseContracts": [
  2758.           {
  2759.             "arguments": null,
  2760.             "baseName": {
  2761.               "contractScope": null,
  2762.               "id": 7457,
  2763.               "name": "Verifier",
  2764.               "nodeType": "UserDefinedTypeName",
  2765.               "referencedDeclaration": 10162,
  2766.               "src": "315:8:3",
  2767.               "typeDescriptions": {
  2768.                 "typeIdentifier": "t_contract$_Verifier_$10162",
  2769.                 "typeString": "contract Verifier"
  2770.               }
  2771.             },
  2772.             "id": 7458,
  2773.             "nodeType": "InheritanceSpecifier",
  2774.             "src": "315:8:3"
  2775.           }
  2776.         ],
  2777.         "contractDependencies": [
  2778.           10162
  2779.         ],
  2780.         "contractKind": "contract",
  2781.         "documentation": null,
  2782.         "fullyImplemented": true,
  2783.         "id": 7459,
  2784.         "linearizedBaseContracts": [
  2785.           7459,
  2786.           10162
  2787.         ],
  2788.         "name": "ZokratesVerifier",
  2789.         "nodeType": "ContractDefinition",
  2790.         "nodes": [],
  2791.         "scope": 7605,
  2792.         "src": "286:44:3"
  2793.       },
  2794.       {
  2795.         "baseContracts": [
  2796.           {
  2797.             "arguments": null,
  2798.             "baseName": {
  2799.               "contractScope": null,
  2800.               "id": 7460,
  2801.               "name": "REToken",
  2802.               "nodeType": "UserDefinedTypeName",
  2803.               "referencedDeclaration": 1126,
  2804.               "src": "468:7:3",
  2805.               "typeDescriptions": {
  2806.                 "typeIdentifier": "t_contract$_REToken_$1126",
  2807.                 "typeString": "contract REToken"
  2808.               }
  2809.             },
  2810.             "id": 7461,
  2811.             "nodeType": "InheritanceSpecifier",
  2812.             "src": "468:7:3"
  2813.           }
  2814.         ],
  2815.         "contractDependencies": [
  2816.           685,
  2817.           1093,
  2818.           1126,
  2819.           192,
  2820.           983,
  2821.           146,
  2822.           80,
  2823.           7451
  2824.         ],
  2825.         "contractKind": "contract",
  2826.         "documentation": null,
  2827.         "fullyImplemented": true,
  2828.         "id": 7604,
  2829.         "linearizedBaseContracts": [
  2830.           7604,
  2831.           1126,
  2832.           1093,
  2833.           7451,
  2834.           983,
  2835.           685,
  2836.           192,
  2837.           146,
  2838.           80
  2839.         ],
  2840.         "name": "SolnSquareVerifier",
  2841.         "nodeType": "ContractDefinition",
  2842.         "nodes": [
  2843.           {
  2844.             "constant": false,
  2845.             "id": 7463,
  2846.             "name": "verifier",
  2847.             "nodeType": "VariableDeclaration",
  2848.             "scope": 7604,
  2849.             "src": "483:32:3",
  2850.             "stateVariable": true,
  2851.             "storageLocation": "default",
  2852.             "typeDescriptions": {
  2853.               "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  2854.               "typeString": "contract ZokratesVerifier"
  2855.             },
  2856.             "typeName": {
  2857.               "contractScope": null,
  2858.               "id": 7462,
  2859.               "name": "ZokratesVerifier",
  2860.               "nodeType": "UserDefinedTypeName",
  2861.               "referencedDeclaration": 7459,
  2862.               "src": "483:16:3",
  2863.               "typeDescriptions": {
  2864.                 "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  2865.                 "typeString": "contract ZokratesVerifier"
  2866.               }
  2867.             },
  2868.             "value": null,
  2869.             "visibility": "public"
  2870.           },
  2871.           {
  2872.             "body": {
  2873.               "id": 7476,
  2874.               "nodeType": "Block",
  2875.               "src": "578:63:3",
  2876.               "statements": [
  2877.                 {
  2878.                   "expression": {
  2879.                     "argumentTypes": null,
  2880.                     "id": 7474,
  2881.                     "isConstant": false,
  2882.                     "isLValue": false,
  2883.                     "isPure": false,
  2884.                     "lValueRequested": false,
  2885.                     "leftHandSide": {
  2886.                       "argumentTypes": null,
  2887.                       "id": 7470,
  2888.                       "name": "verifier",
  2889.                       "nodeType": "Identifier",
  2890.                       "overloadedDeclarations": [],
  2891.                       "referencedDeclaration": 7463,
  2892.                       "src": "589:8:3",
  2893.                       "typeDescriptions": {
  2894.                         "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  2895.                         "typeString": "contract ZokratesVerifier"
  2896.                       }
  2897.                     },
  2898.                     "nodeType": "Assignment",
  2899.                     "operator": "=",
  2900.                     "rightHandSide": {
  2901.                       "argumentTypes": null,
  2902.                       "arguments": [
  2903.                         {
  2904.                           "argumentTypes": null,
  2905.                           "id": 7472,
  2906.                           "name": "verifierAddress",
  2907.                           "nodeType": "Identifier",
  2908.                           "overloadedDeclarations": [],
  2909.                           "referencedDeclaration": 7465,
  2910.                           "src": "617:15:3",
  2911.                           "typeDescriptions": {
  2912.                             "typeIdentifier": "t_address",
  2913.                             "typeString": "address"
  2914.                           }
  2915.                         }
  2916.                       ],
  2917.                       "expression": {
  2918.                         "argumentTypes": [
  2919.                           {
  2920.                             "typeIdentifier": "t_address",
  2921.                             "typeString": "address"
  2922.                           }
  2923.                         ],
  2924.                         "id": 7471,
  2925.                         "name": "ZokratesVerifier",
  2926.                         "nodeType": "Identifier",
  2927.                         "overloadedDeclarations": [],
  2928.                         "referencedDeclaration": 7459,
  2929.                         "src": "600:16:3",
  2930.                         "typeDescriptions": {
  2931.                           "typeIdentifier": "t_type$_t_contract$_ZokratesVerifier_$7459_$",
  2932.                           "typeString": "type(contract ZokratesVerifier)"
  2933.                         }
  2934.                       },
  2935.                       "id": 7473,
  2936.                       "isConstant": false,
  2937.                       "isLValue": false,
  2938.                       "isPure": false,
  2939.                       "kind": "typeConversion",
  2940.                       "lValueRequested": false,
  2941.                       "names": [],
  2942.                       "nodeType": "FunctionCall",
  2943.                       "src": "600:33:3",
  2944.                       "typeDescriptions": {
  2945.                         "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  2946.                         "typeString": "contract ZokratesVerifier"
  2947.                       }
  2948.                     },
  2949.                     "src": "589:44:3",
  2950.                     "typeDescriptions": {
  2951.                       "typeIdentifier": "t_contract$_ZokratesVerifier_$7459",
  2952.                       "typeString": "contract ZokratesVerifier"
  2953.                     }
  2954.                   },
  2955.                   "id": 7475,
  2956.                   "nodeType": "ExpressionStatement",
  2957.                   "src": "589:44:3"
  2958.                 }
  2959.               ]
  2960.             },
  2961.             "documentation": null,
  2962.             "id": 7477,
  2963.             "implemented": true,
  2964.             "kind": "constructor",
  2965.             "modifiers": [
  2966.               {
  2967.                 "arguments": [],
  2968.                 "id": 7468,
  2969.                 "modifierName": {
  2970.                   "argumentTypes": null,
  2971.                   "id": 7467,
  2972.                   "name": "REToken",
  2973.                   "nodeType": "Identifier",
  2974.                   "overloadedDeclarations": [],
  2975.                   "referencedDeclaration": 1126,
  2976.                   "src": "561:7:3",
  2977.                   "typeDescriptions": {
  2978.                     "typeIdentifier": "t_type$_t_contract$_REToken_$1126_$",
  2979.                     "typeString": "type(contract REToken)"
  2980.                   }
  2981.                 },
  2982.                 "nodeType": "ModifierInvocation",
  2983.                 "src": "561:9:3"
  2984.               }
  2985.             ],
  2986.             "name": "",
  2987.             "nodeType": "FunctionDefinition",
  2988.             "parameters": {
  2989.               "id": 7466,
  2990.               "nodeType": "ParameterList",
  2991.               "parameters": [
  2992.                 {
  2993.                   "constant": false,
  2994.                   "id": 7465,
  2995.                   "name": "verifierAddress",
  2996.                   "nodeType": "VariableDeclaration",
  2997.                   "scope": 7477,
  2998.                   "src": "536:23:3",
  2999.                   "stateVariable": false,
  3000.                   "storageLocation": "default",
  3001.                   "typeDescriptions": {
  3002.                     "typeIdentifier": "t_address",
  3003.                     "typeString": "address"
  3004.                   },
  3005.                   "typeName": {
  3006.                     "id": 7464,
  3007.                     "name": "address",
  3008.                     "nodeType": "ElementaryTypeName",
  3009.                     "src": "536:7:3",
  3010.                     "stateMutability": "nonpayable",
  3011.                     "typeDescriptions": {
  3012.                       "typeIdentifier": "t_address",
  3013.                       "typeString": "address"
  3014.                     }
  3015.                   },
  3016.                   "value": null,
  3017.                   "visibility": "internal"
  3018.                 }
  3019.               ],
  3020.               "src": "535:25:3"
  3021.             },
  3022.             "returnParameters": {
  3023.               "id": 7469,
  3024.               "nodeType": "ParameterList",
  3025.               "parameters": [],
  3026.               "src": "578:0:3"
  3027.             },
  3028.             "scope": 7604,
  3029.             "src": "524:117:3",
  3030.             "stateMutability": "nonpayable",
  3031.             "superFunction": null,
  3032.             "visibility": "public"
  3033.           },
  3034.           {
  3035.             "canonicalName": "SolnSquareVerifier.Solution",
  3036.             "id": 7482,
  3037.             "members": [
  3038.               {
  3039.                 "constant": false,
  3040.                 "id": 7479,
  3041.                 "name": "tokenId",
  3042.                 "nodeType": "VariableDeclaration",
  3043.                 "scope": 7482,
  3044.                 "src": "747:12:3",
  3045.                 "stateVariable": false,
  3046.                 "storageLocation": "default",
  3047.                 "typeDescriptions": {
  3048.                   "typeIdentifier": "t_uint256",
  3049.                   "typeString": "uint256"
  3050.                 },
  3051.                 "typeName": {
  3052.                   "id": 7478,
  3053.                   "name": "uint",
  3054.                   "nodeType": "ElementaryTypeName",
  3055.                   "src": "747:4:3",
  3056.                   "typeDescriptions": {
  3057.                     "typeIdentifier": "t_uint256",
  3058.                     "typeString": "uint256"
  3059.                   }
  3060.                 },
  3061.                 "value": null,
  3062.                 "visibility": "internal"
  3063.               },
  3064.               {
  3065.                 "constant": false,
  3066.                 "id": 7481,
  3067.                 "name": "to",
  3068.                 "nodeType": "VariableDeclaration",
  3069.                 "scope": 7482,
  3070.                 "src": "770:10:3",
  3071.                 "stateVariable": false,
  3072.                 "storageLocation": "default",
  3073.                 "typeDescriptions": {
  3074.                   "typeIdentifier": "t_address",
  3075.                   "typeString": "address"
  3076.                 },
  3077.                 "typeName": {
  3078.                   "id": 7480,
  3079.                   "name": "address",
  3080.                   "nodeType": "ElementaryTypeName",
  3081.                   "src": "770:7:3",
  3082.                   "stateMutability": "nonpayable",
  3083.                   "typeDescriptions": {
  3084.                     "typeIdentifier": "t_address",
  3085.                     "typeString": "address"
  3086.                   }
  3087.                 },
  3088.                 "value": null,
  3089.                 "visibility": "internal"
  3090.               }
  3091.             ],
  3092.             "name": "Solution",
  3093.             "nodeType": "StructDefinition",
  3094.             "scope": 7604,
  3095.             "src": "720:68:3",
  3096.             "visibility": "public"
  3097.           },
  3098.           {
  3099.             "constant": false,
  3100.             "id": 7485,
  3101.             "name": "solutions",
  3102.             "nodeType": "VariableDeclaration",
  3103.             "scope": 7604,
  3104.             "src": "841:20:3",
  3105.             "stateVariable": true,
  3106.             "storageLocation": "default",
  3107.             "typeDescriptions": {
  3108.               "typeIdentifier": "t_array$_t_struct$_Solution_$7482_storage_$dyn_storage",
  3109.               "typeString": "struct SolnSquareVerifier.Solution[]"
  3110.             },
  3111.             "typeName": {
  3112.               "baseType": {
  3113.                 "contractScope": null,
  3114.                 "id": 7483,
  3115.                 "name": "Solution",
  3116.                 "nodeType": "UserDefinedTypeName",
  3117.                 "referencedDeclaration": 7482,
  3118.                 "src": "841:8:3",
  3119.                 "typeDescriptions": {
  3120.                   "typeIdentifier": "t_struct$_Solution_$7482_storage_ptr",
  3121.                   "typeString": "struct SolnSquareVerifier.Solution"
  3122.                 }
  3123.               },
  3124.               "id": 7484,
  3125.               "length": null,
  3126.               "nodeType": "ArrayTypeName",
  3127.               "src": "841:10:3",
  3128.               "typeDescriptions": {
  3129.                 "typeIdentifier": "t_array$_t_struct$_Solution_$7482_storage_$dyn_storage_ptr",
  3130.                 "typeString": "struct SolnSquareVerifier.Solution[]"
  3131.               }
  3132.             },
  3133.             "value": null,
  3134.             "visibility": "internal"
  3135.           },
  3136.           {
  3137.             "constant": false,
  3138.             "id": 7489,
  3139.             "name": "uniqueSolutions",
  3140.             "nodeType": "VariableDeclaration",
  3141.             "scope": 7604,
  3142.             "src": "932:52:3",
  3143.             "stateVariable": true,
  3144.             "storageLocation": "default",
  3145.             "typeDescriptions": {
  3146.               "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  3147.               "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution)"
  3148.             },
  3149.             "typeName": {
  3150.               "id": 7488,
  3151.               "keyType": {
  3152.                 "id": 7486,
  3153.                 "name": "bytes32",
  3154.                 "nodeType": "ElementaryTypeName",
  3155.                 "src": "940:7:3",
  3156.                 "typeDescriptions": {
  3157.                   "typeIdentifier": "t_bytes32",
  3158.                   "typeString": "bytes32"
  3159.                 }
  3160.               },
  3161.               "nodeType": "Mapping",
  3162.               "src": "932:28:3",
  3163.               "typeDescriptions": {
  3164.                 "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  3165.                 "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution)"
  3166.               },
  3167.               "valueType": {
  3168.                 "contractScope": null,
  3169.                 "id": 7487,
  3170.                 "name": "Solution",
  3171.                 "nodeType": "UserDefinedTypeName",
  3172.                 "referencedDeclaration": 7482,
  3173.                 "src": "951:8:3",
  3174.                 "typeDescriptions": {
  3175.                   "typeIdentifier": "t_struct$_Solution_$7482_storage_ptr",
  3176.                   "typeString": "struct SolnSquareVerifier.Solution"
  3177.                 }
  3178.               }
  3179.             },
  3180.             "value": null,
  3181.             "visibility": "private"
  3182.           },
  3183.           {
  3184.             "anonymous": false,
  3185.             "documentation": null,
  3186.             "id": 7495,
  3187.             "name": "SolutionAdded",
  3188.             "nodeType": "EventDefinition",
  3189.             "parameters": {
  3190.               "id": 7494,
  3191.               "nodeType": "ParameterList",
  3192.               "parameters": [
  3193.                 {
  3194.                   "constant": false,
  3195.                   "id": 7491,
  3196.                   "indexed": false,
  3197.                   "name": "tokenId",
  3198.                   "nodeType": "VariableDeclaration",
  3199.                   "scope": 7495,
  3200.                   "src": "1071:12:3",
  3201.                   "stateVariable": false,
  3202.                   "storageLocation": "default",
  3203.                   "typeDescriptions": {
  3204.                     "typeIdentifier": "t_uint256",
  3205.                     "typeString": "uint256"
  3206.                   },
  3207.                   "typeName": {
  3208.                     "id": 7490,
  3209.                     "name": "uint",
  3210.                     "nodeType": "ElementaryTypeName",
  3211.                     "src": "1071:4:3",
  3212.                     "typeDescriptions": {
  3213.                       "typeIdentifier": "t_uint256",
  3214.                       "typeString": "uint256"
  3215.                     }
  3216.                   },
  3217.                   "value": null,
  3218.                   "visibility": "internal"
  3219.                 },
  3220.                 {
  3221.                   "constant": false,
  3222.                   "id": 7493,
  3223.                   "indexed": false,
  3224.                   "name": "to",
  3225.                   "nodeType": "VariableDeclaration",
  3226.                   "scope": 7495,
  3227.                   "src": "1085:10:3",
  3228.                   "stateVariable": false,
  3229.                   "storageLocation": "default",
  3230.                   "typeDescriptions": {
  3231.                     "typeIdentifier": "t_address",
  3232.                     "typeString": "address"
  3233.                   },
  3234.                   "typeName": {
  3235.                     "id": 7492,
  3236.                     "name": "address",
  3237.                     "nodeType": "ElementaryTypeName",
  3238.                     "src": "1085:7:3",
  3239.                     "stateMutability": "nonpayable",
  3240.                     "typeDescriptions": {
  3241.                       "typeIdentifier": "t_address",
  3242.                       "typeString": "address"
  3243.                     }
  3244.                   },
  3245.                   "value": null,
  3246.                   "visibility": "internal"
  3247.                 }
  3248.               ],
  3249.               "src": "1070:26:3"
  3250.             },
  3251.             "src": "1051:46:3"
  3252.           },
  3253.           {
  3254.             "body": {
  3255.               "id": 7528,
  3256.               "nodeType": "Block",
  3257.               "src": "1254:196:3",
  3258.               "statements": [
  3259.                 {
  3260.                   "assignments": [
  3261.                     7505
  3262.                   ],
  3263.                   "declarations": [
  3264.                     {
  3265.                       "constant": false,
  3266.                       "id": 7505,
  3267.                       "name": "_soln",
  3268.                       "nodeType": "VariableDeclaration",
  3269.                       "scope": 7528,
  3270.                       "src": "1265:21:3",
  3271.                       "stateVariable": false,
  3272.                       "storageLocation": "memory",
  3273.                       "typeDescriptions": {
  3274.                         "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  3275.                         "typeString": "struct SolnSquareVerifier.Solution"
  3276.                       },
  3277.                       "typeName": {
  3278.                         "contractScope": null,
  3279.                         "id": 7504,
  3280.                         "name": "Solution",
  3281.                         "nodeType": "UserDefinedTypeName",
  3282.                         "referencedDeclaration": 7482,
  3283.                         "src": "1265:8:3",
  3284.                         "typeDescriptions": {
  3285.                           "typeIdentifier": "t_struct$_Solution_$7482_storage_ptr",
  3286.                           "typeString": "struct SolnSquareVerifier.Solution"
  3287.                         }
  3288.                       },
  3289.                       "value": null,
  3290.                       "visibility": "internal"
  3291.                     }
  3292.                   ],
  3293.                   "id": 7510,
  3294.                   "initialValue": {
  3295.                     "argumentTypes": null,
  3296.                     "arguments": [
  3297.                       {
  3298.                         "argumentTypes": null,
  3299.                         "id": 7507,
  3300.                         "name": "_tokenId",
  3301.                         "nodeType": "Identifier",
  3302.                         "overloadedDeclarations": [],
  3303.                         "referencedDeclaration": 7499,
  3304.                         "src": "1308:8:3",
  3305.                         "typeDescriptions": {
  3306.                           "typeIdentifier": "t_uint256",
  3307.                           "typeString": "uint256"
  3308.                         }
  3309.                       },
  3310.                       {
  3311.                         "argumentTypes": null,
  3312.                         "id": 7508,
  3313.                         "name": "_to",
  3314.                         "nodeType": "Identifier",
  3315.                         "overloadedDeclarations": [],
  3316.                         "referencedDeclaration": 7497,
  3317.                         "src": "1322:3:3",
  3318.                         "typeDescriptions": {
  3319.                           "typeIdentifier": "t_address",
  3320.                           "typeString": "address"
  3321.                         }
  3322.                       }
  3323.                     ],
  3324.                     "expression": {
  3325.                       "argumentTypes": null,
  3326.                       "id": 7506,
  3327.                       "name": "Solution",
  3328.                       "nodeType": "Identifier",
  3329.                       "overloadedDeclarations": [],
  3330.                       "referencedDeclaration": 7482,
  3331.                       "src": "1289:8:3",
  3332.                       "typeDescriptions": {
  3333.                         "typeIdentifier": "t_type$_t_struct$_Solution_$7482_storage_ptr_$",
  3334.                         "typeString": "type(struct SolnSquareVerifier.Solution storage pointer)"
  3335.                       }
  3336.                     },
  3337.                     "id": 7509,
  3338.                     "isConstant": false,
  3339.                     "isLValue": false,
  3340.                     "isPure": false,
  3341.                     "kind": "structConstructorCall",
  3342.                     "lValueRequested": false,
  3343.                     "names": [
  3344.                       "tokenId",
  3345.                       "to"
  3346.                     ],
  3347.                     "nodeType": "FunctionCall",
  3348.                     "src": "1289:38:3",
  3349.                     "typeDescriptions": {
  3350.                       "typeIdentifier": "t_struct$_Solution_$7482_memory",
  3351.                       "typeString": "struct SolnSquareVerifier.Solution memory"
  3352.                     }
  3353.                   },
  3354.                   "nodeType": "VariableDeclarationStatement",
  3355.                   "src": "1265:62:3"
  3356.                 },
  3357.                 {
  3358.                   "expression": {
  3359.                     "argumentTypes": null,
  3360.                     "arguments": [
  3361.                       {
  3362.                         "argumentTypes": null,
  3363.                         "id": 7514,
  3364.                         "name": "_soln",
  3365.                         "nodeType": "Identifier",
  3366.                         "overloadedDeclarations": [],
  3367.                         "referencedDeclaration": 7505,
  3368.                         "src": "1353:5:3",
  3369.                         "typeDescriptions": {
  3370.                           "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  3371.                           "typeString": "struct SolnSquareVerifier.Solution memory"
  3372.                         }
  3373.                       }
  3374.                     ],
  3375.                     "expression": {
  3376.                       "argumentTypes": [
  3377.                         {
  3378.                           "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  3379.                           "typeString": "struct SolnSquareVerifier.Solution memory"
  3380.                         }
  3381.                       ],
  3382.                       "expression": {
  3383.                         "argumentTypes": null,
  3384.                         "id": 7511,
  3385.                         "name": "solutions",
  3386.                         "nodeType": "Identifier",
  3387.                         "overloadedDeclarations": [],
  3388.                         "referencedDeclaration": 7485,
  3389.                         "src": "1338:9:3",
  3390.                         "typeDescriptions": {
  3391.                           "typeIdentifier": "t_array$_t_struct$_Solution_$7482_storage_$dyn_storage",
  3392.                           "typeString": "struct SolnSquareVerifier.Solution storage ref[] storage ref"
  3393.                         }
  3394.                       },
  3395.                       "id": 7513,
  3396.                       "isConstant": false,
  3397.                       "isLValue": false,
  3398.                       "isPure": false,
  3399.                       "lValueRequested": false,
  3400.                       "memberName": "push",
  3401.                       "nodeType": "MemberAccess",
  3402.                       "referencedDeclaration": null,
  3403.                       "src": "1338:14:3",
  3404.                       "typeDescriptions": {
  3405.                         "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Solution_$7482_storage_$returns$_t_uint256_$",
  3406.                         "typeString": "function (struct SolnSquareVerifier.Solution storage ref) returns (uint256)"
  3407.                       }
  3408.                     },
  3409.                     "id": 7515,
  3410.                     "isConstant": false,
  3411.                     "isLValue": false,
  3412.                     "isPure": false,
  3413.                     "kind": "functionCall",
  3414.                     "lValueRequested": false,
  3415.                     "names": [],
  3416.                     "nodeType": "FunctionCall",
  3417.                     "src": "1338:21:3",
  3418.                     "typeDescriptions": {
  3419.                       "typeIdentifier": "t_uint256",
  3420.                       "typeString": "uint256"
  3421.                     }
  3422.                   },
  3423.                   "id": 7516,
  3424.                   "nodeType": "ExpressionStatement",
  3425.                   "src": "1338:21:3"
  3426.                 },
  3427.                 {
  3428.                   "expression": {
  3429.                     "argumentTypes": null,
  3430.                     "id": 7521,
  3431.                     "isConstant": false,
  3432.                     "isLValue": false,
  3433.                     "isPure": false,
  3434.                     "lValueRequested": false,
  3435.                     "leftHandSide": {
  3436.                       "argumentTypes": null,
  3437.                       "baseExpression": {
  3438.                         "argumentTypes": null,
  3439.                         "id": 7517,
  3440.                         "name": "uniqueSolutions",
  3441.                         "nodeType": "Identifier",
  3442.                         "overloadedDeclarations": [],
  3443.                         "referencedDeclaration": 7489,
  3444.                         "src": "1370:15:3",
  3445.                         "typeDescriptions": {
  3446.                           "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  3447.                           "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution storage ref)"
  3448.                         }
  3449.                       },
  3450.                       "id": 7519,
  3451.                       "indexExpression": {
  3452.                         "argumentTypes": null,
  3453.                         "id": 7518,
  3454.                         "name": "key",
  3455.                         "nodeType": "Identifier",
  3456.                         "overloadedDeclarations": [],
  3457.                         "referencedDeclaration": 7501,
  3458.                         "src": "1386:3:3",
  3459.                         "typeDescriptions": {
  3460.                           "typeIdentifier": "t_bytes32",
  3461.                           "typeString": "bytes32"
  3462.                         }
  3463.                       },
  3464.                       "isConstant": false,
  3465.                       "isLValue": true,
  3466.                       "isPure": false,
  3467.                       "lValueRequested": true,
  3468.                       "nodeType": "IndexAccess",
  3469.                       "src": "1370:20:3",
  3470.                       "typeDescriptions": {
  3471.                         "typeIdentifier": "t_struct$_Solution_$7482_storage",
  3472.                         "typeString": "struct SolnSquareVerifier.Solution storage ref"
  3473.                       }
  3474.                     },
  3475.                     "nodeType": "Assignment",
  3476.                     "operator": "=",
  3477.                     "rightHandSide": {
  3478.                       "argumentTypes": null,
  3479.                       "id": 7520,
  3480.                       "name": "_soln",
  3481.                       "nodeType": "Identifier",
  3482.                       "overloadedDeclarations": [],
  3483.                       "referencedDeclaration": 7505,
  3484.                       "src": "1393:5:3",
  3485.                       "typeDescriptions": {
  3486.                         "typeIdentifier": "t_struct$_Solution_$7482_memory_ptr",
  3487.                         "typeString": "struct SolnSquareVerifier.Solution memory"
  3488.                       }
  3489.                     },
  3490.                     "src": "1370:28:3",
  3491.                     "typeDescriptions": {
  3492.                       "typeIdentifier": "t_struct$_Solution_$7482_storage",
  3493.                       "typeString": "struct SolnSquareVerifier.Solution storage ref"
  3494.                     }
  3495.                   },
  3496.                   "id": 7522,
  3497.                   "nodeType": "ExpressionStatement",
  3498.                   "src": "1370:28:3"
  3499.                 },
  3500.                 {
  3501.                   "eventCall": {
  3502.                     "argumentTypes": null,
  3503.                     "arguments": [
  3504.                       {
  3505.                         "argumentTypes": null,
  3506.                         "id": 7524,
  3507.                         "name": "_tokenId",
  3508.                         "nodeType": "Identifier",
  3509.                         "overloadedDeclarations": [],
  3510.                         "referencedDeclaration": 7499,
  3511.                         "src": "1428:8:3",
  3512.                         "typeDescriptions": {
  3513.                           "typeIdentifier": "t_uint256",
  3514.                           "typeString": "uint256"
  3515.                         }
  3516.                       },
  3517.                       {
  3518.                         "argumentTypes": null,
  3519.                         "id": 7525,
  3520.                         "name": "_to",
  3521.                         "nodeType": "Identifier",
  3522.                         "overloadedDeclarations": [],
  3523.                         "referencedDeclaration": 7497,
  3524.                         "src": "1438:3:3",
  3525.                         "typeDescriptions": {
  3526.                           "typeIdentifier": "t_address",
  3527.                           "typeString": "address"
  3528.                         }
  3529.                       }
  3530.                     ],
  3531.                     "expression": {
  3532.                       "argumentTypes": [
  3533.                         {
  3534.                           "typeIdentifier": "t_uint256",
  3535.                           "typeString": "uint256"
  3536.                         },
  3537.                         {
  3538.                           "typeIdentifier": "t_address",
  3539.                           "typeString": "address"
  3540.                         }
  3541.                       ],
  3542.                       "id": 7523,
  3543.                       "name": "SolutionAdded",
  3544.                       "nodeType": "Identifier",
  3545.                       "overloadedDeclarations": [],
  3546.                       "referencedDeclaration": 7495,
  3547.                       "src": "1414:13:3",
  3548.                       "typeDescriptions": {
  3549.                         "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
  3550.                         "typeString": "function (uint256,address)"
  3551.                       }
  3552.                     },
  3553.                     "id": 7526,
  3554.                     "isConstant": false,
  3555.                     "isLValue": false,
  3556.                     "isPure": false,
  3557.                     "kind": "functionCall",
  3558.                     "lValueRequested": false,
  3559.                     "names": [],
  3560.                     "nodeType": "FunctionCall",
  3561.                     "src": "1414:28:3",
  3562.                     "typeDescriptions": {
  3563.                       "typeIdentifier": "t_tuple$__$",
  3564.                       "typeString": "tuple()"
  3565.                     }
  3566.                   },
  3567.                   "id": 7527,
  3568.                   "nodeType": "EmitStatement",
  3569.                   "src": "1409:33:3"
  3570.                 }
  3571.               ]
  3572.             },
  3573.             "documentation": null,
  3574.             "id": 7529,
  3575.             "implemented": true,
  3576.             "kind": "function",
  3577.             "modifiers": [],
  3578.             "name": "addSolution",
  3579.             "nodeType": "FunctionDefinition",
  3580.             "parameters": {
  3581.               "id": 7502,
  3582.               "nodeType": "ParameterList",
  3583.               "parameters": [
  3584.                 {
  3585.                   "constant": false,
  3586.                   "id": 7497,
  3587.                   "name": "_to",
  3588.                   "nodeType": "VariableDeclaration",
  3589.                   "scope": 7529,
  3590.                   "src": "1206:11:3",
  3591.                   "stateVariable": false,
  3592.                   "storageLocation": "default",
  3593.                   "typeDescriptions": {
  3594.                     "typeIdentifier": "t_address",
  3595.                     "typeString": "address"
  3596.                   },
  3597.                   "typeName": {
  3598.                     "id": 7496,
  3599.                     "name": "address",
  3600.                     "nodeType": "ElementaryTypeName",
  3601.                     "src": "1206:7:3",
  3602.                     "stateMutability": "nonpayable",
  3603.                     "typeDescriptions": {
  3604.                       "typeIdentifier": "t_address",
  3605.                       "typeString": "address"
  3606.                     }
  3607.                   },
  3608.                   "value": null,
  3609.                   "visibility": "internal"
  3610.                 },
  3611.                 {
  3612.                   "constant": false,
  3613.                   "id": 7499,
  3614.                   "name": "_tokenId",
  3615.                   "nodeType": "VariableDeclaration",
  3616.                   "scope": 7529,
  3617.                   "src": "1219:13:3",
  3618.                   "stateVariable": false,
  3619.                   "storageLocation": "default",
  3620.                   "typeDescriptions": {
  3621.                     "typeIdentifier": "t_uint256",
  3622.                     "typeString": "uint256"
  3623.                   },
  3624.                   "typeName": {
  3625.                     "id": 7498,
  3626.                     "name": "uint",
  3627.                     "nodeType": "ElementaryTypeName",
  3628.                     "src": "1219:4:3",
  3629.                     "typeDescriptions": {
  3630.                       "typeIdentifier": "t_uint256",
  3631.                       "typeString": "uint256"
  3632.                     }
  3633.                   },
  3634.                   "value": null,
  3635.                   "visibility": "internal"
  3636.                 },
  3637.                 {
  3638.                   "constant": false,
  3639.                   "id": 7501,
  3640.                   "name": "key",
  3641.                   "nodeType": "VariableDeclaration",
  3642.                   "scope": 7529,
  3643.                   "src": "1234:11:3",
  3644.                   "stateVariable": false,
  3645.                   "storageLocation": "default",
  3646.                   "typeDescriptions": {
  3647.                     "typeIdentifier": "t_bytes32",
  3648.                     "typeString": "bytes32"
  3649.                   },
  3650.                   "typeName": {
  3651.                     "id": 7500,
  3652.                     "name": "bytes32",
  3653.                     "nodeType": "ElementaryTypeName",
  3654.                     "src": "1234:7:3",
  3655.                     "typeDescriptions": {
  3656.                       "typeIdentifier": "t_bytes32",
  3657.                       "typeString": "bytes32"
  3658.                     }
  3659.                   },
  3660.                   "value": null,
  3661.                   "visibility": "internal"
  3662.                 }
  3663.               ],
  3664.               "src": "1205:41:3"
  3665.             },
  3666.             "returnParameters": {
  3667.               "id": 7503,
  3668.               "nodeType": "ParameterList",
  3669.               "parameters": [],
  3670.               "src": "1254:0:3"
  3671.             },
  3672.             "scope": 7604,
  3673.             "src": "1185:265:3",
  3674.             "stateMutability": "nonpayable",
  3675.             "superFunction": null,
  3676.             "visibility": "public"
  3677.           },
  3678.           {
  3679.             "body": {
  3680.               "id": 7602,
  3681.               "nodeType": "Block",
  3682.               "src": "1869:314:3",
  3683.               "statements": [
  3684.                 {
  3685.                   "assignments": [
  3686.                     7555
  3687.                   ],
  3688.                   "declarations": [
  3689.                     {
  3690.                       "constant": false,
  3691.                       "id": 7555,
  3692.                       "name": "key",
  3693.                       "nodeType": "VariableDeclaration",
  3694.                       "scope": 7602,
  3695.                       "src": "1880:11:3",
  3696.                       "stateVariable": false,
  3697.                       "storageLocation": "default",
  3698.                       "typeDescriptions": {
  3699.                         "typeIdentifier": "t_bytes32",
  3700.                         "typeString": "bytes32"
  3701.                       },
  3702.                       "typeName": {
  3703.                         "id": 7554,
  3704.                         "name": "bytes32",
  3705.                         "nodeType": "ElementaryTypeName",
  3706.                         "src": "1880:7:3",
  3707.                         "typeDescriptions": {
  3708.                           "typeIdentifier": "t_bytes32",
  3709.                           "typeString": "bytes32"
  3710.                         }
  3711.                       },
  3712.                       "value": null,
  3713.                       "visibility": "internal"
  3714.                     }
  3715.                   ],
  3716.                   "id": 7565,
  3717.                   "initialValue": {
  3718.                     "argumentTypes": null,
  3719.                     "arguments": [
  3720.                       {
  3721.                         "argumentTypes": null,
  3722.                         "arguments": [
  3723.                           {
  3724.                             "argumentTypes": null,
  3725.                             "id": 7559,
  3726.                             "name": "a",
  3727.                             "nodeType": "Identifier",
  3728.                             "overloadedDeclarations": [],
  3729.                             "referencedDeclaration": 7537,
  3730.                             "src": "1921:1:3",
  3731.                             "typeDescriptions": {
  3732.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  3733.                               "typeString": "uint256[2] memory"
  3734.                             }
  3735.                           },
  3736.                           {
  3737.                             "argumentTypes": null,
  3738.                             "id": 7560,
  3739.                             "name": "b",
  3740.                             "nodeType": "Identifier",
  3741.                             "overloadedDeclarations": [],
  3742.                             "referencedDeclaration": 7543,
  3743.                             "src": "1924:1:3",
  3744.                             "typeDescriptions": {
  3745.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  3746.                               "typeString": "uint256[2] memory[2] memory"
  3747.                             }
  3748.                           },
  3749.                           {
  3750.                             "argumentTypes": null,
  3751.                             "id": 7561,
  3752.                             "name": "c",
  3753.                             "nodeType": "Identifier",
  3754.                             "overloadedDeclarations": [],
  3755.                             "referencedDeclaration": 7547,
  3756.                             "src": "1927:1:3",
  3757.                             "typeDescriptions": {
  3758.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  3759.                               "typeString": "uint256[2] memory"
  3760.                             }
  3761.                           },
  3762.                           {
  3763.                             "argumentTypes": null,
  3764.                             "id": 7562,
  3765.                             "name": "input",
  3766.                             "nodeType": "Identifier",
  3767.                             "overloadedDeclarations": [],
  3768.                             "referencedDeclaration": 7551,
  3769.                             "src": "1930:5:3",
  3770.                             "typeDescriptions": {
  3771.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  3772.                               "typeString": "uint256[2] memory"
  3773.                             }
  3774.                           }
  3775.                         ],
  3776.                         "expression": {
  3777.                           "argumentTypes": [
  3778.                             {
  3779.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  3780.                               "typeString": "uint256[2] memory"
  3781.                             },
  3782.                             {
  3783.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  3784.                               "typeString": "uint256[2] memory[2] memory"
  3785.                             },
  3786.                             {
  3787.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  3788.                               "typeString": "uint256[2] memory"
  3789.                             },
  3790.                             {
  3791.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  3792.                               "typeString": "uint256[2] memory"
  3793.                             }
  3794.                           ],
  3795.                           "expression": {
  3796.                             "argumentTypes": null,
  3797.                             "id": 7557,
  3798.                             "name": "abi",
  3799.                             "nodeType": "Identifier",
  3800.                             "overloadedDeclarations": [],
  3801.                             "referencedDeclaration": 10381,
  3802.                             "src": "1904:3:3",
  3803.                             "typeDescriptions": {
  3804.                               "typeIdentifier": "t_magic_abi",
  3805.                               "typeString": "abi"
  3806.                             }
  3807.                           },
  3808.                           "id": 7558,
  3809.                           "isConstant": false,
  3810.                           "isLValue": false,
  3811.                           "isPure": true,
  3812.                           "lValueRequested": false,
  3813.                           "memberName": "encodePacked",
  3814.                           "nodeType": "MemberAccess",
  3815.                           "referencedDeclaration": null,
  3816.                           "src": "1904:16:3",
  3817.                           "typeDescriptions": {
  3818.                             "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
  3819.                             "typeString": "function () pure returns (bytes memory)"
  3820.                           }
  3821.                         },
  3822.                         "id": 7563,
  3823.                         "isConstant": false,
  3824.                         "isLValue": false,
  3825.                         "isPure": false,
  3826.                         "kind": "functionCall",
  3827.                         "lValueRequested": false,
  3828.                         "names": [],
  3829.                         "nodeType": "FunctionCall",
  3830.                         "src": "1904:32:3",
  3831.                         "typeDescriptions": {
  3832.                           "typeIdentifier": "t_bytes_memory_ptr",
  3833.                           "typeString": "bytes memory"
  3834.                         }
  3835.                       }
  3836.                     ],
  3837.                     "expression": {
  3838.                       "argumentTypes": [
  3839.                         {
  3840.                           "typeIdentifier": "t_bytes_memory_ptr",
  3841.                           "typeString": "bytes memory"
  3842.                         }
  3843.                       ],
  3844.                       "id": 7556,
  3845.                       "name": "keccak256",
  3846.                       "nodeType": "Identifier",
  3847.                       "overloadedDeclarations": [],
  3848.                       "referencedDeclaration": 10388,
  3849.                       "src": "1894:9:3",
  3850.                       "typeDescriptions": {
  3851.                         "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
  3852.                         "typeString": "function (bytes memory) pure returns (bytes32)"
  3853.                       }
  3854.                     },
  3855.                     "id": 7564,
  3856.                     "isConstant": false,
  3857.                     "isLValue": false,
  3858.                     "isPure": false,
  3859.                     "kind": "functionCall",
  3860.                     "lValueRequested": false,
  3861.                     "names": [],
  3862.                     "nodeType": "FunctionCall",
  3863.                     "src": "1894:43:3",
  3864.                     "typeDescriptions": {
  3865.                       "typeIdentifier": "t_bytes32",
  3866.                       "typeString": "bytes32"
  3867.                     }
  3868.                   },
  3869.                   "nodeType": "VariableDeclarationStatement",
  3870.                   "src": "1880:57:3"
  3871.                 },
  3872.                 {
  3873.                   "expression": {
  3874.                     "argumentTypes": null,
  3875.                     "arguments": [
  3876.                       {
  3877.                         "argumentTypes": null,
  3878.                         "commonType": {
  3879.                           "typeIdentifier": "t_address",
  3880.                           "typeString": "address"
  3881.                         },
  3882.                         "id": 7574,
  3883.                         "isConstant": false,
  3884.                         "isLValue": false,
  3885.                         "isPure": false,
  3886.                         "lValueRequested": false,
  3887.                         "leftExpression": {
  3888.                           "argumentTypes": null,
  3889.                           "expression": {
  3890.                             "argumentTypes": null,
  3891.                             "baseExpression": {
  3892.                               "argumentTypes": null,
  3893.                               "id": 7567,
  3894.                               "name": "uniqueSolutions",
  3895.                               "nodeType": "Identifier",
  3896.                               "overloadedDeclarations": [],
  3897.                               "referencedDeclaration": 7489,
  3898.                               "src": "1956:15:3",
  3899.                               "typeDescriptions": {
  3900.                                 "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7482_storage_$",
  3901.                                 "typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution storage ref)"
  3902.                               }
  3903.                             },
  3904.                             "id": 7569,
  3905.                             "indexExpression": {
  3906.                               "argumentTypes": null,
  3907.                               "id": 7568,
  3908.                               "name": "key",
  3909.                               "nodeType": "Identifier",
  3910.                               "overloadedDeclarations": [],
  3911.                               "referencedDeclaration": 7555,
  3912.                               "src": "1972:3:3",
  3913.                               "typeDescriptions": {
  3914.                                 "typeIdentifier": "t_bytes32",
  3915.                                 "typeString": "bytes32"
  3916.                               }
  3917.                             },
  3918.                             "isConstant": false,
  3919.                             "isLValue": true,
  3920.                             "isPure": false,
  3921.                             "lValueRequested": false,
  3922.                             "nodeType": "IndexAccess",
  3923.                             "src": "1956:20:3",
  3924.                             "typeDescriptions": {
  3925.                               "typeIdentifier": "t_struct$_Solution_$7482_storage",
  3926.                               "typeString": "struct SolnSquareVerifier.Solution storage ref"
  3927.                             }
  3928.                           },
  3929.                           "id": 7570,
  3930.                           "isConstant": false,
  3931.                           "isLValue": true,
  3932.                           "isPure": false,
  3933.                           "lValueRequested": false,
  3934.                           "memberName": "to",
  3935.                           "nodeType": "MemberAccess",
  3936.                           "referencedDeclaration": 7481,
  3937.                           "src": "1956:23:3",
  3938.                           "typeDescriptions": {
  3939.                             "typeIdentifier": "t_address",
  3940.                             "typeString": "address"
  3941.                           }
  3942.                         },
  3943.                         "nodeType": "BinaryOperation",
  3944.                         "operator": "==",
  3945.                         "rightExpression": {
  3946.                           "argumentTypes": null,
  3947.                           "arguments": [
  3948.                             {
  3949.                               "argumentTypes": null,
  3950.                               "hexValue": "30",
  3951.                               "id": 7572,
  3952.                               "isConstant": false,
  3953.                               "isLValue": false,
  3954.                               "isPure": true,
  3955.                               "kind": "number",
  3956.                               "lValueRequested": false,
  3957.                               "nodeType": "Literal",
  3958.                               "src": "1991:1:3",
  3959.                               "subdenomination": null,
  3960.                               "typeDescriptions": {
  3961.                                 "typeIdentifier": "t_rational_0_by_1",
  3962.                                 "typeString": "int_const 0"
  3963.                               },
  3964.                               "value": "0"
  3965.                             }
  3966.                           ],
  3967.                           "expression": {
  3968.                             "argumentTypes": [
  3969.                               {
  3970.                                 "typeIdentifier": "t_rational_0_by_1",
  3971.                                 "typeString": "int_const 0"
  3972.                               }
  3973.                             ],
  3974.                             "id": 7571,
  3975.                             "isConstant": false,
  3976.                             "isLValue": false,
  3977.                             "isPure": true,
  3978.                             "lValueRequested": false,
  3979.                             "nodeType": "ElementaryTypeNameExpression",
  3980.                             "src": "1983:7:3",
  3981.                             "typeDescriptions": {
  3982.                               "typeIdentifier": "t_type$_t_address_$",
  3983.                               "typeString": "type(address)"
  3984.                             },
  3985.                             "typeName": "address"
  3986.                           },
  3987.                           "id": 7573,
  3988.                           "isConstant": false,
  3989.                           "isLValue": false,
  3990.                           "isPure": true,
  3991.                           "kind": "typeConversion",
  3992.                           "lValueRequested": false,
  3993.                           "names": [],
  3994.                           "nodeType": "FunctionCall",
  3995.                           "src": "1983:10:3",
  3996.                           "typeDescriptions": {
  3997.                             "typeIdentifier": "t_address_payable",
  3998.                             "typeString": "address payable"
  3999.                           }
  4000.                         },
  4001.                         "src": "1956:37:3",
  4002.                         "typeDescriptions": {
  4003.                           "typeIdentifier": "t_bool",
  4004.                           "typeString": "bool"
  4005.                         }
  4006.                       },
  4007.                       {
  4008.                         "argumentTypes": null,
  4009.                         "hexValue": "536f6c7574696f6e206973206265656e2075736564",
  4010.                         "id": 7575,
  4011.                         "isConstant": false,
  4012.                         "isLValue": false,
  4013.                         "isPure": true,
  4014.                         "kind": "string",
  4015.                         "lValueRequested": false,
  4016.                         "nodeType": "Literal",
  4017.                         "src": "1995:23:3",
  4018.                         "subdenomination": null,
  4019.                         "typeDescriptions": {
  4020.                           "typeIdentifier": "t_stringliteral_94d5e603e119b9b0c2db935018bd85cc195599ba59e996423cf1f8c872629d16",
  4021.                           "typeString": "literal_string \"Solution is been used\""
  4022.                         },
  4023.                         "value": "Solution is been used"
  4024.                       }
  4025.                     ],
  4026.                     "expression": {
  4027.                       "argumentTypes": [
  4028.                         {
  4029.                           "typeIdentifier": "t_bool",
  4030.                           "typeString": "bool"
  4031.                         },
  4032.                         {
  4033.                           "typeIdentifier": "t_stringliteral_94d5e603e119b9b0c2db935018bd85cc195599ba59e996423cf1f8c872629d16",
  4034.                           "typeString": "literal_string \"Solution is been used\""
  4035.                         }
  4036.                       ],
  4037.                       "id": 7566,
  4038.                       "name": "require",
  4039.                       "nodeType": "Identifier",
  4040.                       "overloadedDeclarations": [
  4041.                         10397,
  4042.                         10398
  4043.                       ],
  4044.                       "referencedDeclaration": 10398,
  4045.                       "src": "1948:7:3",
  4046.                       "typeDescriptions": {
  4047.                         "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  4048.                         "typeString": "function (bool,string memory) pure"
  4049.                       }
  4050.                     },
  4051.                     "id": 7576,
  4052.                     "isConstant": false,
  4053.                     "isLValue": false,
  4054.                     "isPure": false,
  4055.                     "kind": "functionCall",
  4056.                     "lValueRequested": false,
  4057.                     "names": [],
  4058.                     "nodeType": "FunctionCall",
  4059.                     "src": "1948:71:3",
  4060.                     "typeDescriptions": {
  4061.                       "typeIdentifier": "t_tuple$__$",
  4062.                       "typeString": "tuple()"
  4063.                     }
  4064.                   },
  4065.                   "id": 7577,
  4066.                   "nodeType": "ExpressionStatement",
  4067.                   "src": "1948:71:3"
  4068.                 },
  4069.                 {
  4070.                   "expression": {
  4071.                     "argumentTypes": null,
  4072.                     "arguments": [
  4073.                       {
  4074.                         "argumentTypes": null,
  4075.                         "arguments": [
  4076.                           {
  4077.                             "argumentTypes": null,
  4078.                             "id": 7581,
  4079.                             "name": "a",
  4080.                             "nodeType": "Identifier",
  4081.                             "overloadedDeclarations": [],
  4082.                             "referencedDeclaration": 7537,
  4083.                             "src": "2056:1:3",
  4084.                             "typeDescriptions": {
  4085.                               "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr",
  4086.                               "typeString": "uint256[2] memory"
  4087.                             }
  4088.                           },
  4089.                           {
  4090.                             "argumentTypes": null,
  4091.                             "id": 7582,
  4092.                             "name": "b",
  4093.                             "nodeType": "Identifier",
  4094.                             "overloadedDeclarations": [],
  4095.                             "referencedDeclaration": 7543,
  4096.                             "src": "2059:1:3",
  4097.                             "typeDescriptions": {
  4098.                               "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$2_memory_ptr",
  4099.                               "typeString": "uint256[2] memory[2] memory"
  4100.                             }
  4101.                           },
  4102.                           {
  4103.                             "argumentTypes": null,
  4104.                             "id": 7583,
  4105.                             "name": "c",
  4106.                             "nodeType": "Identifier",
  4107.                             "overloadedDeclarations": [],
  4108.                             "referencedDeclaration"