{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract Vault",
          "name": "_vault",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AlreadyInitialized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BadPrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NewOwnerIsZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoHandoverRequest",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotPaused",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Paused",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipHandoverCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipHandoverRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "Read",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "cancelOwnershipHandover",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ERC20Token",
          "name": "",
          "type": "address"
        }
      ],
      "name": "collaterals",
      "outputs": [
        {
          "internalType": "contract IOSM",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "completeOwnershipHandover",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ERC20Token",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "mockUpdatePrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "result",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "ownershipHandoverExpiresAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "result",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requestOwnershipHandover",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ERC20Token",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "contract IOSM",
          "name": "oracle",
          "type": "address"
        }
      ],
      "name": "setCollateralOSM",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "status",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ERC20Token",
          "name": "collateral",
          "type": "address"
        }
      ],
      "name": "updatePrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vault",
      "outputs": [
        {
          "internalType": "contract Vault",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b5060405161097538038061097583398101604081905261002f916100a3565b600260005561003d33610067565b600180546001600160a01b0319166001600160a01b039290921691909117905560026000556100d3565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6000602082840312156100b557600080fd5b81516001600160a01b03811681146100cc57600080fd5b9392505050565b610893806100e26000396000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063f04e283e11610059578063f04e283e14610252578063f2fde38b14610265578063fbfa77cf14610278578063fee81cf4146102a557600080fd5b80638da5cb5b1461017a57806396e85ced146101cf578063c7331b01146101ef578063eeb97d3b1461020f57600080fd5b8063425bddcf116100c6578063425bddcf1461013557806354d1f13d14610155578063715018a61461015d5780638456cb591461016557600080fd5b8063200d2ed2146100ed57806325692962146101165780633f4ba83a14610120575b600080fd5b3480156100f957600080fd5b5061010360005481565b6040519081526020015b60405180910390f35b61011e6102d8565b005b34801561012c57600080fd5b5061011e610328565b34801561014157600080fd5b5061011e6101503660046107f1565b610373565b61011e61040a565b61011e610446565b34801561017157600080fd5b5061011e61045a565b34801561018657600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010d565b3480156101db57600080fd5b5061011e6101ea36600461082a565b6104a5565b3480156101fb57600080fd5b5061011e61020a36600461084e565b61064e565b34801561021b57600080fd5b506101aa61022a36600461082a565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61011e61026036600461082a565b6106cc565b61011e61027336600461082a565b61070c565b34801561028457600080fd5b506001546101aa9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b157600080fd5b506101036102c036600461082a565b63389a75e1600c908152600091909152602090205490565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b600260005403610364576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61036c610733565b6002600055565b6001600054036103af576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b7610733565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61044e610733565b6104586000610769565b565b600160005403610496576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049e610733565b6001600055565b6001600054036104e1576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602090815260408083205481517f9fa6a6e3000000000000000000000000000000000000000000000000000000008152915193941692639fa6a6e3926004808401939192918290030181865afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610582919061087a565b9050806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f457972de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063457972de90604401600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b505050505050565b60016000540361068a576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610692610733565b806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d4610733565b63389a75e1600c52806000526020600c2080544211156106fc57636f5e88186000526004601cfd5b6000905561070981610769565b50565b610714610733565b8060601b61072a57637448fbae6000526004601cfd5b61070981610769565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610458576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b73ffffffffffffffffffffffffffffffffffffffff8116811461070957600080fd5b6000806040838503121561080457600080fd5b823561080f816107cf565b9150602083013561081f816107cf565b809150509250929050565b60006020828403121561083c57600080fd5b8135610847816107cf565b9392505050565b6000806040838503121561086157600080fd5b823561086c816107cf565b946020939093013593505050565b60006020828403121561088c57600080fd5b505191905056",
    "sourceMap": "348:1130:36:-:0;;;664:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;203:1:29;280:6;:13;700:28:36;717:10;700:16;:28::i;:::-;738:5;:14;;-1:-1:-1;;;;;;738:14:36;-1:-1:-1;;;;;738:14:36;;;;;;;;;;203:1:29;-1:-1:-1;762:13:36;348:1130;;4883:1190:22;-1:-1:-1;;;;;5793:26:22;-1:-1:-1;;5876:29:22;;;5793:26;6031:1;5991:38;6031:1;;5980:63;4883:1190;:::o;14:305:60:-;99:6;152:2;140:9;131:7;127:23;123:32;120:52;;;168:1;165;158:12;120:52;194:16;;-1:-1:-1;;;;;239:31:60;;229:42;;219:70;;285:1;282;275:12;219:70;308:5;14:305;-1:-1:-1;;;14:305:60:o;:::-;348:1130:36;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063f04e283e11610059578063f04e283e14610252578063f2fde38b14610265578063fbfa77cf14610278578063fee81cf4146102a557600080fd5b80638da5cb5b1461017a57806396e85ced146101cf578063c7331b01146101ef578063eeb97d3b1461020f57600080fd5b8063425bddcf116100c6578063425bddcf1461013557806354d1f13d14610155578063715018a61461015d5780638456cb591461016557600080fd5b8063200d2ed2146100ed57806325692962146101165780633f4ba83a14610120575b600080fd5b3480156100f957600080fd5b5061010360005481565b6040519081526020015b60405180910390f35b61011e6102d8565b005b34801561012c57600080fd5b5061011e610328565b34801561014157600080fd5b5061011e6101503660046107f1565b610373565b61011e61040a565b61011e610446565b34801561017157600080fd5b5061011e61045a565b34801561018657600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010d565b3480156101db57600080fd5b5061011e6101ea36600461082a565b6104a5565b3480156101fb57600080fd5b5061011e61020a36600461084e565b61064e565b34801561021b57600080fd5b506101aa61022a36600461082a565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61011e61026036600461082a565b6106cc565b61011e61027336600461082a565b61070c565b34801561028457600080fd5b506001546101aa9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b157600080fd5b506101036102c036600461082a565b63389a75e1600c908152600091909152602090205490565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b600260005403610364576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61036c610733565b6002600055565b6001600054036103af576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b7610733565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61044e610733565b6104586000610769565b565b600160005403610496576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049e610733565b6001600055565b6001600054036104e1576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602090815260408083205481517f9fa6a6e3000000000000000000000000000000000000000000000000000000008152915193941692639fa6a6e3926004808401939192918290030181865afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610582919061087a565b9050806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f457972de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063457972de90604401600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b505050505050565b60016000540361068a576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610692610733565b806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d4610733565b63389a75e1600c52806000526020600c2080544211156106fc57636f5e88186000526004601cfd5b6000905561070981610769565b50565b610714610733565b8060601b61072a57637448fbae6000526004601cfd5b61070981610769565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610458576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b73ffffffffffffffffffffffffffffffffffffffff8116811461070957600080fd5b6000806040838503121561080457600080fd5b823561080f816107cf565b9150602083013561081f816107cf565b809150509250929050565b60006020828403121561083c57600080fd5b8135610847816107cf565b9392505050565b6000806040838503121561086157600080fd5b823561086c816107cf565b946020939093013593505050565b60006020828403121561088c57600080fd5b505191905056",
    "sourceMap": "348:1130:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;211:21:29;;;;;;;;;;;;;;;;;;;160:25:60;;;148:2;133:18;211:21:29;;;;;;;;9021:617:22;;;:::i;:::-;;474:88:36;;;;;;;;;;;;;:::i;788:144::-;;;;;;;;;;-1:-1:-1;788:144:36;;;;;:::i;:::-;;:::i;9720:456:22:-;;;:::i;8762:100::-;;;:::i;568:90:36:-;;;;;;;;;;;;;:::i;11408:182:22:-;;;;;;;;;;-1:-1:-1;11562:11:22;11556:18;11408:182;;;994:42:60;982:55;;;964:74;;952:2;937:18;11408:182:22;818:226:60;997:222:36;;;;;;;;;;-1:-1:-1;997:222:36;;;;;:::i;:::-;;:::i;1284:192::-;;;;;;;;;;-1:-1:-1;1284:192:36;;;;;:::i;:::-;;:::i;421:46::-;;;;;;;;;;-1:-1:-1;421:46:36;;;;;:::i;:::-;;;;;;;;;;;;;;;;10363:708:22;;;;;;:::i;:::-;;:::i;8348:349::-;;;;;;:::i;:::-;;:::i;396:18:36:-;;;;;;;;;;-1:-1:-1;396:18:36;;;;;;;;11693:435:22;;;;;;;;;;-1:-1:-1;11693:435:22;;;;;:::i;:::-;11963:19;11957:4;11950:33;;;11812:14;11996:26;;;;12106:4;12090:21;;12084:28;;11693:435;9021:617;9114:15;7972:9;9132:46;;:15;:46;9114:64;;9346:19;9340:4;9333:33;9396:8;9390:4;9383:22;9452:7;9445:4;9439;9429:21;9422:38;9599:8;9552:45;9549:1;9546;9541:67;9248:374;9021:617::o;474:88:36:-;203:1:29;437:6;;:14;433:38;;460:11;;;;;;;;;;;;;;433:38;12517:13:22::1;:11;:13::i;:::-;203:1:29::2;542:6:36;:13:::0;474:88::o;788:144::-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;12517:13:22::1;:11;:13::i;:::-;893:23:36::2;::::0;;::::2;;::::0;;;:11:::2;:23;::::0;;;;:32;;;::::2;::::0;;;::::2;;::::0;;788:144::o;9720:456:22:-;9922:19;9916:4;9909:33;9968:8;9962:4;9955:22;10020:1;10013:4;10007;9997:21;9990:32;10151:8;10105:44;10102:1;10099;10094:66;9720:456::o;8762:100::-;12517:13;:11;:13::i;:::-;8834:21:::1;8852:1;8834:9;:21::i;:::-;8762:100::o:0;568:90:36:-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;12517:13:22::1;:11;:13::i;:::-;163:1:29::2;637:6:36;:14:::0;568:90::o;997:222::-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;1090:23:36::1;::::0;;::::1;1074:13;1090:23:::0;;;:11:::1;:23;::::0;;;;;;;;:33;;;;;;;1074:13;;1090:23:::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;:23;;:33;;;;;;:23;:33:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1074:49;;1137:5;1146:1;1137:10:::0;1133:33:::1;;1156:10;;;;;;;;;;;;;;1133:33;1176:5;::::0;:36:::1;::::0;;;;:5:::1;2841:55:60::0;;;1176:36:36::1;::::0;::::1;2823:74:60::0;2913:18;;;2906:34;;;1176:5:36;;::::1;::::0;:17:::1;::::0;2796:18:60;;1176:36:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1064:155;997:222:::0;:::o;1284:192::-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;12517:13:22::1;:11;:13::i;:::-;1394:5:36::2;1403:1;1394:10:::0;1390:33:::2;;1413:10;;;;;;;;;;;;;;10363:708:22::0;12517:13;:11;:13::i;:::-;10597:19:::1;10591:4;10584:33;10643:12;10637:4;10630:26;10705:4;10699;10689:21;10811:12;10805:19;10792:11;10789:36;10786:157;;;10857:10;10851:4;10844:24;10924:4;10918;10911:18;10786:157;11020:1;10999:23:::0;;11041::::1;11051:12:::0;11041:9:::1;:23::i;:::-;10363:708:::0;:::o;8348:349::-;12517:13;:11;:13::i;:::-;8520:8:::1;8516:2;8512:17;8502:150;;8562:10;8556:4;8549:24;8633:4;8627;8620:18;8502:150;8671:19;8681:8;8671:9;:19::i;7292:355::-:0;7504:11;7498:18;7488:8;7485:32;7475:156;;7550:10;7544:4;7537:24;7612:4;7606;7599:18;6145:1089;6857:11;7093:16;;6941:26;;;;;;;7053:38;7050:1;;7042:78;7177:27;6145:1089::o;196:166:60:-;294:42;287:5;283:54;276:5;273:65;263:93;;352:1;349;342:12;367:446;469:6;477;530:2;518:9;509:7;505:23;501:32;498:52;;;546:1;543;536:12;498:52;585:9;572:23;604:43;641:5;604:43;:::i;:::-;666:5;-1:-1:-1;723:2:60;708:18;;695:32;736:45;695:32;736:45;:::i;:::-;800:7;790:17;;;367:446;;;;;:::o;1049:279::-;1128:6;1181:2;1169:9;1160:7;1156:23;1152:32;1149:52;;;1197:1;1194;1187:12;1149:52;1236:9;1223:23;1255:43;1292:5;1255:43;:::i;:::-;1317:5;1049:279;-1:-1:-1;;;1049:279:60:o;1333:347::-;1421:6;1429;1482:2;1470:9;1461:7;1457:23;1453:32;1450:52;;;1498:1;1495;1488:12;1450:52;1537:9;1524:23;1556:43;1593:5;1556:43;:::i;:::-;1618:5;1670:2;1655:18;;;;1642:32;;-1:-1:-1;;;1333:347:60:o;2440:184::-;2510:6;2563:2;2551:9;2542:7;2538:23;2534:32;2531:52;;;2579:1;2576;2569:12;2531:52;-1:-1:-1;2602:16:60;;2440:184;-1:-1:-1;2440:184:60:o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "cancelOwnershipHandover()": "54d1f13d",
    "collaterals(address)": "eeb97d3b",
    "completeOwnershipHandover(address)": "f04e283e",
    "mockUpdatePrice(address,uint256)": "c7331b01",
    "owner()": "8da5cb5b",
    "ownershipHandoverExpiresAt(address)": "fee81cf4",
    "pause()": "8456cb59",
    "renounceOwnership()": "715018a6",
    "requestOwnershipHandover()": "25692962",
    "setCollateralOSM(address,address)": "425bddcf",
    "status()": "200d2ed2",
    "transferOwnership(address)": "f2fde38b",
    "unpause()": "3f4ba83a",
    "updatePrice(address)": "96e85ced",
    "vault()": "fbfa77cf"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Vault\",\"name\":\"_vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoHandoverRequest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"Read\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cancelOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"collaterals\",\"outputs\":[{\"internalType\":\"contract IOSM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"completeOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"mockUpdatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"ownershipHandoverExpiresAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"contract IOSM\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setCollateralOSM\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AlreadyInitialized()\":[{\"details\":\"Cannot double-initialize.\"}],\"NewOwnerIsZeroAddress()\":[{\"details\":\"The `newOwner` cannot be the zero address.\"}],\"NoHandoverRequest()\":[{\"details\":\"The `pendingOwner` does not have a valid handover request.\"}],\"Unauthorized()\":[{\"details\":\"The caller is not authorized to call the function.\"}]},\"events\":{\"OwnershipHandoverCanceled(address)\":{\"details\":\"The ownership handover to `pendingOwner` has been canceled.\"},\"OwnershipHandoverRequested(address)\":{\"details\":\"An ownership handover to `pendingOwner` has been requested.\"},\"OwnershipTransferred(address,address)\":{\"details\":\"The ownership is transferred from `oldOwner` to `newOwner`. This event is intentionally kept the same as OpenZeppelin's Ownable to be compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), despite it not being as lightweight as a single argument event.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOwnershipHandover()\":{\"details\":\"Cancels the two-step ownership handover to the caller, if any.\"},\"completeOwnershipHandover(address)\":{\"details\":\"Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`.\"},\"owner()\":{\"details\":\"Returns the owner of the contract.\"},\"ownershipHandoverExpiresAt(address)\":{\"details\":\"Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.\"},\"renounceOwnership()\":{\"details\":\"Allows the owner to renounce their ownership.\"},\"requestOwnershipHandover()\":{\"details\":\"Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default.\"},\"transferOwnership(address)\":{\"details\":\"Allows the owner to transfer the ownership to `newOwner`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/feed.sol\":\"Feed\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":descent-collective/oracle-module/=lib/oracle-module/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":oracle-module/=lib/oracle-module/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/solady/src/auth/Ownable.sol\":{\"keccak256\":\"0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3\",\"dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs\"]},\"lib/solady/src/tokens/ERC20.sol\":{\"keccak256\":\"0xb4a3f9ba8a05107f7370de42cff57f3ad26dafd438712c11531a5892de2f59e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0a9ca06e3cf6dea1f9a4c5599581573b7d81cd64dc3afb582f325ccf5fdd6dc\",\"dweb:/ipfs/Qmb9r5dDceNF4W8S5u6i85RsNTgE5XG9HbTXkyS25ad3C6\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xf98506fade18a92e3d8d0a0ca0bdaeaa099d7620aac2a9d76b5f3d0bcd10691c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3495c9d108bc69951a12c5ce9f05851cc921f0bb69e2505756e79f3ddab4e1a\",\"dweb:/ipfs/QmT3XwbmdbQCxw7iNcF7DoiypDd5vs2ETFWirXqmJ86Meg\"]},\"src/currency.sol\":{\"keccak256\":\"0xc266e97010a71e6ac755dce3e51a5a5844663b355e20ab40bf2020fd9308369b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2660220b8a14c6d06351765dd7accec03e350e7fa9ae960c1505bea1e5d8d2d\",\"dweb:/ipfs/QmdYdPSnQC2nym38Fca4vRLKU4A78AQkgYasdg3TaRLGNY\"]},\"src/helpers/pausable.sol\":{\"keccak256\":\"0x8acce52dcd450c73da0f77d9539962826da23aca05aa7d0c7568614e89aed997\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35e2f674e01c0d6107f31d1c32bb2780d442420b7d26636f560a4eb1007f4a8b\",\"dweb:/ipfs/QmWwVLUGiJq6Q3fK6Zhx4pc6kaqC73pkZ1ntfVA3QCHTpd\"]},\"src/interfaces/ICurrency.sol\":{\"keccak256\":\"0x3b7adace3df08c34906612358d435ffff3b90b5eec0eae34b6335cc8dcd0e7ed\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://370c80ec5636bd95342256d4116f703e633e6b0467ee530397e9b5cada37f998\",\"dweb:/ipfs/QmPQ5KY37JpfuSAXpJ16kBXAQVJcE253cfjYGcBEcMLERz\"]},\"src/interfaces/IFeed.sol\":{\"keccak256\":\"0xcb569d8eeab0afb5a2a42772d82b2e213821e7f919c097741b7b2d2440889546\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://01f1ccc183b9567e887e36b2d91c1b6be6dc17cddbfbc31a6768a365b5bebc22\",\"dweb:/ipfs/QmUy25qEjA5QGwtuFRy8fiu3Rcmgn26gpN1tbBUv6hM4gk\"]},\"src/interfaces/IOSM.sol\":{\"keccak256\":\"0x777f22651aedc7c9c528001012a4630bb9a22a6a3a3054dd5a520942aa875cd1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://913b3fa3a86b89c313d8ffd7bebd78255df4203395b69b987cdecf112dd2567a\",\"dweb:/ipfs/Qma8Y6bWoa3nErqDtnD55NkgQZeWbNDpwjDpYAt37z1wiZ\"]},\"src/interfaces/IRate.sol\":{\"keccak256\":\"0x166dc423b74b60302197a27fb64557ee8ef6bafe416deb08fe7ecf94f0ede1d1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://123ef521857e33b10b6f92b743831b26dd5100e57271353bf5c1882fc41c6a2e\",\"dweb:/ipfs/QmdK5y8SntLHAVoNRq6isddmNYunrpv1JxAxyEgRiHdAAj\"]},\"src/interfaces/IVault.sol\":{\"keccak256\":\"0x5684f59679e090ebe583d31fda6d8882469436e71670a4873151793675c7c6c4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b265c21b1ff01a8c5cf9b1120feb6b5419a96a0e2a6d1ff4bdd89934c7869c9c\",\"dweb:/ipfs/QmdbCgiYE763cAHZ6nevhf7EzF8BzEkfwsbw4qWuxBkm8f\"]},\"src/mocks/ERC20Token.sol\":{\"keccak256\":\"0x62b878fb4dde1f455866e0c1290cc50714805d02c2848a4a9bb33c5dfbc8464d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7af3f5638d366abfbca3186813449259a33ed43e7c13ec983d389d73df1ad204\",\"dweb:/ipfs/QmeMdoEVTGqdcgSicTTcmycSQjToT7Sn5ZTgZdVFH9E6HA\"]},\"src/modules/feed.sol\":{\"keccak256\":\"0x1578828ae5678db9d1b329e65902702f4a1f55c251af4c26c3ef67d16c3f9e3b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8ec29513508ddd74340d57e24bbfd1ce679a6187ad4b9ec7e7546ad7fc333a44\",\"dweb:/ipfs/Qmc5e6Gwfxh9VExbizSDzm4yQpZ1Yoqtkr5xu2LrK8REjc\"]},\"src/vault.sol\":{\"keccak256\":\"0x377a877ac854164da4e6b2491e2dba44d75cb56216e6b2456fa6b815565ac5e5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0a67817c649b3f65de4971c5346ea93b7432ac2f4e0013e5fb681e488aa1b58\",\"dweb:/ipfs/Qmbvcgn3AoTEahq9qgfuiL81zkZKLVQRbMhMeeqTMiiuKv\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.21+commit.d9974bed"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract Vault",
              "name": "_vault",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "AlreadyInitialized"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "BadPrice"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "NewOwnerIsZeroAddress"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "NoHandoverRequest"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "NotPaused"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Paused"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Unauthorized"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingOwner",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "OwnershipHandoverCanceled",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingOwner",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "OwnershipHandoverRequested",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "oldOwner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "OwnershipTransferred",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Read",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "function",
          "name": "cancelOwnershipHandover"
        },
        {
          "inputs": [
            {
              "internalType": "contract ERC20Token",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "collaterals",
          "outputs": [
            {
              "internalType": "contract IOSM",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingOwner",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "completeOwnershipHandover"
        },
        {
          "inputs": [
            {
              "internalType": "contract ERC20Token",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "mockUpdatePrice"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "result",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pendingOwner",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "ownershipHandoverExpiresAt",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "result",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "pause"
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "function",
          "name": "renounceOwnership"
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "function",
          "name": "requestOwnershipHandover"
        },
        {
          "inputs": [
            {
              "internalType": "contract ERC20Token",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "contract IOSM",
              "name": "oracle",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setCollateralOSM"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "status",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "transferOwnership"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "unpause"
        },
        {
          "inputs": [
            {
              "internalType": "contract ERC20Token",
              "name": "collateral",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "updatePrice"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "vault",
          "outputs": [
            {
              "internalType": "contract Vault",
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "cancelOwnershipHandover()": {
            "details": "Cancels the two-step ownership handover to the caller, if any."
          },
          "completeOwnershipHandover(address)": {
            "details": "Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`."
          },
          "owner()": {
            "details": "Returns the owner of the contract."
          },
          "ownershipHandoverExpiresAt(address)": {
            "details": "Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`."
          },
          "renounceOwnership()": {
            "details": "Allows the owner to renounce their ownership."
          },
          "requestOwnershipHandover()": {
            "details": "Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default."
          },
          "transferOwnership(address)": {
            "details": "Allows the owner to transfer the ownership to `newOwner`."
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "descent-collective/oracle-module/=lib/oracle-module/src/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "oracle-module/=lib/oracle-module/",
        "solady/=lib/solady/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 1000000
      },
      "metadata": {
        "bytecodeHash": "none",
        "appendCBOR": false
      },
      "compilationTarget": {
        "src/modules/feed.sol": "Feed"
      },
      "libraries": {}
    },
    "sources": {
      "lib/solady/src/auth/Ownable.sol": {
        "keccak256": "0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3",
        "urls": [
          "bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3",
          "dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs"
        ],
        "license": "MIT"
      },
      "lib/solady/src/tokens/ERC20.sol": {
        "keccak256": "0xb4a3f9ba8a05107f7370de42cff57f3ad26dafd438712c11531a5892de2f59e0",
        "urls": [
          "bzz-raw://f0a9ca06e3cf6dea1f9a4c5599581573b7d81cd64dc3afb582f325ccf5fdd6dc",
          "dweb:/ipfs/Qmb9r5dDceNF4W8S5u6i85RsNTgE5XG9HbTXkyS25ad3C6"
        ],
        "license": "MIT"
      },
      "lib/solady/src/utils/SafeTransferLib.sol": {
        "keccak256": "0xf98506fade18a92e3d8d0a0ca0bdaeaa099d7620aac2a9d76b5f3d0bcd10691c",
        "urls": [
          "bzz-raw://a3495c9d108bc69951a12c5ce9f05851cc921f0bb69e2505756e79f3ddab4e1a",
          "dweb:/ipfs/QmT3XwbmdbQCxw7iNcF7DoiypDd5vs2ETFWirXqmJ86Meg"
        ],
        "license": "MIT"
      },
      "src/currency.sol": {
        "keccak256": "0xc266e97010a71e6ac755dce3e51a5a5844663b355e20ab40bf2020fd9308369b",
        "urls": [
          "bzz-raw://d2660220b8a14c6d06351765dd7accec03e350e7fa9ae960c1505bea1e5d8d2d",
          "dweb:/ipfs/QmdYdPSnQC2nym38Fca4vRLKU4A78AQkgYasdg3TaRLGNY"
        ],
        "license": "GPL-3.0"
      },
      "src/helpers/pausable.sol": {
        "keccak256": "0x8acce52dcd450c73da0f77d9539962826da23aca05aa7d0c7568614e89aed997",
        "urls": [
          "bzz-raw://35e2f674e01c0d6107f31d1c32bb2780d442420b7d26636f560a4eb1007f4a8b",
          "dweb:/ipfs/QmWwVLUGiJq6Q3fK6Zhx4pc6kaqC73pkZ1ntfVA3QCHTpd"
        ],
        "license": "GPL-3.0"
      },
      "src/interfaces/ICurrency.sol": {
        "keccak256": "0x3b7adace3df08c34906612358d435ffff3b90b5eec0eae34b6335cc8dcd0e7ed",
        "urls": [
          "bzz-raw://370c80ec5636bd95342256d4116f703e633e6b0467ee530397e9b5cada37f998",
          "dweb:/ipfs/QmPQ5KY37JpfuSAXpJ16kBXAQVJcE253cfjYGcBEcMLERz"
        ],
        "license": "GPL-3.0"
      },
      "src/interfaces/IFeed.sol": {
        "keccak256": "0xcb569d8eeab0afb5a2a42772d82b2e213821e7f919c097741b7b2d2440889546",
        "urls": [
          "bzz-raw://01f1ccc183b9567e887e36b2d91c1b6be6dc17cddbfbc31a6768a365b5bebc22",
          "dweb:/ipfs/QmUy25qEjA5QGwtuFRy8fiu3Rcmgn26gpN1tbBUv6hM4gk"
        ],
        "license": "GPL-3.0"
      },
      "src/interfaces/IOSM.sol": {
        "keccak256": "0x777f22651aedc7c9c528001012a4630bb9a22a6a3a3054dd5a520942aa875cd1",
        "urls": [
          "bzz-raw://913b3fa3a86b89c313d8ffd7bebd78255df4203395b69b987cdecf112dd2567a",
          "dweb:/ipfs/Qma8Y6bWoa3nErqDtnD55NkgQZeWbNDpwjDpYAt37z1wiZ"
        ],
        "license": "GPL-3.0"
      },
      "src/interfaces/IRate.sol": {
        "keccak256": "0x166dc423b74b60302197a27fb64557ee8ef6bafe416deb08fe7ecf94f0ede1d1",
        "urls": [
          "bzz-raw://123ef521857e33b10b6f92b743831b26dd5100e57271353bf5c1882fc41c6a2e",
          "dweb:/ipfs/QmdK5y8SntLHAVoNRq6isddmNYunrpv1JxAxyEgRiHdAAj"
        ],
        "license": "GPL-3.0"
      },
      "src/interfaces/IVault.sol": {
        "keccak256": "0x5684f59679e090ebe583d31fda6d8882469436e71670a4873151793675c7c6c4",
        "urls": [
          "bzz-raw://b265c21b1ff01a8c5cf9b1120feb6b5419a96a0e2a6d1ff4bdd89934c7869c9c",
          "dweb:/ipfs/QmdbCgiYE763cAHZ6nevhf7EzF8BzEkfwsbw4qWuxBkm8f"
        ],
        "license": "GPL-3.0"
      },
      "src/mocks/ERC20Token.sol": {
        "keccak256": "0x62b878fb4dde1f455866e0c1290cc50714805d02c2848a4a9bb33c5dfbc8464d",
        "urls": [
          "bzz-raw://7af3f5638d366abfbca3186813449259a33ed43e7c13ec983d389d73df1ad204",
          "dweb:/ipfs/QmeMdoEVTGqdcgSicTTcmycSQjToT7Sn5ZTgZdVFH9E6HA"
        ],
        "license": "GPL-3.0"
      },
      "src/modules/feed.sol": {
        "keccak256": "0x1578828ae5678db9d1b329e65902702f4a1f55c251af4c26c3ef67d16c3f9e3b",
        "urls": [
          "bzz-raw://8ec29513508ddd74340d57e24bbfd1ce679a6187ad4b9ec7e7546ad7fc333a44",
          "dweb:/ipfs/Qmc5e6Gwfxh9VExbizSDzm4yQpZ1Yoqtkr5xu2LrK8REjc"
        ],
        "license": "GPL-3.0"
      },
      "src/vault.sol": {
        "keccak256": "0x377a877ac854164da4e6b2491e2dba44d75cb56216e6b2456fa6b815565ac5e5",
        "urls": [
          "bzz-raw://a0a67817c649b3f65de4971c5346ea93b7432ac2f4e0013e5fb681e488aa1b58",
          "dweb:/ipfs/Qmbvcgn3AoTEahq9qgfuiL81zkZKLVQRbMhMeeqTMiiuKv"
        ],
        "license": "GPL-3.0"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/modules/feed.sol",
    "id": 46592,
    "exportedSymbols": {
      "ERC20Token": [46438],
      "Feed": [46591],
      "IFeed": [46158],
      "IOSM": [46166],
      "Ownable": [44381],
      "Pausable": [46103],
      "Vault": [48280]
    },
    "nodeType": "SourceUnit",
    "src": "36:1443:36",
    "nodes": [
      {
        "id": 46440,
        "nodeType": "PragmaDirective",
        "src": "36:23:36",
        "nodes": [],
        "literals": ["solidity", "0.8", ".21"]
      },
      {
        "id": 46442,
        "nodeType": "ImportDirective",
        "src": "108:48:36",
        "nodes": [],
        "absolutePath": "lib/solady/src/auth/Ownable.sol",
        "file": "solady/auth/Ownable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 46592,
        "sourceUnit": 44382,
        "symbolAliases": [
          {
            "foreign": {
              "id": 46441,
              "name": "Ownable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 44381,
              "src": "116:7:36",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 46444,
        "nodeType": "ImportDirective",
        "src": "157:44:36",
        "nodes": [],
        "absolutePath": "src/interfaces/IOSM.sol",
        "file": "../interfaces/IOSM.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 46592,
        "sourceUnit": 46167,
        "symbolAliases": [
          {
            "foreign": {
              "id": 46443,
              "name": "IOSM",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46166,
              "src": "165:4:36",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 46446,
        "nodeType": "ImportDirective",
        "src": "202:46:36",
        "nodes": [],
        "absolutePath": "src/interfaces/IFeed.sol",
        "file": "../interfaces/IFeed.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 46592,
        "sourceUnit": 46159,
        "symbolAliases": [
          {
            "foreign": {
              "id": 46445,
              "name": "IFeed",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46158,
              "src": "210:5:36",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 46449,
        "nodeType": "ImportDirective",
        "src": "249:47:36",
        "nodes": [],
        "absolutePath": "src/vault.sol",
        "file": "../vault.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 46592,
        "sourceUnit": 48281,
        "symbolAliases": [
          {
            "foreign": {
              "id": 46447,
              "name": "Vault",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48280,
              "src": "257:5:36",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 46448,
              "name": "ERC20Token",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46438,
              "src": "264:10:36",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 46451,
        "nodeType": "ImportDirective",
        "src": "297:49:36",
        "nodes": [],
        "absolutePath": "src/helpers/pausable.sol",
        "file": "../helpers/pausable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 46592,
        "sourceUnit": 46104,
        "symbolAliases": [
          {
            "foreign": {
              "id": 46450,
              "name": "Pausable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46103,
              "src": "305:8:36",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 46591,
        "nodeType": "ContractDefinition",
        "src": "348:1130:36",
        "nodes": [
          {
            "id": 46460,
            "nodeType": "VariableDeclaration",
            "src": "396:18:36",
            "nodes": [],
            "constant": false,
            "functionSelector": "fbfa77cf",
            "mutability": "mutable",
            "name": "vault",
            "nameLocation": "409:5:36",
            "scope": 46591,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vault_$48280",
              "typeString": "contract Vault"
            },
            "typeName": {
              "id": 46459,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 46458,
                "name": "Vault",
                "nameLocations": ["396:5:36"],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 48280,
                "src": "396:5:36"
              },
              "referencedDeclaration": 48280,
              "src": "396:5:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vault_$48280",
                "typeString": "contract Vault"
              }
            },
            "visibility": "public"
          },
          {
            "id": 46466,
            "nodeType": "VariableDeclaration",
            "src": "421:46:36",
            "nodes": [],
            "constant": false,
            "functionSelector": "eeb97d3b",
            "mutability": "mutable",
            "name": "collaterals",
            "nameLocation": "456:11:36",
            "scope": 46591,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_contract$_ERC20Token_$46438_$_t_contract$_IOSM_$46166_$",
              "typeString": "mapping(contract ERC20Token => contract IOSM)"
            },
            "typeName": {
              "id": 46465,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 46462,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 46461,
                  "name": "ERC20Token",
                  "nameLocations": ["429:10:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46438,
                  "src": "429:10:36"
                },
                "referencedDeclaration": 46438,
                "src": "429:10:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_ERC20Token_$46438",
                  "typeString": "contract ERC20Token"
                }
              },
              "nodeType": "Mapping",
              "src": "421:27:36",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_contract$_ERC20Token_$46438_$_t_contract$_IOSM_$46166_$",
                "typeString": "mapping(contract ERC20Token => contract IOSM)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 46464,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 46463,
                  "name": "IOSM",
                  "nameLocations": ["443:4:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46166,
                  "src": "443:4:36"
                },
                "referencedDeclaration": 46166,
                "src": "443:4:36",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IOSM_$46166",
                  "typeString": "contract IOSM"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 46479,
            "nodeType": "FunctionDefinition",
            "src": "474:88:36",
            "nodes": [],
            "body": {
              "id": 46478,
              "nodeType": "Block",
              "src": "532:30:36",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 46476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 46474,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46056,
                      "src": "542:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 46475,
                      "name": "TRUE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46054,
                      "src": "551:4:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "542:13:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 46477,
                  "nodeType": "ExpressionStatement",
                  "src": "542:13:36"
                }
              ]
            },
            "baseFunctions": [46094],
            "functionSelector": "3f4ba83a",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 46470,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46469,
                  "name": "whenPaused",
                  "nameLocations": ["511:10:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46086,
                  "src": "511:10:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "511:10:36"
              },
              {
                "id": 46472,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46471,
                  "name": "onlyOwner",
                  "nameLocations": ["522:9:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 44380,
                  "src": "522:9:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "522:9:36"
              }
            ],
            "name": "unpause",
            "nameLocation": "483:7:36",
            "overrides": {
              "id": 46468,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "502:8:36"
            },
            "parameters": {
              "id": 46467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "490:2:36"
            },
            "returnParameters": {
              "id": 46473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "532:0:36"
            },
            "scope": 46591,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 46492,
            "nodeType": "FunctionDefinition",
            "src": "568:90:36",
            "nodes": [],
            "body": {
              "id": 46491,
              "nodeType": "Block",
              "src": "627:31:36",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 46489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 46487,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46056,
                      "src": "637:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 46488,
                      "name": "FALSE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46051,
                      "src": "646:5:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "637:14:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 46490,
                  "nodeType": "ExpressionStatement",
                  "src": "637:14:36"
                }
              ]
            },
            "baseFunctions": [46102],
            "functionSelector": "8456cb59",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 46483,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46482,
                  "name": "whenNotPaused",
                  "nameLocations": ["603:13:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46075,
                  "src": "603:13:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "603:13:36"
              },
              {
                "id": 46485,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46484,
                  "name": "onlyOwner",
                  "nameLocations": ["617:9:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 44380,
                  "src": "617:9:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "617:9:36"
              }
            ],
            "name": "pause",
            "nameLocation": "577:5:36",
            "overrides": {
              "id": 46481,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "594:8:36"
            },
            "parameters": {
              "id": 46480,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "582:2:36"
            },
            "returnParameters": {
              "id": 46486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "627:0:36"
            },
            "scope": 46591,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 46512,
            "nodeType": "FunctionDefinition",
            "src": "664:118:36",
            "nodes": [],
            "body": {
              "id": 46511,
              "nodeType": "Block",
              "src": "690:92:36",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 46499,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "717:3:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 46500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "721:6:36",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "717:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 46498,
                      "name": "_initializeOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44260,
                      "src": "700:16:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 46501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "700:28:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 46502,
                  "nodeType": "ExpressionStatement",
                  "src": "700:28:36"
                },
                {
                  "expression": {
                    "id": 46505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 46503,
                      "name": "vault",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46460,
                      "src": "738:5:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$48280",
                        "typeString": "contract Vault"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 46504,
                      "name": "_vault",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46495,
                      "src": "746:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Vault_$48280",
                        "typeString": "contract Vault"
                      }
                    },
                    "src": "738:14:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$48280",
                      "typeString": "contract Vault"
                    }
                  },
                  "id": 46506,
                  "nodeType": "ExpressionStatement",
                  "src": "738:14:36"
                },
                {
                  "expression": {
                    "id": 46509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 46507,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46056,
                      "src": "762:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 46508,
                      "name": "TRUE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46054,
                      "src": "771:4:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "762:13:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 46510,
                  "nodeType": "ExpressionStatement",
                  "src": "762:13:36"
                }
              ]
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 46496,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 46495,
                  "mutability": "mutable",
                  "name": "_vault",
                  "nameLocation": "682:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 46512,
                  "src": "676:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Vault_$48280",
                    "typeString": "contract Vault"
                  },
                  "typeName": {
                    "id": 46494,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 46493,
                      "name": "Vault",
                      "nameLocations": ["676:5:36"],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48280,
                      "src": "676:5:36"
                    },
                    "referencedDeclaration": 48280,
                    "src": "676:5:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Vault_$48280",
                      "typeString": "contract Vault"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "675:14:36"
            },
            "returnParameters": {
              "id": 46497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "690:0:36"
            },
            "scope": 46591,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 46532,
            "nodeType": "FunctionDefinition",
            "src": "788:144:36",
            "nodes": [],
            "body": {
              "id": 46531,
              "nodeType": "Block",
              "src": "883:49:36",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 46529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 46525,
                        "name": "collaterals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46466,
                        "src": "893:11:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_contract$_ERC20Token_$46438_$_t_contract$_IOSM_$46166_$",
                          "typeString": "mapping(contract ERC20Token => contract IOSM)"
                        }
                      },
                      "id": 46527,
                      "indexExpression": {
                        "id": 46526,
                        "name": "collateral",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46515,
                        "src": "905:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Token_$46438",
                          "typeString": "contract ERC20Token"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "893:23:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IOSM_$46166",
                        "typeString": "contract IOSM"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 46528,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46518,
                      "src": "919:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IOSM_$46166",
                        "typeString": "contract IOSM"
                      }
                    },
                    "src": "893:32:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOSM_$46166",
                      "typeString": "contract IOSM"
                    }
                  },
                  "id": 46530,
                  "nodeType": "ExpressionStatement",
                  "src": "893:32:36"
                }
              ]
            },
            "baseFunctions": [46157],
            "functionSelector": "425bddcf",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 46521,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46520,
                  "name": "whenNotPaused",
                  "nameLocations": ["859:13:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46075,
                  "src": "859:13:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "859:13:36"
              },
              {
                "id": 46523,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46522,
                  "name": "onlyOwner",
                  "nameLocations": ["873:9:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 44380,
                  "src": "873:9:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "873:9:36"
              }
            ],
            "name": "setCollateralOSM",
            "nameLocation": "797:16:36",
            "parameters": {
              "id": 46519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 46515,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "825:10:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 46532,
                  "src": "814:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20Token_$46438",
                    "typeString": "contract ERC20Token"
                  },
                  "typeName": {
                    "id": 46514,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 46513,
                      "name": "ERC20Token",
                      "nameLocations": ["814:10:36"],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 46438,
                      "src": "814:10:36"
                    },
                    "referencedDeclaration": 46438,
                    "src": "814:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Token_$46438",
                      "typeString": "contract ERC20Token"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 46518,
                  "mutability": "mutable",
                  "name": "oracle",
                  "nameLocation": "842:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 46532,
                  "src": "837:11:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOSM_$46166",
                    "typeString": "contract IOSM"
                  },
                  "typeName": {
                    "id": 46517,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 46516,
                      "name": "IOSM",
                      "nameLocations": ["837:4:36"],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 46166,
                      "src": "837:4:36"
                    },
                    "referencedDeclaration": 46166,
                    "src": "837:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOSM_$46166",
                      "typeString": "contract IOSM"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "813:36:36"
            },
            "returnParameters": {
              "id": 46524,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "883:0:36"
            },
            "scope": 46591,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 46563,
            "nodeType": "FunctionDefinition",
            "src": "997:222:36",
            "nodes": [],
            "body": {
              "id": 46562,
              "nodeType": "Block",
              "src": "1064:155:36",
              "nodes": [],
              "statements": [
                {
                  "assignments": [46541],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 46541,
                      "mutability": "mutable",
                      "name": "price",
                      "nameLocation": "1082:5:36",
                      "nodeType": "VariableDeclaration",
                      "scope": 46562,
                      "src": "1074:13:36",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 46540,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1074:7:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 46547,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "baseExpression": {
                          "id": 46542,
                          "name": "collaterals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46466,
                          "src": "1090:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_contract$_ERC20Token_$46438_$_t_contract$_IOSM_$46166_$",
                            "typeString": "mapping(contract ERC20Token => contract IOSM)"
                          }
                        },
                        "id": 46544,
                        "indexExpression": {
                          "id": 46543,
                          "name": "collateral",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46535,
                          "src": "1102:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ERC20Token_$46438",
                            "typeString": "contract ERC20Token"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1090:23:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOSM_$46166",
                          "typeString": "contract IOSM"
                        }
                      },
                      "id": 46545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1114:7:36",
                      "memberName": "current",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46165,
                      "src": "1090:31:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 46546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1090:33:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1074:49:36"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 46550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 46548,
                      "name": "price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46541,
                      "src": "1137:5:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 46549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1146:1:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1137:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 46554,
                  "nodeType": "IfStatement",
                  "src": "1133:33:36",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 46551,
                        "name": "BadPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46136,
                        "src": "1156:8:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 46552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1156:10:36",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 46553,
                    "nodeType": "RevertStatement",
                    "src": "1149:17:36"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 46558,
                        "name": "collateral",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46535,
                        "src": "1194:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Token_$46438",
                          "typeString": "contract ERC20Token"
                        }
                      },
                      {
                        "id": 46559,
                        "name": "price",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46541,
                        "src": "1206:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERC20Token_$46438",
                          "typeString": "contract ERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 46555,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46460,
                        "src": "1176:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$48280",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 46557,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1182:11:36",
                      "memberName": "updatePrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 47232,
                      "src": "1176:17:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20Token_$46438_$_t_uint256_$returns$__$",
                        "typeString": "function (contract ERC20Token,uint256) external"
                      }
                    },
                    "id": 46560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1176:36:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 46561,
                  "nodeType": "ExpressionStatement",
                  "src": "1176:36:36"
                }
              ]
            },
            "baseFunctions": [46148],
            "functionSelector": "96e85ced",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 46538,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46537,
                  "name": "whenNotPaused",
                  "nameLocations": ["1050:13:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46075,
                  "src": "1050:13:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "1050:13:36"
              }
            ],
            "name": "updatePrice",
            "nameLocation": "1006:11:36",
            "parameters": {
              "id": 46536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 46535,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "1029:10:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 46563,
                  "src": "1018:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20Token_$46438",
                    "typeString": "contract ERC20Token"
                  },
                  "typeName": {
                    "id": 46534,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 46533,
                      "name": "ERC20Token",
                      "nameLocations": ["1018:10:36"],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 46438,
                      "src": "1018:10:36"
                    },
                    "referencedDeclaration": 46438,
                    "src": "1018:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Token_$46438",
                      "typeString": "contract ERC20Token"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1017:23:36"
            },
            "returnParameters": {
              "id": 46539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1064:0:36"
            },
            "scope": 46591,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 46590,
            "nodeType": "FunctionDefinition",
            "src": "1284:192:36",
            "nodes": [],
            "body": {
              "id": 46589,
              "nodeType": "Block",
              "src": "1380:96:36",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 46577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 46575,
                      "name": "price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46568,
                      "src": "1394:5:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 46576,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1403:1:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1394:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 46581,
                  "nodeType": "IfStatement",
                  "src": "1390:33:36",
                  "trueBody": {
                    "errorCall": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 46578,
                        "name": "BadPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46136,
                        "src": "1413:8:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 46579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1413:10:36",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 46580,
                    "nodeType": "RevertStatement",
                    "src": "1406:17:36"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 46585,
                        "name": "collateral",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46566,
                        "src": "1451:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20Token_$46438",
                          "typeString": "contract ERC20Token"
                        }
                      },
                      {
                        "id": 46586,
                        "name": "price",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46568,
                        "src": "1463:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERC20Token_$46438",
                          "typeString": "contract ERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 46582,
                        "name": "vault",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46460,
                        "src": "1433:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vault_$48280",
                          "typeString": "contract Vault"
                        }
                      },
                      "id": 46584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1439:11:36",
                      "memberName": "updatePrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 47232,
                      "src": "1433:17:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20Token_$46438_$_t_uint256_$returns$__$",
                        "typeString": "function (contract ERC20Token,uint256) external"
                      }
                    },
                    "id": 46587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1433:36:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 46588,
                  "nodeType": "ExpressionStatement",
                  "src": "1433:36:36"
                }
              ]
            },
            "functionSelector": "c7331b01",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 46571,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46570,
                  "name": "whenNotPaused",
                  "nameLocations": ["1356:13:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46075,
                  "src": "1356:13:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "1356:13:36"
              },
              {
                "id": 46573,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 46572,
                  "name": "onlyOwner",
                  "nameLocations": ["1370:9:36"],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 44380,
                  "src": "1370:9:36"
                },
                "nodeType": "ModifierInvocation",
                "src": "1370:9:36"
              }
            ],
            "name": "mockUpdatePrice",
            "nameLocation": "1293:15:36",
            "parameters": {
              "id": 46569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 46566,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "1320:10:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 46590,
                  "src": "1309:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20Token_$46438",
                    "typeString": "contract ERC20Token"
                  },
                  "typeName": {
                    "id": 46565,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 46564,
                      "name": "ERC20Token",
                      "nameLocations": ["1309:10:36"],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 46438,
                      "src": "1309:10:36"
                    },
                    "referencedDeclaration": 46438,
                    "src": "1309:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Token_$46438",
                      "typeString": "contract ERC20Token"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 46568,
                  "mutability": "mutable",
                  "name": "price",
                  "nameLocation": "1340:5:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 46590,
                  "src": "1332:13:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 46567,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1332:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1308:38:36"
            },
            "returnParameters": {
              "id": 46574,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1380:0:36"
            },
            "scope": 46591,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 46452,
              "name": "IFeed",
              "nameLocations": ["365:5:36"],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 46158,
              "src": "365:5:36"
            },
            "id": 46453,
            "nodeType": "InheritanceSpecifier",
            "src": "365:5:36"
          },
          {
            "baseName": {
              "id": 46454,
              "name": "Ownable",
              "nameLocations": ["372:7:36"],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 44381,
              "src": "372:7:36"
            },
            "id": 46455,
            "nodeType": "InheritanceSpecifier",
            "src": "372:7:36"
          },
          {
            "baseName": {
              "id": 46456,
              "name": "Pausable",
              "nameLocations": ["381:8:36"],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 46103,
              "src": "381:8:36"
            },
            "id": 46457,
            "nodeType": "InheritanceSpecifier",
            "src": "381:8:36"
          }
        ],
        "canonicalName": "Feed",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [46591, 46103, 44381, 46158],
        "name": "Feed",
        "nameLocation": "357:4:36",
        "scope": 46592,
        "usedErrors": [44193, 44196, 44199, 44202, 46046, 46048, 46136],
        "usedEvents": [44209, 44214, 44219, 46142]
      }
    ],
    "license": "GPL-3.0"
  },
  "id": 36
}
