@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
289 lines • 656 kB
JSON
{
"contractName": "ChainlinkPriceOracleV1",
"abi": [
{
"inputs": [
{
"internalType": "address[]",
"name": "_tokens",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "_chainlinkAggregators",
"type": "address[]"
},
{
"internalType": "uint8[]",
"name": "_tokenDecimals",
"type": "uint8[]"
},
{
"internalType": "address[]",
"name": "_tokenPairs",
"type": "address[]"
},
{
"internalType": "address",
"name": "_dolomiteMargin",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "stalenessDuration",
"type": "uint256"
}
],
"name": "StalenessDurationUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "aggregator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "tokenPair",
"type": "address"
}
],
"name": "TokenInsertedOrUpdated",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "DOLOMITE_MARGIN",
"outputs": [
{
"internalType": "contract IDolomiteMargin",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ONE_DOLLAR",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "stalenessThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_stalenessThreshold",
"type": "uint256"
}
],
"name": "ownerSetStalenessThreshold",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint8",
"name": "_tokenDecimals",
"type": "uint8"
},
{
"internalType": "address",
"name": "_chainlinkAggregator",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenPair",
"type": "address"
}
],
"name": "ownerInsertOrUpdateOracleToken",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "getPrice",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Monetary.Price",
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint8",
"name": "_tokenDecimals",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "_valueDecimals",
"type": "uint8"
}
],
"name": "standardizeNumberOfDecimals",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "getAggregatorByToken",
"outputs": [
{
"internalType": "contract IChainlinkAggregator",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "getDecimalsByToken",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "getTokenPairByToken",
"outputs": [
{
"internalType": "address",
"name": "_tokenPair",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_chainlinkAggregators\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_tokenDecimals\",\"type\":\"uint8[]\"},{\"internalType\":\"address[]\",\"name\":\"_tokenPairs\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stalenessDuration\",\"type\":\"uint256\"}],\"name\":\"StalenessDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenPair\",\"type\":\"address\"}],\"name\":\"TokenInsertedOrUpdated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ONE_DOLLAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getAggregatorByToken\",\"outputs\":[{\"internalType\":\"contract IChainlinkAggregator\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getDecimalsByToken\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getTokenPairByToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_tokenPair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_chainlinkAggregator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenPair\",\"type\":\"address\"}],\"name\":\"ownerInsertOrUpdateOracleToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stalenessThreshold\",\"type\":\"uint256\"}],\"name\":\"ownerSetStalenessThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stalenessThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_valueDecimals\",\"type\":\"uint8\"}],\"name\":\"standardizeNumberOfDecimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * An implementation of the IPriceOracle interface that makes Chainlink prices compatible with the protocol.\",\"methods\":{\"constructor\":{\"params\":{\"_chainlinkAggregators\":\"The Chainlink aggregators that have on-chain prices.\",\"_dolomiteMargin\":\"The address of the DolomiteMargin contract.\",\"_tokenDecimals\":\"The number of decimals that each token has.\",\"_tokenPairs\":\"The token against which this token's value is compared using the aggregator. The zero address means USD.\",\"_tokens\":\"The tokens that are supported by this adapter.\"}}},\"title\":\"ChainlinkPriceOracleV1\"},\"userdoc\":{\"methods\":{\"constructor\":\"Note, these arrays are set up such that each index corresponds with one-another.\",\"standardizeNumberOfDecimals(uint8,uint256,uint8)\":{\"notice\":\"Standardizes `value` to have `ONE_DOLLAR.decimals` - `tokenDecimals` number of decimals.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/oracles/ChainlinkPriceOracleV1.sol\":\"ChainlinkPriceOracleV1\"},\"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/external/interfaces/IChainlinkAccessControlAggregator.sol\":{\"keccak256\":\"0xbb94dc91633d6fb20e1d7e2b5ce1f11346e89a6bfc8c3ac5d163c35a3e4ad60a\",\"urls\":[\"bzz-raw://264c7c039caf44b1866769feb237010651730d546b54bb6f2b7bc77cf3b6c9c9\",\"dweb:/ipfs/QmX8TTF8E2G8TT1yig6qHC8amWDwaq1GG6iaKYTTHsYsjo\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol\":{\"keccak256\":\"0x0209c9f35dbe82857a6441d8d61f271baeb5098549eabf5fc6d33503d0d3e073\",\"urls\":[\"bzz-raw://2f6af7b5198548a9a5e3d8a30203d7cd003eae93cca22b8466c10e0dcfcbc367\",\"dweb:/ipfs/Qme3bQ58ZoQLYDoJQHnvEeQZqgqyWTFBYBmMoiem7LPXmz\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkPriceOracleV1.sol\":{\"keccak256\":\"0x9dc8cb0802ae0aaef49c0864220968e737e99c58aea1414b3451c32213b818df\",\"urls\":[\"bzz-raw://1124837a46ab2bbb07918f72c68adf7cdb13f146b92c48b1a0fadb39c37809e8\",\"dweb:/ipfs/QmSM21AJAfN3oRXebs6pc2YWGPgfZHbGPL6QkMCjG1vKiu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/oracles/ChainlinkPriceOracleV1.sol\":{\"keccak256\":\"0x7fac9e3bb26fbc2dd84f360458b64e196d4e808abded417d811c01d6402ad575\",\"urls\":[\"bzz-raw://ff059990fede37df5977d620c1199f20395c8449e5413e163cc309f1c02d34b7\",\"dweb:/ipfs/QmS5C31EYoURS8MskJqaDFBAHs2YuPWhawGAY2G4xeBC1H\"]},\"/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": "0x60806040523480156200001157600080fd5b5060405162002580380380620025808339810160408190526200003491620008d1565b600080546001600160a01b0319166001600160a01b038316179055835185516200009c9114600080516020620025608339815191527f496e76616c696420746f6b656e73206c656e6774680000000000000000000000620001d1602090811b62000b0217901c565b620000e78351855114600080516020620025608339815191527f496e76616c69642061676772656761746f7273206c656e677468000000000000620001d160201b62000b021760201c565b620001328251845114600080516020620025608339815191527f496e76616c696420646563696d616c73206c656e677468000000000000000000620001d160201b62000b021760201c565b845160005b81811015620001ad57620001a48782815181106200015157fe5b60200260200101518683815181106200016657fe5b60200260200101518884815181106200017b57fe5b60200260200101518785815181106200019057fe5b60200260200101516200024f60201b60201c565b60010162000137565b50620001c56201fa406001600160e01b036200037716565b50505050505062000c3a565b826200024a57620001eb826001600160e01b036200045516565b6101d160f51b62000205836001600160e01b036200045516565b604051602001620002199392919062000a80565b60408051601f198184030181529082905262461bcd60e51b8252620002419160040162000b21565b60405180910390fd5b505050565b6001600160a01b03848116600090815260016020908152604080832080546001600160a01b03191687861617905560029091529020805460ff191660ff861617905581161562000327576001600160a01b03818116600090815260016020908152604090912054620002f8921615159060008051602062002560833981519152907124b73b30b634b2103a37b5b2b7103830b4b960711b908590620009b2620004e2821b17901c565b6001600160a01b03848116600090815260036020526040902080546001600160a01b0319169183169190911790555b806001600160a01b0316826001600160a01b0316856001600160a01b03167ff6dcff57d435662a867049d43b76e51e72ffba006347ec701ce100b59ee6da3760405160405180910390a450505050565b620003c562015180821015600080516020620025608339815191527f5374616c656e657373207468726573686f6c6420746f6f206c6f770000000000846200055260201b6200117e1760201c565b6200041362093a80821115600080516020620025608339815191527f5374616c656e657373207468726573686f6c6420746f6f206869676800000000846200055260201b6200117e1760201c565b60048190556040517f831d03dda5fa6d81b12a8581f2ee8a25cb44b61429b62e96787e0ba64628464e906200044a90839062000b3b565b60405180910390a150565b606080826040516020016200046b919062000a69565b60408051601f19818403018152919052905060205b8015620004c5578151600019909101908290829081106200049d57fe5b01602001516001600160f81b03191615620004bf5760010181529050620004dd565b62000480565b5060408051600080825260208201909252905b509150505b919050565b836200054c57620004fc836001600160e01b036200045516565b6101d160f51b62000516846001600160e01b036200045516565b61080f60f21b62000530856001600160e01b03620005a016565b60405162000219959493929190601f60f91b9060200162000ab7565b50505050565b836200054c576200056c836001600160e01b036200045516565b6101d160f51b62000586846001600160e01b036200045516565b61080f60f21b62000530856001600160e01b03620006c616565b60408051602a80825260608281019093526001600160a01b038416918391602082018180388339019050509050603060f81b81600081518110620005e057fe5b60200101906001600160f81b031916908160001a905350607860f81b816001815181106200060a57fe5b60200101906001600160f81b031916908160001a90535060005b6014811015620004d8576002810262000649600f85166001600160e01b036200078b16565b8382602903815181106200065957fe5b60200101906001600160f81b031916908160001a90535060049390931c926200068e600f85166001600160e01b036200078b16565b8382602803815181106200069e57fe5b60200101906001600160f81b031916908160001a9053505060049290921c9160010162000624565b606081620006ed57506040805180820190915260018152600360fc1b6020820152620004dd565b8160005b81156200070757600101600a82049150620006f1565b6060816040519080825280601f01601f19166020018201604052801562000735576020820181803883390190505b508593509050815b8015620007825760001901600a840660300160f81b8282815181106200075f57fe5b60200101906001600160f81b031916908160001a905350600a840493506200073d565b50949350505050565b6000600a821015620007a557506030810160f81b620004dd565b5060570160f81b90565b8051620007bc8162000c15565b92915050565b600082601f830112620007d457600080fd5b8151620007eb620007e58262000b72565b62000b4b565b915081818352602084019350602081019050838560208402820111156200081157600080fd5b60005b838110156200084157816200082a8882620007af565b845250602092830192919091019060010162000814565b5050505092915050565b600082601f8301126200085d57600080fd5b81516200086e620007e58262000b72565b915081818352602084019350602081019050838560208402820111156200089457600080fd5b60005b83811015620008415781620008ad8882620008c4565b845250602092830192919091019060010162000897565b8051620007bc8162000c2f565b600080600080600060a08688031215620008ea57600080fd5b85516001600160401b038111156200090157600080fd5b6200090f88828901620007c2565b95505060208601516001600160401b038111156200092c57600080fd5b6200093a88828901620007c2565b94505060408601516001600160401b038111156200095757600080fd5b62000965888289016200084b565b93505060608601516001600160401b038111156200098257600080fd5b6200099088828901620007c2565b9250506080620009a388828901620007af565b9150509295509295909350565b620009c5620009bf8262000bad565b62000bc7565b82525050565b620009c5620009bf8262000bba565b620009c5620009bf8262000bc7565b6000620009f68262000b93565b62000a028185620004dd565b935062000a1481856020860162000bdc565b9290920192915050565b600062000a2b8262000b93565b62000a37818562000b97565b935062000a4981856020860162000bdc565b62000a548162000c0b565b9093019392505050565b620009c58162000bc7565b600062000a778284620009da565b50602001919050565b600062000a8e8286620009e9565b915062000a9c8285620009cb565b60028201915062000aae8284620009e9565b95945050505050565b600062000ac58289620009e9565b915062000ad38288620009cb565b60028201915062000ae58287620009e9565b915062000af38286620009cb565b60028201915062000b058285620009e9565b915062000b138284620009b0565b506001019695505050505050565b6020808252810162000b34818462000a1e565b9392505050565b60208101620007bc828462000a5e565b6040518181016001600160401b038111828210171562000b6a57600080fd5b604052919050565b60006001600160401b0382111562000b8957600080fd5b5060209081020190565b5190565b90815260200190565b6000620007bc8262000bca565b6001600160f81b03191690565b6001600160f01b03191690565b90565b6001600160a01b031690565b60ff1690565b60005b8381101562000bf957818101518382015260200162000bdf565b838111156200054c5750506000910152565b601f01601f191690565b62000c208162000ba0565b811462000c2c57600080fd5b50565b62000c208162000bd6565b6119168062000c4a6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806370363ed6116100765780638cfcee811161005b5780638cfcee81146101715780639c489b0b14610191578063a84f6ebb146101a4576100be565b806370363ed61461014b57806378f875b41461015e576100be565b806348f8c5c2116100a757806348f8c5c21461010157806356721d9814610116578063572ca9e714610136576100be565b806315c14a4a146100c357806341976e09146100e1575b600080fd5b6100cb6101ac565b6040516100d8919061173e565b60405180910390f35b6100f46100ef366004611387565b6101c8565b6040516100d8919061176d565b61011461010f366004611468565b610723565b005b610129610124366004611387565b610849565b6040516100d89190611789565b61013e610874565b6040516100d8919061177b565b6100cb610159366004611387565b610887565b61013e61016c366004611519565b6108b2565b61018461017f366004611387565b610903565b6040516100d89190611730565b61011461019f3660046113cb565b61092e565b61013e6109ac565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6101d0611311565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054610246911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e00000000000000000000000000000000000000856109b2565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160205260408082205481517ffeaf968c00000000000000000000000000000000000000000000000000000000815291519316928291849163feaf968c9160048082019260a092909190829003018186803b1580156102c257600080fd5b505afa1580156102d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102fa9190810190611486565b5093505092505061036360045461031a8342610ab790919063ffffffff16565b107f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b2070726963652065787069726564000000000000000000886109b2565b60008373ffffffffffffffffffffffffffffffffffffffff1663245a7bfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ab57600080fd5b505afa1580156103bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103e3919081019061142c565b90506104b2838273ffffffffffffffffffffffffffffffffffffffff166322adbc786040518163ffffffff1660e01b815260040160206040518083038186803b15801561042f57600080fd5b505afa158015610443573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610467919081019061144a565b60170b127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f206c6f77000000000000000000610b02565b61057f8173ffffffffffffffffffffffffffffffffffffffff166370da2f676040518163ffffffff1660e01b815260040160206040518083038186803b1580156104fb57600080fd5b505afa15801561050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610533919081019061144a565b60170b84127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f20686967680000000000000000610b02565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260036020908152604080832054600283528184205482517f313ce56700000000000000000000000000000000000000000000000000000000815292518996928316959461064a9460ff909316938893908d169263313ce56792600480840193919291829003018186803b15801561061257600080fd5b505afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061016c91908101906114fb565b905073ffffffffffffffffffffffffffffffffffffffff82166106845760405180602001604052808281525097505050505050505061071e565b600061068f836101c8565b5173ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040812054919250906106d190839060ff16600a0a63ffffffff610b5116565b905060405180602001604052806107106ec097ce7bc90715b34b9f10000000006107048588610b5190919063ffffffff16565b9063ffffffff610ba516565b905299505050505050505050505b919050565b3361083c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078e57600080fd5b505afa1580156107a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107c691908101906113ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d697465206f776e65722063616e2063616c6c00000000846109b2565b61084582610be7565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6ec097ce7bc90715b34b9f100000000081565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b600060ff8416600a0a816108db6ec097ce7bc90715b34b9f10000000008363ffffffff610ba516565b905060ff8416600a0a6108f881610704888563ffffffff610b5116565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b336109996000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078e57600080fd5b6109a585858585610ccb565b5050505050565b60045481565b83610ab1576109c083610e98565b7f3a200000000000000000000000000000000000000000000000000000000000006109ea84610e98565b7f203c000000000000000000000000000000000000000000000000000000000000610a1485610f70565b604051610a4a9594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016116d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610aa89160040161174c565b60405180910390fd5b50505050565b6000610af983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110e7565b90505b92915050565b82610b4c57610b1082610e98565b7f3a20000000000000000000000000000000000000000000000000000000000000610b3a83610e98565b604051602001610a4a939291906116a1565b505050565b600082610b6057506000610afc565b82820282848281610b6d57fe5b0414610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa89061175d565b6000610af983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061112d565b610c39620151808210157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f5374616c656e657373207468726573686f6c6420746f6f206c6f7700000000008461117e565b610c8b62093a808211157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f5374616c656e657373207468726573686f6c6420746f6f2068696768000000008461117e565b60048190556040517f831d03dda5fa6d81b12a8581f2ee8a25cb44b61429b62e96787e0ba64628464e90610cc090839061177b565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168786161790556002909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8616179055811615610e215773ffffffffffffffffffffffffffffffffffffffff818116600090815260016020526040902054610dcd911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e20706169720000000000000000000000000000846109b2565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167ff6dcff57d435662a867049d43b76e51e72ffba006347ec701ce100b59ee6da3760405160405180910390a450505050565b60608082604051602001610eac919061168c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610f555781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610f1857fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610f50576001018152905061071e565b610edf565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610fbc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610ffd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610f685760028102611048600f85166111e0565b83826029038151811061105757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611099600f85166111e0565b8382602803815181106110a857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c9160010161102f565b60008184841115611125576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8919061174c565b505050900390565b60008183611168576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8919061174c565b50600083858161117457fe5b0495945050505050565b83610ab15761118c83610e98565b7f3a200000000000000000000000000000000000000000000000000000000000006111b684610e98565b7f203c000000000000000000000000000000000000000000000000000000000000610a1485611202565b6000600a8210156111f857506030810160f81b61071e565b5060570160f81b90565b606081611243575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261071e565b8160005b811561125b57600101600a82049150611247565b6060816040519080825280601f01601f191660200182016040528015611288576020820181803883390190505b508593509050815b8015611308577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106112ce57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611290565b50949350505050565b6040518060200160405280600081525090565b8035610afc8161188f565b8051610afc8161188f565b8051610afc816118a6565b8051610afc816118af565b8051610afc816118b8565b8035610afc816118b8565b8035610afc816118c1565b8051610afc816118ca565b8051610afc816118c1565b60006020828403121561139957600080fd5b60006113a58484611324565b949350505050565b6000602082840312156113bf57600080fd5b60006113a5848461132f565b600080600080608085870312156113e157600080fd5b60006113ed8787611324565b94505060206113fe87828801611366565b935050604061140f87828801611324565b925050606061142087828801611324565b91505092959194509250565b60006020828403121561143e57600080fd5b60006113a5848461133a565b60006020828403121561145c57600080fd5b60006113a58484611345565b60006020828403121561147a57600080fd5b60006113a5848461135b565b600080600080600060a0868803121561149e57600080fd5b60006114aa8888611371565b95505060206114bb88828901611350565b94505060406114cc88828901611350565b93505060606114dd88828901611350565b92505060806114ee88828901611371565b9150509295509295909350565b60006020828403121561150d57600080fd5b60006113a5848461137c565b60008060006060848603121561152e57600080fd5b600061153a8686611366565b935050602061154b8682870161135b565b925050604061155c86828701611366565b9150509250925092565b61156f816117a4565b82525050565b61156f611581826117af565b6117f9565b61156f611581826117d4565b61156f611581826117f9565b60006115a982611797565b6115b3818561071e565b93506115c381856020860161183b565b9290920192915050565b61156f816117fc565b60006115e182611797565b6115eb818561179b565b93506115fb81856020860161183b565b61160481611867565b9093019392505050565b600061161b60218361179b565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b80516020830190610ab184825b61156f816117f9565b61156f81611826565b60006116988284611592565b50602001919050565b60006116ad828661159e565b91506116b98285611586565b6002820191506116c9828461159e565b95945050505050565b60006116de828961159e565b91506116ea8288611586565b6002820191506116fa828761159e565b91506117068286611586565b600282019150611716828561159e565b91506117228284611575565b506001019695505050505050565b60208101610afc8284611566565b60208101610afc82846115cd565b60208082528101610af981846115d6565b60208082528101610afc8161160e565b60208101610afc828461166d565b60208101610afc828461167a565b60208101610afc8284611683565b5190565b90815260200190565b6000610afc8261180d565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610afc826117a4565b60170b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b69ffffffffffffffffffff1690565b60005b8381101561185657818101518382015260200161183e565b83811115610ab15750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b611898816117a4565b81146118a357600080fd5b50565b611898816117fc565b61189881611807565b611898816117f9565b61189881611826565b6118988161182c56fea365627a7a72315820b8f18a41d7dae182a2951188859df33dce5199766cd2ecd1252c64285043ba946c6578706572696d656e74616cf564736f6c63430005100040436861696e6c696e6b50726963654f7261636c65563100000000000000000000",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806370363ed6116100765780638cfcee811161005b5780638cfcee81146101715780639c489b0b14610191578063a84f6ebb146101a4576100be565b806370363ed61461014b57806378f875b41461015e576100be565b806348f8c5c2116100a757806348f8c5c21461010157806356721d9814610116578063572ca9e714610136576100be565b806315c14a4a146100c357806341976e09146100e1575b600080fd5b6100cb6101ac565b6040516100d8919061173e565b60405180910390f35b6100f46100ef366004611387565b6101c8565b6040516100d8919061176d565b61011461010f366004611468565b610723565b005b610129610124366004611387565b610849565b6040516100d89190611789565b61013e610874565b6040516100d8919061177b565b6100cb610159366004611387565b610887565b61013e61016c366004611519565b6108b2565b61018461017f366004611387565b610903565b6040516100d89190611730565b61011461019f3660046113cb565b61092e565b61013e6109ac565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6101d0611311565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054610246911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e00000000000000000000000000000000000000856109b2565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160205260408082205481517ffeaf968c00000000000000000000000000000000000000000000000000000000815291519316928291849163feaf968c9160048082019260a092909190829003018186803b1580156102c257600080fd5b505afa1580156102d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102fa9190810190611486565b5093505092505061036360045461031a8342610ab790919063ffffffff16565b107f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b2070726963652065787069726564000000000000000000886109b2565b60008373ffffffffffffffffffffffffffffffffffffffff1663245a7bfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ab57600080fd5b505afa1580156103bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103e3919081019061142c565b90506104b2838273ffffffffffffffffffffffffffffffffffffffff166322adbc786040518163ffffffff1660e01b815260040160206040518083038186803b15801561042f57600080fd5b505afa158015610443573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610467919081019061144a565b60170b127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f206c6f77000000000000000000610b02565b61057f8173ffffffffffffffffffffffffffffffffffffffff166370da2f676040518163ffffffff1660e01b815260040160206040518083038186803b1580156104fb57600080fd5b505afa15801561050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610533919081019061144a565b60170b84127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f20686967680000000000000000610b02565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260036020908152604080832054600283528184205482517f313ce56700000000000000000000000000000000000000000000000000000000815292518996928316959461064a9460ff909316938893908d169263313ce56792600480840193919291829003018186803b15801561061257600080fd5b505afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061016c91908101906114fb565b905073ffffffffffffffffffffffffffffffffffffffff82166106845760405180602001604052808281525097505050505050505061071e565b600061068f836101c8565b5173ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040812054919250906106d190839060ff16600a0a63ffffffff610b5116565b905060405180602001604052806107106ec097ce7bc90715b34b9f10000000006107048588610b5190919063ffffffff16565b9063ffffffff610ba516565b905299505050505050505050505b919050565b3361083c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078e57600080fd5b505afa1580156107a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107c691908101906113ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d697465206f776e65722063616e2063616c6c00000000846109b2565b61084582610be7565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6ec097ce7bc90715b34b9f100000000081565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b600060ff8416600a0a816108db6ec097ce7bc90715b34b9f10000000008363ffffffff610ba516565b905060ff8416600a0a6108f881610704888563ffffffff610b5116565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b336109996000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078e57600080fd5b6109a585858585610ccb565b5050505050565b60045481565b83610ab1576109c083610e98565b7f3a200000000000000000000000000000000000000000000000000000000000006109ea84610e98565b7f203c000000000000000000000000000000000000000000000000000000000000610a1485610f70565b604051610a4a9594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016116d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610aa89160040161174c565b60405180910390fd5b50505050565b6000610af983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110e7565b90505b92915050565b82610b4c57610b1082610e98565b7f3a20000000000000000000000000000000000000000000000000000000000000610b3a83610e98565b604051602001610a4a939291906116a1565b505050565b600082610b6057506000610afc565b82820282848281610b6d57fe5b0414610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa89061175d565b6000610af983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061112d565b610c39620151808210157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f5374616c656e657373207468726573686f6c6420746f6f206c6f7700000000008461117e565b610c8b62093a808211157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f5374616c656e657373207468726573686f6c6420746f6f2068696768000000008461117e565b60048190556040517f831d03dda5fa6d81b12a8581f2ee8a25cb44b61429b62e96787e0ba64628464e90610cc090839061177b565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168786161790556002909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8616179055811615610e215773ffffffffffffffffffffffffffffffffffffffff818116600090815260016020526040902054610dcd911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e20706169720000000000000000000000000000846109b2565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167ff6dcff57d435662a867049d43b76e51e72ffba006347ec701ce100b59ee6da3760405160405180910390a450505050565b60608082604051602001610eac919061168c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610f555781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610f1857fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610f50576001018152905061071e565b610edf565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610fbc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610ffd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610f685760028102611048600f85166111e0565b83826029038151811061105757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611099600f85166111e0565b8382602803815181106110a857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c9160010161102f565b60008184841115611125576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8919061174c565b505050900390565b60008183611168576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa8919061174c565b50600083858161117457fe5b0495945050505050565b83610ab15761118c83610e98565b7f3a200000000000000000000000000000000000000000000000000000000000006111b684610e98565b7f203c000000000000000000000000000000000000000000000000000000000000610a1485611202565b6000600a8210156111f857506030810160f81b61071e565b5060570160f81b90565b606081611243575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261071e565b8160005b811561125b57600101600a82049150611247565b6060816040519080825280601f01601f191660200182016040528015611288576020820181803883390190505b508593509050815b8015611308577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106112ce57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611290565b50949350505050565b6040518060200160405280600081525090565b8035610afc8161188f565b8051610afc8161188f565b8051610afc816118a6565b8051610afc816118af565b8051610afc816118b8565b8035610afc816118b8565b8035610afc816118c156