{
  "contractName": "OnlyDolomiteMargin",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_dolomiteMargin",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DOLOMITE_MARGIN",
      "outputs": [
        {
          "internalType": "contract IDolomiteMargin",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * Inheritable contract that restricts the calling of certain functions to DolomiteMargin only\",\"methods\":{},\"title\":\"OnlyDolomiteMargin\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":\"OnlyDolomiteMargin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506040516101ad3803806101ad83398101604081905261002f91610065565b600080546001600160a01b0319166001600160a01b03929092169190911790556100b3565b805161005f8161009c565b92915050565b60006020828403121561007757600080fd5b60006100838484610054565b949350505050565b60006001600160a01b03821661005f565b6100a58161008b565b81146100b057600080fd5b50565b60ec806100c16000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806315c14a4a14602d575b600080fd5b60336047565b604051603e91906070565b60405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff1681565b606a81609b565b82525050565b60208101607c82846063565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000607c826000607c82608256fea365627a7a72315820f2960fc3210a1cca910359ab509334a7f32c742ecc82c39c038b97a221c31aea6c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c806315c14a4a14602d575b600080fd5b60336047565b604051603e91906070565b60405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff1681565b606a81609b565b82525050565b60208101607c82846063565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000607c826000607c82608256fea365627a7a72315820f2960fc3210a1cca910359ab509334a7f32c742ecc82c39c038b97a221c31aea6c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "950:1153:6:-;;;1221:138;8:9:-1;5:2;;;30:1;27;20:12;5:2;1221:138:6;;;;;;;;;;;;;;;;;;;;;1302:15;:50;;-1:-1:-1;;;;;;1302:50:6;-1:-1:-1;;;;;1302:50:6;;;;;;;;;;950:1153;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:263;;261:2;249:9;240:7;236:23;232:32;229:2;;;277:1;274;267:12;229:2;312:1;329:64;385:7;365:9;329:64;;;319:74;223:186;-1:-1;;;;223:186;416:91;;-1:-1;;;;;576:54;;478:24;559:76;642:117;711:24;729:5;711:24;;;704:5;701:35;691:2;;750:1;747;740:12;691:2;685:74;;;950:1153:6;;;;;;",
  "deployedSourceMap": "950:1153:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;950:1153:6;;;;;;;;;;;;;;;;;;;1130:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;5:176:-1:-;113:62;169:5;113:62;;;108:3;101:75;95:86;;;188:263;331:2;316:18;;345:96;320:9;414:6;345:96;;;302:149;;;;;458:121;531:42;520:54;;503:76;586:171;;690:62;746:5;764:133;868:24;886:5;868:24;",
  "source": "/*\n\n    Copyright 2022 Dolomite.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\nimport { Require } from \"../../protocol/lib/Require.sol\";\n\n\n/**\n * @title OnlyDolomiteMargin\n * @author Dolomite\n *\n * Inheritable contract that restricts the calling of certain functions to DolomiteMargin only\n */\ncontract OnlyDolomiteMargin {\n\n    // ============ Constants ============\n\n    bytes32 private constant FILE = \"OnlyDolomiteMargin\";\n\n    // ============ Storage ============\n\n    IDolomiteMargin public DOLOMITE_MARGIN;\n\n    // ============ Constructor ============\n\n    constructor (\n        address _dolomiteMargin\n    )\n        public\n    {\n        DOLOMITE_MARGIN = IDolomiteMargin(_dolomiteMargin);\n    }\n\n    // ============ Modifiers ============\n\n    modifier onlyDolomiteMargin(address _from) {\n        Require.that(\n            _from == address(DOLOMITE_MARGIN),\n            FILE,\n            \"Only Dolomite can call function\",\n            _from\n        );\n        _;\n    }\n\n    modifier onlyDolomiteMarginOwner(address _from) {\n        Require.that(\n            _from == DOLOMITE_MARGIN.owner(),\n            FILE,\n            \"Only Dolomite owner can call\",\n            _from\n        );\n        _;\n    }\n\n    modifier onlyGlobalOperator(address _from) {\n        Require.that(\n            DOLOMITE_MARGIN.getIsGlobalOperator(_from),\n            FILE,\n            \"Only global operator can call\",\n            _from\n        );\n        _;\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
    "exportedSymbols": {
      "OnlyDolomiteMargin": [
        3066
      ]
    },
    "id": 3067,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2987,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "595:23:6"
      },
      {
        "id": 2988,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "619:33:6"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "../../protocol/interfaces/IDolomiteMargin.sol",
        "id": 2990,
        "nodeType": "ImportDirective",
        "scope": 3067,
        "sourceUnit": 24694,
        "src": "654:80:6",
        "symbolAliases": [
          {
            "foreign": 2989,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../../protocol/lib/Require.sol",
        "id": 2992,
        "nodeType": "ImportDirective",
        "scope": 3067,
        "sourceUnit": 28453,
        "src": "735:57:6",
        "symbolAliases": [
          {
            "foreign": 2991,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title OnlyDolomiteMargin\n@author Dolomite\n * Inheritable contract that restricts the calling of certain functions to DolomiteMargin only",
        "fullyImplemented": true,
        "id": 3066,
        "linearizedBaseContracts": [
          3066
        ],
        "name": "OnlyDolomiteMargin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 2995,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 3066,
            "src": "1029:52:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2993,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1029:7:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4f6e6c79446f6c6f6d6974654d617267696e",
              "id": 2994,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1061:20:6",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_600a3b16524a2f58e8ce807d7af7b6834bb503052a6356db27706b9ba030a683",
                "typeString": "literal_string \"OnlyDolomiteMargin\""
              },
              "value": "OnlyDolomiteMargin"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2997,
            "name": "DOLOMITE_MARGIN",
            "nodeType": "VariableDeclaration",
            "scope": 3066,
            "src": "1130:38:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
              "typeString": "contract IDolomiteMargin"
            },
            "typeName": {
              "contractScope": null,
              "id": 2996,
              "name": "IDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24693,
              "src": "1130:15:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                "typeString": "contract IDolomiteMargin"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3008,
              "nodeType": "Block",
              "src": "1292:67:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3002,
                      "name": "DOLOMITE_MARGIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2997,
                      "src": "1302:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                        "typeString": "contract IDolomiteMargin"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3004,
                          "name": "_dolomiteMargin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2999,
                          "src": "1336:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3003,
                        "name": "IDolomiteMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24693,
                        "src": "1320:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IDolomiteMargin_$24693_$",
                          "typeString": "type(contract IDolomiteMargin)"
                        }
                      },
                      "id": 3005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1320:32:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                        "typeString": "contract IDolomiteMargin"
                      }
                    },
                    "src": "1302:50:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                      "typeString": "contract IDolomiteMargin"
                    }
                  },
                  "id": 3007,
                  "nodeType": "ExpressionStatement",
                  "src": "1302:50:6"
                }
              ]
            },
            "documentation": null,
            "id": 3009,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "name": "_dolomiteMargin",
                  "nodeType": "VariableDeclaration",
                  "scope": 3009,
                  "src": "1243:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1243:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1233:39:6"
            },
            "returnParameters": {
              "id": 3001,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1292:0:6"
            },
            "scope": 3066,
            "src": "1221:138:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3027,
              "nodeType": "Block",
              "src": "1452:181:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3016,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3011,
                          "src": "1488:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3018,
                              "name": "DOLOMITE_MARGIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2997,
                              "src": "1505:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            ],
                            "id": 3017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1497:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1497:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1488:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3021,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2995,
                        "src": "1535:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e",
                        "id": 3022,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1553:33:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a6d7f689c0454d3941ac54f7048d4cd6854d1c8ad2b702beac1eb983a0d46f83",
                          "typeString": "literal_string \"Only Dolomite can call function\""
                        },
                        "value": "Only Dolomite can call function"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3023,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3011,
                        "src": "1600:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a6d7f689c0454d3941ac54f7048d4cd6854d1c8ad2b702beac1eb983a0d46f83",
                          "typeString": "literal_string \"Only Dolomite can call function\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3013,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1462:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 3015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1462:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 3024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1462:153:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3025,
                  "nodeType": "ExpressionStatement",
                  "src": "1462:153:6"
                },
                {
                  "id": 3026,
                  "nodeType": "PlaceholderStatement",
                  "src": "1625:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3028,
            "name": "onlyDolomiteMargin",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3011,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3028,
                  "src": "1437:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3010,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1436:15:6"
            },
            "src": "1409:224:6",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3046,
              "nodeType": "Block",
              "src": "1687:177:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3035,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3030,
                          "src": "1723:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3036,
                              "name": "DOLOMITE_MARGIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2997,
                              "src": "1732:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            },
                            "id": 3037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24679,
                            "src": "1732:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 3038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1732:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1723:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3040,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2995,
                        "src": "1769:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920446f6c6f6d697465206f776e65722063616e2063616c6c",
                        "id": 3041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1787:30:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de094495cd6235678d06ebe91c21e9a70f6caaa5c5d2dd8726faefe498332374",
                          "typeString": "literal_string \"Only Dolomite owner can call\""
                        },
                        "value": "Only Dolomite owner can call"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3042,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "1831:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de094495cd6235678d06ebe91c21e9a70f6caaa5c5d2dd8726faefe498332374",
                          "typeString": "literal_string \"Only Dolomite owner can call\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3032,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1697:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 3034,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1697:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 3043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1697:149:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3044,
                  "nodeType": "ExpressionStatement",
                  "src": "1697:149:6"
                },
                {
                  "id": 3045,
                  "nodeType": "PlaceholderStatement",
                  "src": "1856:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3047,
            "name": "onlyDolomiteMarginOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3031,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3030,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3047,
                  "src": "1672:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3029,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1671:15:6"
            },
            "src": "1639:225:6",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3064,
              "nodeType": "Block",
              "src": "1913:188:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3056,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3049,
                            "src": "1985:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3054,
                            "name": "DOLOMITE_MARGIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2997,
                            "src": "1949:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                              "typeString": "contract IDolomiteMargin"
                            }
                          },
                          "id": 3055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getIsGlobalOperator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24496,
                          "src": "1949:35:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 3057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1949:42:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3058,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2995,
                        "src": "2005:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920676c6f62616c206f70657261746f722063616e2063616c6c",
                        "id": 3059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2023:31:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bf47f1f238c206de9537c308d125b045ffe0141f3cec59bb88f7f0fd63bef515",
                          "typeString": "literal_string \"Only global operator can call\""
                        },
                        "value": "Only global operator can call"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3060,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3049,
                        "src": "2068:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bf47f1f238c206de9537c308d125b045ffe0141f3cec59bb88f7f0fd63bef515",
                          "typeString": "literal_string \"Only global operator can call\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3051,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1923:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 3053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1923:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 3061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1923:160:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3062,
                  "nodeType": "ExpressionStatement",
                  "src": "1923:160:6"
                },
                {
                  "id": 3063,
                  "nodeType": "PlaceholderStatement",
                  "src": "2093:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3065,
            "name": "onlyGlobalOperator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3049,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3065,
                  "src": "1898:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1897:15:6"
            },
            "src": "1870:231:6",
            "visibility": "internal"
          }
        ],
        "scope": 3067,
        "src": "950:1153:6"
      }
    ],
    "src": "595:1509:6"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
    "exportedSymbols": {
      "OnlyDolomiteMargin": [
        3066
      ]
    },
    "id": 3067,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2987,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "595:23:6"
      },
      {
        "id": 2988,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "619:33:6"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "../../protocol/interfaces/IDolomiteMargin.sol",
        "id": 2990,
        "nodeType": "ImportDirective",
        "scope": 3067,
        "sourceUnit": 24694,
        "src": "654:80:6",
        "symbolAliases": [
          {
            "foreign": 2989,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../../protocol/lib/Require.sol",
        "id": 2992,
        "nodeType": "ImportDirective",
        "scope": 3067,
        "sourceUnit": 28453,
        "src": "735:57:6",
        "symbolAliases": [
          {
            "foreign": 2991,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title OnlyDolomiteMargin\n@author Dolomite\n * Inheritable contract that restricts the calling of certain functions to DolomiteMargin only",
        "fullyImplemented": true,
        "id": 3066,
        "linearizedBaseContracts": [
          3066
        ],
        "name": "OnlyDolomiteMargin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 2995,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 3066,
            "src": "1029:52:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2993,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1029:7:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4f6e6c79446f6c6f6d6974654d617267696e",
              "id": 2994,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1061:20:6",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_600a3b16524a2f58e8ce807d7af7b6834bb503052a6356db27706b9ba030a683",
                "typeString": "literal_string \"OnlyDolomiteMargin\""
              },
              "value": "OnlyDolomiteMargin"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2997,
            "name": "DOLOMITE_MARGIN",
            "nodeType": "VariableDeclaration",
            "scope": 3066,
            "src": "1130:38:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
              "typeString": "contract IDolomiteMargin"
            },
            "typeName": {
              "contractScope": null,
              "id": 2996,
              "name": "IDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24693,
              "src": "1130:15:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                "typeString": "contract IDolomiteMargin"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3008,
              "nodeType": "Block",
              "src": "1292:67:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3002,
                      "name": "DOLOMITE_MARGIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2997,
                      "src": "1302:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                        "typeString": "contract IDolomiteMargin"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3004,
                          "name": "_dolomiteMargin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2999,
                          "src": "1336:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3003,
                        "name": "IDolomiteMargin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24693,
                        "src": "1320:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IDolomiteMargin_$24693_$",
                          "typeString": "type(contract IDolomiteMargin)"
                        }
                      },
                      "id": 3005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1320:32:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                        "typeString": "contract IDolomiteMargin"
                      }
                    },
                    "src": "1302:50:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                      "typeString": "contract IDolomiteMargin"
                    }
                  },
                  "id": 3007,
                  "nodeType": "ExpressionStatement",
                  "src": "1302:50:6"
                }
              ]
            },
            "documentation": null,
            "id": 3009,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2999,
                  "name": "_dolomiteMargin",
                  "nodeType": "VariableDeclaration",
                  "scope": 3009,
                  "src": "1243:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1243:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1233:39:6"
            },
            "returnParameters": {
              "id": 3001,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1292:0:6"
            },
            "scope": 3066,
            "src": "1221:138:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3027,
              "nodeType": "Block",
              "src": "1452:181:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3016,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3011,
                          "src": "1488:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3018,
                              "name": "DOLOMITE_MARGIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2997,
                              "src": "1505:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            ],
                            "id": 3017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1497:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1497:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1488:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3021,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2995,
                        "src": "1535:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e",
                        "id": 3022,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1553:33:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a6d7f689c0454d3941ac54f7048d4cd6854d1c8ad2b702beac1eb983a0d46f83",
                          "typeString": "literal_string \"Only Dolomite can call function\""
                        },
                        "value": "Only Dolomite can call function"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3023,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3011,
                        "src": "1600:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a6d7f689c0454d3941ac54f7048d4cd6854d1c8ad2b702beac1eb983a0d46f83",
                          "typeString": "literal_string \"Only Dolomite can call function\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3013,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1462:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 3015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1462:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 3024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1462:153:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3025,
                  "nodeType": "ExpressionStatement",
                  "src": "1462:153:6"
                },
                {
                  "id": 3026,
                  "nodeType": "PlaceholderStatement",
                  "src": "1625:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3028,
            "name": "onlyDolomiteMargin",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3011,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3028,
                  "src": "1437:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3010,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1436:15:6"
            },
            "src": "1409:224:6",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3046,
              "nodeType": "Block",
              "src": "1687:177:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3035,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3030,
                          "src": "1723:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3036,
                              "name": "DOLOMITE_MARGIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2997,
                              "src": "1732:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            },
                            "id": 3037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24679,
                            "src": "1732:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 3038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1732:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1723:32:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3040,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2995,
                        "src": "1769:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920446f6c6f6d697465206f776e65722063616e2063616c6c",
                        "id": 3041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1787:30:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de094495cd6235678d06ebe91c21e9a70f6caaa5c5d2dd8726faefe498332374",
                          "typeString": "literal_string \"Only Dolomite owner can call\""
                        },
                        "value": "Only Dolomite owner can call"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3042,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "1831:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de094495cd6235678d06ebe91c21e9a70f6caaa5c5d2dd8726faefe498332374",
                          "typeString": "literal_string \"Only Dolomite owner can call\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3032,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1697:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 3034,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1697:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 3043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1697:149:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3044,
                  "nodeType": "ExpressionStatement",
                  "src": "1697:149:6"
                },
                {
                  "id": 3045,
                  "nodeType": "PlaceholderStatement",
                  "src": "1856:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3047,
            "name": "onlyDolomiteMarginOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3031,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3030,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3047,
                  "src": "1672:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3029,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1671:15:6"
            },
            "src": "1639:225:6",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3064,
              "nodeType": "Block",
              "src": "1913:188:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3056,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3049,
                            "src": "1985:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3054,
                            "name": "DOLOMITE_MARGIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2997,
                            "src": "1949:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                              "typeString": "contract IDolomiteMargin"
                            }
                          },
                          "id": 3055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getIsGlobalOperator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24496,
                          "src": "1949:35:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 3057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1949:42:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3058,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2995,
                        "src": "2005:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c7920676c6f62616c206f70657261746f722063616e2063616c6c",
                        "id": 3059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2023:31:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bf47f1f238c206de9537c308d125b045ffe0141f3cec59bb88f7f0fd63bef515",
                          "typeString": "literal_string \"Only global operator can call\""
                        },
                        "value": "Only global operator can call"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3060,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3049,
                        "src": "2068:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bf47f1f238c206de9537c308d125b045ffe0141f3cec59bb88f7f0fd63bef515",
                          "typeString": "literal_string \"Only global operator can call\""
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3051,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "1923:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 3053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "1923:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 3061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1923:160:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3062,
                  "nodeType": "ExpressionStatement",
                  "src": "1923:160:6"
                },
                {
                  "id": 3063,
                  "nodeType": "PlaceholderStatement",
                  "src": "2093:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3065,
            "name": "onlyGlobalOperator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3049,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3065,
                  "src": "1898:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1897:15:6"
            },
            "src": "1870:231:6",
            "visibility": "internal"
          }
        ],
        "scope": 3067,
        "src": "950:1153:6"
      }
    ],
    "src": "595:1509:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2026-03-02T16:38:28.495Z",
  "devdoc": {
    "author": "Dolomite * Inheritable contract that restricts the calling of certain functions to DolomiteMargin only",
    "methods": {},
    "title": "OnlyDolomiteMargin"
  },
  "userdoc": {
    "methods": {}
  }
}