ETH Price: $3,578.26 (-0.19%)
Gas: 34 Gwei

Contract

0xcEe6Aa1aB47d0Fb0f24f51A3072EC16E20F90fcE
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Auction Surplus174244412023-06-06 22:44:23295 days ago1686091463IN
Reflexer: Accounting Engine
0 ETH0.0035162519.49878593
Settle Debt164122012023-01-15 12:27:59437 days ago1673785679IN
Reflexer: Accounting Engine
0 ETH0.0009916119.34246553
Pop Debt From Qu...164122012023-01-15 12:27:59437 days ago1673785679IN
Reflexer: Accounting Engine
0 ETH0.0009420119.34246553
Auction Surplus156784862022-10-05 0:58:59540 days ago1664931539IN
Reflexer: Accounting Engine
0 ETH0.001572018.71731308
Settle Debt153982412022-08-23 18:27:49582 days ago1661279269IN
Reflexer: Accounting Engine
0 ETH0.0007769715.15570126
Pop Debt From Qu...153982412022-08-23 18:27:49582 days ago1661279269IN
Reflexer: Accounting Engine
0 ETH0.0007381115.15570126
Settle Debt153739082022-08-19 22:27:38586 days ago1660948058IN
Reflexer: Accounting Engine
0 ETH0.0011845519.4616688
Pop Debt From Qu...153739082022-08-19 22:27:38586 days ago1660948058IN
Reflexer: Accounting Engine
0 ETH0.0010412319.4616688
Settle Debt150439312022-06-29 7:39:53638 days ago1656488393IN
Reflexer: Accounting Engine
0 ETH0.001705633.26972886
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0014539329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Pop Debt From Qu...150439302022-06-29 7:38:34638 days ago1656488314IN
Reflexer: Accounting Engine
0 ETH0.0015972329.85371204
Settle Debt150104232022-06-23 0:58:07644 days ago1655945887IN
Reflexer: Accounting Engine
0 ETH0.0022815637.49238124
Pop Debt From Qu...150104232022-06-23 0:58:07644 days ago1655945887IN
Reflexer: Accounting Engine
0 ETH0.0020059137.49238124
Settle Debt149908992022-06-19 12:58:01647 days ago1655643481IN
Reflexer: Accounting Engine
0 ETH0.0014372123.61743864
Pop Debt From Qu...149908992022-06-19 12:58:01647 days ago1655643481IN
Reflexer: Accounting Engine
0 ETH0.0012635823.61743864
Pop Debt From Qu...149908992022-06-19 12:58:01647 days ago1655643481IN
Reflexer: Accounting Engine
0 ETH0.0012635823.61743864
Settle Debt149853462022-06-18 13:57:25648 days ago1655560645IN
Reflexer: Accounting Engine
0 ETH0.0012182920.02001176
Pop Debt From Qu...149853462022-06-18 13:57:25648 days ago1655560645IN
Reflexer: Accounting Engine
0 ETH0.0010711120.02001176
Settle Debt149845862022-06-18 10:57:56649 days ago1655549876IN
Reflexer: Accounting Engine
0 ETH0.0013640122.41451939
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Txn Hash Block From To Value
118484372021-02-13 13:05:311138 days ago1613221531  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AccountingEngine

Compiler Version
v0.6.7+commit.b8d736ae

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-14
*/

/**
 *Submitted for verification at Etherscan.io on 2021-02-02
*/

/// AccountingEngine.sol

// Copyright (C) 2018 Rain <[email protected]>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity 0.6.7;

abstract contract DebtAuctionHouseLike {
    function startAuction(address incomeReceiver, uint256 amountToSell, uint256 initialBid) virtual public returns (uint256);
    function protocolToken() virtual public view returns (address);
    function disableContract() virtual external;
    function contractEnabled() virtual public view returns (uint256);
}

abstract contract SurplusAuctionHouseLike {
    function startAuction(uint256, uint256) virtual public returns (uint256);
    function protocolToken() virtual public view returns (address);
    function disableContract() virtual external;
    function contractEnabled() virtual public view returns (uint256);
}

abstract contract SAFEEngineLike {
    function coinBalance(address) virtual public view returns (uint256);
    function debtBalance(address) virtual public view returns (uint256);
    function settleDebt(uint256) virtual external;
    function transferInternalCoins(address,address,uint256) virtual external;
    function approveSAFEModification(address) virtual external;
    function denySAFEModification(address) virtual external;
}

abstract contract SystemStakingPoolLike {
    function canPrintProtocolTokens() virtual public view returns (bool);
}

abstract contract ProtocolTokenAuthorityLike {
    function authorizedAccounts(address) virtual public view returns (uint256);
}

