{
  "contractName": "TBTCSystemTestnet",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_relay",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_allowNewDeposits",
          "type": "bool"
        }
      ],
      "name": "AllowNewDepositsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "CollateralizationThresholdsUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        }
      ],
      "name": "CollateralizationThresholdsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "CourtesyCalled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Created",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        }
      ],
      "name": "EthBtcPriceFeedAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "EthBtcPriceFeedAdditionStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "ExitedCourtesyCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "FraudDuringSetup",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Funded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "FunderAbortRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "GotRedemptionSignature",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keepStakedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_fullyBackedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_factorySelector",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "KeepFactoriesUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keepStakedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_fullyBackedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_factorySelector",
          "type": "address"
        }
      ],
      "name": "KeepFactoriesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Liquidated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64[]",
          "name": "_lotSizes",
          "type": "uint64[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LotSizesUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64[]",
          "name": "_lotSizes",
          "type": "uint64[]"
        }
      ],
      "name": "LotSizesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Redeemed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_requester",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_utxoValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_requestedFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_outpoint",
          "type": "bytes"
        }
      ],
      "name": "RedemptionRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "RegisteredPubkey",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "SetupFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "SignerFeeDivisorUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        }
      ],
      "name": "SignerFeeDivisorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "StartedLiquidation",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_caller",
          "type": "address"
        }
      ],
      "name": "approvedToLog",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        }
      ],
      "name": "beginCollateralizationThresholdsUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IMedianizer",
          "name": "_ethBtcPriceFeed",
          "type": "address"
        }
      ],
      "name": "beginEthBtcPriceFeedAddition",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepStakedFactory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_fullyBackedFactory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_factorySelector",
          "type": "address"
        }
      ],
      "name": "beginKeepFactoriesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64[]",
          "name": "_lotSizes",
          "type": "uint64[]"
        }
      ],
      "name": "beginLotSizesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        }
      ],
      "name": "beginSignerFeeDivisorUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "emergencyPauseNewDeposits",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fetchBitcoinPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fetchRelayCurrentDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fetchRelayPreviousDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeCollateralizationThresholdsUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeEthBtcPriceFeedAddition",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeKeepFactoriesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeLotSizesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeSignerFeeDivisorUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowNewDeposits",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowedLotSizes",
      "outputs": [
        {
          "internalType": "uint64[]",
          "name": "",
          "type": "uint64[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getGovernanceTimeDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitialCollateralizedPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getKeepFactoriesUpgradeabilityPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMaximumLotSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMinimumLotSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNewDepositFeeEstimate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPriceFeedGovernanceTimeDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingCollateralizationThresholdsUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingEthBtcPriceFeedAdditionTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingKeepFactoriesUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingKeepFactoriesUpgradeabilityTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingLotSizesUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingPauseTerm",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingSignerFeeDivisorUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSeverelyUndercollateralizedThresholdPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSignerFeeDivisor",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getUndercollateralizedThresholdPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IBondedECDSAKeepFactory",
          "name": "_defaultKeepFactory",
          "type": "address"
        },
        {
          "internalType": "contract DepositFactory",
          "name": "_depositFactory",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "_masterDepositAddress",
          "type": "address"
        },
        {
          "internalType": "contract TBTCToken",
          "name": "_tbtcToken",
          "type": "address"
        },
        {
          "internalType": "contract TBTCDepositToken",
          "name": "_tbtcDepositToken",
          "type": "address"
        },
        {
          "internalType": "contract FeeRebateToken",
          "name": "_feeRebateToken",
          "type": "address"
        },
        {
          "internalType": "contract VendingMachine",
          "name": "_vendingMachine",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "_keepThreshold",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "_keepSize",
          "type": "uint16"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_requestedLotSizeSatoshis",
          "type": "uint64"
        }
      ],
      "name": "isAllowedLotSize",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keepSize",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keepThreshold",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logCourtesyCalled",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "name": "logCreated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logExitedCourtesyCall",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logFraudDuringSetup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        }
      ],
      "name": "logFunded",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "logFunderRequestedAbort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "logGotRedemptionSignature",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logLiquidated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        }
      ],
      "name": "logRedeemed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_requester",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_utxoValue",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_requestedFee",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_outpoint",
          "type": "bytes"
        }
      ],
      "name": "logRedemptionRequested",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        }
      ],
      "name": "logRegisteredPubkey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logSetupFailed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        }
      ],
      "name": "logStartedLiquidation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "priceFeed",
      "outputs": [
        {
          "internalType": "contract ISatWeiPriceFeed",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "refreshMinimumBondableValue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "relay",
      "outputs": [
        {
          "internalType": "contract IRelay",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_requestedLotSizeSatoshis",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_maxSecuredLifetime",
          "type": "uint256"
        }
      ],
      "name": "requestNewKeep",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "resumeNewDeposits",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_relay\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_allowNewDeposits\",\"type\":\"bool\"}],\"name\":\"AllowNewDepositsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"CollateralizationThresholdsUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"}],\"name\":\"CollateralizationThresholdsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"CourtesyCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"}],\"name\":\"EthBtcPriceFeedAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"EthBtcPriceFeedAdditionStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"ExitedCourtesyCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"FraudDuringSetup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Funded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"FunderAbortRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"GotRedemptionSignature\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_keepStakedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_fullyBackedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_factorySelector\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"KeepFactoriesUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_keepStakedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_fullyBackedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_factorySelector\",\"type\":\"address\"}],\"name\":\"KeepFactoriesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Liquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"_lotSizes\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"LotSizesUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"_lotSizes\",\"type\":\"uint64[]\"}],\"name\":\"LotSizesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Redeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_utxoValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_requestedFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_outpoint\",\"type\":\"bytes\"}],\"name\":\"RedemptionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"RegisteredPubkey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"SetupFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"SignerFeeDivisorUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"}],\"name\":\"SignerFeeDivisorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"StartedLiquidation\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approvedToLog\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"}],\"name\":\"beginCollateralizationThresholdsUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IMedianizer\",\"name\":\"_ethBtcPriceFeed\",\"type\":\"address\"}],\"name\":\"beginEthBtcPriceFeedAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepStakedFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_fullyBackedFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_factorySelector\",\"type\":\"address\"}],\"name\":\"beginKeepFactoriesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"_lotSizes\",\"type\":\"uint64[]\"}],\"name\":\"beginLotSizesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"}],\"name\":\"beginSignerFeeDivisorUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"emergencyPauseNewDeposits\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fetchBitcoinPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fetchRelayCurrentDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fetchRelayPreviousDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeCollateralizationThresholdsUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeEthBtcPriceFeedAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeKeepFactoriesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeLotSizesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeSignerFeeDivisorUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowNewDeposits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowedLotSizes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getGovernanceTimeDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitialCollateralizedPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getKeepFactoriesUpgradeabilityPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMaximumLotSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinimumLotSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNewDepositFeeEstimate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPriceFeedGovernanceTimeDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingCollateralizationThresholdsUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingEthBtcPriceFeedAdditionTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingKeepFactoriesUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingKeepFactoriesUpgradeabilityTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingLotSizesUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingPauseTerm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingSignerFeeDivisorUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSeverelyUndercollateralizedThresholdPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSignerFeeDivisor\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getUndercollateralizedThresholdPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IBondedECDSAKeepFactory\",\"name\":\"_defaultKeepFactory\",\"type\":\"address\"},{\"internalType\":\"contract DepositFactory\",\"name\":\"_depositFactory\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_masterDepositAddress\",\"type\":\"address\"},{\"internalType\":\"contract TBTCToken\",\"name\":\"_tbtcToken\",\"type\":\"address\"},{\"internalType\":\"contract TBTCDepositToken\",\"name\":\"_tbtcDepositToken\",\"type\":\"address\"},{\"internalType\":\"contract FeeRebateToken\",\"name\":\"_feeRebateToken\",\"type\":\"address\"},{\"internalType\":\"contract VendingMachine\",\"name\":\"_vendingMachine\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_keepThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_keepSize\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_requestedLotSizeSatoshis\",\"type\":\"uint64\"}],\"name\":\"isAllowedLotSize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"keepSize\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"keepThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logCourtesyCalled\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"}],\"name\":\"logCreated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logExitedCourtesyCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logFraudDuringSetup\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"}],\"name\":\"logFunded\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"logFunderRequestedAbort\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"logGotRedemptionSignature\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logLiquidated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"}],\"name\":\"logRedeemed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_utxoValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requestedFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_outpoint\",\"type\":\"bytes\"}],\"name\":\"logRedemptionRequested\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"}],\"name\":\"logRegisteredPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logSetupFailed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"}],\"name\":\"logStartedLiquidation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"priceFeed\",\"outputs\":[{\"internalType\":\"contract ISatWeiPriceFeed\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"refreshMinimumBondableValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relay\",\"outputs\":[{\"internalType\":\"contract IRelay\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_requestedLotSizeSatoshis\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_maxSecuredLifetime\",\"type\":\"uint256\"}],\"name\":\"requestNewKeep\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeNewDeposits\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approvedToLog(address)\":{\"details\":\"checks tbtcDepositToken to see if the caller represents                     an existing deposit.                     We don't require this, so deposits are not bricked if the system borks.\",\"params\":{\"_caller\":\"The address of the calling contract.\"},\"return\":\"True if approved, otherwise false.\"},\"beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)\":{\"details\":\"This can be finalized by calling `finalizeCollateralizationThresholdsUpdate`         Anytime after `governanceTimeDelay` has elapsed.\",\"params\":{\"_initialCollateralizedPercent\":\"default signing bond percent for new deposits\",\"_severelyUndercollateralizedThresholdPercent\":\"second undercollateralization trigger\",\"_undercollateralizedThresholdPercent\":\"first undercollateralization trigger\"}},\"beginEthBtcPriceFeedAddition(address)\":{\"details\":\"This can be finalized by calling `finalizeEthBtcPriceFeedAddition`      anytime after `priceFeedGovernanceTimeDelay` has elapsed.\"},\"beginKeepFactoriesUpdate(address,address,address)\":{\"details\":\"It can be finalized by calling `finalizeKeepFactoriesUpdate`      any time after `governanceTimeDelay` has elapsed. This can be      called more than once until finalized to reset the values and      timer. An update can only be initialized before      `keepFactoriesUpgradeabilityPeriod` elapses after system initialization;      after that, no further updates can be initialized, though any pending      update can be finalized. All calls must set all three properties to      their desired value; leaving a value as 0, even if it was previously      set, will update that value to be 0. ETH-bond-only factory or the      strategy are allowed to be set as zero addresses.\",\"params\":{\"_factorySelector\":\"Address of the keep factory selection strategy.\",\"_fullyBackedFactory\":\"Address of the ETH-bond-only-based factory.\",\"_keepStakedFactory\":\"Address of the KEEP staked based factory.\"}},\"beginLotSizesUpdate(uint64[])\":{\"details\":\"Lot size array should always contain 10**8 satoshis (1 BTC) and         cannot contain values less than 50000 satoshis (0.0005 BTC) or         greater than 10**10 satoshis (100 BTC). Lot size array must not         have duplicates and it must be sorted.         This can be finalized by calling `finalizeLotSizesUpdate`         anytime after `governanceTimeDelay` has elapsed.\",\"params\":{\"_lotSizes\":\"Array of allowed lot sizes.\"}},\"beginSignerFeeDivisorUpdate(uint16)\":{\"details\":\"This can be finalized by calling `finalizeSignerFeeDivisorUpdate`         Anytime after `governanceTimeDelay` has elapsed.\",\"params\":{\"_signerFeeDivisor\":\"The signer fee divisor.\"}},\"fetchBitcoinPrice()\":{\"details\":\"Reverts if the price of one satoshi is 0 wei, or if the price of      one satoshi is 1 ether. Can only be called by a deposit with minted      TDT.\",\"return\":\"The price of one satoshi in wei.\"},\"finalizeCollateralizationThresholdsUpdate()\":{\"details\":\"`beginCollateralizationThresholdsUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the collateralization thresholds to the       value set in `beginCollateralizationThresholdsUpdate`\"},\"finalizeEthBtcPriceFeedAddition()\":{\"details\":\"`beginEthBtcPriceFeedAddition` must be called first; once      `ethBtcPriceFeedAdditionInitiated` has passed, this function can be      called to append a new price feed.\"},\"finalizeKeepFactoriesUpdate()\":{\"details\":\"`beginKeepFactoriesUpdate` must be called first; once      `governanceTimeDelay` has passed, this function can be called to      set factories addresses to the values set in `beginKeepFactoriesUpdate`.\"},\"finalizeLotSizesUpdate()\":{\"details\":\"`beginLotSizesUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the lot sizes to the       value set in `beginLotSizesUpdate`\"},\"finalizeSignerFeeDivisorUpdate()\":{\"details\":\"`beginSignerFeeDivisorUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the signer fee divisor to the       value set in `beginSignerFeeDivisorUpdate`\"},\"getAllowNewDeposits()\":{\"return\":\"True if new deposits should be allowed by the emergency pause button\"},\"getAllowedLotSizes()\":{\"return\":\"Uint64 array of allowed lot sizes\"},\"getMaximumLotSize()\":{\"return\":\"The largest lot size, in satoshis.\"},\"getMinimumLotSize()\":{\"return\":\"The lowest lot size, in satoshis.\"},\"getNewDepositFeeEstimate()\":{\"return\":\"Uint256 estimate.\"},\"getSignerFeeDivisor()\":{\"return\":\"The signer fee divisor.\"},\"initialize(address,address,address,address,address,address,address,uint16,uint16)\":{\"details\":\"Only the Deposit factory should call this, and only once.\",\"params\":{\"_defaultKeepFactory\":\"ECDSA keep factory backed by KEEP stake.\",\"_depositFactory\":\"Deposit Factory. More info in `DepositFactory`.\",\"_feeRebateToken\":\"FeeRebateToken (FRT). More info in `FeeRebateToken`.\",\"_keepSize\":\"Signing group size.\",\"_keepThreshold\":\"Signing group honesty threshold.\",\"_masterDepositAddress\":\"Master Deposit address. More info in `Deposit`.\",\"_tbtcDepositToken\":\"TBTCDepositToken (TDT). More info in `TBTCDepositToken`.\",\"_tbtcToken\":\"TBTCToken. More info in `TBTCToken`.\"}},\"isAllowedLotSize(uint64)\":{\"params\":{\"_requestedLotSizeSatoshis\":\"Lot size to check.\"},\"return\":\"True if lot size is allowed, false otherwise.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"logCourtesyCalled()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logCreated(address)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_keepAddress\":\"The address of the associated keep.\"},\"return\":\"True if successful, else revert.\"},\"logExitedCourtesyCall()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFraudDuringSetup()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFunded(bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFunderRequestedAbort(bytes)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logGotRedemptionSignature(bytes32,bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_digest\":\"signed digest.\",\"_r\":\"signature r value.\",\"_s\":\"signature s value.\"}},\"logLiquidated()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logRedeemed(bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)\":{\"details\":\"This is the only event without an explicit timestamp.\",\"params\":{\"_digest\":\"The calculated sighash digest.\",\"_outpoint\":\"The 36 byte outpoint.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output script.\",\"_requestedFee\":\"The requester or bump-system specified fee.\",\"_requester\":\"The ethereum address of the requester.\",\"_utxoValue\":\"The size of the utxo in sat.\"},\"return\":\"True if successful, else revert.\"},\"logRegisteredPubkey(bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logSetupFailed()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logStartedLiquidation(bool)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_wasFraud\":\"True if liquidating for fraud.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"refreshMinimumBondableValue()\":{\"details\":\"It is recommended to call this function on tBTC initialization and after minimum lot size update.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestNewKeep(uint64,uint256)\":{\"params\":{\"_maxSecuredLifetime\":\"Duration of stake lock in seconds.\",\"_requestedLotSizeSatoshis\":\"Lot size in satoshis.\"},\"return\":\"Address of a new keep.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"approvedToLog(address)\":{\"notice\":\"Checks if an address is an allowed logger.\"},\"beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)\":{\"notice\":\"Set the system collateralization levels\"},\"beginEthBtcPriceFeedAddition(address)\":{\"notice\":\"Add a new ETH/BTC price feed contract to the priecFeed.\"},\"beginKeepFactoriesUpdate(address,address,address)\":{\"notice\":\"Sets the addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory and the selection strategy         that will choose between the two factories for new deposits.         When the ETH-only-backed factory and strategy are not set TBTCSystem         will use KEEP-staked factory. When both factories and strategy         are set, TBTCSystem load balances between two factories based on         the selection strategy.\"},\"beginLotSizesUpdate(uint64[])\":{\"notice\":\"Set the allowed deposit lot sizes.\"},\"beginSignerFeeDivisorUpdate(uint16)\":{\"notice\":\"Set the system signer fee divisor.\"},\"emergencyPauseNewDeposits()\":{\"notice\":\"One-time-use emergency function to disallow future deposit creation for 10 days.\"},\"fetchBitcoinPrice()\":{\"notice\":\"Get the price of one satoshi in wei.\"},\"finalizeCollateralizationThresholdsUpdate()\":{\"notice\":\"Finish setting the system collateralization levels\"},\"finalizeEthBtcPriceFeedAddition()\":{\"notice\":\"Finish adding a new price feed contract to the priceFeed.\"},\"finalizeKeepFactoriesUpdate()\":{\"notice\":\"Finish setting addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory, and the selection strategy         that will choose between the two factories for new deposits.\"},\"finalizeLotSizesUpdate()\":{\"notice\":\"Finish setting the accepted system lot sizes.\"},\"finalizeSignerFeeDivisorUpdate()\":{\"notice\":\"Finish setting the system signer fee divisor.\"},\"getAllowNewDeposits()\":{\"notice\":\"Returns whether new deposits should be allowed.\"},\"getAllowedLotSizes()\":{\"notice\":\"Gets the allowed lot sizes\"},\"getGovernanceTimeDelay()\":{\"notice\":\"Returns the time delay used for governance actions except for         price feed additions.\"},\"getInitialCollateralizedPercent()\":{\"notice\":\"Get the system initial collateralized level for new deposits.\"},\"getKeepFactoriesUpgradeabilityPeriod()\":{\"notice\":\"Returns the time period when keep factories upgrades are allowed.\"},\"getMaximumLotSize()\":{\"notice\":\"Return the largest lot size currently enabled for deposits.\"},\"getMinimumLotSize()\":{\"notice\":\"Return the lowest lot size currently enabled for deposits.\"},\"getNewDepositFeeEstimate()\":{\"notice\":\"Gets a fee estimate for creating a new Deposit.\"},\"getPriceFeedGovernanceTimeDelay()\":{\"notice\":\"Returns the time delay used for price feed addition governance         actions.\"},\"getRemainingCollateralizationThresholdsUpdateTime()\":{\"notice\":\"Get the time remaining until the collateralization thresholds can be updated.\"},\"getRemainingEthBtcPriceFeedAdditionTime()\":{\"notice\":\"Get the time remaining until the signer fee divisor can be updated.\"},\"getRemainingKeepFactoriesUpdateTime()\":{\"notice\":\"Get the time remaining until the Keep ETH-only-backed ECDSA keep         factory and the selection strategy that will choose between it         and the KEEP-backed factory can be updated.\"},\"getRemainingKeepFactoriesUpgradeabilityTime()\":{\"notice\":\"Get the time remaining until Keep factories can no longer be updated.\"},\"getRemainingLotSizesUpdateTime()\":{\"notice\":\"Get the time remaining until the lot sizes can be updated.\"},\"getRemainingSignerFeeDivisorUpdateTime()\":{\"notice\":\"Get the time remaining until the signer fee divisor can be updated.\"},\"getSeverelyUndercollateralizedThresholdPercent()\":{\"notice\":\"Get the system severe undercollateralization level for new deposits\"},\"getSignerFeeDivisor()\":{\"notice\":\"Gets the system signer fee divisor.\"},\"getUndercollateralizedThresholdPercent()\":{\"notice\":\"Get the system undercollateralization level for new deposits\"},\"initialize(address,address,address,address,address,address,address,uint16,uint16)\":{\"notice\":\"Initialize contracts\"},\"isAllowedLotSize(uint64)\":{\"notice\":\"Check if a lot size is allowed.\"},\"logCourtesyCalled()\":{\"notice\":\"Fires a CourtesyCalled event.\"},\"logCreated(address)\":{\"notice\":\"Fires a Created event.\"},\"logExitedCourtesyCall()\":{\"notice\":\"Fires a ExitedCourtesyCall event\"},\"logFraudDuringSetup()\":{\"notice\":\"Fires a FraudDuringSetup event.\"},\"logFunded(bytes32)\":{\"notice\":\"Fires a Funded event.\"},\"logFunderRequestedAbort(bytes)\":{\"notice\":\"Fires a FunderAbortRequested event.\"},\"logGotRedemptionSignature(bytes32,bytes32,bytes32)\":{\"notice\":\"Fires a GotRedemptionSignature event.\"},\"logLiquidated()\":{\"notice\":\"Fires a Liquidated event\"},\"logRedeemed(bytes32)\":{\"notice\":\"Fires a Redeemed event\"},\"logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)\":{\"notice\":\"Fires a RedemptionRequested event.\"},\"logRegisteredPubkey(bytes32,bytes32)\":{\"notice\":\"Fires a RegisteredPubkey event.\"},\"logSetupFailed()\":{\"notice\":\"Fires a SetupFailed event.\"},\"logStartedLiquidation(bool)\":{\"notice\":\"Fires a StartedLiquidation event.\"},\"refreshMinimumBondableValue()\":{\"notice\":\"Refreshes the minimum bondable value required from the operator to join the sortition pool for tBTC. The minimum bondable value is equal to the current minimum lot size collateralized 150% multiplied by the current BTC price.\"},\"requestNewKeep(uint64,uint256)\":{\"notice\":\"Request a new keep opening.\"},\"resumeNewDeposits()\":{\"notice\":\"Anyone can reactivate deposit creations after the pause duration is over.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemTestnet.sol\":\"TBTCSystemTestnet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":{\"keccak256\":\"0xd2422abaf64bf2d28f4c0548bc31c3d0e4c5f3e4414486c149b773bea0c9db0a\",\"urls\":[\"bzz-raw://c4b0e3caea108ce67da5922906753dc1a1f87cee923e7c32260239150f2152bb\",\"dweb:/ipfs/QmcHcftf4M6ZyuFG725QiFGHuAtz6zDQZ9HCEaoP5Wb6Fd\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol\":{\"keccak256\":\"0x4e25c6bfe874c5254659e99b5d87ad0bd6299468106c8f955e973a0431367dec\",\"urls\":[\"bzz-raw://c54c7e956fee91813946745f23d11062a9dd2c07d916979871f7468509295de4\",\"dweb:/ipfs/QmQ1qFjzq9uY7SmdUqzwNM7z8AAnCbji2joqkJYJSBaJyW\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol\":{\"keccak256\":\"0xe223f4e039e347d3eec8eea8d30d6f87f25ab3f8839e96b5da608c6a012db2c2\",\"urls\":[\"bzz-raw://48435948a4b232a3c610f7ac51e5c87a27aa10f92775bc95cd2068dd07b69a70\",\"dweb:/ipfs/Qmd7PeN1uovU8BqyrPuLkKf4U1DENt9S7hFr6G5cXFamim\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol\":{\"keccak256\":\"0x6ec98705ac0cfc20f2e94069ba88c74816c40283c47b3086cf619b69d8a15379\",\"urls\":[\"bzz-raw://981e7e1ababfe4bb7bb35251679f59d188348c416af29822794011a0e48f2cd3\",\"dweb:/ipfs/QmTpPQCYP3qzKdcMBLBZGRSM2X6rgR1CZmYDQ7SHP4pjrb\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositRedemption.sol\":{\"keccak256\":\"0xe40c0cbb443715c4f587b78f568348276fabae9a2f77645596367a1f65b1fae5\",\"urls\":[\"bzz-raw://310d07df39ad769b5ffca044a1a589686268d72ac36d568360da3a4a9ab16f93\",\"dweb:/ipfs/QmT9stQ2AVkF7i9nvDSTswhD6EkfNHVCtTmRENsVqYxwso\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":{\"keccak256\":\"0x0b407fe4cfa56771c7cb0280e58c23e6c79089bb0f39ec9af83855103cfadce0\",\"urls\":[\"bzz-raw://b06c9ff8c10125cd7dcee7167fd081c95248c97c699a4dfc92bf65d68774f5f1\",\"dweb:/ipfs/QmcdTkj1XtJcPhF9pxr56xV4DW3SxGaaiE5PeGxbYVoHL3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol\":{\"keccak256\":\"0xc18e532fc384f45567abcf7fbe7bccb885308d63ffeed41d9cf845573a289b98\",\"urls\":[\"bzz-raw://7250e8fce13326313e64d2f24e093bd51c9fdba939b8370f64a1fe820814275b\",\"dweb:/ipfs/QmVfX5w4xN6gxoqbdgPeeTbBvFtxxaNYWSknSY7JDtve2b\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol\":{\"keccak256\":\"0x8bddca84b4106ea5d865b5e19c0d49f3dc94a7e614c7403ae05074eda01d6ee9\",\"urls\":[\"bzz-raw://65b05f6e04ae46a16194db335ad21dd806d0b07ad571a126b6981896890c8a4c\",\"dweb:/ipfs/QmTF4RgELhXX7pooNKwW8qNY7Sr7dFY7vfueApjTMa99jt\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/external/IMedianizer.sol\":{\"keccak256\":\"0xbe5c1dbd0f097ed0ef72e2a61ab54de315685a835e7dc7f5d3404b5158189c67\",\"urls\":[\"bzz-raw://0519b1ce42540d07debfa8b62a52c6c44b309ea549cc4d3166d4fd821aec9b79\",\"dweb:/ipfs/QmYD2cojTyk2ZDrWrTKSthVUAPydzAgPrpRWeiwJyksPJV\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ISatWeiPriceFeed.sol\":{\"keccak256\":\"0x41bdcc0cfbd415d58fdc01cc54adeb832933f31895d1f9a26c8eab16518d6d96\",\"urls\":[\"bzz-raw://b4c69fdffa322a4276032fe2ee0cbb950c81afff7dcd78eb18dddabc4fe2d015\",\"dweb:/ipfs/QmaJUvL5HNChwyrNN82Es5vhVZ9pHwgdsj9uEcUhBFR43R\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol\":{\"keccak256\":\"0xd8530ab1baddbdfbba6c1b03e547375afe79493b9948d645f94fc0da12ec953b\",\"urls\":[\"bzz-raw://713285a0a4d865a37f3770ce848c20f7277e1540c0a8aa43c2ae0966a7c3df9a\",\"dweb:/ipfs/QmaPiXxvySt9UDmQtVGidh8TQ4XJdxY2X61rEBd8346ELi\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITokenRecipient.sol\":{\"keccak256\":\"0x4ac6830ad44d0b0d70ebabc60150e9c915c7c0bd0129ef868d5d2cd8da0c32bd\",\"urls\":[\"bzz-raw://a5c6465285add41f07a951f90405800a8802e323ea11e9c7bdb5625ce109c7f7\",\"dweb:/ipfs/QmRf7B4WxsS7gbSwUotgQM633BQc2ye7rhYC1RNVFamBfp\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/CloneFactory.sol\":{\"keccak256\":\"0xdd6c92a00393f04b98d8749fe5e4235cfc2967d1486698a1b37db3dc6848f2f6\",\"urls\":[\"bzz-raw://ec57ffe219b198a4e494f950958e19455849e68a37d94545ddfdebb136ac17e4\",\"dweb:/ipfs/QmTcYbxJFdzdp75pcoTu83XdK1acK8rtWZNZEZz2E9HauH\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/DepositFactory.sol\":{\"keccak256\":\"0x21fa9b3591283735e7ae42a3b68f3c6cc2750b56b9727824e96a1786b2b17297\",\"urls\":[\"bzz-raw://07f3ffd287da573ff3d849fdd9826091b7e1f808a7cf6811727396c91de7124e\",\"dweb:/ipfs/QmShqBpzyx7gtopjV7wxpAZkdydduXuoThXotMjG5u7xe4\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/DepositFactoryAuthority.sol\":{\"keccak256\":\"0xd8e81ec58dea6a6bcc554e8c7e6c58898ab11a410c3f61224330cbe833992add\",\"urls\":[\"bzz-raw://9d2b23cf1e2f98eb77acf6ae62933e48494113e1d6091146459fd79a635f1dcf\",\"dweb:/ipfs/QmPK3nTmcrScDavDSXGHvonhfik3BJ55qhwSnUmhzL5QUE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol\":{\"keccak256\":\"0x3d9980b4b18be7e69364b93581d86d08dd2c66fc76b2f9f0af0b4911dc648318\",\"urls\":[\"bzz-raw://751dae1cd68c285a22b513d515074eb6704e11e00ba8196f360d47dc8551dd86\",\"dweb:/ipfs/QmRe5u8bjSd2CMvjgWMzpeea3VdcqEGwAP91zvjxgur8o8\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/KeepFactorySelection.sol\":{\"keccak256\":\"0x26d39ca282d933df1c349ab52be37c19af9f4f8d24f0fb25700ef221a8294d6f\",\"urls\":[\"bzz-raw://fc25c76e38172ca0e12f51aecc53ed498c3b1a6900b0f358f3404c5df22fc40b\",\"dweb:/ipfs/QmQvHwrufw7UaKkVmf15xvFXgSFYzNua2abFpQLjzibnV3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol\":{\"keccak256\":\"0x74833fb25cf9f24716d563c8fad0fd6172d03577dc85ab4271ca4754285ee915\",\"urls\":[\"bzz-raw://62d37b71546ea52f0c86170b588b021a488785e8570f904f0d2bcfecee93f6a7\",\"dweb:/ipfs/QmePuD631VYpEproKbap8cPXmWeb5mYjU6bwEWnxKCVWbz\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol\":{\"keccak256\":\"0xd9238bbd83f5352706426103a0708ad7c00ffbd90340a4b3bab03d2c5371e48b\",\"urls\":[\"bzz-raw://f1fc94f00aeabd49bd0f8ecf372213e83c949454c28fa672a46dd12d9a0b4311\",\"dweb:/ipfs/QmaCzqi2g4GSvzHDDES61FauDmdTGGyZrCkK1BdxpMqYa3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystem.sol\":{\"keccak256\":\"0x6f56aed8aa836939b416dacfd0ce1605c943d763647a5a75597781024248fe84\",\"urls\":[\"bzz-raw://2e1776056f6950ea5cd4893bbcd4418017cd3a417406c6c12c0714e93b8a3122\",\"dweb:/ipfs/QmaaTR6wcbxwPC4c6PNbCath2N4pmAKW2Q5ECY567HNwv4\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemAuthority.sol\":{\"keccak256\":\"0xc072c71402f122e3ae148000b95559169cb39b8752977817f4f88b372e7d77dd\",\"urls\":[\"bzz-raw://9c91b71602bf36f66d6ab24156777a2ef18c027f09055232011f9012387e6c70\",\"dweb:/ipfs/QmYAEZ8ithnhVcdCt76mqeJg6P8ZY3VejsV7pQNvMMFqc2\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemTestnet.sol\":{\"keccak256\":\"0xe3b2701d76dfdbb4930fa50f7afc79ea13c2e888e13940c6ef9741483f765714\",\"urls\":[\"bzz-raw://5c8d157d598edfabc502c6e6a320ea82fc9e0439b28bbdc53a4858515e7103c7\",\"dweb:/ipfs/QmfFdqaFh5KhG1mrCtYC2x1YWVnY7cJVF32yZ6nsGiCTyB\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol\":{\"keccak256\":\"0x167b07029df8d350996d7f82d853437d1a2562401eeac98037c2eb4c5f295319\",\"urls\":[\"bzz-raw://7d2601ac8dcd5d59b3e479a61262de2162c96ed7ad1cd161331e2e4500b8346a\",\"dweb:/ipfs/QmWVjBSvHFg9W5zsSxgdpNSYKgfLa28fr3mPjjKQaDBxmk\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachine.sol\":{\"keccak256\":\"0x26caaccd71277d1807d40553f4e7291307d4db9c292bc28a9d8cbee94b5c3e40\",\"urls\":[\"bzz-raw://b7ec73a87fe902bfc5d0fcda5fcc16d2dc025e685fc7b7876ec1a1da65cf0ede\",\"dweb:/ipfs/QmcBkU6Ze8T3ewqZZmUiniTKZkVaQTaNFejXXRgvfiTrPE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachineAuthority.sol\":{\"keccak256\":\"0x7ad8a2cee5e6bbc187d04b147dc0d2bc2ae12bb8c3680870be9013dd5543bfd6\",\"urls\":[\"bzz-raw://733f2370c788437b0034c40a8df07f4714009769ed8134a9c656e2a103996687\",\"dweb:/ipfs/Qma9LAGQDzyUvsbhLx3FUKRCx3FmnoZuMxG4SUdjLr8bRm\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeepFactory.sol\":{\"keccak256\":\"0x07ae883d2a0f5b7fe2c0b055206f565da51b04d1ca574ae4d4da3a19e6badcdb\",\"urls\":[\"bzz-raw://038b4f5b45b2d676ef7411b69cadd490d5789e3d245afd78aaa72177ce042572\",\"dweb:/ipfs/QmRaBYU4HCDSH33a3gpLN4t2TsyNaFRxLKv3WeAZEgk9Rr\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/CheckBitcoinSigs.sol\":{\"keccak256\":\"0x2fcbfa2440f69e346d5e14d960b14498f6484f83713fe7cec1ecf4abea3835a1\",\"urls\":[\"bzz-raw://4a385ef55a53dd0dcd1b687a47dbf6785580883a0be0cb10c617c338a35f3a8b\",\"dweb:/ipfs/QmZp9AT146beL3SoETJCWsJ4zzAZQavy9oGCYPiwAofEtq\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]},\"@summa-tx/bitcoin-spv-sol/contracts/ValidateSPV.sol\":{\"keccak256\":\"0x9af3b3f36de63e95977f09548617989e391b3c511cf0383ee35cefd5da7d3bfd\",\"urls\":[\"bzz-raw://97ce025c7d18540e4c24578db61cc5e33828be8e9a82b5cb5f46c99212f75ed1\",\"dweb:/ipfs/QmRrdWnd95rgCZzeaNiU4KUcGe1j7oDBj7LatpXhUmjbEE\"]},\"@summa-tx/relay-sol/contracts/Interfaces.sol\":{\"keccak256\":\"0x6f2698f8aab5cee319f36d69438b6870496a5523e7ccac4b465cdb38661242fa\",\"urls\":[\"bzz-raw://7f854c72db81631d1df800ae0c5fb0a50dc9efd97b0e6593b063c9fb1c61ef9e\",\"dweb:/ipfs/QmUMSQhzYKRSkLTGcHekjqvw1mLpeUULZkfffRdN521NBg\"]},\"@summa-tx/relay-sol/contracts/Relay.sol\":{\"keccak256\":\"0x4a6d12fa6570e2c787f9dc234edae9c1eb326e78eb2c6384c84d2b6ba0a0ad7e\",\"urls\":[\"bzz-raw://fa5365dc5a8312d0305568dbf297964be13567a7879395bfc3e99be2510e4e10\",\"dweb:/ipfs/QmfGZz6iL45xPcwQTT3XFAqb7McuY89niBEvfbhy513moF\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xf79fb10e8235770eb4aea7249034076a3cc9f9119ad944fc48705bae9c9d20dc\",\"urls\":[\"bzz-raw://cd3429aa9a4878dcf6c73faa32c3722f4013d4be012ece543b246faa6b50f55c\",\"dweb:/ipfs/QmS55hgTvNEAKinus19m65CB4wcymN8EiUPFpRx5tYJ1i2\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzz-raw://4f5b57664069671648fb81f55b0082faecdf1b2f159eec6b1fa6cef9b7d73bc5\",\"dweb:/ipfs/QmcyytaLs7zFdb4Uu7C5PmQRhQdB3wA3fUdkV6mkYfdDFH\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xc61b3603089b09a730d8ca72e9133a496cc4405da40e9b87c12f073245d774bf\",\"urls\":[\"bzz-raw://de8bb0003d53de236913f0e0102e7a9d015e02098f2495edd000f207fe2be2f4\",\"dweb:/ipfs/QmbtwNwAJEehWWL7yGGyyMoenQvcqtz91pqLgQPpLRoLYC\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x6000600255600b805462ffffff60201b19166607d000000000001761ffff60381b19166796000000000000001761ffff60481b1916697d0000000000000000001761ffff60581b19166b6e0000000000000000000000179055610120604052620f424060809081526298968060a0526301312d0060c0526302faf08060e0526305f5e100610100526200009790600c906005620001b5565b50348015620000a557600080fd5b506040516200429a3803806200429a83398181016040526040811015620000cb57600080fd5b508051602090910151600080546001600160a01b0319163317808255604051849284926001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600480546001600160a01b039384166001600160a01b0319918216179091556005805492909316911617905560408051610100810182526103e881526127106020820152620186a091810191909152620f424060608201526298968060808201526301312d0060a08201526302faf08060c08201526305f5e10060e0820152620001ac90600c906008620001b5565b5050506200029b565b828054828255906000526020600020906003016004900481019282156200025f5791602002820160005b838211156200022857835183826101000a8154816001600160401b03021916908363ffffffff1602179055509260200192600801602081600701049283019260010302620001df565b80156200025d5782816101000a8154906001600160401b03021916905560080160208160070104928301926001030262000228565b505b506200026d92915062000271565b5090565b6200029891905b808211156200026d5780546001600160401b031916815560010162000278565b90565b613fef80620002ab6000396000f3fe6080604052600436106103975760003560e01c806380f04b8c116101dc578063b792a38e11610102578063de1e57d0116100a0578063eae6191f1161006f578063eae6191f14610cb7578063f2e7234714610cfc578063f2fde38b14610d11578063f760621e14610d4457610397565b8063de1e57d014610c63578063e2c50ad814610c78578063e5426d2e14610c8d578063e5a6d77d14610ca257610397565b8063cd3a9490116100dc578063cd3a949014610b48578063ce2c07ce14610b5d578063dab70cb114610c0e578063dde3fdd214610c2357610397565b8063b792a38e14610b09578063c074d55014610b1e578063c8fba24314610b3357610397565b8063a28b79f11161017a578063adc3ef7011610149578063adc3ef7014610ab5578063ae7f4a5f14610aca578063b196b5a314610adf578063b59589d114610af457610397565b8063a28b79f114610a43578063a2cd75da14610a76578063a6c1691c14610a8b578063a831c81614610aa057610397565b80638da5cb5b116101b65780638da5cb5b146109d15780638f32d59b146109e6578063987ecea7146109fb5780639ffb386214610a1057610397565b806380f04b8c1461096057806382f9196814610975578063869f9469146109a157610397565b806334d534a9116102c157806364bdb6671161025f578063741bef1a1161022e578063741bef1a146108db5780637c33fc051461090c5780637c75b115146109215780637ed451a41461093657610397565b806364bdb667146108725780636e1ba283146108875780636f4fef62146108b1578063715018a6146108c657610397565b8063402b783d1161029b578063402b783d146107ee57806349b6473014610803578063575350881461083157806360e98d591461084657610397565b806334d534a9146107985780633aac3467146107ad5780633ee850bc146107d957610397565b806318e647dd116103395780632753d84b116103085780632753d84b146106c0578063282bfd38146106d55780632b155e37146107085780632d00f1ee1461078357610397565b806318e647dd146104c55780631c52d90c1461061f57806322a147e61461069657806322e5724c146106ab57610397565b80630af488f9116103755780630af488f91461045d5780630ce0e700146104725780630d4455dc146104875780630d7eb1c41461049c57610397565b8063013b0f301461039c57806307a3d659146103c3578063086c9edd146103f8575b600080fd5b3480156103a857600080fd5b506103b1610d7a565b60408051918252519081900360200190f35b3480156103cf57600080fd5b506103f6600480360360208110156103e657600080fd5b50356001600160a01b0316610e1b565b005b34801561040457600080fd5b5061040d610f82565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610449578181015183820152602001610431565b505050509050019250505060405180910390f35b34801561046957600080fd5b506103b161100c565b34801561047e57600080fd5b506103f661101d565b34801561049357600080fd5b506103f6611175565b3480156104a857600080fd5b506104b161132a565b604080519115158252519081900360200190f35b3480156104d157600080fd5b506103f6600480360360c08110156104e857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561051e57600080fd5b82018360208201111561053057600080fd5b803590602001918460018302840111600160201b8311171561055157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156105ab57600080fd5b8201836020820111156105bd57600080fd5b803590602001918460018302840111600160201b831117156105de57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061133a945050505050565b34801561062b57600080fd5b506103f6600480360361012081101561064357600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c0820135169061ffff60e08201358116916101000135166114ab565b3480156106a257600080fd5b506103f6611703565b3480156106b757600080fd5b506103f661177f565b3480156106cc57600080fd5b506103b16117fb565b3480156106e157600080fd5b506103f6600480360360208110156106f857600080fd5b50356001600160a01b031661183d565b34801561071457600080fd5b506103f66004803603602081101561072b57600080fd5b810190602081018135600160201b81111561074557600080fd5b82018360208201111561075757600080fd5b803590602001918460208302840111600160201b8311171561077857600080fd5b5090925090506118c4565b34801561078f57600080fd5b506103b1611c25565b3480156107a457600080fd5b506103b1611d1c565b3480156107b957600080fd5b506103f6600480360360208110156107d057600080fd5b50351515611d2c565b3480156107e557600080fd5b506103b1611dae565b3480156107fa57600080fd5b506103b1611dbf565b34801561080f57600080fd5b506103f66004803603602081101561082657600080fd5b503561ffff16611e35565b34801561083d57600080fd5b506103b1611f5b565b34801561085257600080fd5b5061085b611f6c565b6040805161ffff9092168252519081900360200190f35b34801561087e57600080fd5b5061085b611f7f565b34801561089357600080fd5b506103f6600480360360208110156108aa57600080fd5b5035611f89565b3480156108bd57600080fd5b5061085b612007565b3480156108d257600080fd5b506103f6612018565b3480156108e757600080fd5b506108f06120a9565b604080516001600160a01b039092168252519081900360200190f35b34801561091857600080fd5b506103f66120b8565b34801561092d57600080fd5b506103f661220b565b34801561094257600080fd5b506103f66004803603602081101561095957600080fd5b50356122b1565b34801561096c57600080fd5b506103f661232f565b6108f06004803603604081101561098b57600080fd5b506001600160401b038135169060200135612444565b3480156109ad57600080fd5b506103f6600480360360408110156109c457600080fd5b5080359060200135612694565b3480156109dd57600080fd5b506108f061271e565b3480156109f257600080fd5b506104b161272d565b348015610a0757600080fd5b5061085b61273e565b348015610a1c57600080fd5b506104b160048036036020811015610a3357600080fd5b50356001600160a01b031661274f565b348015610a4f57600080fd5b506104b160048036036020811015610a6657600080fd5b50356001600160401b03166127d4565b348015610a8257600080fd5b5061085b612841565b348015610a9757600080fd5b506103b1612852565b348015610aac57600080fd5b506103f661290c565b348015610ac157600080fd5b506103f6612988565b348015610ad657600080fd5b506103b1612b3b565b348015610aeb57600080fd5b506103b1612b42565b348015610b0057600080fd5b506108f0612b53565b348015610b1557600080fd5b506103b1612b62565b348015610b2a57600080fd5b506103b1612b73565b348015610b3f57600080fd5b506103f6612b84565b348015610b5457600080fd5b506103f6612c00565b348015610b6957600080fd5b506103f660048036036020811015610b8057600080fd5b810190602081018135600160201b811115610b9a57600080fd5b820183602082011115610bac57600080fd5b803590602001918460018302840111600160201b83111715610bcd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612dc4945050505050565b348015610c1a57600080fd5b506103b1612ea4565b348015610c2f57600080fd5b506103f660048036036060811015610c4657600080fd5b5061ffff8135811691602081013582169160409091013516612ee9565b348015610c6f57600080fd5b506103f66130d6565b348015610c8457600080fd5b506103f6613283565b348015610c9957600080fd5b5061085b6132ff565b348015610cae57600080fd5b506103b161330f565b348015610cc357600080fd5b506103f660048036036060811015610cda57600080fd5b506001600160a01b038135811691602081013582169160409091013516613316565b348015610d0857600080fd5b506103b1613494565b348015610d1d57600080fd5b506103f660048036036020811015610d3457600080fd5b50356001600160a01b031661349b565b348015610d5057600080fd5b506103f660048036036060811015610d6757600080fd5b50803590602081013590604001356134ee565b600b54600090600160201b900460ff1615610dc65760405162461bcd60e51b8152600401808060200182810382526022815260200180613f026022913960400191505060405180910390fd5b620d2f00610ddf6003544261357a90919063ffffffff16565b1015610e1257610e0d610dfd6003544261357a90919063ffffffff16565b620d2f009063ffffffff61357a16565b610e15565b60005b90505b90565b610e2361272d565b610e62576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6000816001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b158015610e9c57600080fd5b505afa158015610eb0573d6000803e3d6000fd5b505050506040513d6040811015610ec657600080fd5b5060200151905080610f1f576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f742061646420696e61637469766520666565640000000000000000604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b03841690811790915542601681905560408051928352602083019190915280517f5a3d3d9197f5c60c16de28887dccf83284a4fd034b930272637c83307b4fffe79281900390910190a15050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561100257602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610fbf5790505b5050505050905090565b6000610e156016546276a7006135d7565b61102561272d565b611064576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600d546202a300600082116110b7576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b806110c8428463ffffffff61357a16565b1015611109576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601154600b80546501000000000061ffff90931692830266ffff00000000001990911617905560408051918252517f236dec26d53c6a51390e98ed703106e132fd062b0e38b8a9cf8b4d13f47952c89181900360200190a150506011805461ffff191690556000600d55565b61117d61272d565b6111bc576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6010546202a3006000821161120f576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80611220428463ffffffff61357a16565b1015611261576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601354601454601554611294926006926001600160a01b03600160301b909204821692908216911663ffffffff61366116565b601354601454601554604080516001600160a01b03600160301b90950485168152928416602084015292168183015290517f75cd06e2a95bd62ad447184bf0950b3af3aabd0960994d09da9724686d0c17209181900360600190a150506000601055601380546601000000000000600160d01b0319169055601480546001600160a01b0319908116909155601580549091169055565b600b54600160201b900460ff1690565b6113433361274f565b61137e5760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b84866001600160a01b0316336001600160a01b03167f7959c380174061a21a3ba80243a032ba9cd10dc8bd1736d7e835c94e97a35a9887878787604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156114055781810151838201526020016113ed565b50505050905090810190601f1680156114325780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505050505050565b6114b361272d565b6114f2576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6002541561153d576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6040805163e8e08cf160e01b8152600660048201526001600160a01b038b166024820152905173__KeepFactorySelection__________________9163e8e08cf1916044808301926000929190829003018186803b15801561159e57600080fd5b505af41580156115b2573d6000803e3d6000fd5b5050600b80544260025564ff000000001961ffff86811661ffff19918916620100000263ffff00001990941693909317169190911716600160201b179055506115fc9050856136ef565b60408051630d4815e560e21b81526001600160a01b0388811660048301528781166024830152868116604483015291519185169163352057949160648082019260009290919082900301818387803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b50506040805163bbe2bbd560e01b81526001600160a01b038b811660048301523060248301528a811660448301528981166064830152888116608483015287811660a48301529151918c16935063bbe2bbd5925060c48082019260009290919082900301818387803b1580156116e057600080fd5b505af11580156116f4573d6000803e3d6000fd5b50505050505050505050505050565b61170c3361274f565b6117475760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f6e7b45210b79c12cd1332babd8d86c0bbb9ca898a89ce0404f17064dbfba18c0919081900360200190a2565b6117883361274f565b6117c35760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f07f0eaafadb9abb1d28da85d4b4c74f1939fd61b535c7f5ab501f618f07e76ee919081900360200190a2565b600c805460009190600019810190811061181157fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b0316919050565b6118463361274f565b6118815760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b6040805142815290516001600160a01b0383169133917f822b3073be62c5c7f143c2dcd71ee266434ee935d90a1eec3be34710ac8ec1a29181900360200190a350565b6118cc61272d565b61190b576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6000805b82811015611b675783838281811061192357fe5b905060200201356001600160401b03166001600160401b03166305f5e10014156119505760019150611b5f565b61c35084848381811061195f57fe5b905060200201356001600160401b03166001600160401b031610156119b55760405162461bcd60e51b815260040180806020018281038252602e815260200180613d2f602e913960400191505060405180910390fd5b6402540be4008484838181106119c757fe5b905060200201356001600160401b03166001600160401b03161115611a1d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613ed4602e913960400191505060405180910390fd5b600081118015611a775750838360018303818110611a3757fe5b905060200201356001600160401b03166001600160401b0316848483818110611a5c57fe5b905060200201356001600160401b03166001600160401b0316145b15611ab35760405162461bcd60e51b8152600401808060200182810382526027815260200180613d086027913960400191505060405180910390fd5b600081118015611b0d5750838360018303818110611acd57fe5b905060200201356001600160401b03166001600160401b0316848483818110611af257fe5b905060200201356001600160401b03166001600160401b0316105b15611b5f576040805162461bcd60e51b815260206004820152601d60248201527f4c6f742073697a65206172726179206d75737420626520736f72746564000000604482015290519081900360640190fd5b60010161190f565b5080611ba45760405162461bcd60e51b8152600401808060200182810382526028815260200180613e516028913960400191505060405180910390fd5b7fffb1e2bce3c7a63d0cac5492540bd370e1156621adde36cd481262c2846a2b7b83834260405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1611c1b601284846139fb565b505042600e555050565b600080600673__KeepFactorySelection__________________63d83d44b090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c7a57600080fd5b505af4158015611c8e573d6000803e3d6000fd5b505050506040513d6020811015611ca457600080fd5b50516040805163bc2c289f60e01b815290519192506001600160a01b0383169163bc2c289f91600480820192602092909190829003018186803b158015611cea57600080fd5b505afa158015611cfe573d6000803e3d6000fd5b505050506040513d6020811015611d1457600080fd5b505191505090565b6000600c60008154811061181157fe5b611d353361274f565b611d705760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080518215158152426020820152815133927fbef11c059eefba82a15aea8a3a89c86fd08d7711c88fa7daea2632a55488510c928290030190a250565b6000610e15600e546202a3006135d7565b60055460408051630ae5ef8960e21b815290516000926001600160a01b031691632b97be24916004808301926020929190829003018186803b158015611e0457600080fd5b505afa158015611e18573d6000803e3d6000fd5b505050506040513d6020811015611e2e57600080fd5b5051905090565b611e3d61272d565b611e7c576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b60098161ffff1611611ebf5760405162461bcd60e51b815260040180806020018281038252604a815260200180613cbe604a913960600191505060405180910390fd5b6113888161ffff1610611f035760405162461bcd60e51b815260040180806020018281038252604b815260200180613f24604b913960600191505060405180910390fd5b6011805461ffff191661ffff831690811790915542600d81905560408051928352602083019190915280517f38cb7049f0daf658ca989e9ef6b850ef11e3740ff07a0c16706042c39adf48fc9281900390910190a150565b6000610e156010546202a3006135d7565b600b5465010000000000900461ffff1690565b600b5461ffff1681565b611f923361274f565b611fcd5760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080514281529051829133917f44b7f176bcc739b54bd0800fe491cbdea19df7d4d6b19c281462e6b4fc5043449181900360200190a350565b600b54600160581b900461ffff1690565b61202061272d565b61205f576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004546001600160a01b031681565b600b54600160201b900460ff16156121015760405162461bcd60e51b8152600401808060200182810382526022815260200180613f026022913960400191505060405180910390fd5b600354612155576040805162461bcd60e51b815260206004820152601b60248201527f4465706f73697420686173206e6f74206265656e207061757365640000000000604482015290519081900360640190fd5b620d2f0061216e6003544261357a90919063ffffffff16565b10156121c1576040805162461bcd60e51b815260206004820152601960248201527f4465706f7369747320617265207374696c6c2070617573656400000000000000604482015290519081900360640190fd5b600b805464ff000000001916600160201b179055604080516001815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a1565b73__KeepFactorySelection__________________63e33cd9716006612237612232611d1c565b61376f565b600b54604080516001600160e01b031960e087901b1681526004810194909452602484019290925261ffff808216604485015262010000909104166064830152516084808301926000929190829003018186803b15801561229757600080fd5b505af41580156122ab573d6000803e3d6000fd5b50505050565b6122ba3361274f565b6122f55760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080514281529051829133917fe34c70bd3e03956978a5c76d2ea5f3a60819171afea6dee4fc12b2e45f72d43d9181900360200190a350565b61233761272d565b612376576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600354156123b55760405162461bcd60e51b8152600401808060200182810382526031815260200180613ba66031913960400191505060405180910390fd5b600254420362ed4e0081106123fb5760405162461bcd60e51b815260040180806020018281038252604e815260200180613bd7604e913960600191505060405180910390fd5b42600355600b805464ff0000000019169055604080516000815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a150565b60015460408051634f558e7960e01b815233600482015290516000926001600160a01b031691634f558e79916024808301926020929190829003018186803b15801561248f57600080fd5b505afa1580156124a3573d6000803e3d6000fd5b505050506040513d60208110156124b957600080fd5b50516124f65760405162461bcd60e51b8152600401808060200182810382526021815260200180613c4b6021913960400191505060405180910390fd5b6124ff836127d4565b612550576040805162461bcd60e51b815260206004820152601f60248201527f70726f7669646564206c6f742073697a65206e6f7420737570706f7274656400604482015290519081900360640190fd5b6000600673__KeepFactorySelection__________________63d857268890916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156125a457600080fd5b505af41580156125b8573d6000803e3d6000fd5b505050506040513d60208110156125ce57600080fd5b5051905060006125e66001600160401b03861661376f565b600b546040805163ca050cfd60e01b815261ffff80841660048301526201000090930490921660248301523360448301526064820183905260848201879052519192506001600160a01b0384169163ca050cfd91349160a480830192602092919082900301818588803b15801561265c57600080fd5b505af1158015612670573d6000803e3d6000fd5b50505050506040513d602081101561268757600080fd5b5051925050505b92915050565b61269d3361274f565b6126d85760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051838152602081018390524281830152905133917f8ee737ab16909c4e9d1b750814a4393c9f84ab5d3a29c08c313b783fc846ae33919081900360600190a25050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b600b54600160381b900461ffff1690565b60015460408051634f558e7960e01b81526001600160a01b03848116600483015291516000939290921691634f558e7991602480820192602092909190829003018186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d60208110156127ca57600080fd5b505190505b919050565b6000805b600c5481101561283857826001600160401b0316600c82815481106127f957fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b031614156128305760019150506127cf565b6001016127d8565b50600092915050565b600b54600160481b900461ffff1690565b60015460408051634f558e7960e01b815233600482015290516000926001600160a01b031691634f558e79916024808301926020929190829003018186803b15801561289d57600080fd5b505afa1580156128b1573d6000803e3d6000fd5b505050506040513d60208110156128c757600080fd5b50516129045760405162461bcd60e51b8152600401808060200182810382526021815260200180613c4b6021913960400191505060405180910390fd5b610e156137c0565b6129153361274f565b6129505760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f8fd2cfb62a35fccc1ecef829f83a6c2f840b73dad49d3eaaa402909752086d4b919081900360200190a2565b61299061272d565b6129cf576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6016546276a70060008211612a22576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612a33428463ffffffff61357a16565b1015612a74576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601780546001600160a01b031981169091556000601655604080516001600160a01b03909216808352905190917f5e4bd1f6e413d39e172d96a88ee6b1b2ba9e1a6207e2ca34fa8c3ccd152ff21a919081900360200190a1600480546040805163d14dd41360e01b81526001600160a01b03858116948201949094529051929091169163d14dd4139160248082019260009290919082900301818387803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b50505050505050565b6276a70090565b6000610e1560025462ed4e006135d7565b6005546001600160a01b031681565b6000610e15600d546202a3006135d7565b6000610e15600f546202a3006135d7565b612b8d3361274f565b612bc85760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917fa5ee7a2b0254fce91deed604506790ed7fa072d0b14cba4859c3bc8955b9caac919081900360200190a2565b612c0861272d565b612c47576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600e546202a30060008211612c9a576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612cab428463ffffffff61357a16565b1015612cec576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b60128054612cfc91600c91613abc565b507fa801e49d33e856d89d06e647753d9d9dda3d0b0520c4346290ada455a00cafcc601260405180806020018281038252838181548152602001915080548015612d9757602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411612d545790505b50509250505060405180910390a16000600e819055612db7601282613b0a565b50612dc061220b565b5050565b612dcd3361274f565b612e085760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080516020808252835181830152835133937fa6e9673b5d53b3fe3c62b6459720f9c2a1b129d4f69acb771404ba8681b6a9309386939092839283019185019080838360005b83811015612e67578181015183820152602001612e4f565b50505050905090810190601f168015612e945780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b6005546040805163089bb25f60e11b815290516000926001600160a01b03169163113764be916004808301926020929190829003018186803b158015611e0457600080fd5b612ef161272d565b612f30576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b61012c8361ffff161115612f755760405162461bcd60e51b815260040180806020018281038252602e815260200180613e79602e913960400191505060405180910390fd5b60648361ffff1611612fb85760405162461bcd60e51b815260040180806020018281038252602e815260200180613c6c602e913960400191505060405180910390fd5b8161ffff168361ffff1611612ffe5760405162461bcd60e51b8152600401808060200182810382526046815260200180613d5d6046913960600191505060405180910390fd5b8061ffff168261ffff16116130445760405162461bcd60e51b815260040180806020018281038252604c815260200180613f6f604c913960600191505060405180910390fd5b6013805461ffff191661ffff85811691821763ffff00001916620100008683169081029190911765ffff000000001916600160201b9286169283021790935542600f81905560408051938452602084019490945282840191909152606082015290517fc9e225c2db3e9f70966e6c0403de785bcda0172ec4e41111a6e8f4b85b1f30fb916080908290030190a1505050565b6130de61272d565b61311d576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600f546202a30060008211613170576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80613181428463ffffffff61357a16565b10156131c2576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601354600b805468ffff00000000000000191661ffff808416600160381b8102929092176affff00000000000000000019166201000085048216600160481b81029190911761ffff60581b1916600160201b90950491909116600160581b81029490941790925560408051918252602082019290925280820192909252517f07ac9ce7dc4b2edb6435fb2255e9e867f357ef2052b982ce468442aa9d6c1d50916060908290030190a150506013805465ffffffffffff191690556000600f55565b61328c3361274f565b6132c75760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f1e61af503f1d7de21d5300094c18bf8700f82b2951a4d54dd2adda13f6b3da30919081900360200190a2565b600b5462010000900461ffff1681565b62ed4e0090565b61331e61272d565b61335d576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600254420362ed4e0081106133a35760405162461bcd60e51b815260040180806020018281038252604d815260200180613e04604d913960600191505060405180910390fd5b6001600160a01b0384166133e85760405162461bcd60e51b815260040180806020018281038252602d815260200180613ea7602d913960400191505060405180910390fd5b601380546001600160a01b03808716600160301b81026601000000000000600160d01b031990931692909217909255601480548684166001600160a01b0319918216811790925560158054948716949091168417905542601081905560408051938452602084019290925282820193909352606082019290925290517f1608ec8025d64cdb0ed78e62a67d271a33b9d738842a6eb6e6449bc3afab6dca9181900360800190a150505050565b6202a30090565b6134a361272d565b6134e2576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6134eb81613898565b50565b6134f73361274f565b6135325760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080518381526020810183905242818301529051849133917f7f7d7327762d01d2c4a552ea0be2bc5a76264574a80aa78083e691a840e509f29181900360600190a3505050565b6000828211156135d1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808311613624576040805162461bcd60e51b8152602060048201526014602482015273155c19185d19481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b6000613636428563ffffffff61357a16565b905082811061364957600091505061268e565b613659838263ffffffff61357a16565b91505061268e565b6001600160a01b0383166136a65760405162461bcd60e51b8152600401808060200182810382526023815260200180613b836023913960400191505060405180910390fd5b6003840180546001600160a01b039485166001600160a01b0319918216179091556004850180549385169382169390931790925560029093018054939092169216919091179055565b6001546001600160a01b03161561374d576040805162461bcd60e51b815260206004820152601f60248201527f746274634465706f736974546f6b656e20697320616c72656164792073657400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061378a8361377e6137c0565b9063ffffffff61393816565b600b549091506137b9906064906137ad908490600160381b900461ffff16613938565b9063ffffffff61399116565b9392505050565b6004805460408051634c6afee560e11b8152905160009384936001600160a01b0316926398d5fdca9281830192602092829003018186803b15801561380457600080fd5b505afa158015613818573d6000803e3d6000fd5b505050506040513d602081101561382e57600080fd5b505190508015806138465750670de0b6b3a764000081115b15610e15576040805162461bcd60e51b815260206004820152601b60248201527f53797374656d2072657475726e65642061206261642070726963650000000000604482015290519081900360640190fd5b6001600160a01b0381166138dd5760405162461bcd60e51b8152600401808060200182810382526026815260200180613c256026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826139475750600061268e565b8282028284828161395457fe5b04146137b95760405162461bcd60e51b8152600401808060200182810382526021815260200180613da36021913960400191505060405180910390fd5b60008082116139e7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816139f257fe5b04949350505050565b82805482825590600052602060002090600301600490048101928215613aac5791602002820160005b83821115613a775783356001600160401b031683826101000a8154816001600160401b0302191690836001600160401b031602179055509260200192600801602081600701049283019260010302613a24565b8015613aaa5782816101000a8154906001600160401b030219169055600801602081600701049283019260010302613a77565b505b50613ab8929150613b43565b5090565b82805482825590600052602060002090600301600490048101928215613aac576000526020600020916003016004900482015b82811115613aac578254825591600101919060010190613aef565b815481835581811115613b3e576003016004900481600301600490048360005260206000209182019101613b3e9190613b68565b505050565b610e1891905b80821115613ab857805467ffffffffffffffff19168155600101613b49565b610e1891905b80821115613ab85760008155600101613b6e56fe496e76616c6964204b4545502d7374616b656420666163746f72792061646472657373656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c6564206f6e6365656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616c6c6572206d7573742062652061204465706f73697420636f6e7472616374496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203e3d203130302543616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e74735369676e6572206665652064697669736f72206d7573742062652067726561746572207468616e20392c20666f722061207369676e6572206665652074686174206973203c3d203130254c6f742073697a65206172726179206d757374206e6f742068617665206475706c6963617465734c6f742073697a6573206c657373207468616e20302e303030352042544320617265206e6f7420616c6c6f776564556e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20696e697469616c20636f6c6c61746572616c697a65642070657263656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77476f7665726e616e63652064656c617920686173206e6f7420656c61707365644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572626567696e4b656570466163746f726965735570646174652063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4c6f742073697a65206172726179206d75737420616c7761797320636f6e7461696e203120425443496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203c3d20333030254b454550207374616b656420666163746f7279206d7573742062652061206e6f6e7a65726f20616464726573734c6f742073697a65732067726561746572207468616e203130302042544320617265206e6f7420616c6c6f7765644e6577206465706f73697473206172652063757272656e746c7920616c6c6f7765645369676e6572206665652064697669736f72206d757374206265206c657373207468616e20353030302c20666f722061207369676e6572206665652074686174206973203e20302e30322553657665726520756e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20756e646572636f6c6c61746572616c697a6564207468726573686f6c64a265627a7a7231582039c8fe0aeb3f8ffc5254956dceb7fe9c624bf476e1fa47ddf1b510a00acbb06464736f6c63430005110032",
  "deployedBytecode": "0x6080604052600436106103975760003560e01c806380f04b8c116101dc578063b792a38e11610102578063de1e57d0116100a0578063eae6191f1161006f578063eae6191f14610cb7578063f2e7234714610cfc578063f2fde38b14610d11578063f760621e14610d4457610397565b8063de1e57d014610c63578063e2c50ad814610c78578063e5426d2e14610c8d578063e5a6d77d14610ca257610397565b8063cd3a9490116100dc578063cd3a949014610b48578063ce2c07ce14610b5d578063dab70cb114610c0e578063dde3fdd214610c2357610397565b8063b792a38e14610b09578063c074d55014610b1e578063c8fba24314610b3357610397565b8063a28b79f11161017a578063adc3ef7011610149578063adc3ef7014610ab5578063ae7f4a5f14610aca578063b196b5a314610adf578063b59589d114610af457610397565b8063a28b79f114610a43578063a2cd75da14610a76578063a6c1691c14610a8b578063a831c81614610aa057610397565b80638da5cb5b116101b65780638da5cb5b146109d15780638f32d59b146109e6578063987ecea7146109fb5780639ffb386214610a1057610397565b806380f04b8c1461096057806382f9196814610975578063869f9469146109a157610397565b806334d534a9116102c157806364bdb6671161025f578063741bef1a1161022e578063741bef1a146108db5780637c33fc051461090c5780637c75b115146109215780637ed451a41461093657610397565b806364bdb667146108725780636e1ba283146108875780636f4fef62146108b1578063715018a6146108c657610397565b8063402b783d1161029b578063402b783d146107ee57806349b6473014610803578063575350881461083157806360e98d591461084657610397565b806334d534a9146107985780633aac3467146107ad5780633ee850bc146107d957610397565b806318e647dd116103395780632753d84b116103085780632753d84b146106c0578063282bfd38146106d55780632b155e37146107085780632d00f1ee1461078357610397565b806318e647dd146104c55780631c52d90c1461061f57806322a147e61461069657806322e5724c146106ab57610397565b80630af488f9116103755780630af488f91461045d5780630ce0e700146104725780630d4455dc146104875780630d7eb1c41461049c57610397565b8063013b0f301461039c57806307a3d659146103c3578063086c9edd146103f8575b600080fd5b3480156103a857600080fd5b506103b1610d7a565b60408051918252519081900360200190f35b3480156103cf57600080fd5b506103f6600480360360208110156103e657600080fd5b50356001600160a01b0316610e1b565b005b34801561040457600080fd5b5061040d610f82565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610449578181015183820152602001610431565b505050509050019250505060405180910390f35b34801561046957600080fd5b506103b161100c565b34801561047e57600080fd5b506103f661101d565b34801561049357600080fd5b506103f6611175565b3480156104a857600080fd5b506104b161132a565b604080519115158252519081900360200190f35b3480156104d157600080fd5b506103f6600480360360c08110156104e857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561051e57600080fd5b82018360208201111561053057600080fd5b803590602001918460018302840111600160201b8311171561055157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156105ab57600080fd5b8201836020820111156105bd57600080fd5b803590602001918460018302840111600160201b831117156105de57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061133a945050505050565b34801561062b57600080fd5b506103f6600480360361012081101561064357600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c0820135169061ffff60e08201358116916101000135166114ab565b3480156106a257600080fd5b506103f6611703565b3480156106b757600080fd5b506103f661177f565b3480156106cc57600080fd5b506103b16117fb565b3480156106e157600080fd5b506103f6600480360360208110156106f857600080fd5b50356001600160a01b031661183d565b34801561071457600080fd5b506103f66004803603602081101561072b57600080fd5b810190602081018135600160201b81111561074557600080fd5b82018360208201111561075757600080fd5b803590602001918460208302840111600160201b8311171561077857600080fd5b5090925090506118c4565b34801561078f57600080fd5b506103b1611c25565b3480156107a457600080fd5b506103b1611d1c565b3480156107b957600080fd5b506103f6600480360360208110156107d057600080fd5b50351515611d2c565b3480156107e557600080fd5b506103b1611dae565b3480156107fa57600080fd5b506103b1611dbf565b34801561080f57600080fd5b506103f66004803603602081101561082657600080fd5b503561ffff16611e35565b34801561083d57600080fd5b506103b1611f5b565b34801561085257600080fd5b5061085b611f6c565b6040805161ffff9092168252519081900360200190f35b34801561087e57600080fd5b5061085b611f7f565b34801561089357600080fd5b506103f6600480360360208110156108aa57600080fd5b5035611f89565b3480156108bd57600080fd5b5061085b612007565b3480156108d257600080fd5b506103f6612018565b3480156108e757600080fd5b506108f06120a9565b604080516001600160a01b039092168252519081900360200190f35b34801561091857600080fd5b506103f66120b8565b34801561092d57600080fd5b506103f661220b565b34801561094257600080fd5b506103f66004803603602081101561095957600080fd5b50356122b1565b34801561096c57600080fd5b506103f661232f565b6108f06004803603604081101561098b57600080fd5b506001600160401b038135169060200135612444565b3480156109ad57600080fd5b506103f6600480360360408110156109c457600080fd5b5080359060200135612694565b3480156109dd57600080fd5b506108f061271e565b3480156109f257600080fd5b506104b161272d565b348015610a0757600080fd5b5061085b61273e565b348015610a1c57600080fd5b506104b160048036036020811015610a3357600080fd5b50356001600160a01b031661274f565b348015610a4f57600080fd5b506104b160048036036020811015610a6657600080fd5b50356001600160401b03166127d4565b348015610a8257600080fd5b5061085b612841565b348015610a9757600080fd5b506103b1612852565b348015610aac57600080fd5b506103f661290c565b348015610ac157600080fd5b506103f6612988565b348015610ad657600080fd5b506103b1612b3b565b348015610aeb57600080fd5b506103b1612b42565b348015610b0057600080fd5b506108f0612b53565b348015610b1557600080fd5b506103b1612b62565b348015610b2a57600080fd5b506103b1612b73565b348015610b3f57600080fd5b506103f6612b84565b348015610b5457600080fd5b506103f6612c00565b348015610b6957600080fd5b506103f660048036036020811015610b8057600080fd5b810190602081018135600160201b811115610b9a57600080fd5b820183602082011115610bac57600080fd5b803590602001918460018302840111600160201b83111715610bcd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612dc4945050505050565b348015610c1a57600080fd5b506103b1612ea4565b348015610c2f57600080fd5b506103f660048036036060811015610c4657600080fd5b5061ffff8135811691602081013582169160409091013516612ee9565b348015610c6f57600080fd5b506103f66130d6565b348015610c8457600080fd5b506103f6613283565b348015610c9957600080fd5b5061085b6132ff565b348015610cae57600080fd5b506103b161330f565b348015610cc357600080fd5b506103f660048036036060811015610cda57600080fd5b506001600160a01b038135811691602081013582169160409091013516613316565b348015610d0857600080fd5b506103b1613494565b348015610d1d57600080fd5b506103f660048036036020811015610d3457600080fd5b50356001600160a01b031661349b565b348015610d5057600080fd5b506103f660048036036060811015610d6757600080fd5b50803590602081013590604001356134ee565b600b54600090600160201b900460ff1615610dc65760405162461bcd60e51b8152600401808060200182810382526022815260200180613f026022913960400191505060405180910390fd5b620d2f00610ddf6003544261357a90919063ffffffff16565b1015610e1257610e0d610dfd6003544261357a90919063ffffffff16565b620d2f009063ffffffff61357a16565b610e15565b60005b90505b90565b610e2361272d565b610e62576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6000816001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b158015610e9c57600080fd5b505afa158015610eb0573d6000803e3d6000fd5b505050506040513d6040811015610ec657600080fd5b5060200151905080610f1f576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f742061646420696e61637469766520666565640000000000000000604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b03841690811790915542601681905560408051928352602083019190915280517f5a3d3d9197f5c60c16de28887dccf83284a4fd034b930272637c83307b4fffe79281900390910190a15050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561100257602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610fbf5790505b5050505050905090565b6000610e156016546276a7006135d7565b61102561272d565b611064576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600d546202a300600082116110b7576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b806110c8428463ffffffff61357a16565b1015611109576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601154600b80546501000000000061ffff90931692830266ffff00000000001990911617905560408051918252517f236dec26d53c6a51390e98ed703106e132fd062b0e38b8a9cf8b4d13f47952c89181900360200190a150506011805461ffff191690556000600d55565b61117d61272d565b6111bc576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6010546202a3006000821161120f576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80611220428463ffffffff61357a16565b1015611261576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601354601454601554611294926006926001600160a01b03600160301b909204821692908216911663ffffffff61366116565b601354601454601554604080516001600160a01b03600160301b90950485168152928416602084015292168183015290517f75cd06e2a95bd62ad447184bf0950b3af3aabd0960994d09da9724686d0c17209181900360600190a150506000601055601380546601000000000000600160d01b0319169055601480546001600160a01b0319908116909155601580549091169055565b600b54600160201b900460ff1690565b6113433361274f565b61137e5760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b84866001600160a01b0316336001600160a01b03167f7959c380174061a21a3ba80243a032ba9cd10dc8bd1736d7e835c94e97a35a9887878787604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156114055781810151838201526020016113ed565b50505050905090810190601f1680156114325780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505050505050565b6114b361272d565b6114f2576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6002541561153d576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6040805163e8e08cf160e01b8152600660048201526001600160a01b038b166024820152905173__KeepFactorySelection__________________9163e8e08cf1916044808301926000929190829003018186803b15801561159e57600080fd5b505af41580156115b2573d6000803e3d6000fd5b5050600b80544260025564ff000000001961ffff86811661ffff19918916620100000263ffff00001990941693909317169190911716600160201b179055506115fc9050856136ef565b60408051630d4815e560e21b81526001600160a01b0388811660048301528781166024830152868116604483015291519185169163352057949160648082019260009290919082900301818387803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b50506040805163bbe2bbd560e01b81526001600160a01b038b811660048301523060248301528a811660448301528981166064830152888116608483015287811660a48301529151918c16935063bbe2bbd5925060c48082019260009290919082900301818387803b1580156116e057600080fd5b505af11580156116f4573d6000803e3d6000fd5b50505050505050505050505050565b61170c3361274f565b6117475760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f6e7b45210b79c12cd1332babd8d86c0bbb9ca898a89ce0404f17064dbfba18c0919081900360200190a2565b6117883361274f565b6117c35760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f07f0eaafadb9abb1d28da85d4b4c74f1939fd61b535c7f5ab501f618f07e76ee919081900360200190a2565b600c805460009190600019810190811061181157fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b0316919050565b6118463361274f565b6118815760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b6040805142815290516001600160a01b0383169133917f822b3073be62c5c7f143c2dcd71ee266434ee935d90a1eec3be34710ac8ec1a29181900360200190a350565b6118cc61272d565b61190b576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6000805b82811015611b675783838281811061192357fe5b905060200201356001600160401b03166001600160401b03166305f5e10014156119505760019150611b5f565b61c35084848381811061195f57fe5b905060200201356001600160401b03166001600160401b031610156119b55760405162461bcd60e51b815260040180806020018281038252602e815260200180613d2f602e913960400191505060405180910390fd5b6402540be4008484838181106119c757fe5b905060200201356001600160401b03166001600160401b03161115611a1d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613ed4602e913960400191505060405180910390fd5b600081118015611a775750838360018303818110611a3757fe5b905060200201356001600160401b03166001600160401b0316848483818110611a5c57fe5b905060200201356001600160401b03166001600160401b0316145b15611ab35760405162461bcd60e51b8152600401808060200182810382526027815260200180613d086027913960400191505060405180910390fd5b600081118015611b0d5750838360018303818110611acd57fe5b905060200201356001600160401b03166001600160401b0316848483818110611af257fe5b905060200201356001600160401b03166001600160401b0316105b15611b5f576040805162461bcd60e51b815260206004820152601d60248201527f4c6f742073697a65206172726179206d75737420626520736f72746564000000604482015290519081900360640190fd5b60010161190f565b5080611ba45760405162461bcd60e51b8152600401808060200182810382526028815260200180613e516028913960400191505060405180910390fd5b7fffb1e2bce3c7a63d0cac5492540bd370e1156621adde36cd481262c2846a2b7b83834260405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1611c1b601284846139fb565b505042600e555050565b600080600673__KeepFactorySelection__________________63d83d44b090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c7a57600080fd5b505af4158015611c8e573d6000803e3d6000fd5b505050506040513d6020811015611ca457600080fd5b50516040805163bc2c289f60e01b815290519192506001600160a01b0383169163bc2c289f91600480820192602092909190829003018186803b158015611cea57600080fd5b505afa158015611cfe573d6000803e3d6000fd5b505050506040513d6020811015611d1457600080fd5b505191505090565b6000600c60008154811061181157fe5b611d353361274f565b611d705760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080518215158152426020820152815133927fbef11c059eefba82a15aea8a3a89c86fd08d7711c88fa7daea2632a55488510c928290030190a250565b6000610e15600e546202a3006135d7565b60055460408051630ae5ef8960e21b815290516000926001600160a01b031691632b97be24916004808301926020929190829003018186803b158015611e0457600080fd5b505afa158015611e18573d6000803e3d6000fd5b505050506040513d6020811015611e2e57600080fd5b5051905090565b611e3d61272d565b611e7c576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b60098161ffff1611611ebf5760405162461bcd60e51b815260040180806020018281038252604a815260200180613cbe604a913960600191505060405180910390fd5b6113888161ffff1610611f035760405162461bcd60e51b815260040180806020018281038252604b815260200180613f24604b913960600191505060405180910390fd5b6011805461ffff191661ffff831690811790915542600d81905560408051928352602083019190915280517f38cb7049f0daf658ca989e9ef6b850ef11e3740ff07a0c16706042c39adf48fc9281900390910190a150565b6000610e156010546202a3006135d7565b600b5465010000000000900461ffff1690565b600b5461ffff1681565b611f923361274f565b611fcd5760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080514281529051829133917f44b7f176bcc739b54bd0800fe491cbdea19df7d4d6b19c281462e6b4fc5043449181900360200190a350565b600b54600160581b900461ffff1690565b61202061272d565b61205f576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004546001600160a01b031681565b600b54600160201b900460ff16156121015760405162461bcd60e51b8152600401808060200182810382526022815260200180613f026022913960400191505060405180910390fd5b600354612155576040805162461bcd60e51b815260206004820152601b60248201527f4465706f73697420686173206e6f74206265656e207061757365640000000000604482015290519081900360640190fd5b620d2f0061216e6003544261357a90919063ffffffff16565b10156121c1576040805162461bcd60e51b815260206004820152601960248201527f4465706f7369747320617265207374696c6c2070617573656400000000000000604482015290519081900360640190fd5b600b805464ff000000001916600160201b179055604080516001815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a1565b73__KeepFactorySelection__________________63e33cd9716006612237612232611d1c565b61376f565b600b54604080516001600160e01b031960e087901b1681526004810194909452602484019290925261ffff808216604485015262010000909104166064830152516084808301926000929190829003018186803b15801561229757600080fd5b505af41580156122ab573d6000803e3d6000fd5b50505050565b6122ba3361274f565b6122f55760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080514281529051829133917fe34c70bd3e03956978a5c76d2ea5f3a60819171afea6dee4fc12b2e45f72d43d9181900360200190a350565b61233761272d565b612376576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600354156123b55760405162461bcd60e51b8152600401808060200182810382526031815260200180613ba66031913960400191505060405180910390fd5b600254420362ed4e0081106123fb5760405162461bcd60e51b815260040180806020018281038252604e815260200180613bd7604e913960600191505060405180910390fd5b42600355600b805464ff0000000019169055604080516000815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a150565b60015460408051634f558e7960e01b815233600482015290516000926001600160a01b031691634f558e79916024808301926020929190829003018186803b15801561248f57600080fd5b505afa1580156124a3573d6000803e3d6000fd5b505050506040513d60208110156124b957600080fd5b50516124f65760405162461bcd60e51b8152600401808060200182810382526021815260200180613c4b6021913960400191505060405180910390fd5b6124ff836127d4565b612550576040805162461bcd60e51b815260206004820152601f60248201527f70726f7669646564206c6f742073697a65206e6f7420737570706f7274656400604482015290519081900360640190fd5b6000600673__KeepFactorySelection__________________63d857268890916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156125a457600080fd5b505af41580156125b8573d6000803e3d6000fd5b505050506040513d60208110156125ce57600080fd5b5051905060006125e66001600160401b03861661376f565b600b546040805163ca050cfd60e01b815261ffff80841660048301526201000090930490921660248301523360448301526064820183905260848201879052519192506001600160a01b0384169163ca050cfd91349160a480830192602092919082900301818588803b15801561265c57600080fd5b505af1158015612670573d6000803e3d6000fd5b50505050506040513d602081101561268757600080fd5b5051925050505b92915050565b61269d3361274f565b6126d85760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051838152602081018390524281830152905133917f8ee737ab16909c4e9d1b750814a4393c9f84ab5d3a29c08c313b783fc846ae33919081900360600190a25050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b600b54600160381b900461ffff1690565b60015460408051634f558e7960e01b81526001600160a01b03848116600483015291516000939290921691634f558e7991602480820192602092909190829003018186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d60208110156127ca57600080fd5b505190505b919050565b6000805b600c5481101561283857826001600160401b0316600c82815481106127f957fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b031614156128305760019150506127cf565b6001016127d8565b50600092915050565b600b54600160481b900461ffff1690565b60015460408051634f558e7960e01b815233600482015290516000926001600160a01b031691634f558e79916024808301926020929190829003018186803b15801561289d57600080fd5b505afa1580156128b1573d6000803e3d6000fd5b505050506040513d60208110156128c757600080fd5b50516129045760405162461bcd60e51b8152600401808060200182810382526021815260200180613c4b6021913960400191505060405180910390fd5b610e156137c0565b6129153361274f565b6129505760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f8fd2cfb62a35fccc1ecef829f83a6c2f840b73dad49d3eaaa402909752086d4b919081900360200190a2565b61299061272d565b6129cf576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6016546276a70060008211612a22576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612a33428463ffffffff61357a16565b1015612a74576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601780546001600160a01b031981169091556000601655604080516001600160a01b03909216808352905190917f5e4bd1f6e413d39e172d96a88ee6b1b2ba9e1a6207e2ca34fa8c3ccd152ff21a919081900360200190a1600480546040805163d14dd41360e01b81526001600160a01b03858116948201949094529051929091169163d14dd4139160248082019260009290919082900301818387803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b50505050505050565b6276a70090565b6000610e1560025462ed4e006135d7565b6005546001600160a01b031681565b6000610e15600d546202a3006135d7565b6000610e15600f546202a3006135d7565b612b8d3361274f565b612bc85760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917fa5ee7a2b0254fce91deed604506790ed7fa072d0b14cba4859c3bc8955b9caac919081900360200190a2565b612c0861272d565b612c47576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600e546202a30060008211612c9a576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612cab428463ffffffff61357a16565b1015612cec576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b60128054612cfc91600c91613abc565b507fa801e49d33e856d89d06e647753d9d9dda3d0b0520c4346290ada455a00cafcc601260405180806020018281038252838181548152602001915080548015612d9757602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411612d545790505b50509250505060405180910390a16000600e819055612db7601282613b0a565b50612dc061220b565b5050565b612dcd3361274f565b612e085760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080516020808252835181830152835133937fa6e9673b5d53b3fe3c62b6459720f9c2a1b129d4f69acb771404ba8681b6a9309386939092839283019185019080838360005b83811015612e67578181015183820152602001612e4f565b50505050905090810190601f168015612e945780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b6005546040805163089bb25f60e11b815290516000926001600160a01b03169163113764be916004808301926020929190829003018186803b158015611e0457600080fd5b612ef161272d565b612f30576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b61012c8361ffff161115612f755760405162461bcd60e51b815260040180806020018281038252602e815260200180613e79602e913960400191505060405180910390fd5b60648361ffff1611612fb85760405162461bcd60e51b815260040180806020018281038252602e815260200180613c6c602e913960400191505060405180910390fd5b8161ffff168361ffff1611612ffe5760405162461bcd60e51b8152600401808060200182810382526046815260200180613d5d6046913960600191505060405180910390fd5b8061ffff168261ffff16116130445760405162461bcd60e51b815260040180806020018281038252604c815260200180613f6f604c913960600191505060405180910390fd5b6013805461ffff191661ffff85811691821763ffff00001916620100008683169081029190911765ffff000000001916600160201b9286169283021790935542600f81905560408051938452602084019490945282840191909152606082015290517fc9e225c2db3e9f70966e6c0403de785bcda0172ec4e41111a6e8f4b85b1f30fb916080908290030190a1505050565b6130de61272d565b61311d576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600f546202a30060008211613170576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80613181428463ffffffff61357a16565b10156131c2576040805162461bcd60e51b81526020600482018190526024820152600080516020613dc4833981519152604482015290519081900360640190fd5b601354600b805468ffff00000000000000191661ffff808416600160381b8102929092176affff00000000000000000019166201000085048216600160481b81029190911761ffff60581b1916600160201b90950491909116600160581b81029490941790925560408051918252602082019290925280820192909252517f07ac9ce7dc4b2edb6435fb2255e9e867f357ef2052b982ce468442aa9d6c1d50916060908290030190a150506013805465ffffffffffff191690556000600f55565b61328c3361274f565b6132c75760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b60408051428152905133917f1e61af503f1d7de21d5300094c18bf8700f82b2951a4d54dd2adda13f6b3da30919081900360200190a2565b600b5462010000900461ffff1681565b62ed4e0090565b61331e61272d565b61335d576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b600254420362ed4e0081106133a35760405162461bcd60e51b815260040180806020018281038252604d815260200180613e04604d913960600191505060405180910390fd5b6001600160a01b0384166133e85760405162461bcd60e51b815260040180806020018281038252602d815260200180613ea7602d913960400191505060405180910390fd5b601380546001600160a01b03808716600160301b81026601000000000000600160d01b031990931692909217909255601480548684166001600160a01b0319918216811790925560158054948716949091168417905542601081905560408051938452602084019290925282820193909352606082019290925290517f1608ec8025d64cdb0ed78e62a67d271a33b9d738842a6eb6e6449bc3afab6dca9181900360800190a150505050565b6202a30090565b6134a361272d565b6134e2576040805162461bcd60e51b81526020600482018190526024820152600080516020613de4833981519152604482015290519081900360640190fd5b6134eb81613898565b50565b6134f73361274f565b6135325760405162461bcd60e51b8152600401808060200182810382526024815260200180613c9a6024913960400191505060405180910390fd5b604080518381526020810183905242818301529051849133917f7f7d7327762d01d2c4a552ea0be2bc5a76264574a80aa78083e691a840e509f29181900360600190a3505050565b6000828211156135d1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808311613624576040805162461bcd60e51b8152602060048201526014602482015273155c19185d19481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b6000613636428563ffffffff61357a16565b905082811061364957600091505061268e565b613659838263ffffffff61357a16565b91505061268e565b6001600160a01b0383166136a65760405162461bcd60e51b8152600401808060200182810382526023815260200180613b836023913960400191505060405180910390fd5b6003840180546001600160a01b039485166001600160a01b0319918216179091556004850180549385169382169390931790925560029093018054939092169216919091179055565b6001546001600160a01b03161561374d576040805162461bcd60e51b815260206004820152601f60248201527f746274634465706f736974546f6b656e20697320616c72656164792073657400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061378a8361377e6137c0565b9063ffffffff61393816565b600b549091506137b9906064906137ad908490600160381b900461ffff16613938565b9063ffffffff61399116565b9392505050565b6004805460408051634c6afee560e11b8152905160009384936001600160a01b0316926398d5fdca9281830192602092829003018186803b15801561380457600080fd5b505afa158015613818573d6000803e3d6000fd5b505050506040513d602081101561382e57600080fd5b505190508015806138465750670de0b6b3a764000081115b15610e15576040805162461bcd60e51b815260206004820152601b60248201527f53797374656d2072657475726e65642061206261642070726963650000000000604482015290519081900360640190fd5b6001600160a01b0381166138dd5760405162461bcd60e51b8152600401808060200182810382526026815260200180613c256026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826139475750600061268e565b8282028284828161395457fe5b04146137b95760405162461bcd60e51b8152600401808060200182810382526021815260200180613da36021913960400191505060405180910390fd5b60008082116139e7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816139f257fe5b04949350505050565b82805482825590600052602060002090600301600490048101928215613aac5791602002820160005b83821115613a775783356001600160401b031683826101000a8154816001600160401b0302191690836001600160401b031602179055509260200192600801602081600701049283019260010302613a24565b8015613aaa5782816101000a8154906001600160401b030219169055600801602081600701049283019260010302613a77565b505b50613ab8929150613b43565b5090565b82805482825590600052602060002090600301600490048101928215613aac576000526020600020916003016004900482015b82811115613aac578254825591600101919060010190613aef565b815481835581811115613b3e576003016004900481600301600490048360005260206000209182019101613b3e9190613b68565b505050565b610e1891905b80821115613ab857805467ffffffffffffffff19168155600101613b49565b610e1891905b80821115613ab85760008155600101613b6e56fe496e76616c6964204b4545502d7374616b656420666163746f72792061646472657373656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c6564206f6e6365656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616c6c6572206d7573742062652061204465706f73697420636f6e7472616374496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203e3d203130302543616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e74735369676e6572206665652064697669736f72206d7573742062652067726561746572207468616e20392c20666f722061207369676e6572206665652074686174206973203c3d203130254c6f742073697a65206172726179206d757374206e6f742068617665206475706c6963617465734c6f742073697a6573206c657373207468616e20302e303030352042544320617265206e6f7420616c6c6f776564556e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20696e697469616c20636f6c6c61746572616c697a65642070657263656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77476f7665726e616e63652064656c617920686173206e6f7420656c61707365644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572626567696e4b656570466163746f726965735570646174652063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4c6f742073697a65206172726179206d75737420616c7761797320636f6e7461696e203120425443496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203c3d20333030254b454550207374616b656420666163746f7279206d7573742062652061206e6f6e7a65726f20616464726573734c6f742073697a65732067726561746572207468616e203130302042544320617265206e6f7420616c6c6f7765644e6577206465706f73697473206172652063757272656e746c7920616c6c6f7765645369676e6572206665652064697669736f72206d757374206265206c657373207468616e20353030302c20666f722061207369676e6572206665652074686174206973203e20302e30322553657665726520756e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20756e646572636f6c6c61746572616c697a6564207468726573686f6c64a265627a7a7231582039c8fe0aeb3f8ffc5254956dceb7fe9c624bf476e1fa47ddf1b510a00acbb06464736f6c63430005110032",
  "sourceMap": "2535:1:24:-;2504:32;;2853:37;;;-1:-1:-1;;;;2896:38:24;;;-1:-1:-1;;;;2977:49:24;;;-1:-1:-1;;;;3043:56:24;;;-1:-1:-1;;;;3116:64:24;;;;;3197:71;71:475:26;3197:71:24;3226:5;71:475:26;3197:71:24;;;3233:5;3197:71;;3240:9;3197:71;;3251:9;3197:71;;3262:5;2853:37;3197:71;;;;;2896:38;3197:71;:::i;:::-;;118:426:26;8:9:-1;5:2;;;30:1;27;20:12;5:2;118:426:26;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;118:426:26;;;;;;;657:6:61;:19;;-1:-1:-1;;;;;;657:19:61;666:10;657:19;;;;118:426:26;691:40:61;118:426:26;;;;-1:-1:-1;;;;;724:6:61;;691:40;;657:6;;691:40;4249:9:24;:40;;-1:-1:-1;;;;;4249:40:24;;;-1:-1:-1;;;;;;4249:40:24;;;;;;;4299:5;:22;;;;;;;;;;;290:189:26;;;4249:40:24;290:189:26;;;;323:5;290:189;;342:5;290:189;;;;361:5;290:189;;;;;;;380:5;290:189;;;;399:5;290:189;;;;418:9;290:189;;;;441:9;290:189;;;;464:5;290:189;;;;;;:16;;:189;;:::i;:::-;;118:426;;71:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;71:475:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;71:475:26;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;71:475:26;;;-1:-1:-1;71:475:26;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;71:475:26;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "71:475:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8079:326:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8079:326:24;;;:::i;:::-;;;;;;;;;;;;;;;;15967:484;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15967:484:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15967:484:24;-1:-1:-1;;;;;15967:484:24;;:::i;:::-;;21763:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21763:110:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21763:110:24;;;;;;;;;;;;;;;;;25055:279;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25055:279:24;;;:::i;17113:394::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17113:394:24;;;:::i;19905:675::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19905:675:24;;;:::i;6342:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6342:100:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;5052:637:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:637:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5052:637:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5052:637:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5052:637:0;;;;;;;;;-1:-1:-1;5052:637:0;;;;-1:-1:-1;5052:637:0;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5052:637:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5052:637:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5052:637:0;;-1:-1:-1;5052:637:0;;-1:-1:-1;;;;;5052:637:0:i;5079:1108:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5079:1108:24;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;5079:1108:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8585:221:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8585:221:0;;;:::i;10136:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10136:229:0;;;:::i;6808:130:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6808:130:24;;;:::i;4177:241:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4177:241:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4177:241:0;-1:-1:-1;;;;;4177:241:0;;:::i;9815:1184:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9815:1184:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9815:1184:24;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9815:1184:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9815:1184:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9815:1184:24;;-1:-1:-1;9815:1184:24;-1:-1:-1;9815:1184:24;:::i;27144:223::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27144:223:24;;;:::i;6573:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6573:102:24;;;:::i;9026:254:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9026:254:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9026:254:0;;;;:::i;23863:224:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23863:224:24;;;:::i;23298:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23298:126:24;;;:::i;8666:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8666:606:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8666:606:24;;;;:::i;24703:262::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24703:262:24;;;:::i;21562:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21562:102:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2740:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2740:22:24;;;:::i;9414:229:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9414:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9414:229:0;;:::i;22214:184:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22214:184:24;;;:::i;1599:137:61:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1599:137:61;;;:::i;2619:33:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2619:33:24;;;:::i;:::-;;;;-1:-1:-1;;;;;2619:33:24;;;;;;;;;;;;;;7671:402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7671:402:24;;;:::i;26093:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26093:228:24;;;:::i;8219:225:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8219:225:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8219:225:0;;:::i;7041:534:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7041:534:24;;;:::i;27589:828::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27589:828:24;;;;;;;;:::i;6489:407:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6489:407:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6489:407:0;;;;;;;:::i;814:77:61:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;814:77:61;;;:::i;1165:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1165:90:61;;;:::i;22482:126:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22482:126:24;;;:::i;11440:132:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11440:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11440:132:0;-1:-1:-1;;;;;11440:132:0;;:::i;28593:329:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28593:329:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28593:329:24;-1:-1:-1;;;;;28593:329:24;;:::i;21956:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21956:168:24;;;:::i;22893:240::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22893:240:24;;;:::i;7034:215:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7034:215:0;;;:::i;20860:604:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20860:604:24;;;:::i;26913:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26913:127:24;;;:::i;25426:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25426:276:24;;;:::i;2658:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2658:19:24;;;:::i;23514:268::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23514:268:24;;;:::i;24187:290::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24187:290:24;;;:::i;9779:213:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9779:213:0;;;:::i;17790:375:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17790:375:24;;;:::i;7396:322:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7396:322:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7396:322:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7396:322:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7396:322:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7396:322:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7396:322:0;;-1:-1:-1;7396:322:0;;-1:-1:-1;;;;;7396:322:0:i;23164:128:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23164:128:24;;;:::i;11497:1539::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11497:1539:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11497:1539:24;;;;;;;;;;;;;;;;;;;;:::i;18510:922::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18510:922:24;;;:::i;7861:225:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7861:225:0;;;:::i;2768:27:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2768:27:24;;;:::i;26640:163::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26640:163:24;;;:::i;14550:1188::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14550:1188:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14550:1188:24;;;;;;;;;;;;;;;;;;;:::i;26443:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26443:109:24;;;:::i;1885:107:61:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1885:107:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1885:107:61;-1:-1:-1;;;;;1885:107:61;;:::i;5971:375:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5971:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5971:375:0;;;;;;;;;;;;:::i;8079:326:24:-;8163:16;;8135:7;;-1:-1:-1;;;8163:16:24;;;;8162:17;8154:64;;;;-1:-1:-1;;;8154:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2605:7;8248:36;8268:15;;8248;:19;;:36;;;;:::i;:::-;:54;;8247:151;;8342:56;8361:36;8381:15;;8361;:19;;:36;;;;:::i;:::-;2605:7;;8342:56;:18;:56;:::i;:::-;8247:151;;;8322:1;8247:151;8228:170;;8079:326;;:::o;15967:484::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;16084:17:24;16130:16;-1:-1:-1;;;;;16130:21:24;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16130:23:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16130:23:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16130:23:24;;;;-1:-1:-1;16130:23:24;16163:49;;;;;-1:-1:-1;;;16163:49:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;16223:19;:38;;-1:-1:-1;;;;;;16223:38:24;-1:-1:-1;;;;;16223:38:24;;;;;;;;16306:15;16271:32;:50;;;16336:108;;;;;;;;;;;;;;;;;;;;;;;;;1074:1:61;15967:484:24;:::o;21763:110::-;21816:15;21850:16;21843:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21843:23:24;-1:-1:-1;;;;;21843:23:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21763:110;:::o;25055:279::-;25153:7;25195:132;25235:32;;4087:7;25195:22;:132::i;17113:394::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;17236:31:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;17344:19;;17325:16;:38;;;17344:19;;;;17325:38;;;-1:-1:-1;;17325:38:24;;;;;;17378:44;;;;;;;;;;;;;;;;-1:-1:-1;;17432:19:24;:23;;-1:-1:-1;;17432:23:24;;;17454:1;17465:31;:35;17113:394::o;19905:675::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;20025:28:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;20158:20;;20192:21;;20227:18;;20111:144;;20158:20;;-1:-1:-1;;;;;;;;20158:20:24;;;;;;20192:21;;;;20227:18;20111:144;:33;:144;:::i;:::-;20305:20;;20339:21;;20374:18;;20271:131;;;-1:-1:-1;;;;;;;;20305:20:24;;;;;20271:131;;20339:21;;;20271:131;;;;20374:18;;20271:131;;;;;;;;;;;;;;;-1:-1:-1;;20444:1:24;20413:28;:32;20455:20;:33;;-1:-1:-1;;;;;;20455:33:24;;;20498:21;:34;;-1:-1:-1;;;;;;20498:34:24;;;;;;20542:18;:31;;;;;;;19905:675::o;6342:100::-;6419:16;;-1:-1:-1;;;6419:16:24;;;;;6342:100::o;5052:637:0:-;5373:25;5387:10;5373:13;:25::i;:::-;5352:108;;;;-1:-1:-1;;;5352:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5556:7;5532:10;-1:-1:-1;;;;;5475:207:0;5508:10;-1:-1:-1;;;;;5475:207:0;;5577:10;5601:21;5636:13;5663:9;5475:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5475:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5475:207:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5475:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:637;;;;;;:::o;5079:1108:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;5493:20:24;;:25;5485:57;;;;;-1:-1:-1;;;5485:57:24;;;;;;;;;;;;-1:-1:-1;;;5485:57:24;;;;;;;;;;;;;;;5553:52;;;-1:-1:-1;;;5553:52:24;;:20;:52;;;;-1:-1:-1;;;;;5553:52:24;;;;;;;;:31;;;;:52;;;;;-1:-1:-1;;5553:52:24;;;;;;;:31;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;5553:52:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5615:13:24;:30;;5708:15;5615:13;5685:38;-1:-1:-1;;5615:30:24;5655:20;;;-1:-1:-1;;5615:30:24;;;;;-1:-1:-1;;5615:30:24;;;;;;;5655:20;;;;;5733:23;-1:-1:-1;;;5733:23:24;;;-1:-1:-1;5767:38:24;;-1:-1:-1;5787:17:24;5767:19;:38::i;:::-;5816:130;;;-1:-1:-1;;;5816:130:24;;-1:-1:-1;;;;;5816:130:24;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;:130;;;;;-1:-1:-1;;5816:130:24;;;;;;;;-1:-1:-1;5816:36:24;:130;;;5:2:-1;;;;30:1;27;20:12;5:2;5816:130:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5956:224:24;;;-1:-1:-1;;;5956:224:24;;-1:-1:-1;;;;;5956:224:24;;;;;;;6044:4;5956:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;-1:-1:-1;5956:39:24;;-1:-1:-1;5956:224:24;;;;;-1:-1:-1;;5956:224:24;;;;;;;;-1:-1:-1;5956:39:24;:224;;;5:2:-1;;;;30:1;27;20:12;5:2;5956:224:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5956:224:24;;;;5079:1108;;;;;;;;;:::o;8585:221:0:-;8654:25;8668:10;8654:13;:25::i;:::-;8633:108;;;;-1:-1:-1;;;8633:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8756:43;;;8783:15;8756:43;;;;8771:10;;8756:43;;;;;;;;;;8585:221::o;10136:229::-;10209:25;10223:10;10209:13;:25::i;:::-;10188:108;;;;-1:-1:-1;;;10188:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10311:47;;;10342:15;10311:47;;;;10330:10;;10311:47;;;;;;;;;;10136:229::o;6808:130:24:-;6886:16;6903:23;;6860:7;;6886:16;-1:-1:-1;;6903:27:24;;;6886:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6886:45:24;;6808:130;-1:-1:-1;6808:130:24:o;4177:241:0:-;4259:25;4273:10;4259:13;:25::i;:::-;4238:108;;;;-1:-1:-1;;;4238:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:50;;;4395:15;4361:50;;;;-1:-1:-1;;;;;4361:50:0;;;4369:10;;4361:50;;;;;;;;;4177:241;:::o;9815:1184:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;9922:21:24;;9961:795;9981:20;;;9961:795;;;10026:9;;10036:1;10026:12;;;;;;;;;;;;;-1:-1:-1;;;;;10026:12:24;-1:-1:-1;;;;;10026:21:24;10042:5;10026:21;10022:724;;;10086:4;10067:23;;10022:724;;;10130:10;10115:9;;10125:1;10115:12;;;;;;;;;;;;;-1:-1:-1;;;;;10115:12:24;-1:-1:-1;;;;;10115:25:24;;10111:635;;;10225:56;;-1:-1:-1;;;10225:56:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10111:635;10321:10;10306:9;;10316:1;10306:12;;;;;;;;;;;;;-1:-1:-1;;;;;10306:12:24;-1:-1:-1;;;;;10306:25:24;;10302:444;;;10416:56;;-1:-1:-1;;;10416:56:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10302:444;10501:1;10497;:5;:41;;;;;10522:9;;10536:1;10532;:5;10522:16;;;;;;;;;;;;;-1:-1:-1;;;;;10522:16:24;-1:-1:-1;;;;;10506:32:24;:9;;10516:1;10506:12;;;;;;;;;;;;;-1:-1:-1;;;;;10506:12:24;-1:-1:-1;;;;;10506:32:24;;10497:41;10493:253;;;10558:49;;-1:-1:-1;;;10558:49:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10493:253;10636:1;10632;:5;:40;;;;;10656:9;;10670:1;10666;:5;10656:16;;;;;;;;;;;;;-1:-1:-1;;;;;10656:16:24;-1:-1:-1;;;;;10641:31:24;:9;;10651:1;10641:12;;;;;;;;;;;;;-1:-1:-1;;;;;10641:12:24;-1:-1:-1;;;;;10641:31:24;;10632:40;10628:118;;;10692:39;;;-1:-1:-1;;;10692:39:24;;;;;;;;;;;;;;;;;;;;;;;;;;;10628:118;10003:3;;9961:795;;;;10774:16;10766:69;;;;-1:-1:-1;;;10766:69:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10851:49;10873:9;;10884:15;10851:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10851:49:24;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10851:49:24;;;;-1:-1:-1;10851:49:24;;-1:-1:-1;;;;;10851:49:24;10910:31;:19;10932:9;;10910:31;:::i;:::-;-1:-1:-1;;10977:15:24;10951:23;:41;-1:-1:-1;;9815:1184:24:o;27144:223::-;27203:7;27222:36;27273:20;:34;;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27273:36:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27273:36:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27273:36:24;27326:34;;;-1:-1:-1;;;27326:34:24;;;;27273:36;;-1:-1:-1;;;;;;27326:32:24;;;;;:34;;;;;27273:36;;27326:34;;;;;;;;:32;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;27326:34:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27326:34:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27326:34:24;;-1:-1:-1;;27144:223:24;:::o;6573:102::-;6623:7;6649:16;6666:1;6649:19;;;;;;;9026:254:0;9113:25;9127:10;9113:13;:25::i;:::-;9092:108;;;;-1:-1:-1;;;9092:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9215:58;;;;;;;;9257:15;9215:58;;;;;;9234:10;;9215:58;;;;;;;;9026:254;:::o;23863:224:24:-;23928:7;23966:114;24006:23;;3348:8;23966:22;:114::i;23298:126::-;23387:5;;:30;;;-1:-1:-1;;;23387:30:24;;;;23361:7;;-1:-1:-1;;;;;23387:5:24;;:28;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;23387:30:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23387:30:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23387:30:24;;-1:-1:-1;23298:126:24;:::o;8666:606::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;8819:1:24;8799:17;:21;;;8778:142;;;;-1:-1:-1;;;8778:142:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8971:4;8951:17;:24;;;8930:146;;;;-1:-1:-1;;;8930:146:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9087:19;:39;;-1:-1:-1;;9087:39:24;;;;;;;;;;9170:15;9136:31;:49;;;9200:65;;;;;;;;;;;;;;;;;;;;;;;;;8666:606;:::o;24703:262::-;24797:7;24839:119;24879:28;;3348:8;24839:22;:119::i;21562:102::-;21641:16;;;;;;;;21562:102::o;2740:22::-;;;;;;:::o;9414:229:0:-;9490:25;9504:10;9490:13;:25::i;:::-;9469:108;;;;-1:-1:-1;;;9469:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9592:44;;;9620:15;9592:44;;;;9613:5;;9601:10;;9592:44;;;;;;;;;9414:229;:::o;22214:184:24:-;22348:43;;-1:-1:-1;;;22348:43:24;;;;;22214:184::o;1599:137:61:-;1018:9;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;1697:1;1681:6;;1660:40;;-1:-1:-1;;;;;1681:6:61;;;;1660:40;;1697:1;;1660:40;1727:1;1710:19;;-1:-1:-1;;;;;;1710:19:61;;;1599:137::o;2619:33:24:-;;;-1:-1:-1;;;;;2619:33:24;;:::o;7671:402::-;7728:16;;-1:-1:-1;;;7728:16:24;;;;7727:17;7719:64;;;;-1:-1:-1;;;7719:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7801:15;;7793:60;;;;;-1:-1:-1;;;7793:60:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;2605:7;7884:36;7904:15;;7884;:19;;:36;;;;:::i;:::-;:54;;7863:126;;;;;-1:-1:-1;;;7863:126:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;7999:16;:23;;-1:-1:-1;;7999:23:24;-1:-1:-1;;;7999:23:24;;;8037:29;;;8018:4;8037:29;;;;;;;;;;;;;7671:402::o;26093:228::-;26149:44;;:20;26207:48;26235:19;:17;:19::i;:::-;26207:27;:48::i;:::-;26269:8;;26149:165;;;-1:-1:-1;;;;;;26149:165:24;;;;;;;;;;;;;;;;;;;;;26269:8;;;;26149:165;;;;26291:13;;;;;26149:165;;;;;;;;;;26269:8;;26149:165;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;26149:165:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26149:165:24;;;;26093:228::o;8219:225:0:-;8293:25;8307:10;8293:13;:25::i;:::-;8272:108;;;;-1:-1:-1;;;8272:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8395:42;;;8421:15;8395:42;;;;8414:5;;8402:10;;8395:42;;;;;;;;;8219:225;:::o;7041:534:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;7128:15:24;;:20;7107:116;;;;-1:-1:-1;;;7107:116:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7271:20;;7253:15;:38;7334:8;7322:20;;7301:145;;;;-1:-1:-1;;;7301:145:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7474:15;7456;:33;7499:16;:24;;-1:-1:-1;;7499:24:24;;;7538:30;;;7518:5;7538:30;;;;;;;;;;;;;1074:1:61;7041:534:24:o;27589:828::-;27764:16;;:44;;;-1:-1:-1;;;27764:44:24;;27796:10;27764:44;;;;;;27724:7;;-1:-1:-1;;;;;27764:16:24;;:23;;:44;;;;;;;;;;;;;;:16;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;27764:44:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27764:44:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27764:44:24;27743:124;;;;-1:-1:-1;;;27743:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27898:43;27915:25;27898:16;:43::i;:::-;27877:121;;;;;-1:-1:-1;;;27877:121:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;28009:36;28060:20;:44;;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28060:46:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28060:46:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28060:46:24;;-1:-1:-1;28116:12:24;28131:54;-1:-1:-1;;;;;28131:54:24;;:27;:54::i;:::-;28270:8;;28214:196;;;-1:-1:-1;;;28214:196:24;;28270:8;;;;28214:196;;;;28296:13;;;;;;;28214:196;;;;28327:10;28214:196;;;;;;;;;;;;;;;;;28116:69;;-1:-1:-1;;;;;;28214:21:24;;;;;28242:9;;28214:196;;;;;;;;;;;;;;28242:9;28214:21;:196;;;5:2:-1;;;;30:1;27;20:12;5:2;28214:196:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28214:196:24;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28214:196:24;;-1:-1:-1;;;27589:828:24;;;;;:::o;6489:407:0:-;6640:25;6654:10;6640:13;:25::i;:::-;6619:108;;;;-1:-1:-1;;;6619:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:147;;;;;;;;;;;;6864:15;6742:147;;;;;;6772:10;;6742:147;;;;;;;;;;6489:407;;:::o;814:77:61:-;852:7;878:6;-1:-1:-1;;;;;878:6:61;814:77;:::o;1165:90::-;1205:4;1242:6;-1:-1:-1;;;;;1242:6:61;1228:10;:20;;1165:90::o;22482:126:24:-;22573:28;;-1:-1:-1;;;22573:28:24;;;;;22482:126::o;11440:132:0:-;11524:16;;:41;;;-1:-1:-1;;;11524:41:0;;-1:-1:-1;;;;;11548:16:0;;;11524:41;;;;;;11501:4;;11524:16;;;;;:23;;:41;;;;;;;;;;;;;;;:16;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;11524:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11524:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11524:41:0;;-1:-1:-1;11440:132:0;;;;:::o;28593:329:24:-;28698:4;;28718:176;28742:16;:23;28738:27;;28718:176;;;28813:25;-1:-1:-1;;;;;28790:48:24;:16;28807:1;28790:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28790:19:24;:48;28786:98;;;28865:4;28858:11;;;;;28786:98;28767:3;;28718:176;;;-1:-1:-1;28910:5:24;;28593:329;-1:-1:-1;;28593:329:24:o;21956:168::-;22082:35;;-1:-1:-1;;;22082:35:24;;;;;21956:168::o;22893:240::-;22985:16;;:44;;;-1:-1:-1;;;22985:44:24;;23017:10;22985:44;;;;;;22945:7;;-1:-1:-1;;;;;22985:16:24;;:23;;:44;;;;;;;;;;;;;;:16;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;22985:44:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22985:44:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22985:44:24;22964:124;;;;-1:-1:-1;;;22964:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23106:20;:18;:20::i;7034:215:0:-;7100:25;7114:10;7100:13;:25::i;:::-;7079:108;;;;-1:-1:-1;;;7079:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:40;;;7226:15;7202:40;;;;7214:10;;7202:40;;;;;;;;;;7034:215::o;20860:604:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;20984:32:24;;4087:7;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;21223:19;;;-1:-1:-1;;;;;;21252:36:24;;;;;21188:32;21298;:36;21350:51;;;-1:-1:-1;;;;;21223:19:24;;;21350:51;;;;;21223:19;;21350:51;;;;;;;;;;21412:9;;;:45;;;-1:-1:-1;;;21412:45:24;;-1:-1:-1;;;;;21412:45:24;;;;;;;;;;;;:9;;;;;:23;;:45;;;;;:9;;:45;;;;;;;;:9;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;21412:45:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21412:45:24;;;;16797:1;1074::61;;20860:604:24:o;26913:127::-;4087:7;26913:127;:::o;25426:276::-;25528:7;25570:125;25610:20;;3415:8;25570:22;:125::i;2658:19::-;;;-1:-1:-1;;;;;2658:19:24;;:::o;23514:268::-;23611:7;23653:122;23693:31;;3348:8;23653:22;:122::i;24187:290::-;24295:7;24337:133;24377:42;;3348:8;24337:22;:133::i;9779:213:0:-;9844:25;9858:10;9844:13;:25::i;:::-;9823:108;;;;-1:-1:-1;;;9823:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9946:39;;;9969:15;9946:39;;;;9957:10;;9946:39;;;;;;;;;;9779:213::o;17790:375:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;17892:23:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;17971:19;17952:38;;;;:16;;:38;:::i;:::-;;18005:36;18021:19;18005:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18005:36:24;-1:-1:-1;;;;;18005:36:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18077:1;18051:23;:27;;;18088:30;:19;18077:1;18088:30;:::i;:::-;;18129:29;:27;:29::i;:::-;1074:1:61;;17790:375:24:o;7396:322:0:-;7557:25;7571:10;7557:13;:25::i;:::-;7536:108;;;;-1:-1:-1;;;7536:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7659:52;;;;;;;;;;;;;;;7680:10;;7659:52;;7692:18;;7659:52;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7659:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7396:322;:::o;23164:128:24:-;23252:5;;:33;;;-1:-1:-1;;;23252:33:24;;;;23226:7;;-1:-1:-1;;;;;23252:5:24;;:31;;:33;;;;;;;;;;;;;;:5;:33;;;5:2:-1;;;;30:1;27;20:12;11497:1539:24;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;11794:3:24;11761:29;:36;;;;11740:129;;;;-1:-1:-1;;;11740:129:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11932:3;11900:29;:35;;;11879:128;;;;-1:-1:-1;;;11879:128:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12086:36;12038:84;;:29;:84;;;12017:201;;;;-1:-1:-1;;;12017:201:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12304:44;12249:99;;:36;:99;;;12228:222;;;;-1:-1:-1;;;12228:222:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12461:31;:63;;-1:-1:-1;;12461:63:24;;;;;;;;-1:-1:-1;;12534:77:24;;;;;;;;;;;;-1:-1:-1;;12621:93:24;-1:-1:-1;;;12621:93:24;;;;;;;;;;12769:15;12724:42;:60;;;12799:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11497:1539;;;:::o;18510:922::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;18644:42:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;18775:31;;18744:28;:62;;-1:-1:-1;;18744:62:24;18775:31;;;;-1:-1:-1;;;18744:62:24;;;;;;-1:-1:-1;;18816:76:24;18854:38;;;;;-1:-1:-1;;;18816:76:24;;;;;;-1:-1:-1;;;;18902:92:24;-1:-1:-1;;;18948:46:24;;;;;;;-1:-1:-1;;;18902:92:24;;;;;;;;;19010:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19222:31:24;:35;;-1:-1:-1;;19319:50:24;;;19256:1;19379:42;:46;18510:922::o;7861:225:0:-;7932:25;7946:10;7932:13;:25::i;:::-;7911:108;;;;-1:-1:-1;;;7911:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8034:45;;;8063:15;8034:45;;;;8051:10;;8034:45;;;;;;;;;;7861:225::o;2768:27:24:-;;;;;;;;;:::o;26640:163::-;3415:8;26640:163;:::o;14550:1188::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;14764:20:24;;14746:15;:38;3415:8;14815:45;;14794:169;;;;-1:-1:-1;;;14794:169:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15244:32:24;;15223:124;;;;-1:-1:-1;;;15223:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15358:20;:41;;-1:-1:-1;;;;;15358:41:24;;;-1:-1:-1;;;15358:41:24;;-1:-1:-1;;;;;;15358:41:24;;;;;;;;;;15409:21;:43;;;;;-1:-1:-1;;;;;;15409:43:24;;;;;;;;15462:18;:37;;;;;;;;;;;;;15540:15;15509:28;:46;;;15571:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1074:1:61;14550:1188:24;;;:::o;26443:109::-;3348:8;26443:109;:::o;1885:107:61:-;1018:9;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;1957:28;1976:8;1957:18;:28::i;:::-;1885:107;:::o;5971:375:0:-;6099:25;6113:10;6099:13;:25::i;:::-;6078:108;;;;-1:-1:-1;;;6078:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6201:138;;;;;;;;;;;;6314:15;6201:138;;;;;;6261:7;;6237:10;;6201:138;;;;;;;;;5971:375;;;:::o;1274:179:60:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:60;;;1274:179::o;29927:403:24:-;30052:7;30098:1;30079:16;:20;30071:53;;;;;-1:-1:-1;;;30071:53:24;;;;;;;;;;;;-1:-1:-1;;;30071:53:24;;;;;;;;;;;;;;;30134:15;30152:37;:15;30172:16;30152:37;:19;:37;:::i;:::-;30134:55;;30214:12;30203:7;:23;30199:125;;30249:1;30242:8;;;;;30199:125;30288:25;:12;30305:7;30288:25;:16;:25;:::i;:::-;30281:32;;;;;7182:547:20;-1:-1:-1;;;;;7388:41:20;;7367:123;;;;-1:-1:-1;;;7367:123:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7501:23;;;:69;;-1:-1:-1;;;;;7501:69:20;;;-1:-1:-1;;;;;;7501:69:20;;;;;;;7580:24;;;:71;;;;;;;;;;;;;;;7661:21;;;;:61;;;;;;;;;;;;;;7182:547::o;10695:280:0:-;10827:16;;-1:-1:-1;;;;;10827:16:0;10819:39;10798:117;;;;;-1:-1:-1;;;10798:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10925:16;:43;;-1:-1:-1;;;;;;10925:43:0;-1:-1:-1;;;;;10925:43:0;;;;;;;;;;10695:280::o;29169:307:24:-;29288:7;29311:20;29346:51;29371:25;29346:20;:18;:20::i;:::-;:24;:51;:24;:51;:::i;:::-;29431:28;;29311:86;;-1:-1:-1;29414:55:24;;29465:3;;29414:46;;29311:86;;-1:-1:-1;;;29431:28:24;;;;29414:16;:46::i;:::-;:50;:55;:50;:55;:::i;:::-;29407:62;29169:307;-1:-1:-1;;;29169:307:24:o;29482:343::-;29570:9;;;:20;;;-1:-1:-1;;;29570:20:24;;;;29535:7;;;;-1:-1:-1;;;;;29570:9:24;;:18;;:20;;;;;;;;;;;:9;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;29570:20:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29570:20:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29570:20:24;;-1:-1:-1;29604:10:24;;;:28;;;29626:6;29618:5;:14;29604:28;29600:197;;;29749:37;;;-1:-1:-1;;;29749:37:24;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:225:61;-1:-1:-1;;;;;2166:22:61;;2158:73;;;;-1:-1:-1;;;2158:73:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:6;;;2246:38;;-1:-1:-1;;;;;2246:38:61;;;;2267:6;;;2246:38;;;2294:6;:17;;-1:-1:-1;;;;;;2294:17:61;-1:-1:-1;;;;;2294:17:61;;;;;;;;;;2093:225::o;1693:458:60:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:60;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:60:o;71:475:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;71:475:26;;;;;;;;-1:-1:-1;;;;;71:475:26;;;;;-1:-1:-1;;;;;71:475:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;71:475:26;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;71:475:26;;;-1:-1:-1;71:475:26;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;71:475:26;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity 0.5.17;\n\nimport {TBTCSystem} from \"./TBTCSystem.sol\";\n\ncontract TBTCSystemTestnet is TBTCSystem {\n    constructor(address _priceFeed, address _relay)\n        public\n        TBTCSystem(_priceFeed, _relay)\n    {\n        // solium-disable-previous-line no-empty-blocks\n        lotSizesSatoshis = [\n            10**3,\n            10**4,\n            10**5,\n            10**6,\n            10**7,\n            2 * 10**7,\n            5 * 10**7,\n            10**8\n        ]; // [0.00001, 0.0001, 0.001, 0.01, 0.1, 0.2, 0.5, 1.0] BTC\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemTestnet.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemTestnet.sol",
    "exportedSymbols": {
      "TBTCSystemTestnet": [
        8450
      ]
    },
    "id": 8451,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8401,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:26"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystem.sol",
        "file": "./TBTCSystem.sol",
        "id": 8403,
        "nodeType": "ImportDirective",
        "scope": 8451,
        "sourceUnit": 8373,
        "src": "25:44:26",
        "symbolAliases": [
          {
            "foreign": 8402,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8404,
              "name": "TBTCSystem",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8372,
              "src": "101:10:26",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TBTCSystem_$8372",
                "typeString": "contract TBTCSystem"
              }
            },
            "id": 8405,
            "nodeType": "InheritanceSpecifier",
            "src": "101:10:26"
          }
        ],
        "contractDependencies": [
          439,
          5511,
          8372,
          16966
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8450,
        "linearizedBaseContracts": [
          8450,
          8372,
          439,
          5511,
          16966
        ],
        "name": "TBTCSystemTestnet",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 8448,
              "nodeType": "Block",
              "src": "224:320:26",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8416,
                      "name": "lotSizesSatoshis",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7179,
                      "src": "290:16:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint64_$dyn_storage",
                        "typeString": "uint64[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_1000_by_1",
                            "typeString": "int_const 1000"
                          },
                          "id": 8419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 8417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "323:2:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 8418,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "327:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "323:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000_by_1",
                            "typeString": "int_const 1000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_10000_by_1",
                            "typeString": "int_const 10000"
                          },
                          "id": 8422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 8420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "342:2:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 8421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "346:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "342:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10000_by_1",
                            "typeString": "int_const 10000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_100000_by_1",
                            "typeString": "int_const 100000"
                          },
                          "id": 8425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 8423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "361:2:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 8424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "365:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "src": "361:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100000_by_1",
                            "typeString": "int_const 100000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_1000000_by_1",
                            "typeString": "int_const 1000000"
                          },
                          "id": 8428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 8426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "380:2:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 8427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "384:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "380:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000_by_1",
                            "typeString": "int_const 1000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_10000000_by_1",
                            "typeString": "int_const 10000000"
                          },
                          "id": 8431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 8429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "399:2:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 8430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "403:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "src": "399:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10000000_by_1",
                            "typeString": "int_const 10000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_20000000_by_1",
                            "typeString": "int_const 20000000"
                          },
                          "id": 8436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 8432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "418:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            },
                            "id": 8435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "422:2:26",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 8434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "426:1:26",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "422:5:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            }
                          },
                          "src": "418:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_20000000_by_1",
                            "typeString": "int_const 20000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_50000000_by_1",
                            "typeString": "int_const 50000000"
                          },
                          "id": 8441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 8437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "441:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            },
                            "id": 8440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "445:2:26",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 8439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "449:1:26",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "445:5:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            }
                          },
                          "src": "441:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_50000000_by_1",
                            "typeString": "int_const 50000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_100000000_by_1",
                            "typeString": "int_const 100000000"
                          },
                          "id": 8444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 8442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "464:2:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 8443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "468:1:26",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "464:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100000000_by_1",
                            "typeString": "int_const 100000000"
                          }
                        }
                      ],
                      "id": 8445,
                      "isConstant": false,
                      "isInlineArray": true,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "309:170:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint32_$8_memory_ptr",
                        "typeString": "uint32[8] memory"
                      }
                    },
                    "src": "290:189:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint64_$dyn_storage",
                      "typeString": "uint64[] storage ref"
                    }
                  },
                  "id": 8447,
                  "nodeType": "ExpressionStatement",
                  "src": "290:189:26"
                }
              ]
            },
            "documentation": null,
            "id": 8449,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8412,
                    "name": "_priceFeed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8407,
                    "src": "200:10:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 8413,
                    "name": "_relay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8409,
                    "src": "212:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 8414,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8411,
                  "name": "TBTCSystem",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8372,
                  "src": "189:10:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_TBTCSystem_$8372_$",
                    "typeString": "type(contract TBTCSystem)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "189:30:26"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8407,
                  "name": "_priceFeed",
                  "nodeType": "VariableDeclaration",
                  "scope": 8449,
                  "src": "130:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "130:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8409,
                  "name": "_relay",
                  "nodeType": "VariableDeclaration",
                  "scope": 8449,
                  "src": "150:14:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "150:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "129:36:26"
            },
            "returnParameters": {
              "id": 8415,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "224:0:26"
            },
            "scope": 8450,
            "src": "118:426:26",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 8451,
        "src": "71:475:26"
      }
    ],
    "src": "0:547:26"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemTestnet.sol",
      "exportedSymbols": {
        "TBTCSystemTestnet": [
          8450
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 8401,
        "name": "PragmaDirective",
        "src": "0:23:26"
      },
      {
        "attributes": {
          "SourceUnit": 8373,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystem.sol",
          "file": "./TBTCSystem.sol",
          "scope": 8451,
          "symbolAliases": [
            {
              "foreign": 8402,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 8403,
        "name": "ImportDirective",
        "src": "25:44:26"
      },
      {
        "attributes": {
          "contractDependencies": [
            439,
            5511,
            8372,
            16966
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8450,
            8372,
            439,
            5511,
            16966
          ],
          "name": "TBTCSystemTestnet",
          "scope": 8451
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TBTCSystem",
                  "referencedDeclaration": 8372,
                  "type": "contract TBTCSystem"
                },
                "id": 8404,
                "name": "UserDefinedTypeName",
                "src": "101:10:26"
              }
            ],
            "id": 8405,
            "name": "InheritanceSpecifier",
            "src": "101:10:26"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 8450,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_priceFeed",
                      "scope": 8449,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8406,
                        "name": "ElementaryTypeName",
                        "src": "130:7:26"
                      }
                    ],
                    "id": 8407,
                    "name": "VariableDeclaration",
                    "src": "130:18:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_relay",
                      "scope": 8449,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8408,
                        "name": "ElementaryTypeName",
                        "src": "150:7:26"
                      }
                    ],
                    "id": 8409,
                    "name": "VariableDeclaration",
                    "src": "150:14:26"
                  }
                ],
                "id": 8410,
                "name": "ParameterList",
                "src": "129:36:26"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8415,
                "name": "ParameterList",
                "src": "224:0:26"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8372,
                      "type": "type(contract TBTCSystem)",
                      "value": "TBTCSystem"
                    },
                    "id": 8411,
                    "name": "Identifier",
                    "src": "189:10:26"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8407,
                      "type": "address",
                      "value": "_priceFeed"
                    },
                    "id": 8412,
                    "name": "Identifier",
                    "src": "200:10:26"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8409,
                      "type": "address",
                      "value": "_relay"
                    },
                    "id": 8413,
                    "name": "Identifier",
                    "src": "212:6:26"
                  }
                ],
                "id": 8414,
                "name": "ModifierInvocation",
                "src": "189:30:26"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64[] storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7179,
                              "type": "uint64[] storage ref",
                              "value": "lotSizesSatoshis"
                            },
                            "id": 8416,
                            "name": "Identifier",
                            "src": "290:16:26"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": true,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "uint32[8] memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 1000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 8417,
                                    "name": "Literal",
                                    "src": "323:2:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "33",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 3",
                                      "value": "3"
                                    },
                                    "id": 8418,
                                    "name": "Literal",
                                    "src": "327:1:26"
                                  }
                                ],
                                "id": 8419,
                                "name": "BinaryOperation",
                                "src": "323:5:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_10000_by_1",
                                    "typeString": "int_const 10000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 10000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 8420,
                                    "name": "Literal",
                                    "src": "342:2:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 8421,
                                    "name": "Literal",
                                    "src": "346:1:26"
                                  }
                                ],
                                "id": 8422,
                                "name": "BinaryOperation",
                                "src": "342:5:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000_by_1",
                                    "typeString": "int_const 100000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 100000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 8423,
                                    "name": "Literal",
                                    "src": "361:2:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "35",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 5",
                                      "value": "5"
                                    },
                                    "id": 8424,
                                    "name": "Literal",
                                    "src": "365:1:26"
                                  }
                                ],
                                "id": 8425,
                                "name": "BinaryOperation",
                                "src": "361:5:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000_by_1",
                                    "typeString": "int_const 1000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 1000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 8426,
                                    "name": "Literal",
                                    "src": "380:2:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "36",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 6",
                                      "value": "6"
                                    },
                                    "id": 8427,
                                    "name": "Literal",
                                    "src": "384:1:26"
                                  }
                                ],
                                "id": 8428,
                                "name": "BinaryOperation",
                                "src": "380:5:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_10000000_by_1",
                                    "typeString": "int_const 10000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 10000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 8429,
                                    "name": "Literal",
                                    "src": "399:2:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "37",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 7",
                                      "value": "7"
                                    },
                                    "id": 8430,
                                    "name": "Literal",
                                    "src": "403:1:26"
                                  }
                                ],
                                "id": 8431,
                                "name": "BinaryOperation",
                                "src": "399:5:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_20000000_by_1",
                                    "typeString": "int_const 20000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 20000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 8432,
                                    "name": "Literal",
                                    "src": "418:1:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000_by_1",
                                        "typeString": "int_const 10000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 10000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8433,
                                        "name": "Literal",
                                        "src": "422:2:26"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "37",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 7",
                                          "value": "7"
                                        },
                                        "id": 8434,
                                        "name": "Literal",
                                        "src": "426:1:26"
                                      }
                                    ],
                                    "id": 8435,
                                    "name": "BinaryOperation",
                                    "src": "422:5:26"
                                  }
                                ],
                                "id": 8436,
                                "name": "BinaryOperation",
                                "src": "418:9:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_50000000_by_1",
                                    "typeString": "int_const 50000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 50000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "35",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 5",
                                      "value": "5"
                                    },
                                    "id": 8437,
                                    "name": "Literal",
                                    "src": "441:1:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000_by_1",
                                        "typeString": "int_const 10000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 10000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8438,
                                        "name": "Literal",
                                        "src": "445:2:26"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "37",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 7",
                                          "value": "7"
                                        },
                                        "id": 8439,
                                        "name": "Literal",
                                        "src": "449:1:26"
                                      }
                                    ],
                                    "id": 8440,
                                    "name": "BinaryOperation",
                                    "src": "445:5:26"
                                  }
                                ],
                                "id": 8441,
                                "name": "BinaryOperation",
                                "src": "441:9:26"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000_by_1",
                                    "typeString": "int_const 100000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 100000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 8442,
                                    "name": "Literal",
                                    "src": "464:2:26"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 8443,
                                    "name": "Literal",
                                    "src": "468:1:26"
                                  }
                                ],
                                "id": 8444,
                                "name": "BinaryOperation",
                                "src": "464:5:26"
                              }
                            ],
                            "id": 8445,
                            "name": "TupleExpression",
                            "src": "309:170:26"
                          }
                        ],
                        "id": 8446,
                        "name": "Assignment",
                        "src": "290:189:26"
                      }
                    ],
                    "id": 8447,
                    "name": "ExpressionStatement",
                    "src": "290:189:26"
                  }
                ],
                "id": 8448,
                "name": "Block",
                "src": "224:320:26"
              }
            ],
            "id": 8449,
            "name": "FunctionDefinition",
            "src": "118:426:26"
          }
        ],
        "id": 8450,
        "name": "ContractDefinition",
        "src": "71:475:26"
      }
    ],
    "id": 8451,
    "name": "SourceUnit",
    "src": "0:547:26"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T11:52:09.321Z",
  "devdoc": {
    "methods": {
      "approvedToLog(address)": {
        "details": "checks tbtcDepositToken to see if the caller represents                     an existing deposit.                     We don't require this, so deposits are not bricked if the system borks.",
        "params": {
          "_caller": "The address of the calling contract."
        },
        "return": "True if approved, otherwise false."
      },
      "beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)": {
        "details": "This can be finalized by calling `finalizeCollateralizationThresholdsUpdate`         Anytime after `governanceTimeDelay` has elapsed.",
        "params": {
          "_initialCollateralizedPercent": "default signing bond percent for new deposits",
          "_severelyUndercollateralizedThresholdPercent": "second undercollateralization trigger",
          "_undercollateralizedThresholdPercent": "first undercollateralization trigger"
        }
      },
      "beginEthBtcPriceFeedAddition(address)": {
        "details": "This can be finalized by calling `finalizeEthBtcPriceFeedAddition`      anytime after `priceFeedGovernanceTimeDelay` has elapsed."
      },
      "beginKeepFactoriesUpdate(address,address,address)": {
        "details": "It can be finalized by calling `finalizeKeepFactoriesUpdate`      any time after `governanceTimeDelay` has elapsed. This can be      called more than once until finalized to reset the values and      timer. An update can only be initialized before      `keepFactoriesUpgradeabilityPeriod` elapses after system initialization;      after that, no further updates can be initialized, though any pending      update can be finalized. All calls must set all three properties to      their desired value; leaving a value as 0, even if it was previously      set, will update that value to be 0. ETH-bond-only factory or the      strategy are allowed to be set as zero addresses.",
        "params": {
          "_factorySelector": "Address of the keep factory selection strategy.",
          "_fullyBackedFactory": "Address of the ETH-bond-only-based factory.",
          "_keepStakedFactory": "Address of the KEEP staked based factory."
        }
      },
      "beginLotSizesUpdate(uint64[])": {
        "details": "Lot size array should always contain 10**8 satoshis (1 BTC) and         cannot contain values less than 50000 satoshis (0.0005 BTC) or         greater than 10**10 satoshis (100 BTC). Lot size array must not         have duplicates and it must be sorted.         This can be finalized by calling `finalizeLotSizesUpdate`         anytime after `governanceTimeDelay` has elapsed.",
        "params": {
          "_lotSizes": "Array of allowed lot sizes."
        }
      },
      "beginSignerFeeDivisorUpdate(uint16)": {
        "details": "This can be finalized by calling `finalizeSignerFeeDivisorUpdate`         Anytime after `governanceTimeDelay` has elapsed.",
        "params": {
          "_signerFeeDivisor": "The signer fee divisor."
        }
      },
      "fetchBitcoinPrice()": {
        "details": "Reverts if the price of one satoshi is 0 wei, or if the price of      one satoshi is 1 ether. Can only be called by a deposit with minted      TDT.",
        "return": "The price of one satoshi in wei."
      },
      "finalizeCollateralizationThresholdsUpdate()": {
        "details": "`beginCollateralizationThresholdsUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the collateralization thresholds to the       value set in `beginCollateralizationThresholdsUpdate`"
      },
      "finalizeEthBtcPriceFeedAddition()": {
        "details": "`beginEthBtcPriceFeedAddition` must be called first; once      `ethBtcPriceFeedAdditionInitiated` has passed, this function can be      called to append a new price feed."
      },
      "finalizeKeepFactoriesUpdate()": {
        "details": "`beginKeepFactoriesUpdate` must be called first; once      `governanceTimeDelay` has passed, this function can be called to      set factories addresses to the values set in `beginKeepFactoriesUpdate`."
      },
      "finalizeLotSizesUpdate()": {
        "details": "`beginLotSizesUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the lot sizes to the       value set in `beginLotSizesUpdate`"
      },
      "finalizeSignerFeeDivisorUpdate()": {
        "details": "`beginSignerFeeDivisorUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the signer fee divisor to the       value set in `beginSignerFeeDivisorUpdate`"
      },
      "getAllowNewDeposits()": {
        "return": "True if new deposits should be allowed by the emergency pause button"
      },
      "getAllowedLotSizes()": {
        "return": "Uint64 array of allowed lot sizes"
      },
      "getMaximumLotSize()": {
        "return": "The largest lot size, in satoshis."
      },
      "getMinimumLotSize()": {
        "return": "The lowest lot size, in satoshis."
      },
      "getNewDepositFeeEstimate()": {
        "return": "Uint256 estimate."
      },
      "getSignerFeeDivisor()": {
        "return": "The signer fee divisor."
      },
      "initialize(address,address,address,address,address,address,address,uint16,uint16)": {
        "details": "Only the Deposit factory should call this, and only once.",
        "params": {
          "_defaultKeepFactory": "ECDSA keep factory backed by KEEP stake.",
          "_depositFactory": "Deposit Factory. More info in `DepositFactory`.",
          "_feeRebateToken": "FeeRebateToken (FRT). More info in `FeeRebateToken`.",
          "_keepSize": "Signing group size.",
          "_keepThreshold": "Signing group honesty threshold.",
          "_masterDepositAddress": "Master Deposit address. More info in `Deposit`.",
          "_tbtcDepositToken": "TBTCDepositToken (TDT). More info in `TBTCDepositToken`.",
          "_tbtcToken": "TBTCToken. More info in `TBTCToken`."
        }
      },
      "isAllowedLotSize(uint64)": {
        "params": {
          "_requestedLotSizeSatoshis": "Lot size to check."
        },
        "return": "True if lot size is allowed, false otherwise."
      },
      "isOwner()": {
        "details": "Returns true if the caller is the current owner."
      },
      "logCourtesyCalled()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logCreated(address)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_keepAddress": "The address of the associated keep."
        },
        "return": "True if successful, else revert."
      },
      "logExitedCourtesyCall()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFraudDuringSetup()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFunded(bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFunderRequestedAbort(bytes)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logGotRedemptionSignature(bytes32,bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_digest": "signed digest.",
          "_r": "signature r value.",
          "_s": "signature s value."
        }
      },
      "logLiquidated()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logRedeemed(bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)": {
        "details": "This is the only event without an explicit timestamp.",
        "params": {
          "_digest": "The calculated sighash digest.",
          "_outpoint": "The 36 byte outpoint.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output script.",
          "_requestedFee": "The requester or bump-system specified fee.",
          "_requester": "The ethereum address of the requester.",
          "_utxoValue": "The size of the utxo in sat."
        },
        "return": "True if successful, else revert."
      },
      "logRegisteredPubkey(bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logSetupFailed()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logStartedLiquidation(bool)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_wasFraud": "True if liquidating for fraud."
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "refreshMinimumBondableValue()": {
        "details": "It is recommended to call this function on tBTC initialization and after minimum lot size update."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "requestNewKeep(uint64,uint256)": {
        "params": {
          "_maxSecuredLifetime": "Duration of stake lock in seconds.",
          "_requestedLotSizeSatoshis": "Lot size in satoshis."
        },
        "return": "Address of a new keep."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "userdoc": {
    "methods": {
      "approvedToLog(address)": {
        "notice": "Checks if an address is an allowed logger."
      },
      "beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)": {
        "notice": "Set the system collateralization levels"
      },
      "beginEthBtcPriceFeedAddition(address)": {
        "notice": "Add a new ETH/BTC price feed contract to the priecFeed."
      },
      "beginKeepFactoriesUpdate(address,address,address)": {
        "notice": "Sets the addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory and the selection strategy         that will choose between the two factories for new deposits.         When the ETH-only-backed factory and strategy are not set TBTCSystem         will use KEEP-staked factory. When both factories and strategy         are set, TBTCSystem load balances between two factories based on         the selection strategy."
      },
      "beginLotSizesUpdate(uint64[])": {
        "notice": "Set the allowed deposit lot sizes."
      },
      "beginSignerFeeDivisorUpdate(uint16)": {
        "notice": "Set the system signer fee divisor."
      },
      "emergencyPauseNewDeposits()": {
        "notice": "One-time-use emergency function to disallow future deposit creation for 10 days."
      },
      "fetchBitcoinPrice()": {
        "notice": "Get the price of one satoshi in wei."
      },
      "finalizeCollateralizationThresholdsUpdate()": {
        "notice": "Finish setting the system collateralization levels"
      },
      "finalizeEthBtcPriceFeedAddition()": {
        "notice": "Finish adding a new price feed contract to the priceFeed."
      },
      "finalizeKeepFactoriesUpdate()": {
        "notice": "Finish setting addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory, and the selection strategy         that will choose between the two factories for new deposits."
      },
      "finalizeLotSizesUpdate()": {
        "notice": "Finish setting the accepted system lot sizes."
      },
      "finalizeSignerFeeDivisorUpdate()": {
        "notice": "Finish setting the system signer fee divisor."
      },
      "getAllowNewDeposits()": {
        "notice": "Returns whether new deposits should be allowed."
      },
      "getAllowedLotSizes()": {
        "notice": "Gets the allowed lot sizes"
      },
      "getGovernanceTimeDelay()": {
        "notice": "Returns the time delay used for governance actions except for         price feed additions."
      },
      "getInitialCollateralizedPercent()": {
        "notice": "Get the system initial collateralized level for new deposits."
      },
      "getKeepFactoriesUpgradeabilityPeriod()": {
        "notice": "Returns the time period when keep factories upgrades are allowed."
      },
      "getMaximumLotSize()": {
        "notice": "Return the largest lot size currently enabled for deposits."
      },
      "getMinimumLotSize()": {
        "notice": "Return the lowest lot size currently enabled for deposits."
      },
      "getNewDepositFeeEstimate()": {
        "notice": "Gets a fee estimate for creating a new Deposit."
      },
      "getPriceFeedGovernanceTimeDelay()": {
        "notice": "Returns the time delay used for price feed addition governance         actions."
      },
      "getRemainingCollateralizationThresholdsUpdateTime()": {
        "notice": "Get the time remaining until the collateralization thresholds can be updated."
      },
      "getRemainingEthBtcPriceFeedAdditionTime()": {
        "notice": "Get the time remaining until the signer fee divisor can be updated."
      },
      "getRemainingKeepFactoriesUpdateTime()": {
        "notice": "Get the time remaining until the Keep ETH-only-backed ECDSA keep         factory and the selection strategy that will choose between it         and the KEEP-backed factory can be updated."
      },
      "getRemainingKeepFactoriesUpgradeabilityTime()": {
        "notice": "Get the time remaining until Keep factories can no longer be updated."
      },
      "getRemainingLotSizesUpdateTime()": {
        "notice": "Get the time remaining until the lot sizes can be updated."
      },
      "getRemainingSignerFeeDivisorUpdateTime()": {
        "notice": "Get the time remaining until the signer fee divisor can be updated."
      },
      "getSeverelyUndercollateralizedThresholdPercent()": {
        "notice": "Get the system severe undercollateralization level for new deposits"
      },
      "getSignerFeeDivisor()": {
        "notice": "Gets the system signer fee divisor."
      },
      "getUndercollateralizedThresholdPercent()": {
        "notice": "Get the system undercollateralization level for new deposits"
      },
      "initialize(address,address,address,address,address,address,address,uint16,uint16)": {
        "notice": "Initialize contracts"
      },
      "isAllowedLotSize(uint64)": {
        "notice": "Check if a lot size is allowed."
      },
      "logCourtesyCalled()": {
        "notice": "Fires a CourtesyCalled event."
      },
      "logCreated(address)": {
        "notice": "Fires a Created event."
      },
      "logExitedCourtesyCall()": {
        "notice": "Fires a ExitedCourtesyCall event"
      },
      "logFraudDuringSetup()": {
        "notice": "Fires a FraudDuringSetup event."
      },
      "logFunded(bytes32)": {
        "notice": "Fires a Funded event."
      },
      "logFunderRequestedAbort(bytes)": {
        "notice": "Fires a FunderAbortRequested event."
      },
      "logGotRedemptionSignature(bytes32,bytes32,bytes32)": {
        "notice": "Fires a GotRedemptionSignature event."
      },
      "logLiquidated()": {
        "notice": "Fires a Liquidated event"
      },
      "logRedeemed(bytes32)": {
        "notice": "Fires a Redeemed event"
      },
      "logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)": {
        "notice": "Fires a RedemptionRequested event."
      },
      "logRegisteredPubkey(bytes32,bytes32)": {
        "notice": "Fires a RegisteredPubkey event."
      },
      "logSetupFailed()": {
        "notice": "Fires a SetupFailed event."
      },
      "logStartedLiquidation(bool)": {
        "notice": "Fires a StartedLiquidation event."
      },
      "refreshMinimumBondableValue()": {
        "notice": "Refreshes the minimum bondable value required from the operator to join the sortition pool for tBTC. The minimum bondable value is equal to the current minimum lot size collateralized 150% multiplied by the current BTC price."
      },
      "requestNewKeep(uint64,uint256)": {
        "notice": "Request a new keep opening."
      },
      "resumeNewDeposits()": {
        "notice": "Anyone can reactivate deposit creations after the pause duration is over."
      }
    }
  }
}