contract AccountingEngine {
    // --- Auth ---
    mapping (address => uint256) public authorizedAccounts;
    /**
     * @notice Add auth to an account
     * @param account Account to add auth to
     */
    function addAuthorization(address account) external isAuthorized {
        require(contractEnabled == 1, "AccountingEngine/contract-not-enabled");
        authorizedAccounts[account] = 1;
        emit AddAuthorization(account);
    }
    /**
     * @notice Remove auth from an account
     * @param account Account to remove auth from
     */
    function removeAuthorization(address account) external isAuthorized {
        authorizedAccounts[account] = 0;
        emit RemoveAuthorization(account);
    }
    /**
    * @notice Checks whether msg.sender can call an authed function
    **/
    modifier isAuthorized {
        require(authorizedAccounts[msg.sender] == 1, "AccountingEngine/account-not-authorized");
        _;
    }

    // --- Data ---
    // SAFE database
    SAFEEngineLike             public safeEngine;
    // Contract that handles auctions for surplus stability fees (sell coins for protocol tokens that are then burned)
    SurplusAuctionHouseLike    public surplusAuctionHouse;
    /**
      Contract that handles auctions for debt that couldn't be covered by collateral
      auctions (it prints protocol tokens in exchange for coins that will settle the debt)
    **/
    DebtAuctionHouseLike       public debtAuctionHouse;
    // Permissions registry for who can burn and mint protocol tokens
    ProtocolTokenAuthorityLike public protocolTokenAuthority;
    // Staking pool for protocol tokens
    SystemStakingPoolLike      public systemStakingPool;
    // Contract that auctions extra surplus after settlement is triggered
    address                    public postSettlementSurplusDrain;
    // Address that receives extra surplus transfers
    address                    public extraSurplusReceiver;

    /**
      Debt blocks that need to be covered by auctions. There is a delay to pop debt from
      this queue and either settle it with surplus that came from collateral auctions or with debt auctions
      that print protocol tokens
    **/
    mapping (uint256 => uint256) public debtQueue;          // [unix timestamp => rad]
    // Addresses that popped debt out of the queue
    mapping (uint256 => address) public debtPoppers;        // [unix timestamp => address]
    // Total debt in the queue (that the system tries to cover with collateral auctions)
    uint256 public totalQueuedDebt;                         // [rad]
    // Total debt being auctioned in DebtAuctionHouse (printing protocol tokens for coins that will settle the debt)
    uint256 public totalOnAuctionDebt;                      // [rad]
    // When the last surplus auction was triggered
    uint256 public lastSurplusAuctionTime;                  // [unix timestamp]
    // When the last surplus transfer was triggered
    uint256 public lastSurplusTransferTime;                 // [unix timestamp]
    // Delay between surplus auctions
    uint256 public surplusAuctionDelay;                     // [seconds]
    // Delay between extra surplus transfers
    uint256 public surplusTransferDelay;                    // [seconds]
    // Delay after which debt can be popped from debtQueue
    uint256 public popDebtDelay;                            // [seconds]
    // Amount of protocol tokens to be minted post-auction
    uint256 public initialDebtAuctionMintedTokens;          // [wad]
    // Amount of debt sold in one debt auction (initial coin bid for initialDebtAuctionMintedTokens protocol tokens)
    uint256 public debtAuctionBidSize;                      // [rad]

    // Whether the system transfers surplus instead of auctioning it
    uint256 public extraSurplusIsTransferred;
    // Amount of surplus stability fees sold in one surplus auction
    uint256 public surplusAuctionAmountToSell;              // [rad]
    // Amount of extra surplus to transfer
    uint256 public surplusTransferAmount;                   // [rad]
    // Amount of stability fees that need to accrue in this contract before any surplus auction can start
    uint256 public surplusBuffer;                           // [rad]

    // Time to wait (post settlement) until any remaining surplus can be transferred to the settlement auctioneer
    uint256 public disableCooldown;                         // [seconds]
    // When the contract was disabled
    uint256 public disableTimestamp;                        // [unix timestamp]

    // Whether this contract is enabled or not
    uint256 public contractEnabled;

    // --- Events ---
    event AddAuthorization(address account);
    event RemoveAuthorization(address account);
    event ModifyParameters(bytes32 indexed parameter, uint256 data);
    event ModifyParameters(bytes32 indexed parameter, address data);
    event PushDebtToQueue(uint256 indexed timestamp, uint256 debtQueueBlock, uint256 totalQueuedDebt);
    event PopDebtFromQueue(uint256 indexed timestamp, uint256 debtQueueBlock, uint256 totalQueuedDebt);
    event SettleDebt(uint256 rad, uint256 coinBalance, uint256 debtBalance);
    event CancelAuctionedDebtWithSurplus(uint rad, uint256 totalOnAuctionDebt, uint256 coinBalance, uint256 debtBalance);
    event AuctionDebt(uint256 indexed id, uint256 totalOnAuctionDebt, uint256 debtBalance);
    event AuctionSurplus(uint256 indexed id, uint256 lastSurplusAuctionTime, uint256 coinBalance);
    event DisableContract(uint256 disableTimestamp, uint256 disableCooldown, uint256 coinBalance, uint256 debtBalance);
    event TransferPostSettlementSurplus(address postSettlementSurplusDrain, uint256 coinBalance, uint256 debtBalance);
    event TransferExtraSurplus(address indexed extraSurplusReceiver, uint256 lastSurplusAuctionTime, uint256 coinBalance);

    // --- Init ---
    constructor(
      address safeEngine_,
      address surplusAuctionHouse_,
      address debtAuctionHouse_
    ) public {
        authorizedAccounts[msg.sender] = 1;
        safeEngine = SAFEEngineLike(safeEngine_);
        surplusAuctionHouse = SurplusAuctionHouseLike(surplusAuctionHouse_);
        debtAuctionHouse = DebtAuctionHouseLike(debtAuctionHouse_);
        safeEngine.approveSAFEModification(surplusAuctionHouse_);
        lastSurplusAuctionTime  = now;
        lastSurplusTransferTime = now;
        contractEnabled = 1;
        emit AddAuthorization(msg.sender);
    }

    // --- Math ---
    function addition(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "AccountingEngine/add-overflow");
    }
    function subtract(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "AccountingEngine/sub-underflow");
    }
    function minimum(uint256 x, uint256 y) internal pure returns (uint256 z) {
        return x <= y ? x : y;
    }

    // --- Administration ---
    /**
     * @notice Modify general uint256 params for auctions
     * @param parameter The name of the parameter modified
     * @param data New value for the parameter
     */
    function modifyParameters(bytes32 parameter, uint256 data) external isAuthorized {
        if (parameter == "surplusAuctionDelay") surplusAuctionDelay = data;
        else if (parameter == "surplusTransferDelay") surplusTransferDelay = data;
        else if (parameter == "popDebtDelay") popDebtDelay = data;
        else if (parameter == "surplusAuctionAmountToSell") surplusAuctionAmountToSell = data;
        else if (parameter == "surplusTransferAmount") surplusTransferAmount = data;
        else if (parameter == "extraSurplusIsTransferred") extraSurplusIsTransferred = data;
        else if (parameter == "debtAuctionBidSize") debtAuctionBidSize = data;
        else if (parameter == "initialDebtAuctionMintedTokens") initialDebtAuctionMintedTokens = data;
        else if (parameter == "surplusBuffer") surplusBuffer = data;
        else if (parameter == "lastSurplusTransferTime") {
          require(data > now, "AccountingEngine/invalid-lastSurplusTransferTime");
          lastSurplusTransferTime = data;
        }
        else if (parameter == "lastSurplusAuctionTime") {
          require(data > now, "AccountingEngine/invalid-lastSurplusAuctionTime");
          lastSurplusAuctionTime = data;
        }
        else if (parameter == "disableCooldown") disableCooldown = data;
        else revert("AccountingEngine/modify-unrecognized-param");
        emit ModifyParameters(parameter, data);
    }
    /**
     * @notice Modify dependency addresses
     * @param parameter The name of the auction type we want to change the address for
     * @param data New address for the auction
     */
    function modifyParameters(bytes32 parameter, address data) external isAuthorized {
        if (parameter == "surplusAuctionHouse") {
            safeEngine.denySAFEModification(address(surplusAuctionHouse));
            surplusAuctionHouse = SurplusAuctionHouseLike(data);
            safeEngine.approveSAFEModification(data);
        }
        else if (parameter == "systemStakingPool") {
            systemStakingPool = SystemStakingPoolLike(data);
            systemStakingPool.canPrintProtocolTokens();
        }
        else if (parameter == "debtAuctionHouse") debtAuctionHouse = DebtAuctionHouseLike(data);
        else if (parameter == "postSettlementSurplusDrain") postSettlementSurplusDrain = data;
        else if (parameter == "protocolTokenAuthority") protocolTokenAuthority = ProtocolTokenAuthorityLike(data);
        else if (parameter == "extraSurplusReceiver") extraSurplusReceiver = data;
        else revert("AccountingEngine/modify-unrecognized-param");
        emit ModifyParameters(parameter, data);
    }

    // --- Getters ---
    function unqueuedUnauctionedDebt() public view returns (uint256) {
        return subtract(subtract(safeEngine.debtBalance(address(this)), totalQueuedDebt), totalOnAuctionDebt);
    }
    function canPrintProtocolTokens() public view returns (bool) {
        if (address(systemStakingPool) == address(0)) return true;
        try systemStakingPool.canPrintProtocolTokens() returns (bool ok) {
          return ok;
        } catch(bytes memory) {
          return true;
        }
    }

    // --- Debt Queueing ---
    /**
     * @notice Push debt (that the system tries to cover with collateral auctions) to a queue
     * @dev Debt is locked in a queue to give the system enough time to auction collateral
     *      and gather surplus
     * @param debtBlock Amount of debt to push
     */
    function pushDebtToQueue(uint256 debtBlock) external isAuthorized {
        debtQueue[now] = addition(debtQueue[now], debtBlock);
        totalQueuedDebt = addition(totalQueuedDebt, debtBlock);
        emit PushDebtToQueue(now, debtQueue[now], totalQueuedDebt);
    }
    /**
     * @notice A block of debt can be popped from the queue after popDebtDelay seconds passed since it was
     *         added there
     * @param debtBlockTimestamp Timestamp of the block of debt that should be popped out
     */
    function popDebtFromQueue(uint256 debtBlockTimestamp) external {
        require(addition(debtBlockTimestamp, popDebtDelay) <= now, "AccountingEngine/pop-debt-delay-not-passed");
        require(debtQueue[debtBlockTimestamp] > 0, "AccountingEngine/null-debt-block");
        totalQueuedDebt = subtract(totalQueuedDebt, debtQueue[debtBlockTimestamp]);
        debtPoppers[debtBlockTimestamp] = msg.sender;
        emit PopDebtFromQueue(now, debtQueue[debtBlockTimestamp], totalQueuedDebt);
        debtQueue[debtBlockTimestamp] = 0;
    }

    // Debt settlement
    /**
     * @notice Destroy an equal amount of coins and debt
     * @dev We can only destroy debt that is not locked in the queue and also not in a debt auction
     * @param rad Amount of coins/debt to destroy (number with 45 decimals)
    **/
    function settleDebt(uint256 rad) public {
        require(rad <= safeEngine.coinBalance(address(this)), "AccountingEngine/insufficient-surplus");
        require(rad <= unqueuedUnauctionedDebt(), "AccountingEngine/insufficient-debt");
        safeEngine.settleDebt(rad);
        emit SettleDebt(rad, safeEngine.coinBalance(address(this)), safeEngine.debtBalance(address(this)));
    }
    /**
     * @notice Use surplus coins to destroy debt that is/was in a debt auction
     * @param rad Amount of coins/debt to destroy (number with 45 decimals)
    **/
    function cancelAuctionedDebtWithSurplus(uint256 rad) external {
        require(rad <= totalOnAuctionDebt, "AccountingEngine/not-enough-debt-being-auctioned");
        require(rad <= safeEngine.coinBalance(address(this)), "AccountingEngine/insufficient-surplus");
        totalOnAuctionDebt = subtract(totalOnAuctionDebt, rad);
        safeEngine.settleDebt(rad);
        emit CancelAuctionedDebtWithSurplus(rad, totalOnAuctionDebt, safeEngine.coinBalance(address(this)), safeEngine.debtBalance(address(this)));
    }

    // Debt auction
    /**
     * @notice Start a debt auction (print protocol tokens in exchange for coins so that the
     *         system can accumulate surplus)
     * @dev We can only auction debt that is not already being auctioned and is not locked in the debt queue
    **/
    function auctionDebt() external returns (uint256 id) {
        require(debtAuctionBidSize <= unqueuedUnauctionedDebt(), "AccountingEngine/insufficient-debt");
        settleDebt(safeEngine.coinBalance(address(this)));
        require(safeEngine.coinBalance(address(this)) == 0, "AccountingEngine/surplus-not-zero");
        require(debtAuctionHouse.protocolToken() != address(0), "AccountingEngine/debt-auction-house-null-prot");
        require(protocolTokenAuthority.authorizedAccounts(address(debtAuctionHouse)) == 1, "AccountingEngine/debt-auction-house-cannot-print-prot");
        require(canPrintProtocolTokens(), "AccountingEngine/staking-pool-denies-printing");
        totalOnAuctionDebt = addition(totalOnAuctionDebt, debtAuctionBidSize);
        id = debtAuctionHouse.startAuction(address(this), initialDebtAuctionMintedTokens, debtAuctionBidSize);
        emit AuctionDebt(id, totalOnAuctionDebt, safeEngine.debtBalance(address(this)));
    }

    // Surplus auction
    /**
     * @notice Start a surplus auction
     * @dev We can only auction surplus if we wait at least 'surplusAuctionDelay' seconds since the last
     *      auction trigger, if we keep enough surplus in the buffer and if there is no bad debt left to settle
    **/
    function auctionSurplus() external returns (uint256 id) {
        require(extraSurplusIsTransferred != 1, "AccountingEngine/surplus-transfer-no-auction");
        require(surplusAuctionAmountToSell > 0, "AccountingEngine/null-amount-to-auction");
        settleDebt(unqueuedUnauctionedDebt());
        require(
          now >= addition(lastSurplusAuctionTime, surplusAuctionDelay),
          "AccountingEngine/surplus-auction-delay-not-passed"
        );
        require(
          safeEngine.coinBalance(address(this)) >=
          addition(addition(safeEngine.debtBalance(address(this)), surplusAuctionAmountToSell), surplusBuffer),
          "AccountingEngine/insufficient-surplus"
        );
        require(
          unqueuedUnauctionedDebt() == 0,
          "AccountingEngine/debt-not-zero"
        );
        require(surplusAuctionHouse.protocolToken() != address(0), "AccountingEngine/surplus-auction-house-null-prot");
        lastSurplusAuctionTime  = now;
        lastSurplusTransferTime = now;
        id = surplusAuctionHouse.startAuction(surplusAuctionAmountToSell, 0);
        emit AuctionSurplus(id, lastSurplusAuctionTime, safeEngine.coinBalance(address(this)));
    }

    // Extra surplus transfers/surplus auction alternative
    /**
     * @notice Send surplus to an address as an alternative to auctions
     * @dev We can only transfer surplus if we wait at least 'surplusTransferDelay' seconds since the last
     *      transfer, if we keep enough surplus in the buffer and if there is no bad debt left to settle
    **/
    function transferExtraSurplus() external {
        require(extraSurplusIsTransferred == 1, "AccountingEngine/surplus-auction-not-transfer");
        require(extraSurplusReceiver != address(0), "AccountingEngine/null-surplus-receiver");
        require(surplusTransferAmount > 0, "AccountingEngine/null-amount-to-transfer");
        settleDebt(unqueuedUnauctionedDebt());
        require(
          now >= addition(lastSurplusTransferTime, surplusTransferDelay),
          "AccountingEngine/surplus-transfer-delay-not-passed"
        );
        require(
          safeEngine.coinBalance(address(this)) >=
          addition(addition(safeEngine.debtBalance(address(this)), surplusTransferAmount), surplusBuffer),
          "AccountingEngine/insufficient-surplus"
        );
        require(
          unqueuedUnauctionedDebt() == 0,
          "AccountingEngine/debt-not-zero"
        );
        lastSurplusTransferTime = now;
        lastSurplusAuctionTime  = now;
        safeEngine.transferInternalCoins(address(this), extraSurplusReceiver, surplusTransferAmount);
        emit TransferExtraSurplus(extraSurplusReceiver, lastSurplusTransferTime, safeEngine.coinBalance(address(this)));
    }

    /**
     * @notice Disable this contract (normally called by Global Settlement)
     * @dev When it's disabled, the contract will record the current timestamp. Afterwards,
     *      the contract tries to settle as much debt as possible (if there's any) with any surplus that's
     *      left in the system
    **/
    function disableContract() external isAuthorized {
        require(contractEnabled == 1, "AccountingEngine/contract-not-enabled");

        contractEnabled = 0;
        totalQueuedDebt = 0;
        totalOnAuctionDebt = 0;

        disableTimestamp = now;

        surplusAuctionHouse.disableContract();
        debtAuctionHouse.disableContract();

        safeEngine.settleDebt(minimum(safeEngine.coinBalance(address(this)), safeEngine.debtBalance(address(this))));

        emit DisableContract(disableTimestamp, disableCooldown, safeEngine.coinBalance(address(this)), safeEngine.debtBalance(address(this)));
    }
    /**
     * @notice Transfer any remaining surplus after the disable cooldown has passed. Meant to be a backup in case GlobalSettlement.processSAFE
               has a bug, governance doesn't have power over the system and there's still surplus left in the AccountingEngine
               which then blocks GlobalSettlement.setOutstandingCoinSupply.
     * @dev Transfer any remaining surplus after disableCooldown seconds have passed since disabling the contract
    **/
    function transferPostSettlementSurplus() external {
        require(contractEnabled == 0, "AccountingEngine/still-enabled");
        require(addition(disableTimestamp, disableCooldown) <= now, "AccountingEngine/cooldown-not-passed");
        safeEngine.settleDebt(minimum(safeEngine.coinBalance(address(this)), safeEngine.debtBalance(address(this))));
        safeEngine.transferInternalCoins(address(this), postSettlementSurplusDrain, safeEngine.coinBalance(address(this)));
        emit TransferPostSettlementSurplus(
          postSettlementSurplusDrain,
          safeEngine.coinBalance(address(this)),
          safeEngine.debtBalance(address(this))
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"safeEngine_","type":"address"},{"internalType":"address","name":"surplusAuctionHouse_","type":"address"},{"internalType":"address","name":"debtAuctionHouse_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalOnAuctionDebt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtBalance","type":"uint256"}],"name":"AuctionDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastSurplusAuctionTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinBalance","type":"uint256"}],"name":"AuctionSurplus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rad","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalOnAuctionDebt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtBalance","type":"uint256"}],"name":"CancelAuctionedDebtWithSurplus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"disableTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"disableCooldown","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtBalance","type":"uint256"}],"name":"DisableContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"data","type":"uint256"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"ModifyParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtQueueBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalQueuedDebt","type":"uint256"}],"name":"PopDebtFromQueue","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtQueueBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalQueuedDebt","type":"uint256"}],"name":"PushDebtToQueue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rad","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtBalance","type":"uint256"}],"name":"SettleDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"extraSurplusReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"lastSurplusAuctionTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinBalance","type":"uint256"}],"name":"TransferExtraSurplus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"postSettlementSurplusDrain","type":"address"},{"indexed":false,"internalType":"uint256","name":"coinBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtBalance","type":"uint256"}],"name":"TransferPostSettlementSurplus","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auctionDebt","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auctionSurplus","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canPrintProtocolTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"cancelAuctionedDebtWithSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractEnabled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debtAuctionBidSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debtAuctionHouse","outputs":[{"internalType":"contract DebtAuctionHouseLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"debtPoppers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"debtQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraSurplusIsTransferred","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraSurplusReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialDebtAuctionMintedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSurplusAuctionTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSurplusTransferTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parameter","type":"bytes32"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"popDebtDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"debtBlockTimestamp","type":"uint256"}],"name":"popDebtFromQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"postSettlementSurplusDrain","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolTokenAuthority","outputs":[{"internalType":"contract ProtocolTokenAuthorityLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"debtBlock","type":"uint256"}],"name":"pushDebtToQueue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"safeEngine","outputs":[{"internalType":"contract SAFEEngineLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"settleDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"surplusAuctionAmountToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surplusAuctionDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surplusAuctionHouse","outputs":[{"internalType":"contract SurplusAuctionHouseLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surplusBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surplusTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surplusTransferDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"systemStakingPool","outputs":[{"internalType":"contract SystemStakingPoolLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalOnAuctionDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalQueuedDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferExtraSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferPostSettlementSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unqueuedUnauctionedDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051620030c6380380620030c68339818101604052606081101561003557600080fd5b5080516020808301516040938401513360009081529283905284832060019081905580546001600160a01b038087166001600160a01b03199283161792839055600280548287169084168117909155600380548387169416939093179092558751631b29a84160e31b815260048101929092529651959693959294919093169263d94d4208926024808301939282900301818387803b1580156100d757600080fd5b505af11580156100eb573d6000803e3d6000fd5b505042600c819055600d55505060016019556040805133815290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029181900360200190a1505050612f8380620001436000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c8063793d914911610146578063cc54f5e8116100c3578063d8872aeb11610087578063d8872aeb146104b0578063f27c3562146104b8578063fa8838af146104c0578063fc7966de146104c8578063fe4f5890146104d0578063ff713a9f146104f357610253565b8063cc54f5e814610474578063cdacaaca1461047c578063d405665514610484578063d6881367146104a0578063d72f0e43146104a857610253565b8063a4ea79441161010a578063a4ea794414610422578063a71036871461042a578063a8b30a9f14610447578063b39f841c14610464578063c41f55a01461046c57610253565b8063793d9149146103c7578063894ba833146103cf5780638b24dc3e146103d757806394f3f81d146103f4578063a34231de1461041a57610253565b80633dc4ab1d116101d45780635221e882116101985780635221e8821461037b5780635dabda40146103835780635fb9340c1461038b5780636614f0101461039357806367aea313146103bf57610253565b80633dc4ab1d1461032257806341b3a0d91461033f57806344e330c414610347578063492f9b3a1461034f5780634e6afb9e1461035757610253565b80632d09f11d1161021b5780632d09f11d146102c757806335b28153146102cf57806337b7eca1146102f55780633977a319146102fd5780633d2fa89b1461031a57610253565b80630502cddc146102585780630f44d6bd1461027257806324ba58841461027a57806327a0bb33146102a05780632a608d5b146102bf575b600080fd5b6102606104fb565b60408051918252519081900360200190f35b610260610501565b6102606004803603602081101561029057600080fd5b50356001600160a01b0316610507565b6102bd600480360360208110156102b657600080fd5b5035610519565b005b6102606107ab565b6102606107b1565b6102bd600480360360208110156102e557600080fd5b50356001600160a01b03166107b7565b610260610898565b6102606004803603602081101561031357600080fd5b503561089e565b6102606108b0565b6102bd6004803603602081101561033857600080fd5b5035610d37565b610260610fde565b6102bd610fe4565b6102606113e7565b61035f6113ed565b604080516001600160a01b039092168252519081900360200190f35b6102606113fc565b610260611402565b610260611408565b6102bd600480360360408110156103a957600080fd5b50803590602001356001600160a01b031661140e565b61035f61178a565b610260611799565b6102bd61179f565b6102bd600480360360208110156103ed57600080fd5b5035611b8f565b6102bd6004803603602081101561040a57600080fd5b50356001600160a01b0316611ccd565b61035f611d6c565b610260611d7b565b61035f6004803603602081101561044057600080fd5b5035611d81565b6102bd6004803603602081101561045d57600080fd5b5035611d9c565b61035f611e78565b610260611e87565b61035f611e8d565b61035f611e9c565b61048c611eab565b604080519115158252519081900360200190f35b61035f611f7d565b610260611f8c565b610260611f92565b610260612024565b6102bd61202a565b6102606123a6565b6102bd600480360360408110156104e657600080fd5b50803590602001356123ac565b6102606126a8565b60125481565b600b5481565b60006020819052908152604090205481565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b15801561056457600080fd5b505afa158015610578573d6000803e3d6000fd5b505050506040513d602081101561058e57600080fd5b50518111156105ce5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b6105d6611f92565b8111156106145760405162461bcd60e51b8152600401808060200182810382526022815260200180612d4e6022913960400191505060405180910390fd5b600154604080516327a0bb3360e01b81526004810184905290516001600160a01b03909216916327a0bb339160248082019260009290919082900301818387803b15801561066157600080fd5b505af1158015610675573d6000803e3d6000fd5b505060015460408051633eaf7a0360e21b815230600482015290517faa3cda6ae2bb6ad9e5234a74ba9fede531dec740965eafd0b7ac9d3b90443f8694508593506001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b1580156106e857600080fd5b505afa1580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b15801561075f57600080fd5b505afa158015610773573d6000803e3d6000fd5b505050506040513d602081101561078957600080fd5b505160408051938452602084019290925282820152519081900360600190a150565b60165481565b600a5481565b336000908152602081905260409020546001146108055760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b6019546001146108465760405162461bcd60e51b8152600401808060200182810382526025815260200180612dfc6025913960400191505060405180910390fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b600f5481565b60086020526000908152604090205481565b60006108ba611f92565b60125411156108fa5760405162461bcd60e51b8152600401808060200182810382526022815260200180612d4e6022913960400191505060405180910390fd5b60015460408051633eaf7a0360e21b81523060048201529051610977926001600160a01b03169163fabde80c916024808301926020929190829003018186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d602081101561097057600080fd5b5051610519565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b1580156109c257600080fd5b505afa1580156109d6573d6000803e3d6000fd5b505050506040513d60208110156109ec57600080fd5b505115610a2a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612cb46021913960400191505060405180910390fd5b60035460408051631a465fe160e01b815290516000926001600160a01b031691631a465fe1916004808301926020929190829003018186803b158015610a6f57600080fd5b505afa158015610a83573d6000803e3d6000fd5b505050506040513d6020811015610a9957600080fd5b50516001600160a01b03161415610ae15760405162461bcd60e51b815260040180806020018281038252602d815260200180612d70602d913960400191505060405180910390fd5b600480546003546040805163092e962160e21b81526001600160a01b0392831694810194909452519116916324ba5884916024808301926020929190829003018186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b5051600114610b9b5760405162461bcd60e51b8152600401808060200182810382526035815260200180612f196035913960400191505060405180910390fd5b610ba3611eab565b610bde5760405162461bcd60e51b815260040180806020018281038252602d815260200180612dcf602d913960400191505060405180910390fd5b610bec600b54601254612ad3565b600b55600354601154601254604080516356dd475560e01b815230600482015260248101939093526044830191909152516001600160a01b03909216916356dd4755916064808201926020929091908290030181600087803b158015610c5157600080fd5b505af1158015610c65573d6000803e3d6000fd5b505050506040513d6020811015610c7b57600080fd5b5051600b54600154604080516311005b0760e01b8152306004820152905193945084937fa92a5e554d2e8bfa74170e5591680f0c7eb5e56c545c5f53e253500e50d6d52d93926001600160a01b0316916311005b07916024808301926020929190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b50516040805192835260208301919091528051918290030190a290565b600b54811115610d785760405162461bcd60e51b8152600401808060200182810382526030815260200180612bd36030913960400191505060405180910390fd5b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b158015610dc357600080fd5b505afa158015610dd7573d6000803e3d6000fd5b505050506040513d6020811015610ded57600080fd5b5051811115610e2d5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b610e39600b5482612b31565b600b55600154604080516327a0bb3360e01b81526004810184905290516001600160a01b03909216916327a0bb339160248082019260009290919082900301818387803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b5050600b5460015460408051633eaf7a0360e21b815230600482015290517f5849130fd802a9386171d8d3f31c08fc5cf9b28821d86508afd88cb065a2af6f95508694506001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b158015610f1357600080fd5b505afa158015610f27573d6000803e3d6000fd5b505050506040513d6020811015610f3d57600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b158015610f8a57600080fd5b505afa158015610f9e573d6000803e3d6000fd5b505050506040513d6020811015610fb457600080fd5b5051604080519485526020850193909352838301919091526060830152519081900360800190a150565b60195481565b6013546001146110255760405162461bcd60e51b815260040180806020018281038252602d815260200180612ebc602d913960400191505060405180910390fd5b6007546001600160a01b031661106c5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e216026913960400191505060405180910390fd5b6000601554116110ad5760405162461bcd60e51b8152600401808060200182810382526028815260200180612d266028913960400191505060405180910390fd5b6110bd6110b8611f92565b610519565b6110cb600d54600f54612ad3565b4210156111095760405162461bcd60e51b8152600401808060200182810382526032815260200180612d9d6032913960400191505060405180910390fd5b600154604080516311005b0760e01b8152306004820152905161119892611190926001600160a01b03909116916311005b0791602480820192602092909190829003018186803b15801561115c57600080fd5b505afa158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b5051601554612ad3565b601654612ad3565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b1580156111e357600080fd5b505afa1580156111f7573d6000803e3d6000fd5b505050506040513d602081101561120d57600080fd5b5051101561124c5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b611254611f92565b156112a6576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f646562742d6e6f742d7a65726f0000604482015290519081900360640190fd5b42600d819055600c5560015460075460155460408051633beaf2b760e21b81523060048201526001600160a01b039384166024820152604481019290925251919092169163efabcadc91606480830192600092919082900301818387803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b5050600754600d5460015460408051633eaf7a0360e21b815230600482015290516001600160a01b0394851696507f09744986d27c373d65dbb8bf13661e8b68577739e9c4a77c5cd6f1682c009607955092939091169163fabde80c91602480820192602092909190829003018186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d60208110156113cb57600080fd5b50516040805192835260208301919091528051918290030190a2565b60185481565b6007546001600160a01b031681565b60105481565b60135481565b60175481565b3360009081526020819052604090205460011461145c5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b8172737572706c757341756374696f6e486f75736560681b1415611563576001546002546040805163d49d786760e01b81526001600160a01b0392831660048201529051919092169163d49d786791602480830192600092919082900301818387803b1580156114cb57600080fd5b505af11580156114df573d6000803e3d6000fd5b5050600280546001600160a01b0319166001600160a01b0385811691821790925560015460408051631b29a84160e31b81526004810193909352519216935063d94d4208925060248082019260009290919082900301818387803b15801561154657600080fd5b505af115801561155a573d6000803e3d6000fd5b50505050611747565b81701cde5cdd195b54dd185ada5b99d41bdbdb607a1b141561160d57600580546001600160a01b0319166001600160a01b0383811691909117918290556040805163d405665560e01b81529051929091169163d405665591600480820192602092909190829003018186803b1580156115db57600080fd5b505afa1580156115ef573d6000803e3d6000fd5b505050506040513d602081101561160557600080fd5b506117479050565b816f6465627441756374696f6e486f75736560801b141561164857600380546001600160a01b0319166001600160a01b038316179055611747565b817f706f7374536574746c656d656e74537572706c7573447261696e000000000000141561169057600680546001600160a01b0319166001600160a01b038316179055611747565b817570726f746f636f6c546f6b656e417574686f7269747960501b14156116d157600480546001600160a01b0319166001600160a01b038316179055611747565b817332bc3a3930a9bab938363ab9a932b1b2b4bb32b960611b141561171057600780546001600160a01b0319166001600160a01b038316179055611747565b60405162461bcd60e51b815260040180806020018281038252602a815260200180612e6e602a913960400191505060405180910390fd5b604080516001600160a01b0383168152905183917fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1919081900360200190a25050565b6001546001600160a01b031681565b600e5481565b336000908152602081905260409020546001146117ed5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b60195460011461182e5760405162461bcd60e51b8152600401808060200182810382526025815260200180612dfc6025913960400191505060405180910390fd5b60006019819055600a819055600b819055426018556002546040805163894ba83360e01b815290516001600160a01b039092169263894ba8339260048084019382900301818387803b15801561188357600080fd5b505af1158015611897573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b031663894ba8336040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b505060015460408051633eaf7a0360e21b815230600482015290516001600160a01b0390921693506327a0bb339250611a0191849163fabde80c916024808301926020929190829003018186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d602081101561198357600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b1580156119d057600080fd5b505afa1580156119e4573d6000803e3d6000fd5b505050506040513d60208110156119fa57600080fd5b5051612b89565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a3757600080fd5b505af1158015611a4b573d6000803e3d6000fd5b505060185460175460015460408051633eaf7a0360e21b815230600482015290517ff444c796746af83b62874bc1bcf111eee758f29e8abd5b66019e455649487b7e965093945091926001600160a01b039091169163fabde80c916024808301926020929190829003018186803b158015611ac557600080fd5b505afa158015611ad9573d6000803e3d6000fd5b505050506040513d6020811015611aef57600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b158015611b3c57600080fd5b505afa158015611b50573d6000803e3d6000fd5b505050506040513d6020811015611b6657600080fd5b5051604080519485526020850193909352838301919091526060830152519081900360800190a1565b42611b9c82601054612ad3565b1115611bd95760405162461bcd60e51b815260040180806020018281038252602a815260200180612cd5602a913960400191505060405180910390fd5b600081815260086020526040902054611c39576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e74696e67456e67696e652f6e756c6c2d646562742d626c6f636b604482015290519081900360640190fd5b600a54600082815260086020526040902054611c559190612b31565b600a908155600082815260096020908152604080832080546001600160a01b031916331790556008825291829020549254825193845290830152805142927f2a88971df34f4b7d590e86d77e5db54859c030b27c51e944a3d9e1d2bc6dbb4192908290030190a2600090815260086020526040812055565b33600090815260208190526040902054600114611d1b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b6005546001600160a01b031681565b60155481565b6009602052600090815260409020546001600160a01b031681565b33600090815260208190526040902054600114611dea5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b42600090815260086020526040902054611e049082612ad3565b42600090815260086020526040902055600a54611e219082612ad3565b600a8190554260008181526008602090815260409182902054825190815290810193909352805191927f1833b2803878de6a92dfb6a19b452e31ec63baad0fd2e1e341e0dce55e4ed207929081900390910190a250565b6003546001600160a01b031681565b600d5481565b6004546001600160a01b031681565b6002546001600160a01b031681565b6005546000906001600160a01b0316611ec657506001611f7a565b600560009054906101000a90046001600160a01b03166001600160a01b031663d40566556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1457600080fd5b505afa925050508015611f3957506040513d6020811015611f3457600080fd5b505160015b611f77573d808015611f67576040519150601f19603f3d011682016040523d82523d6000602084013e611f6c565b606091505b506001915050611f7a565b90505b90565b6006546001600160a01b031681565b600c5481565b600154604080516311005b0760e01b81523060048201529051600092611f779261201c926001600160a01b03909216916311005b0791602480820192602092909190829003018186803b158015611fe857600080fd5b505afa158015611ffc573d6000803e3d6000fd5b505050506040513d602081101561201257600080fd5b5051600a54612b31565b600b54612b31565b60145481565b6019541561207f576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f7374696c6c2d656e61626c65640000604482015290519081900360640190fd5b4261208e601854601754612ad3565b11156120cb5760405162461bcd60e51b8152600401808060200182810382526024815260200180612e986024913960400191505060405180910390fd5b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b03909216916327a0bb339161212191849163fabde80c916024808301926020929190829003018186803b15801561195957600080fd5b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561215757600080fd5b505af115801561216b573d6000803e3d6000fd5b505060015460065460408051633eaf7a0360e21b8152306004820181905291516001600160a01b03948516965063efabcadc9550919390921691859163fabde80c91602480820192602092909190829003018186803b1580156121cd57600080fd5b505afa1580156121e1573d6000803e3d6000fd5b505050506040513d60208110156121f757600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b15801561224e57600080fd5b505af1158015612262573d6000803e3d6000fd5b505060065460015460408051633eaf7a0360e21b815230600482015290517f618b53208bc1d7a537afbb52ff1788ab48eaa72099e2cc87ed9a251a4029d17995506001600160a01b039384169450919092169163fabde80c916024808301926020929190829003018186803b1580156122da57600080fd5b505afa1580156122ee573d6000803e3d6000fd5b505050506040513d602081101561230457600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b15801561235157600080fd5b505afa158015612365573d6000803e3d6000fd5b505050506040513d602081101561237b57600080fd5b5051604080516001600160a01b039094168452602084019290925282820152519081900360600190a1565b60115481565b336000908152602081905260409020546001146123fa5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b8172737572706c757341756374696f6e44656c617960681b141561242257600e81905561266e565b8173737572706c75735472616e7366657244656c617960601b141561244b57600f81905561266e565b816b706f704465627444656c617960a01b141561246c57601081905561266e565b817f737572706c757341756374696f6e416d6f756e74546f53656c6c000000000000141561249e57601481905561266e565b81741cdd5c9c1b1d5cd51c985b9cd9995c905b5bdd5b9d605a1b14156124c857601581905561266e565b817f6578747261537572706c757349735472616e736665727265640000000000000014156124fa57601381905561266e565b81716465627441756374696f6e42696453697a6560701b141561252157601281905561266e565b817f696e697469616c4465627441756374696f6e4d696e746564546f6b656e730000141561255357601181905561266e565b816c39bab938363ab9a13ab33332b960991b141561257557601681905561266e565b817f6c617374537572706c75735472616e7366657254696d6500000000000000000014156125e5574281116125db5760405162461bcd60e51b8152600401808060200182810382526030815260200180612ba36030913960400191505060405180910390fd5b600d81905561266e565b81756c617374537572706c757341756374696f6e54696d6560501b141561264e574281116126445760405162461bcd60e51b815260040180806020018281038252602f815260200180612c85602f913960400191505060405180910390fd5b600c81905561266e565b816e3234b9b0b13632a1b7b7b63237bbb760891b14156117105760178190555b60408051828152905183917fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a919081900360200190a25050565b6000601354600114156126ec5760405162461bcd60e51b815260040180806020018281038252602c815260200180612c34602c913960400191505060405180910390fd5b60006014541161272d5760405162461bcd60e51b8152600401808060200182810382526027815260200180612e476027913960400191505060405180910390fd5b6127386110b8611f92565b612746600c54600e54612ad3565b4210156127845760405162461bcd60e51b8152600401808060200182810382526031815260200180612c036031913960400191505060405180910390fd5b600154604080516311005b0760e01b8152306004820152905161280b92611190926001600160a01b03909116916311005b0791602480820192602092909190829003018186803b1580156127d757600080fd5b505afa1580156127eb573d6000803e3d6000fd5b505050506040513d602081101561280157600080fd5b5051601454612ad3565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b15801561285657600080fd5b505afa15801561286a573d6000803e3d6000fd5b505050506040513d602081101561288057600080fd5b505110156128bf5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b6128c7611f92565b15612919576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f646562742d6e6f742d7a65726f0000604482015290519081900360640190fd5b60025460408051631a465fe160e01b815290516000926001600160a01b031691631a465fe1916004808301926020929190829003018186803b15801561295e57600080fd5b505afa158015612972573d6000803e3d6000fd5b505050506040513d602081101561298857600080fd5b50516001600160a01b031614156129d05760405162461bcd60e51b8152600401808060200182810382526030815260200180612ee96030913960400191505060405180910390fd5b42600c819055600d55600254601454604080516313fb84ff60e21b8152600481019290925260006024830181905290516001600160a01b0390931692634fee13fc926044808201936020939283900390910190829087803b158015612a3457600080fd5b505af1158015612a48573d6000803e3d6000fd5b505050506040513d6020811015612a5e57600080fd5b5051600c5460015460408051633eaf7a0360e21b8152306004820152905193945084937f7d0821ff1f59d07fef9cd0f28753cd787fc228208807379c23b9eecddccd6b0793926001600160a01b03169163fabde80c916024808301926020929190829003018186803b158015610cf057600080fd5b80820182811015612b2b576040805162461bcd60e51b815260206004820152601d60248201527f4163636f756e74696e67456e67696e652f6164642d6f766572666c6f77000000604482015290519081900360640190fd5b92915050565b80820382811115612b2b576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f7375622d756e646572666c6f770000604482015290519081900360640190fd5b600081831115612b995781612b9b565b825b939250505056fe4163636f756e74696e67456e67696e652f696e76616c69642d6c617374537572706c75735472616e7366657254696d654163636f756e74696e67456e67696e652f6e6f742d656e6f7567682d646562742d6265696e672d61756374696f6e65644163636f756e74696e67456e67696e652f737572706c75732d61756374696f6e2d64656c61792d6e6f742d7061737365644163636f756e74696e67456e67696e652f737572706c75732d7472616e736665722d6e6f2d61756374696f6e4163636f756e74696e67456e67696e652f696e73756666696369656e742d737572706c75734163636f756e74696e67456e67696e652f696e76616c69642d6c617374537572706c757341756374696f6e54696d654163636f756e74696e67456e67696e652f737572706c75732d6e6f742d7a65726f4163636f756e74696e67456e67696e652f706f702d646562742d64656c61792d6e6f742d7061737365644163636f756e74696e67456e67696e652f6163636f756e742d6e6f742d617574686f72697a65644163636f756e74696e67456e67696e652f6e756c6c2d616d6f756e742d746f2d7472616e736665724163636f756e74696e67456e67696e652f696e73756666696369656e742d646562744163636f756e74696e67456e67696e652f646562742d61756374696f6e2d686f7573652d6e756c6c2d70726f744163636f756e74696e67456e67696e652f737572706c75732d7472616e736665722d64656c61792d6e6f742d7061737365644163636f756e74696e67456e67696e652f7374616b696e672d706f6f6c2d64656e6965732d7072696e74696e674163636f756e74696e67456e67696e652f636f6e74726163742d6e6f742d656e61626c65644163636f756e74696e67456e67696e652f6e756c6c2d737572706c75732d72656365697665724163636f756e74696e67456e67696e652f6e756c6c2d616d6f756e742d746f2d61756374696f6e4163636f756e74696e67456e67696e652f6d6f646966792d756e7265636f676e697a65642d706172616d4163636f756e74696e67456e67696e652f636f6f6c646f776e2d6e6f742d7061737365644163636f756e74696e67456e67696e652f737572706c75732d61756374696f6e2d6e6f742d7472616e736665724163636f756e74696e67456e67696e652f737572706c75732d61756374696f6e2d686f7573652d6e756c6c2d70726f744163636f756e74696e67456e67696e652f646562742d61756374696f6e2d686f7573652d63616e6e6f742d7072696e742d70726f74a26469706673582212209e5ee131cf804ed7b9ec51496c3b7b7081bd9a7e21a81ab0caa53d2bc2c7bbaf64736f6c63430006070033000000000000000000000000cc88a9d330da1133df3a7bd823b95e52511a6962000000000000000000000000eef4ea1a548417df1e7f0f6ab89494eed9e06b700000000000000000000000001896adbe708bf91158748b3f33738ba497a69e8f

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102535760003560e01c8063793d914911610146578063cc54f5e8116100c3578063d8872aeb11610087578063d8872aeb146104b0578063f27c3562146104b8578063fa8838af146104c0578063fc7966de146104c8578063fe4f5890146104d0578063ff713a9f146104f357610253565b8063cc54f5e814610474578063cdacaaca1461047c578063d405665514610484578063d6881367146104a0578063d72f0e43146104a857610253565b8063a4ea79441161010a578063a4ea794414610422578063a71036871461042a578063a8b30a9f14610447578063b39f841c14610464578063c41f55a01461046c57610253565b8063793d9149146103c7578063894ba833146103cf5780638b24dc3e146103d757806394f3f81d146103f4578063a34231de1461041a57610253565b80633dc4ab1d116101d45780635221e882116101985780635221e8821461037b5780635dabda40146103835780635fb9340c1461038b5780636614f0101461039357806367aea313146103bf57610253565b80633dc4ab1d1461032257806341b3a0d91461033f57806344e330c414610347578063492f9b3a1461034f5780634e6afb9e1461035757610253565b80632d09f11d1161021b5780632d09f11d146102c757806335b28153146102cf57806337b7eca1146102f55780633977a319146102fd5780633d2fa89b1461031a57610253565b80630502cddc146102585780630f44d6bd1461027257806324ba58841461027a57806327a0bb33146102a05780632a608d5b146102bf575b600080fd5b6102606104fb565b60408051918252519081900360200190f35b610260610501565b6102606004803603602081101561029057600080fd5b50356001600160a01b0316610507565b6102bd600480360360208110156102b657600080fd5b5035610519565b005b6102606107ab565b6102606107b1565b6102bd600480360360208110156102e557600080fd5b50356001600160a01b03166107b7565b610260610898565b6102606004803603602081101561031357600080fd5b503561089e565b6102606108b0565b6102bd6004803603602081101561033857600080fd5b5035610d37565b610260610fde565b6102bd610fe4565b6102606113e7565b61035f6113ed565b604080516001600160a01b039092168252519081900360200190f35b6102606113fc565b610260611402565b610260611408565b6102bd600480360360408110156103a957600080fd5b50803590602001356001600160a01b031661140e565b61035f61178a565b610260611799565b6102bd61179f565b6102bd600480360360208110156103ed57600080fd5b5035611b8f565b6102bd6004803603602081101561040a57600080fd5b50356001600160a01b0316611ccd565b61035f611d6c565b610260611d7b565b61035f6004803603602081101561044057600080fd5b5035611d81565b6102bd6004803603602081101561045d57600080fd5b5035611d9c565b61035f611e78565b610260611e87565b61035f611e8d565b61035f611e9c565b61048c611eab565b604080519115158252519081900360200190f35b61035f611f7d565b610260611f8c565b610260611f92565b610260612024565b6102bd61202a565b6102606123a6565b6102bd600480360360408110156104e657600080fd5b50803590602001356123ac565b6102606126a8565b60125481565b600b5481565b60006020819052908152604090205481565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b15801561056457600080fd5b505afa158015610578573d6000803e3d6000fd5b505050506040513d602081101561058e57600080fd5b50518111156105ce5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b6105d6611f92565b8111156106145760405162461bcd60e51b8152600401808060200182810382526022815260200180612d4e6022913960400191505060405180910390fd5b600154604080516327a0bb3360e01b81526004810184905290516001600160a01b03909216916327a0bb339160248082019260009290919082900301818387803b15801561066157600080fd5b505af1158015610675573d6000803e3d6000fd5b505060015460408051633eaf7a0360e21b815230600482015290517faa3cda6ae2bb6ad9e5234a74ba9fede531dec740965eafd0b7ac9d3b90443f8694508593506001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b1580156106e857600080fd5b505afa1580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b15801561075f57600080fd5b505afa158015610773573d6000803e3d6000fd5b505050506040513d602081101561078957600080fd5b505160408051938452602084019290925282820152519081900360600190a150565b60165481565b600a5481565b336000908152602081905260409020546001146108055760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b6019546001146108465760405162461bcd60e51b8152600401808060200182810382526025815260200180612dfc6025913960400191505060405180910390fd5b6001600160a01b0381166000818152602081815260409182902060019055815192835290517f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f70001029281900390910190a150565b600f5481565b60086020526000908152604090205481565b60006108ba611f92565b60125411156108fa5760405162461bcd60e51b8152600401808060200182810382526022815260200180612d4e6022913960400191505060405180910390fd5b60015460408051633eaf7a0360e21b81523060048201529051610977926001600160a01b03169163fabde80c916024808301926020929190829003018186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d602081101561097057600080fd5b5051610519565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b1580156109c257600080fd5b505afa1580156109d6573d6000803e3d6000fd5b505050506040513d60208110156109ec57600080fd5b505115610a2a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612cb46021913960400191505060405180910390fd5b60035460408051631a465fe160e01b815290516000926001600160a01b031691631a465fe1916004808301926020929190829003018186803b158015610a6f57600080fd5b505afa158015610a83573d6000803e3d6000fd5b505050506040513d6020811015610a9957600080fd5b50516001600160a01b03161415610ae15760405162461bcd60e51b815260040180806020018281038252602d815260200180612d70602d913960400191505060405180910390fd5b600480546003546040805163092e962160e21b81526001600160a01b0392831694810194909452519116916324ba5884916024808301926020929190829003018186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b5051600114610b9b5760405162461bcd60e51b8152600401808060200182810382526035815260200180612f196035913960400191505060405180910390fd5b610ba3611eab565b610bde5760405162461bcd60e51b815260040180806020018281038252602d815260200180612dcf602d913960400191505060405180910390fd5b610bec600b54601254612ad3565b600b55600354601154601254604080516356dd475560e01b815230600482015260248101939093526044830191909152516001600160a01b03909216916356dd4755916064808201926020929091908290030181600087803b158015610c5157600080fd5b505af1158015610c65573d6000803e3d6000fd5b505050506040513d6020811015610c7b57600080fd5b5051600b54600154604080516311005b0760e01b8152306004820152905193945084937fa92a5e554d2e8bfa74170e5591680f0c7eb5e56c545c5f53e253500e50d6d52d93926001600160a01b0316916311005b07916024808301926020929190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b50516040805192835260208301919091528051918290030190a290565b600b54811115610d785760405162461bcd60e51b8152600401808060200182810382526030815260200180612bd36030913960400191505060405180910390fd5b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b158015610dc357600080fd5b505afa158015610dd7573d6000803e3d6000fd5b505050506040513d6020811015610ded57600080fd5b5051811115610e2d5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b610e39600b5482612b31565b600b55600154604080516327a0bb3360e01b81526004810184905290516001600160a01b03909216916327a0bb339160248082019260009290919082900301818387803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b5050600b5460015460408051633eaf7a0360e21b815230600482015290517f5849130fd802a9386171d8d3f31c08fc5cf9b28821d86508afd88cb065a2af6f95508694506001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b158015610f1357600080fd5b505afa158015610f27573d6000803e3d6000fd5b505050506040513d6020811015610f3d57600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b158015610f8a57600080fd5b505afa158015610f9e573d6000803e3d6000fd5b505050506040513d6020811015610fb457600080fd5b5051604080519485526020850193909352838301919091526060830152519081900360800190a150565b60195481565b6013546001146110255760405162461bcd60e51b815260040180806020018281038252602d815260200180612ebc602d913960400191505060405180910390fd5b6007546001600160a01b031661106c5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e216026913960400191505060405180910390fd5b6000601554116110ad5760405162461bcd60e51b8152600401808060200182810382526028815260200180612d266028913960400191505060405180910390fd5b6110bd6110b8611f92565b610519565b6110cb600d54600f54612ad3565b4210156111095760405162461bcd60e51b8152600401808060200182810382526032815260200180612d9d6032913960400191505060405180910390fd5b600154604080516311005b0760e01b8152306004820152905161119892611190926001600160a01b03909116916311005b0791602480820192602092909190829003018186803b15801561115c57600080fd5b505afa158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b5051601554612ad3565b601654612ad3565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b1580156111e357600080fd5b505afa1580156111f7573d6000803e3d6000fd5b505050506040513d602081101561120d57600080fd5b5051101561124c5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b611254611f92565b156112a6576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f646562742d6e6f742d7a65726f0000604482015290519081900360640190fd5b42600d819055600c5560015460075460155460408051633beaf2b760e21b81523060048201526001600160a01b039384166024820152604481019290925251919092169163efabcadc91606480830192600092919082900301818387803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b5050600754600d5460015460408051633eaf7a0360e21b815230600482015290516001600160a01b0394851696507f09744986d27c373d65dbb8bf13661e8b68577739e9c4a77c5cd6f1682c009607955092939091169163fabde80c91602480820192602092909190829003018186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d60208110156113cb57600080fd5b50516040805192835260208301919091528051918290030190a2565b60185481565b6007546001600160a01b031681565b60105481565b60135481565b60175481565b3360009081526020819052604090205460011461145c5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b8172737572706c757341756374696f6e486f75736560681b1415611563576001546002546040805163d49d786760e01b81526001600160a01b0392831660048201529051919092169163d49d786791602480830192600092919082900301818387803b1580156114cb57600080fd5b505af11580156114df573d6000803e3d6000fd5b5050600280546001600160a01b0319166001600160a01b0385811691821790925560015460408051631b29a84160e31b81526004810193909352519216935063d94d4208925060248082019260009290919082900301818387803b15801561154657600080fd5b505af115801561155a573d6000803e3d6000fd5b50505050611747565b81701cde5cdd195b54dd185ada5b99d41bdbdb607a1b141561160d57600580546001600160a01b0319166001600160a01b0383811691909117918290556040805163d405665560e01b81529051929091169163d405665591600480820192602092909190829003018186803b1580156115db57600080fd5b505afa1580156115ef573d6000803e3d6000fd5b505050506040513d602081101561160557600080fd5b506117479050565b816f6465627441756374696f6e486f75736560801b141561164857600380546001600160a01b0319166001600160a01b038316179055611747565b817f706f7374536574746c656d656e74537572706c7573447261696e000000000000141561169057600680546001600160a01b0319166001600160a01b038316179055611747565b817570726f746f636f6c546f6b656e417574686f7269747960501b14156116d157600480546001600160a01b0319166001600160a01b038316179055611747565b817332bc3a3930a9bab938363ab9a932b1b2b4bb32b960611b141561171057600780546001600160a01b0319166001600160a01b038316179055611747565b60405162461bcd60e51b815260040180806020018281038252602a815260200180612e6e602a913960400191505060405180910390fd5b604080516001600160a01b0383168152905183917fd91f38cf03346b5dc15fb60f9076f866295231ad3c3841a1051f8443f25170d1919081900360200190a25050565b6001546001600160a01b031681565b600e5481565b336000908152602081905260409020546001146117ed5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b60195460011461182e5760405162461bcd60e51b8152600401808060200182810382526025815260200180612dfc6025913960400191505060405180910390fd5b60006019819055600a819055600b819055426018556002546040805163894ba83360e01b815290516001600160a01b039092169263894ba8339260048084019382900301818387803b15801561188357600080fd5b505af1158015611897573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b031663894ba8336040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b505060015460408051633eaf7a0360e21b815230600482015290516001600160a01b0390921693506327a0bb339250611a0191849163fabde80c916024808301926020929190829003018186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d602081101561198357600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b1580156119d057600080fd5b505afa1580156119e4573d6000803e3d6000fd5b505050506040513d60208110156119fa57600080fd5b5051612b89565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611a3757600080fd5b505af1158015611a4b573d6000803e3d6000fd5b505060185460175460015460408051633eaf7a0360e21b815230600482015290517ff444c796746af83b62874bc1bcf111eee758f29e8abd5b66019e455649487b7e965093945091926001600160a01b039091169163fabde80c916024808301926020929190829003018186803b158015611ac557600080fd5b505afa158015611ad9573d6000803e3d6000fd5b505050506040513d6020811015611aef57600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b158015611b3c57600080fd5b505afa158015611b50573d6000803e3d6000fd5b505050506040513d6020811015611b6657600080fd5b5051604080519485526020850193909352838301919091526060830152519081900360800190a1565b42611b9c82601054612ad3565b1115611bd95760405162461bcd60e51b815260040180806020018281038252602a815260200180612cd5602a913960400191505060405180910390fd5b600081815260086020526040902054611c39576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e74696e67456e67696e652f6e756c6c2d646562742d626c6f636b604482015290519081900360640190fd5b600a54600082815260086020526040902054611c559190612b31565b600a908155600082815260096020908152604080832080546001600160a01b031916331790556008825291829020549254825193845290830152805142927f2a88971df34f4b7d590e86d77e5db54859c030b27c51e944a3d9e1d2bc6dbb4192908290030190a2600090815260086020526040812055565b33600090815260208190526040902054600114611d1b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b6001600160a01b03811660008181526020818152604080832092909255815192835290517f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b9039281900390910190a150565b6005546001600160a01b031681565b60155481565b6009602052600090815260409020546001600160a01b031681565b33600090815260208190526040902054600114611dea5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b42600090815260086020526040902054611e049082612ad3565b42600090815260086020526040902055600a54611e219082612ad3565b600a8190554260008181526008602090815260409182902054825190815290810193909352805191927f1833b2803878de6a92dfb6a19b452e31ec63baad0fd2e1e341e0dce55e4ed207929081900390910190a250565b6003546001600160a01b031681565b600d5481565b6004546001600160a01b031681565b6002546001600160a01b031681565b6005546000906001600160a01b0316611ec657506001611f7a565b600560009054906101000a90046001600160a01b03166001600160a01b031663d40566556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1457600080fd5b505afa925050508015611f3957506040513d6020811015611f3457600080fd5b505160015b611f77573d808015611f67576040519150601f19603f3d011682016040523d82523d6000602084013e611f6c565b606091505b506001915050611f7a565b90505b90565b6006546001600160a01b031681565b600c5481565b600154604080516311005b0760e01b81523060048201529051600092611f779261201c926001600160a01b03909216916311005b0791602480820192602092909190829003018186803b158015611fe857600080fd5b505afa158015611ffc573d6000803e3d6000fd5b505050506040513d602081101561201257600080fd5b5051600a54612b31565b600b54612b31565b60145481565b6019541561207f576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f7374696c6c2d656e61626c65640000604482015290519081900360640190fd5b4261208e601854601754612ad3565b11156120cb5760405162461bcd60e51b8152600401808060200182810382526024815260200180612e986024913960400191505060405180910390fd5b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b03909216916327a0bb339161212191849163fabde80c916024808301926020929190829003018186803b15801561195957600080fd5b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561215757600080fd5b505af115801561216b573d6000803e3d6000fd5b505060015460065460408051633eaf7a0360e21b8152306004820181905291516001600160a01b03948516965063efabcadc9550919390921691859163fabde80c91602480820192602092909190829003018186803b1580156121cd57600080fd5b505afa1580156121e1573d6000803e3d6000fd5b505050506040513d60208110156121f757600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b15801561224e57600080fd5b505af1158015612262573d6000803e3d6000fd5b505060065460015460408051633eaf7a0360e21b815230600482015290517f618b53208bc1d7a537afbb52ff1788ab48eaa72099e2cc87ed9a251a4029d17995506001600160a01b039384169450919092169163fabde80c916024808301926020929190829003018186803b1580156122da57600080fd5b505afa1580156122ee573d6000803e3d6000fd5b505050506040513d602081101561230457600080fd5b5051600154604080516311005b0760e01b815230600482015290516001600160a01b03909216916311005b0791602480820192602092909190829003018186803b15801561235157600080fd5b505afa158015612365573d6000803e3d6000fd5b505050506040513d602081101561237b57600080fd5b5051604080516001600160a01b039094168452602084019290925282820152519081900360600190a1565b60115481565b336000908152602081905260409020546001146123fa5760405162461bcd60e51b8152600401808060200182810382526027815260200180612cff6027913960400191505060405180910390fd5b8172737572706c757341756374696f6e44656c617960681b141561242257600e81905561266e565b8173737572706c75735472616e7366657244656c617960601b141561244b57600f81905561266e565b816b706f704465627444656c617960a01b141561246c57601081905561266e565b817f737572706c757341756374696f6e416d6f756e74546f53656c6c000000000000141561249e57601481905561266e565b81741cdd5c9c1b1d5cd51c985b9cd9995c905b5bdd5b9d605a1b14156124c857601581905561266e565b817f6578747261537572706c757349735472616e736665727265640000000000000014156124fa57601381905561266e565b81716465627441756374696f6e42696453697a6560701b141561252157601281905561266e565b817f696e697469616c4465627441756374696f6e4d696e746564546f6b656e730000141561255357601181905561266e565b816c39bab938363ab9a13ab33332b960991b141561257557601681905561266e565b817f6c617374537572706c75735472616e7366657254696d6500000000000000000014156125e5574281116125db5760405162461bcd60e51b8152600401808060200182810382526030815260200180612ba36030913960400191505060405180910390fd5b600d81905561266e565b81756c617374537572706c757341756374696f6e54696d6560501b141561264e574281116126445760405162461bcd60e51b815260040180806020018281038252602f815260200180612c85602f913960400191505060405180910390fd5b600c81905561266e565b816e3234b9b0b13632a1b7b7b63237bbb760891b14156117105760178190555b60408051828152905183917fac7c5c1afaef770ec56ac6268cd3f2fbb1035858ead2601d6553157c33036c3a919081900360200190a25050565b6000601354600114156126ec5760405162461bcd60e51b815260040180806020018281038252602c815260200180612c34602c913960400191505060405180910390fd5b60006014541161272d5760405162461bcd60e51b8152600401808060200182810382526027815260200180612e476027913960400191505060405180910390fd5b6127386110b8611f92565b612746600c54600e54612ad3565b4210156127845760405162461bcd60e51b8152600401808060200182810382526031815260200180612c036031913960400191505060405180910390fd5b600154604080516311005b0760e01b8152306004820152905161280b92611190926001600160a01b03909116916311005b0791602480820192602092909190829003018186803b1580156127d757600080fd5b505afa1580156127eb573d6000803e3d6000fd5b505050506040513d602081101561280157600080fd5b5051601454612ad3565b60015460408051633eaf7a0360e21b815230600482015290516001600160a01b039092169163fabde80c91602480820192602092909190829003018186803b15801561285657600080fd5b505afa15801561286a573d6000803e3d6000fd5b505050506040513d602081101561288057600080fd5b505110156128bf5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c606025913960400191505060405180910390fd5b6128c7611f92565b15612919576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f646562742d6e6f742d7a65726f0000604482015290519081900360640190fd5b60025460408051631a465fe160e01b815290516000926001600160a01b031691631a465fe1916004808301926020929190829003018186803b15801561295e57600080fd5b505afa158015612972573d6000803e3d6000fd5b505050506040513d602081101561298857600080fd5b50516001600160a01b031614156129d05760405162461bcd60e51b8152600401808060200182810382526030815260200180612ee96030913960400191505060405180910390fd5b42600c819055600d55600254601454604080516313fb84ff60e21b8152600481019290925260006024830181905290516001600160a01b0390931692634fee13fc926044808201936020939283900390910190829087803b158015612a3457600080fd5b505af1158015612a48573d6000803e3d6000fd5b505050506040513d6020811015612a5e57600080fd5b5051600c5460015460408051633eaf7a0360e21b8152306004820152905193945084937f7d0821ff1f59d07fef9cd0f28753cd787fc228208807379c23b9eecddccd6b0793926001600160a01b03169163fabde80c916024808301926020929190829003018186803b158015610cf057600080fd5b80820182811015612b2b576040805162461bcd60e51b815260206004820152601d60248201527f4163636f756e74696e67456e67696e652f6164642d6f766572666c6f77000000604482015290519081900360640190fd5b92915050565b80820382811115612b2b576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e74696e67456e67696e652f7375622d756e646572666c6f770000604482015290519081900360640190fd5b600081831115612b995781612b9b565b825b939250505056fe4163636f756e74696e67456e67696e652f696e76616c69642d6c617374537572706c75735472616e7366657254696d654163636f756e74696e67456e67696e652f6e6f742d656e6f7567682d646562742d6265696e672d61756374696f6e65644163636f756e74696e67456e67696e652f737572706c75732d61756374696f6e2d64656c61792d6e6f742d7061737365644163636f756e74696e67456e67696e652f737572706c75732d7472616e736665722d6e6f2d61756374696f6e4163636f756e74696e67456e67696e652f696e73756666696369656e742d737572706c75734163636f756e74696e67456e67696e652f696e76616c69642d6c617374537572706c757341756374696f6e54696d654163636f756e74696e67456e67696e652f737572706c75732d6e6f742d7a65726f4163636f756e74696e67456e67696e652f706f702d646562742d64656c61792d6e6f742d7061737365644163636f756e74696e67456e67696e652f6163636f756e742d6e6f742d617574686f72697a65644163636f756e74696e67456e67696e652f6e756c6c2d616d6f756e742d746f2d7472616e736665724163636f756e74696e67456e67696e652f696e73756666696369656e742d646562744163636f756e74696e67456e67696e652f646562742d61756374696f6e2d686f7573652d6e756c6c2d70726f744163636f756e74696e67456e67696e652f737572706c75732d7472616e736665722d64656c61792d6e6f742d7061737365644163636f756e74696e67456e67696e652f7374616b696e672d706f6f6c2d64656e6965732d7072696e74696e674163636f756e74696e67456e67696e652f636f6e74726163742d6e6f742d656e61626c65644163636f756e74696e67456e67696e652f6e756c6c2d737572706c75732d72656365697665724163636f756e74696e67456e67696e652f6e756c6c2d616d6f756e742d746f2d61756374696f6e4163636f756e74696e67456e67696e652f6d6f646966792d756e7265636f676e697a65642d706172616d4163636f756e74696e67456e67696e652f636f6f6c646f776e2d6e6f742d7061737365644163636f756e74696e67456e67696e652f737572706c75732d61756374696f6e2d6e6f742d7472616e736665724163636f756e74696e67456e67696e652f737572706c75732d61756374696f6e2d686f7573652d6e756c6c2d70726f744163636f756e74696e67456e67696e652f646562742d61756374696f6e2d686f7573652d63616e6e6f742d7072696e742d70726f74a26469706673582212209e5ee131cf804ed7b9ec51496c3b7b7081bd9a7e21a81ab0caa53d2bc2c7bbaf64736f6c63430006070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000cc88a9d330da1133df3a7bd823b95e52511a6962000000000000000000000000eef4ea1a548417df1e7f0f6ab89494eed9e06b700000000000000000000000001896adbe708bf91158748b3f33738ba497a69e8f

-----Decoded View---------------
Arg [0] : safeEngine_ (address): 0xCC88a9d330da1133Df3A7bD823B95e52511A6962
Arg [1] : surplusAuctionHouse_ (address): 0xEeF4ea1A548417Df1e7f0f6Ab89494eED9e06B70
Arg [2] : debtAuctionHouse_ (address): 0x1896adBE708bF91158748B3F33738Ba497A69e8f

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000cc88a9d330da1133df3a7bd823b95e52511a6962
Arg [1] : 000000000000000000000000eef4ea1a548417df1e7f0f6ab89494eed9e06b70
Arg [2] : 0000000000000000000000001896adbe708bf91158748b3f33738ba497a69e8f


Deployed Bytecode Sourcemap

2249:19733:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2249:19733:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;5958:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;5006;;;:::i;2303:54::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2303:54:0;-1:-1:-1;;;;;2303:54:0;;:::i;14384:389::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14384:389:0;;:::i;:::-;;6507:28;;;:::i;4818:30::-;;;:::i;2467:237::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2467:237:0;-1:-1:-1;;;;;2467:237:0;;:::i;5502:35::-;;;:::i;4496:45::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4496:45:0;;:::i;15775:965::-;;;:::i;14954:523::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14954:523:0;;:::i;6938:30::-;;;:::i;18631:1213::-;;;:::i;6807:31::-;;;:::i;4182:54::-;;;:::i;:::-;;;;-1:-1:-1;;;;;4182:54:0;;;;;;;;;;;;;;5636:27;;;:::i;6100:40::-;;;:::i;6694:30::-;;;:::i;11140:1043::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11140:1043:0;;;;;;-1:-1:-1;;;;;11140:1043:0;;:::i;3269:44::-;;;:::i;5382:34::-;;;:::i;20180:630::-;;;:::i;13554:544::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13554:544:0;;:::i;2823:162::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2823:162:0;-1:-1:-1;;;;;2823:162:0;;:::i;3928:51::-;;;:::i;6330:36::-;;;:::i;4636:47::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4636:47:0;;:::i;13032:271::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13032:271:0;;:::i;3696:50::-;;;:::i;5262:38::-;;;:::i;3824:56::-;;;:::i;3440:53::-;;;:::i;12406:303::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4061:60;;;:::i;5128:37::-;;;:::i;12215:185::-;;;:::i;6216:41::-;;;:::i;21298:681::-;;;:::i;5770:45::-;;;:::i;9504:1432::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9504:1432:0;;;;;;;:::i;17049:1209::-;;;:::i;5958:33::-;;;;:::o;5006:::-;;;;:::o;2303:54::-;;;;;;;;;;;;;;:::o;14384:389::-;14450:10;;:37;;;-1:-1:-1;;;14450:37:0;;14481:4;14450:37;;;;;;-1:-1:-1;;;;;14450:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;14450:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14450:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14450:37:0;14443:44;;;14435:94;;;;-1:-1:-1;;;14435:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14555:25;:23;:25::i;:::-;14548:3;:32;;14540:79;;;;-1:-1:-1;;;14540:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14630:10;;:26;;;-1:-1:-1;;;14630:26:0;;;;;;;;;;-1:-1:-1;;;;;14630:10:0;;;;:21;;:26;;;;;:10;;:26;;;;;;;;:10;;:26;;;2:2:-1;;;;27:1;24;17:12;2:2;14630:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14688:10:0;;:37;;;-1:-1:-1;;;14688:37:0;;14719:4;14688:37;;;;;;14672:93;;-1:-1:-1;14683:3:0;;-1:-1:-1;;;;;;14688:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;14688:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14688:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14688:37:0;14727:10;;:37;;;-1:-1:-1;;;14727:37:0;;14758:4;14727:37;;;;;;-1:-1:-1;;;;;14727:10:0;;;;:22;;:37;;;;;14688;;14727;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;14727:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14727:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14727:37:0;14672:93;;;;;;14727:37;14672:93;;;;;;;;;;;;;;;;;;;14384:389;:::o;6507:28::-;;;;:::o;4818:30::-;;;;:::o;2467:237::-;3138:10;3119:18;:30;;;;;;;;;;;3153:1;3119:35;3111:87;;;;-1:-1:-1;;;3111:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2551:15:::1;;2570:1;2551:20;2543:70;;;;-1:-1:-1::0;;;2543:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2624:27:0;::::1;:18;:27:::0;;;::::1;::::0;;;;;;;;2654:1:::1;2624:31:::0;;2671:25;;;;;;;::::1;::::0;;;;;;;;::::1;2467:237:::0;:::o;5502:35::-;;;;:::o;4496:45::-;;;;;;;;;;;;;:::o;15775:965::-;15816:10;15869:25;:23;:25::i;:::-;15847:18;;:47;;15839:94;;;;-1:-1:-1;;;15839:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15955:10;;:37;;;-1:-1:-1;;;15955:37:0;;15986:4;15955:37;;;;;;15944:49;;-1:-1:-1;;;;;15955:10:0;;:22;;:37;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;15955:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15955:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15955:37:0;15944:10;:49::i;:::-;16012:10;;:37;;;-1:-1:-1;;;16012:37:0;;16043:4;16012:37;;;;;;-1:-1:-1;;;;;16012:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;16012:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16012:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16012:37:0;:42;16004:88;;;;-1:-1:-1;;;16004:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16111:16;;:32;;;-1:-1:-1;;;16111:32:0;;;;16155:1;;-1:-1:-1;;;;;16111:16:0;;:30;;:32;;;;;;;;;;;;;;:16;:32;;;2:2:-1;;;;27:1;24;17:12;2:2;16111:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16111:32:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16111:32:0;-1:-1:-1;;;;;16111:46:0;;;16103:104;;;;-1:-1:-1;;;16103:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16226:22;;;16276:16;;16226:68;;;-1:-1:-1;;;16226:68:0;;-1:-1:-1;;;;;16276:16:0;;;16226:68;;;;;;;;:22;;;:41;;:68;;;;;;;;;;;;;;:22;:68;;;2:2:-1;;;;27:1;24;17:12;2:2;16226:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16226:68:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16226:68:0;16298:1;16226:73;16218:139;;;;-1:-1:-1;;;16218:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16376:24;:22;:24::i;:::-;16368:82;;;;-1:-1:-1;;;16368:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16482:48;16491:18;;16511;;16482:8;:48::i;:::-;16461:18;:69;16546:16;;16591:30;;16623:18;;16546:96;;;-1:-1:-1;;;16546:96:0;;16584:4;16546:96;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16546:16:0;;;;:29;;:96;;;;;;;;;;;;;;;:16;;:96;;;2:2:-1;;;;27:1;24;17:12;2:2;16546:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16546:96:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16546:96:0;16674:18;;16694:10;;:37;;;-1:-1:-1;;;16694:37:0;;16725:4;16694:37;;;;;;16546:96;;-1:-1:-1;16546:96:0;;16658:74;;16674:18;-1:-1:-1;;;;;16694:10:0;;:22;;:37;;;;;16546:96;;16694:37;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;16694:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16694:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16694:37:0;16658:74;;;;;;16694:37;16658:74;;;;;;;;;;;;;;;15775:965;:::o;14954:523::-;15042:18;;15035:3;:25;;15027:86;;;;-1:-1:-1;;;15027:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15139:10;;:37;;;-1:-1:-1;;;15139:37:0;;15170:4;15139:37;;;;;;-1:-1:-1;;;;;15139:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;15139:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15139:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15139:37:0;15132:44;;;15124:94;;;;-1:-1:-1;;;15124:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15250:33;15259:18;;15279:3;15250:8;:33::i;:::-;15229:18;:54;15294:10;;:26;;;-1:-1:-1;;;15294:26:0;;;;;;;;;;-1:-1:-1;;;;;15294:10:0;;;;:21;;:26;;;;;:10;;:26;;;;;;;;:10;;:26;;;2:2:-1;;;;27:1;24;17:12;2:2;15294:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15372:18:0;;15392:10;;:37;;;-1:-1:-1;;;15392:37:0;;15423:4;15392:37;;;;;;15336:133;;-1:-1:-1;15367:3:0;;-1:-1:-1;;;;;;15392:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;15392:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15392:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15392:37:0;15431:10;;:37;;;-1:-1:-1;;;15431:37:0;;15462:4;15431:37;;;;;;-1:-1:-1;;;;;15431:10:0;;;;:22;;:37;;;;;15392;;15431;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;15431:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15431:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15431:37:0;15336:133;;;;;;15431:37;15336:133;;;;;;;;;;;;;;;;;;;;;;;;;;14954:523;:::o;6938:30::-;;;;:::o;18631:1213::-;18691:25;;18720:1;18691:30;18683:88;;;;-1:-1:-1;;;18683:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18790:20;;-1:-1:-1;;;;;18790:20:0;18782:85;;;;-1:-1:-1;;;18782:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18910:1;18886:21;;:25;18878:78;;;;-1:-1:-1;;;18878:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18967:37;18978:25;:23;:25::i;:::-;18967:10;:37::i;:::-;19042:55;19051:23;;19076:20;;19042:8;:55::i;:::-;19035:3;:62;;19015:158;;;;-1:-1:-1;;;19015:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19274:10;;:37;;;-1:-1:-1;;;19274:37:0;;19305:4;19274:37;;;;;;19256:95;;19265:70;;-1:-1:-1;;;;;19274:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;19274:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19274:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19274:37:0;19313:21;;19265:8;:70::i;:::-;19337:13;;19256:8;:95::i;:::-;19204:10;;:37;;;-1:-1:-1;;;19204:37:0;;19235:4;19204:37;;;;;;-1:-1:-1;;;;;19204:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;19204:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19204:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19204:37:0;:147;;19184:230;;;;-1:-1:-1;;;19184:230:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19445:25;:23;:25::i;:::-;:30;19425:106;;;;;-1:-1:-1;;;19425:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19568:3;19542:23;:29;;;19582:22;:29;-1:-1:-1;19622:10:0;19670:20;;19692:21;;19622:92;;;-1:-1:-1;;;19622:92:0;;19663:4;19622:92;;;;-1:-1:-1;;;;;19670:20:0;;;19622:92;;;;;;;;;;;;:10;;;;;:32;;:92;;;;;-1:-1:-1;;19622:92:0;;;;;;;-1:-1:-1;19622:10:0;:92;;;2:2:-1;;;;27:1;24;17:12;2:2;19622:92:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;19751:20:0;;19773:23;;19751:20;19798:10;:37;;;-1:-1:-1;;;19798:37:0;;19829:4;19798:37;;;;;;-1:-1:-1;;;;;19751:20:0;;;;-1:-1:-1;19730:106:0;;-1:-1:-1;19773:23:0;;19798:10;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;19798:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19798:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19798:37:0;19730:106;;;;;;19798:37;19730:106;;;;;;;;;;;;;;;18631:1213::o;6807:31::-;;;;:::o;4182:54::-;;;-1:-1:-1;;;;;4182:54:0;;:::o;5636:27::-;;;;:::o;6100:40::-;;;;:::o;6694:30::-;;;;:::o;11140:1043::-;3138:10;3119:18;:30;;;;;;;;;;;3153:1;3119:35;3111:87;;;;-1:-1:-1;;;3111:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11236:9:::1;-1:-1:-1::0;;;11236:34:0::1;11232:894;;;11287:10;::::0;11327:19:::1;::::0;11287:61:::1;::::0;;-1:-1:-1;;;11287:61:0;;-1:-1:-1;;;;;11327:19:0;;::::1;11287:61;::::0;::::1;::::0;;;:10;;;::::1;::::0;:31:::1;::::0;:61;;;;;:10:::1;::::0;:61;;;;;;;:10;;:61;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;11287:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;11363:19:0::1;:51:::0;;-1:-1:-1;;;;;;11363:51:0::1;-1:-1:-1::0;;;;;11363:51:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;11429:10:0;:40:::1;::::0;;-1:-1:-1;;;11429:40:0;;::::1;::::0;::::1;::::0;;;;;:10;::::1;::::0;-1:-1:-1;11429:34:0::1;::::0;-1:-1:-1;11429:40:0;;;;;-1:-1:-1;;11429:40:0;;;;;;;;-1:-1:-1;11429:10:0;:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;11429:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11429:40:0;;;;11232:894;;;11500:9;-1:-1:-1::0;;;11500:32:0::1;11496:630;;;11549:17;:47:::0;;-1:-1:-1;;;;;;11549:47:0::1;-1:-1:-1::0;;;;;11549:47:0;;::::1;::::0;;;::::1;::::0;;;;11611:42:::1;::::0;;-1:-1:-1;;;11611:42:0;;;;:17;;;::::1;::::0;:40:::1;::::0;:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:17;:42;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;11611:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11611:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;11496:630:0::1;::::0;-1:-1:-1;11496:630:0::1;;11684:9;-1:-1:-1::0;;;11684:31:0::1;11680:446;;;11717:16;:45:::0;;-1:-1:-1;;;;;;11717:45:0::1;-1:-1:-1::0;;;;;11717:45:0;::::1;;::::0;;11680:446:::1;;;11782:9;:41;;11778:348;;;11825:26;:33:::0;;-1:-1:-1;;;;;;11825:33:0::1;-1:-1:-1::0;;;;;11825:33:0;::::1;;::::0;;11778:348:::1;;;11878:9;-1:-1:-1::0;;;11878:37:0::1;11874:252;;;11917:22;:57:::0;;-1:-1:-1;;;;;;11917:57:0::1;-1:-1:-1::0;;;;;11917:57:0;::::1;;::::0;;11874:252:::1;;;11994:9;-1:-1:-1::0;;;11994:35:0::1;11990:136;;;12031:20;:27:::0;;-1:-1:-1;;;;;;12031:27:0::1;-1:-1:-1::0;;;;;12031:27:0;::::1;;::::0;;11990:136:::1;;;12074:52;;-1:-1:-1::0;;;12074:52:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11990:136;12142:33;::::0;;-1:-1:-1;;;;;12142:33:0;::::1;::::0;;;;12159:9;;12142:33:::1;::::0;;;;;::::1;::::0;;::::1;11140:1043:::0;;:::o;3269:44::-;;;-1:-1:-1;;;;;3269:44:0;;:::o;5382:34::-;;;;:::o;20180:630::-;3138:10;3119:18;:30;;;;;;;;;;;3153:1;3119:35;3111:87;;;;-1:-1:-1;;;3111:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20248:15:::1;;20267:1;20248:20;20240:70;;;;-1:-1:-1::0;;;20240:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20341:1;20323:15;:19:::0;;;20353:15:::1;:19:::0;;;20383:18:::1;:22:::0;;;20437:3:::1;20418:16;:22:::0;20453:19:::1;::::0;:37:::1;::::0;;-1:-1:-1;;;20453:37:0;;;;-1:-1:-1;;;;;20453:19:0;;::::1;::::0;:35:::1;::::0;:37:::1;::::0;;::::1;::::0;;;;;;20341:1;20453:19;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20453:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20453:37:0;;;;20501:16;;;;;;;;;-1:-1:-1::0;;;;;20501:16:0::1;-1:-1:-1::0;;;;;20501:32:0::1;;:34;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20501:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;20548:10:0::1;::::0;20578:37:::1;::::0;;-1:-1:-1;;;20578:37:0;;20609:4:::1;20578:37;::::0;::::1;::::0;;;-1:-1:-1;;;;;20548:10:0;;::::1;::::0;-1:-1:-1;20548:21:0::1;::::0;-1:-1:-1;20570:85:0::1;::::0;20548:10;;20578:22:::1;::::0;:37;;;;;::::1;::::0;;;;;;;;20548:10;20578:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20578:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20578:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20578:37:0;20617:10:::1;::::0;:37:::1;::::0;;-1:-1:-1;;;20617:37:0;;20648:4:::1;20617:37;::::0;::::1;::::0;;;-1:-1:-1;;;;;20617:10:0;;::::1;::::0;:22:::1;::::0;:37;;;;;20578::::1;::::0;20617;;;;;;;;:10;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20617:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20617:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20617:37:0;20570:7:::1;:85::i;:::-;20548:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20548:108:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;20690:16:0::1;::::0;20708:15:::1;::::0;20725:10:::1;::::0;:37:::1;::::0;;-1:-1:-1;;;20725:37:0;;20756:4:::1;20725:37;::::0;::::1;::::0;;;20674:128:::1;::::0;-1:-1:-1;20690:16:0;;-1:-1:-1;20708:15:0;;-1:-1:-1;;;;;20725:10:0;;::::1;::::0;:22:::1;::::0;:37;;;;;::::1;::::0;;;;;;;;:10;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20725:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20725:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20725:37:0;20764:10:::1;::::0;:37:::1;::::0;;-1:-1:-1;;;20764:37:0;;20795:4:::1;20764:37;::::0;::::1;::::0;;;-1:-1:-1;;;;;20764:10:0;;::::1;::::0;:22:::1;::::0;:37;;;;;20725::::1;::::0;20764;;;;;;;;:10;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20764:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20764:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20764:37:0;20674:128:::1;::::0;;;;;20764:37:::1;20674:128:::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;::::1;20180:630::o:0;13554:544::-;13682:3;13636:42;13645:18;13665:12;;13636:8;:42::i;:::-;:49;;13628:104;;;;-1:-1:-1;;;13628:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13783:1;13751:29;;;:9;:29;;;;;;13743:78;;;;;-1:-1:-1;;;13743:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13859:15;;13876:29;;;;:9;:29;;;;;;13850:56;;13859:15;13850:8;:56::i;:::-;13832:15;:74;;;13917:31;;;;:11;:31;;;;;;;;:44;;-1:-1:-1;;;;;;13917:44:0;13951:10;13917:44;;;13999:9;:29;;;;;;;14030:15;;13977:69;;;;;;;;;;;13994:3;;13977:69;;;;;;;;;14089:1;14057:29;;;:9;:29;;;;;:33;13554:544::o;2823:162::-;3138:10;3119:18;:30;;;;;;;;;;;3153:1;3119:35;3111:87;;;;-1:-1:-1;;;3111:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2902:27:0;::::1;2932:1;2902:27:::0;;;::::1;::::0;;;;;;;:31;;;;2949:28;;;;;;;::::1;::::0;;;;;;;;::::1;2823:162:::0;:::o;3928:51::-;;;-1:-1:-1;;;;;3928:51:0;;:::o;6330:36::-;;;;:::o;4636:47::-;;;;;;;;;;;;-1:-1:-1;;;;;4636:47:0;;:::o;13032:271::-;3138:10;3119:18;:30;;;;;;;;;;;3153:1;3119:35;3111:87;;;;-1:-1:-1;;;3111:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13145:3:::1;13135:14;::::0;;;:9:::1;:14;::::0;;;;;13126:35:::1;::::0;13151:9;13126:8:::1;:35::i;:::-;13119:3;13109:14;::::0;;;:9:::1;:14;::::0;;;;:52;13199:15:::1;::::0;13190:36:::1;::::0;13216:9;13190:8:::1;:36::i;:::-;13172:15;:54:::0;;;13258:3:::1;13263:14;::::0;;;:9:::1;:14;::::0;;;;;;;;;13242:53;;;;;;;::::1;::::0;;;;;;13258:3;;13242:53:::1;::::0;;;;;;;;;::::1;13032:271:::0;:::o;3696:50::-;;;-1:-1:-1;;;;;3696:50:0;;:::o;5262:38::-;;;;:::o;3824:56::-;;;-1:-1:-1;;;;;3824:56:0;;:::o;3440:53::-;;;-1:-1:-1;;;;;3440:53:0;;:::o;12406:303::-;12490:17;;12461:4;;-1:-1:-1;;;;;12490:17:0;12478:57;;-1:-1:-1;12531:4:0;12524:11;;12478:57;12550:17;;;;;;;;;-1:-1:-1;;;;;12550:17:0;-1:-1:-1;;;;;12550:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12550:42:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12550:42:0;;;12546:156;;;;14:27:-1;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;12686:4:0;12679:11;;;;;12546:156;12631:2;-1:-1:-1;12546:156:0;12406:303;:::o;4061:60::-;;;-1:-1:-1;;;;;4061:60:0;;:::o;5128:37::-;;;;:::o;12215:185::-;12316:10;;:37;;;-1:-1:-1;;;12316:37:0;;12347:4;12316:37;;;;;;12271:7;;12298:94;;12307:64;;-1:-1:-1;;;;;12316:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;12316:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12316:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12316:37:0;12355:15;;12307:8;:64::i;:::-;12373:18;;12298:8;:94::i;6216:41::-;;;;:::o;21298:681::-;21367:15;;:20;21359:63;;;;;-1:-1:-1;;;21359:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21488:3;21441:43;21450:16;;21468:15;;21441:8;:43::i;:::-;:50;;21433:99;;;;-1:-1:-1;;;21433:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21543:10;;21573:37;;;-1:-1:-1;;;21573:37:0;;21604:4;21573:37;;;;;;-1:-1:-1;;;;;21543:10:0;;;;:21;;21565:85;;21543:10;;21573:22;;:37;;;;;;;;;;;;;;21543:10;21573:37;;;2:2:-1;;;;27:1;24;17:12;21565:85:0;21543:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21543:108:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;21662:10:0;;21710:26;;21738:37;;;-1:-1:-1;;;21738:37:0;;21703:4;21738:37;;;;;;;;-1:-1:-1;;;;;21662:10:0;;;;-1:-1:-1;21662:32:0;;-1:-1:-1;21703:4:0;;21710:26;;;;21662:10;;21738:22;;:37;;;;;;;;;;;;;;;21662:10;21738:37;;;2:2:-1;;;;27:1;24;17:12;2:2;21738:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21738:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21738:37:0;21662:114;;;-1:-1:-1;;;;;;21662:114:0;;;;;;;-1:-1:-1;;;;;21662:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21662:114:0;;;;;;;-1:-1:-1;21662:114:0;;;;2:2:-1;;;;27:1;24;17:12;2:2;21662:114:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;21834:26:0;;;21873:10;:37;;;-1:-1:-1;;;21873:37:0;;21904:4;21873:37;;;;;;21792:179;;-1:-1:-1;;;;;;21834:26:0;;;;-1:-1:-1;21873:10:0;;;;;:22;;:37;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;21873:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21873:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21873:37:0;21923:10;;:37;;;-1:-1:-1;;;21923:37:0;;21954:4;21923:37;;;;;;-1:-1:-1;;;;;21923:10:0;;;;:22;;:37;;;;;21873;;21923;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;21923:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21923:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21923:37:0;21792:179;;;-1:-1:-1;;;;;21792:179:0;;;;;21923:37;21792:179;;;;;;;;;;;;;;;;;;;21298:681::o;5770:45::-;;;;:::o;9504:1432::-;3138:10;3119:18;:30;;;;;;;;;;;3153:1;3119:35;3111:87;;;;-1:-1:-1;;;3111:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9600:9:::1;-1:-1:-1::0;;;9600:34:0::1;9596:1283;;;9636:19;:26:::0;;;9596:1283:::1;;;9682:9;-1:-1:-1::0;;;9682:35:0::1;9678:1201;;;9719:20;:27:::0;;;9678:1201:::1;;;9766:9;-1:-1:-1::0;;;9766:27:0::1;9762:1117;;;9795:12;:19:::0;;;9762:1117:::1;;;9834:9;:41;;9830:1049;;;9877:26;:33:::0;;;9830:1049:::1;;;9930:9;-1:-1:-1::0;;;9930:36:0::1;9926:953;;;9968:21;:28:::0;;;9926:953:::1;;;10016:9;:40;;10012:867;;;10058:25;:32:::0;;;10012:867:::1;;;10110:9;-1:-1:-1::0;;;10110:33:0::1;10106:773;;;10145:18;:25:::0;;;10106:773:::1;;;10190:9;:45;;10186:693;;;10237:30;:37:::0;;;10186:693:::1;;;10294:9;-1:-1:-1::0;;;10294:28:0::1;10290:589;;;10324:13;:20:::0;;;10290:589:::1;;;10364:9;:38;;10360:519;;;10432:3;10425:4;:10;10417:71;;;;-1:-1:-1::0;;;10417:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10501:23;:30:::0;;;10360:519:::1;;;10562:9;-1:-1:-1::0;;;10562:37:0::1;10558:321;;;10629:3;10622:4;:10;10614:70;;;;-1:-1:-1::0;;;10614:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10697:22;:29:::0;;;10558:321:::1;;;10757:9;-1:-1:-1::0;;;10757:30:0::1;10753:126;;;10789:15;:22:::0;;;10753:126:::1;10895:33;::::0;;;;;;;10912:9;;10895:33:::1;::::0;;;;;::::1;::::0;;::::1;9504:1432:::0;;:::o;17049:1209::-;17093:10;17124:25;;17153:1;17124:30;;17116:87;;;;-1:-1:-1;;;17116:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17251:1;17222:26;;:30;17214:82;;;;-1:-1:-1;;;17214:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17307:37;17318:25;:23;:25::i;17307:37::-;17382:53;17391:22;;17415:19;;17382:8;:53::i;:::-;17375:3;:60;;17355:155;;;;-1:-1:-1;;;17355:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17611:10;;:37;;;-1:-1:-1;;;17611:37:0;;17642:4;17611:37;;;;;;17593:100;;17602:75;;-1:-1:-1;;;;;17611:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;17611:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17611:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17611:37:0;17650:26;;17602:8;:75::i;17593:100::-;17541:10;;:37;;;-1:-1:-1;;;17541:37:0;;17572:4;17541:37;;;;;;-1:-1:-1;;;;;17541:10:0;;;;:22;;:37;;;;;;;;;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;17541:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17541:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17541:37:0;:152;;17521:235;;;;-1:-1:-1;;;17521:235:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17787:25;:23;:25::i;:::-;:30;17767:106;;;;;-1:-1:-1;;;17767:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17892:19;;:35;;;-1:-1:-1;;;17892:35:0;;;;17939:1;;-1:-1:-1;;;;;17892:19:0;;:33;;:35;;;;;;;;;;;;;;:19;:35;;;2:2:-1;;;;27:1;24;17:12;2:2;17892:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17892:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17892:35:0;-1:-1:-1;;;;;17892:49:0;;;17884:110;;;;-1:-1:-1;;;17884:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18031:3;18005:22;:29;;;18045:23;:29;18090:19;;18123:26;;18090:63;;;-1:-1:-1;;;18090:63:0;;;;;;;;;-1:-1:-1;18090:63:0;;;;;;;;-1:-1:-1;;;;;18090:19:0;;;;:32;;:63;;;;;;;;;;;;;;;;;:19;:63;;;2:2:-1;;;;27:1;24;17:12;2:2;18090:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18090:63:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18090:63:0;18188:22;;18212:10;;:37;;;-1:-1:-1;;;18212:37:0;;18243:4;18212:37;;;;;;18090:63;;-1:-1:-1;18090:63:0;;18169:81;;18188:22;-1:-1:-1;;;;;18212:10:0;;:22;;:37;;;;;18090:63;;18212:37;;;;;;;:10;:37;;;2:2:-1;;;;27:1;24;17:12;8852:151:0;8950:5;;;8945:16;;;;8937:58;;;;;-1:-1:-1;;;8937:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8852:151;;;;:::o;9009:152::-;9107:5;;;9102:16;;;;9094:59;;;;;-1:-1:-1;;;9094:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9167:113;9229:9;9263:1;9258;:6;;:14;;9271:1;9258:14;;;9267:1;9258:14;9251:21;9167:113;-1:-1:-1;;;9167:113:0:o

Swarm Source

ipfs://9e5ee131cf804ed7b9ec51496c3b7b7081bd9a7e21a81ab0caa53d2bc2c7bbaf

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The AccountingEngine receives both system surplus and system debt. It covers deficits via debt auctions and disposes off surplus via auctions (Burning/RecyclingSurplusAuctionHouse) or transfers (to extraSurplusReceiver).

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.