diff --git a/.gitignore b/.gitignore index c6788c8..32b4668 100644 --- a/.gitignore +++ b/.gitignore @@ -128,6 +128,14 @@ id_ed25519 ssh_host_* ssh_config +# SSL Keys and certificates - КРИТИЧЕСКИ ВАЖНО! +ssl/keys/ +ssl/certs/ +*.key +*.pem +*.crt +*.p12 + # Docker .dockerignore @@ -146,6 +154,14 @@ debug_*.js test_*.js test-*.js +# Test files - НЕ ПУБЛИКОВАТЬ! +**/test-*.js +**/test_*.js +**/tests/ +**/test/ +test/ +tests/ + # Hardhat artifacts and cache backend/artifacts/ backend/cache/ diff --git a/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json b/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json index 7044467..c3701af 100644 --- a/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json b/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json index 7044467..c3701af 100644 --- a/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json b/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json index 7044467..c3701af 100644 --- a/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json b/backend/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json index abc294d..68fcf57 100644 --- a/backend/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/backend/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json index abc294d..68fcf57 100644 --- a/backend/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json b/backend/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json index 92e356d..862e7fd 100644 --- a/backend/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/backend/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json index 924fcbf..c3701af 100644 --- a/backend/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/5f658ec7c83a39083e0b58539865c835.json" + "buildInfo": "../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json b/backend/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json index 924fcbf..c3701af 100644 --- a/backend/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +++ b/backend/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/5f658ec7c83a39083e0b58539865c835.json" + "buildInfo": "../../../../build-info/169ec88754f8ab831077ca9fbb049cf4.json" } diff --git a/backend/artifacts/build-info/5f658ec7c83a39083e0b58539865c835.json b/backend/artifacts/build-info/5f658ec7c83a39083e0b58539865c835.json deleted file mode 100644 index a7284ef..0000000 --- a/backend/artifacts/build-info/5f658ec7c83a39083e0b58539865c835.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"5f658ec7c83a39083e0b58539865c835","_format":"hh-sol-build-info-1","solcVersion":"0.8.20","solcLongVersion":"0.8.20+commit.a1b79de6","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant NOT_ENTERED = 1;\n uint256 private constant ENTERED = 2;\n\n uint256 private _status;\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n constructor() {\n _status = NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if (_status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n _status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = NOT_ENTERED;\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n return _status == ENTERED;\n }\n}\n"},"contracts/DLE.sol":{"content":"// SPDX-License-Identifier: PROPRIETARY AND MIT\n// Copyright (c) 2024-2025 Тарабанов Александр Викторович\n// All rights reserved.\n//\n// This software is proprietary and confidential.\n// Unauthorized copying, modification, or distribution is prohibited.\n//\n// For licensing inquiries: info@hb3-accelerator.com\n// Website: https://hb3-accelerator.com\n// GitHub: https://github.com/HB3-ACCELERATOR\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\n/**\n * @title DLE (Digital Legal Entity)\n * @dev Основной контракт DLE с модульной архитектурой и мульти-чейн поддержкой\n */\ncontract DLE is ERC20, ReentrancyGuard {\n struct DLEInfo {\n string name;\n string symbol;\n string location;\n string coordinates;\n uint256 jurisdiction;\n uint256 oktmo;\n string[] okvedCodes;\n uint256 kpp;\n uint256 creationTimestamp;\n bool isActive;\n }\n\n struct DLEConfig {\n string name;\n string symbol;\n string location;\n string coordinates;\n uint256 jurisdiction;\n uint256 oktmo;\n string[] okvedCodes;\n uint256 kpp;\n uint256 quorumPercentage;\n address[] initialPartners;\n uint256[] initialAmounts;\n uint256[] supportedChainIds; // Поддерживаемые цепочки\n }\n\n struct Proposal {\n uint256 id;\n string description;\n uint256 forVotes;\n uint256 againstVotes;\n bool executed;\n uint256 deadline;\n address initiator;\n bytes operation; // Операция для исполнения\n mapping(address => bool) hasVoted;\n mapping(uint256 => bool) chainVoteSynced; // Синхронизация голосов между цепочками\n }\n\n struct MultiSigOperation {\n bytes32 operationHash;\n uint256 forSignatures;\n uint256 againstSignatures;\n bool executed;\n uint256 deadline;\n address initiator;\n mapping(address => bool) hasSigned;\n mapping(uint256 => bool) chainSignSynced; // Синхронизация подписей между цепочками\n }\n\n // Основные настройки\n DLEInfo public dleInfo;\n uint256 public quorumPercentage;\n uint256 public proposalCounter;\n uint256 public multiSigCounter;\n uint256 public currentChainId;\n\n // Модули\n mapping(bytes32 => address) public modules;\n mapping(bytes32 => bool) public activeModules;\n\n // Предложения и мультиподписи\n mapping(uint256 => Proposal) public proposals;\n mapping(uint256 => MultiSigOperation) public multiSigOperations;\n\n // Мульти-чейн\n mapping(uint256 => bool) public supportedChains;\n mapping(uint256 => bool) public executedProposals; // Синхронизация исполненных предложений\n mapping(uint256 => bool) public executedMultiSig; // Синхронизация исполненных мультиподписей\n\n // События\n event DLEInitialized(\n string name,\n string symbol,\n string location,\n string coordinates,\n uint256 jurisdiction,\n uint256 oktmo,\n string[] okvedCodes,\n uint256 kpp,\n address tokenAddress,\n uint256[] supportedChainIds\n );\n event InitialTokensDistributed(address[] partners, uint256[] amounts);\n event ProposalCreated(uint256 proposalId, address initiator, string description);\n event ProposalVoted(uint256 proposalId, address voter, bool support, uint256 votingPower);\n event ProposalExecuted(uint256 proposalId, bytes operation);\n event MultiSigOperationCreated(uint256 operationId, address initiator, bytes32 operationHash);\n event MultiSigSigned(uint256 operationId, address signer, bool support, uint256 signaturePower);\n event MultiSigExecuted(uint256 operationId, bytes32 operationHash);\n event ModuleAdded(bytes32 moduleId, address moduleAddress);\n event ModuleRemoved(bytes32 moduleId);\n event CrossChainExecutionSync(uint256 proposalId, uint256 fromChainId, uint256 toChainId);\n event CrossChainVoteSync(uint256 proposalId, uint256 fromChainId, uint256 toChainId);\n event CrossChainMultiSigSync(uint256 operationId, uint256 fromChainId, uint256 toChainId);\n\n constructor(\n DLEConfig memory config,\n uint256 _currentChainId\n ) ERC20(config.name, config.symbol) {\n dleInfo = DLEInfo({\n name: config.name,\n symbol: config.symbol,\n location: config.location,\n coordinates: config.coordinates,\n jurisdiction: config.jurisdiction,\n oktmo: config.oktmo,\n okvedCodes: config.okvedCodes,\n kpp: config.kpp,\n creationTimestamp: block.timestamp,\n isActive: true\n });\n \n quorumPercentage = config.quorumPercentage;\n currentChainId = _currentChainId;\n\n // Настраиваем поддерживаемые цепочки\n for (uint256 i = 0; i < config.supportedChainIds.length; i++) {\n supportedChains[config.supportedChainIds[i]] = true;\n }\n\n // Распределяем начальные токены партнерам\n require(config.initialPartners.length == config.initialAmounts.length, \"Arrays length mismatch\");\n require(config.initialPartners.length > 0, \"No initial partners\");\n \n for (uint256 i = 0; i < config.initialPartners.length; i++) {\n require(config.initialPartners[i] != address(0), \"Zero address\");\n require(config.initialAmounts[i] > 0, \"Zero amount\");\n _mint(config.initialPartners[i], config.initialAmounts[i]);\n }\n \n emit InitialTokensDistributed(config.initialPartners, config.initialAmounts);\n emit DLEInitialized(\n config.name,\n config.symbol,\n config.location,\n config.coordinates,\n config.jurisdiction,\n config.oktmo,\n config.okvedCodes,\n config.kpp,\n address(this),\n config.supportedChainIds\n );\n }\n\n /**\n * @dev Создать предложение с выбором цепочки для кворума\n * @param _description Описание предложения\n * @param _duration Длительность голосования в секундах\n * @param _operation Операция для исполнения\n * @param _governanceChainId ID цепочки для сбора голосов\n */\n function createProposal(\n string memory _description, \n uint256 _duration,\n bytes memory _operation,\n uint256 _governanceChainId\n ) external returns (uint256) {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to create proposal\");\n require(_duration > 0, \"Duration must be positive\");\n require(supportedChains[_governanceChainId], \"Chain not supported\");\n require(checkChainConnection(_governanceChainId), \"Chain not available\");\n\n uint256 proposalId = proposalCounter++;\n Proposal storage proposal = proposals[proposalId];\n \n proposal.id = proposalId;\n proposal.description = _description;\n proposal.forVotes = 0;\n proposal.againstVotes = 0;\n proposal.executed = false;\n proposal.deadline = block.timestamp + _duration;\n proposal.initiator = msg.sender;\n proposal.operation = _operation;\n\n emit ProposalCreated(proposalId, msg.sender, _description);\n return proposalId;\n }\n\n /**\n * @dev Голосовать за предложение\n * @param _proposalId ID предложения\n * @param _support Поддержка предложения\n */\n function vote(uint256 _proposalId, bool _support) external nonReentrant {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n require(block.timestamp < proposal.deadline, \"Voting ended\");\n require(!proposal.executed, \"Proposal already executed\");\n require(!proposal.hasVoted[msg.sender], \"Already voted\");\n require(balanceOf(msg.sender) > 0, \"No tokens to vote\");\n\n uint256 votingPower = balanceOf(msg.sender);\n proposal.hasVoted[msg.sender] = true;\n\n if (_support) {\n proposal.forVotes += votingPower;\n } else {\n proposal.againstVotes += votingPower;\n }\n\n emit ProposalVoted(_proposalId, msg.sender, _support, votingPower);\n }\n\n /**\n * @dev Синхронизировать голос из другой цепочки\n * @param _proposalId ID предложения\n * @param _fromChainId ID цепочки откуда синхронизируем\n * @param _forVotes Голоса за\n * @param _againstVotes Голоса против\n */\n function syncVoteFromChain(\n uint256 _proposalId,\n uint256 _fromChainId,\n uint256 _forVotes,\n uint256 _againstVotes,\n bytes memory /* _proof */\n ) external {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n require(supportedChains[_fromChainId], \"Chain not supported\");\n require(!proposal.chainVoteSynced[_fromChainId], \"Already synced\");\n\n // Здесь должна быть проверка proof (для простоты пропускаем)\n // В реальной реализации нужно проверять доказательство\n\n proposal.forVotes += _forVotes;\n proposal.againstVotes += _againstVotes;\n proposal.chainVoteSynced[_fromChainId] = true;\n\n emit CrossChainVoteSync(_proposalId, _fromChainId, currentChainId);\n }\n\n /**\n * @dev Проверить результат предложения\n * @param _proposalId ID предложения\n * @return passed Прошло ли предложение\n * @return quorumReached Достигнут ли кворум\n */\n function checkProposalResult(uint256 _proposalId) public view returns (bool passed, bool quorumReached) {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n\n uint256 totalVotes = proposal.forVotes + proposal.againstVotes;\n uint256 quorumRequired = (totalSupply() * quorumPercentage) / 100;\n \n quorumReached = totalVotes >= quorumRequired;\n passed = quorumReached && proposal.forVotes > proposal.againstVotes;\n \n return (passed, quorumReached);\n }\n\n /**\n * @dev Исполнить предложение\n * @param _proposalId ID предложения\n */\n function executeProposal(uint256 _proposalId) external {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n require(!proposal.executed, \"Proposal already executed\");\n require(block.timestamp >= proposal.deadline, \"Voting not ended\");\n\n (bool passed, bool quorumReached) = checkProposalResult(_proposalId);\n require(passed && quorumReached, \"Proposal not passed\");\n\n proposal.executed = true;\n \n // Исполняем операцию\n _executeOperation(proposal.operation);\n \n emit ProposalExecuted(_proposalId, proposal.operation);\n }\n\n /**\n * @dev Создать мультиподпись операцию\n * @param _operationHash Хеш операции\n * @param _duration Длительность сбора подписей\n */\n function createMultiSigOperation(\n bytes32 _operationHash,\n uint256 _duration\n ) external returns (uint256) {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to create operation\");\n require(_duration > 0, \"Duration must be positive\");\n\n uint256 operationId = multiSigCounter++;\n MultiSigOperation storage operation = multiSigOperations[operationId];\n \n operation.operationHash = _operationHash;\n operation.forSignatures = 0;\n operation.againstSignatures = 0;\n operation.executed = false;\n operation.deadline = block.timestamp + _duration;\n operation.initiator = msg.sender;\n\n emit MultiSigOperationCreated(operationId, msg.sender, _operationHash);\n return operationId;\n }\n\n /**\n * @dev Подписать мультиподпись операцию\n * @param _operationId ID операции\n * @param _support Поддержка операции\n */\n function signMultiSigOperation(uint256 _operationId, bool _support) external nonReentrant {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n require(block.timestamp < operation.deadline, \"Signing ended\");\n require(!operation.executed, \"Operation already executed\");\n require(!operation.hasSigned[msg.sender], \"Already signed\");\n require(balanceOf(msg.sender) > 0, \"No tokens to sign\");\n\n uint256 signaturePower = balanceOf(msg.sender);\n operation.hasSigned[msg.sender] = true;\n\n if (_support) {\n operation.forSignatures += signaturePower;\n } else {\n operation.againstSignatures += signaturePower;\n }\n\n emit MultiSigSigned(_operationId, msg.sender, _support, signaturePower);\n }\n\n /**\n * @dev Синхронизировать мультиподпись из другой цепочки\n * @param _operationId ID операции\n * @param _fromChainId ID цепочки откуда синхронизируем\n * @param _forSignatures Подписи за\n * @param _againstSignatures Подписи против\n */\n function syncMultiSigFromChain(\n uint256 _operationId,\n uint256 _fromChainId,\n uint256 _forSignatures,\n uint256 _againstSignatures,\n bytes memory /* _proof */\n ) external {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n require(supportedChains[_fromChainId], \"Chain not supported\");\n require(!operation.chainSignSynced[_fromChainId], \"Already synced\");\n\n // Здесь должна быть проверка proof\n // В реальной реализации нужно проверять доказательство\n\n operation.forSignatures += _forSignatures;\n operation.againstSignatures += _againstSignatures;\n operation.chainSignSynced[_fromChainId] = true;\n\n emit CrossChainMultiSigSync(_operationId, _fromChainId, currentChainId);\n }\n\n /**\n * @dev Проверить результат мультиподписи\n * @param _operationId ID операции\n * @return passed Прошла ли операция\n * @return quorumReached Достигнут ли кворум\n */\n function checkMultiSigResult(uint256 _operationId) public view returns (bool passed, bool quorumReached) {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n\n uint256 totalSignatures = operation.forSignatures + operation.againstSignatures;\n uint256 quorumRequired = (totalSupply() * quorumPercentage) / 100;\n \n quorumReached = totalSignatures >= quorumRequired;\n passed = quorumReached && operation.forSignatures > operation.againstSignatures;\n \n return (passed, quorumReached);\n }\n\n /**\n * @dev Исполнить мультиподпись операцию\n * @param _operationId ID операции\n */\n function executeMultiSigOperation(uint256 _operationId) external {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n require(!operation.executed, \"Operation already executed\");\n require(block.timestamp >= operation.deadline, \"Signing not ended\");\n\n (bool passed, bool quorumReached) = checkMultiSigResult(_operationId);\n require(passed && quorumReached, \"Operation not passed\");\n\n operation.executed = true;\n \n emit MultiSigExecuted(_operationId, operation.operationHash);\n }\n\n /**\n * @dev Синхронизировать исполнение из другой цепочки\n * @param _proposalId ID предложения\n * @param _fromChainId ID цепочки откуда синхронизируем\n */\n function syncExecutionFromChain(\n uint256 _proposalId,\n uint256 _fromChainId,\n bytes memory /* _proof */\n ) external {\n require(supportedChains[_fromChainId], \"Chain not supported\");\n require(!executedProposals[_proposalId], \"Already executed\");\n\n // Здесь должна быть проверка proof\n // В реальной реализации нужно проверять доказательство\n\n executedProposals[_proposalId] = true;\n \n // Получаем операцию из предложения\n Proposal storage proposal = proposals[_proposalId];\n if (proposal.id == _proposalId) {\n _executeOperation(proposal.operation);\n }\n\n emit CrossChainExecutionSync(_proposalId, _fromChainId, currentChainId);\n }\n\n /**\n * @dev Проверить подключение к цепочке\n * @param _chainId ID цепочки\n * @return isAvailable Доступна ли цепочка\n */\n function checkChainConnection(uint256 _chainId) public view returns (bool isAvailable) {\n // В реальной реализации здесь должна быть проверка подключения\n // Для примера возвращаем true для поддерживаемых цепочек\n return supportedChains[_chainId];\n }\n\n /**\n * @dev Проверить все подключения перед синхронизацией\n * @param _proposalId ID предложения\n * @return allChainsReady Готовы ли все цепочки\n */\n function checkSyncReadiness(uint256 _proposalId) public view returns (bool allChainsReady) {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n \n // Проверяем все поддерживаемые цепочки\n for (uint256 i = 0; i < getSupportedChainCount(); i++) {\n uint256 chainId = getSupportedChainId(i);\n if (!checkChainConnection(chainId)) {\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * @dev Синхронизация только при 100% готовности\n * @param _proposalId ID предложения\n */\n function syncToAllChains(uint256 _proposalId) external {\n require(checkSyncReadiness(_proposalId), \"Not all chains ready\");\n \n // Выполняем синхронизацию во все цепочки\n for (uint256 i = 0; i < getSupportedChainCount(); i++) {\n uint256 chainId = getSupportedChainId(i);\n syncToChain(_proposalId, chainId);\n }\n \n emit SyncCompleted(_proposalId);\n }\n\n /**\n * @dev Синхронизация в конкретную цепочку\n * @param _proposalId ID предложения\n * @param _chainId ID цепочки\n */\n function syncToChain(uint256 _proposalId, uint256 _chainId) internal {\n // В реальной реализации здесь будет вызов cross-chain bridge\n // Для примера просто эмитим событие\n emit CrossChainExecutionSync(_proposalId, currentChainId, _chainId);\n }\n\n /**\n * @dev Получить количество поддерживаемых цепочек\n */\n function getSupportedChainCount() public pure returns (uint256) {\n // В реальной реализации нужно хранить массив поддерживаемых цепочек\n // Для примера возвращаем 4 (Ethereum, Polygon, BSC, Arbitrum)\n return 4;\n }\n\n /**\n * @dev Получить ID поддерживаемой цепочки по индексу\n * @param _index Индекс цепочки\n */\n function getSupportedChainId(uint256 _index) public pure returns (uint256) {\n if (_index == 0) return 1; // Ethereum\n if (_index == 1) return 137; // Polygon\n if (_index == 2) return 56; // BSC\n if (_index == 3) return 42161; // Arbitrum\n revert(\"Invalid chain index\");\n }\n\n /**\n * @dev Исполнить операцию\n * @param _operation Операция для исполнения\n */\n function _executeOperation(bytes memory _operation) internal {\n // Декодируем операцию\n (bytes4 selector, bytes memory data) = abi.decode(_operation, (bytes4, bytes));\n \n if (selector == bytes4(keccak256(\"transfer(address,uint256)\"))) {\n // Операция передачи токенов\n (address to, uint256 amount) = abi.decode(data, (address, uint256));\n _transfer(msg.sender, to, amount);\n } else if (selector == bytes4(keccak256(\"mint(address,uint256)\"))) {\n // Операция минтинга токенов\n (address to, uint256 amount) = abi.decode(data, (address, uint256));\n _mint(to, amount);\n } else if (selector == bytes4(keccak256(\"burn(address,uint256)\"))) {\n // Операция сжигания токенов\n (address from, uint256 amount) = abi.decode(data, (address, uint256));\n _burn(from, amount);\n } else {\n // Неизвестная операция\n revert(\"Unknown operation\");\n }\n }\n\n /**\n * @dev Добавить модуль\n * @param _moduleId ID модуля\n * @param _moduleAddress Адрес модуля\n */\n function addModule(bytes32 _moduleId, address _moduleAddress) external {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to add module\");\n require(_moduleAddress != address(0), \"Zero address\");\n require(!activeModules[_moduleId], \"Module already exists\");\n\n modules[_moduleId] = _moduleAddress;\n activeModules[_moduleId] = true;\n\n emit ModuleAdded(_moduleId, _moduleAddress);\n }\n\n /**\n * @dev Удалить модуль\n * @param _moduleId ID модуля\n */\n function removeModule(bytes32 _moduleId) external {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to remove module\");\n require(activeModules[_moduleId], \"Module does not exist\");\n\n delete modules[_moduleId];\n activeModules[_moduleId] = false;\n\n emit ModuleRemoved(_moduleId);\n }\n\n /**\n * @dev Получить информацию о DLE\n */\n function getDLEInfo() external view returns (DLEInfo memory) {\n return dleInfo;\n }\n\n /**\n * @dev Проверить, активен ли модуль\n * @param _moduleId ID модуля\n */\n function isModuleActive(bytes32 _moduleId) external view returns (bool) {\n return activeModules[_moduleId];\n }\n\n /**\n * @dev Получить адрес модуля\n * @param _moduleId ID модуля\n */\n function getModuleAddress(bytes32 _moduleId) external view returns (address) {\n return modules[_moduleId];\n }\n\n /**\n * @dev Проверить, поддерживается ли цепочка\n * @param _chainId ID цепочки\n */\n function isChainSupported(uint256 _chainId) external view returns (bool) {\n return supportedChains[_chainId];\n }\n\n /**\n * @dev Получить текущий ID цепочки\n */\n function getCurrentChainId() external view returns (uint256) {\n return currentChainId;\n }\n\n // События для новых функций\n event SyncCompleted(uint256 proposalId);\n} "}},"settings":{"optimizer":{"enabled":true,"runs":200},"viaIR":true,"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"id":137,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"112:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:141:0","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":41,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"290:12:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"309:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":11,"name":"ERC20InsufficientBalance","nameLocation":"629:24:0","nodeType":"ErrorDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"662:6:0","nodeType":"VariableDeclaration","scope":11,"src":"654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"678:7:0","nodeType":"VariableDeclaration","scope":11,"src":"670:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"695:6:0","nodeType":"VariableDeclaration","scope":11,"src":"687:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:0"},"src":"623:80:0"},{"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"709:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":16,"name":"ERC20InvalidSender","nameLocation":"872:18:0","nodeType":"ErrorDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"899:6:0","nodeType":"VariableDeclaration","scope":16,"src":"891:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:0"},"src":"866:41:0"},{"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"913:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":21,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:0","nodeType":"ErrorDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1104:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:0"},"src":"1077:45:0"},{"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1128:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":30,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:0","nodeType":"ErrorDefinition","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1519:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1511:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1528:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1555:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1547:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:0"},"src":"1478:85:0"},{"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1569:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":35,"name":"ERC20InvalidApprover","nameLocation":"1754:20:0","nodeType":"ErrorDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1783:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1775:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:0"},"src":"1748:45:0"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1799:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":40,"name":"ERC20InvalidSpender","nameLocation":"2005:19:0","nodeType":"ErrorDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2033:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2025:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:0"},"src":"1999:43:0"}],"scope":137,"src":"280:1764:0","usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2046:143:0","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":89,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2200:13:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2220:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":47,"name":"ERC721InvalidOwner","nameLocation":"2450:18:0","nodeType":"ErrorDefinition","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2477:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2469:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:0"},"src":"2444:40:0"},{"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2490:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":52,"name":"ERC721NonexistentToken","nameLocation":"2633:22:0","nodeType":"ErrorDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2656:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:0"},"src":"2627:46:0"},{"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2679:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":61,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:0","nodeType":"ErrorDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3008:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3000:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3041:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3033:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:0"},"src":"2973:75:0"},{"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3054:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":66,"name":"ERC721InvalidSender","nameLocation":"3217:19:0","nodeType":"ErrorDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3245:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3237:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:0"},"src":"3211:42:0"},{"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3259:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":71,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:0","nodeType":"ErrorDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3451:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:0"},"src":"3423:46:0"},{"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3475:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":78,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:0","nodeType":"ErrorDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3768:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3760:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3778:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:0"},"src":"3727:68:0"},{"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3801:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":83,"name":"ERC721InvalidApprover","nameLocation":"3986:21:0","nodeType":"ErrorDefinition","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4016:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4008:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:0"},"src":"3980:46:0"},{"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4032:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":88,"name":"ERC721InvalidOperator","nameLocation":"4240:21:0","nodeType":"ErrorDefinition","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4270:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4262:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:0"},"src":"4234:46:0"}],"scope":137,"src":"2190:2092:0","usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4284:145:0","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":136,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4440:14:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4461:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":101,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:0","nodeType":"ErrorDefinition","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4868:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4860:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4884:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4876:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4901:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4893:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4909:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:0"},"src":"4827:99:0"},{"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4932:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":106,"name":"ERC1155InvalidSender","nameLocation":"5095:20:0","nodeType":"ErrorDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5124:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5116:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:0"},"src":"5089:43:0"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5138:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":111,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:0","nodeType":"ErrorDefinition","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5331:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:0"},"src":"5302:47:0"},{"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5355:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":118,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:0","nodeType":"ErrorDefinition","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5659:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5651:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5677:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5669:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:0"},"src":"5616:68:0"},{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5690:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":123,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:0","nodeType":"ErrorDefinition","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5906:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5898:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:0"},"src":"5869:47:0"},{"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5922:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":128,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:0","nodeType":"ErrorDefinition","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6161:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6153:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:0"},"src":"6124:47:0"},{"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6177:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":135,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:0","nodeType":"ErrorDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6494:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6513:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:0"},"src":"6462:73:0"}],"scope":137,"src":"4430:2107:0","usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"src":"112:6426:0"},"id":0},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[785],"ERC20":[651],"IERC20":[729],"IERC20Errors":[41],"IERC20Metadata":[755]},"id":652,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":138,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:1"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":140,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":730,"src":"131:36:1","symbolAliases":[{"foreign":{"id":139,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"139:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":142,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":756,"src":"168:63:1","symbolAliases":[{"foreign":{"id":141,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"176:14:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":144,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":786,"src":"232:48:1","symbolAliases":[{"foreign":{"id":143,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"240:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":146,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":137,"src":"281:65:1","symbolAliases":[{"foreign":{"id":145,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"289:12:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":148,"name":"Context","nameLocations":["1133:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":785,"src":"1133:7:1"},"id":149,"nodeType":"InheritanceSpecifier","src":"1133:7:1"},{"baseName":{"id":150,"name":"IERC20","nameLocations":["1142:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":729,"src":"1142:6:1"},"id":151,"nodeType":"InheritanceSpecifier","src":"1142:6:1"},{"baseName":{"id":152,"name":"IERC20Metadata","nameLocations":["1150:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":755,"src":"1150:14:1"},"id":153,"nodeType":"InheritanceSpecifier","src":"1150:14:1"},{"baseName":{"id":154,"name":"IERC20Errors","nameLocations":["1166:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"1166:12:1"},"id":155,"nodeType":"InheritanceSpecifier","src":"1166:12:1"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"348:757:1","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":651,"linearizedBaseContracts":[651,41,755,729,785],"name":"ERC20","nameLocation":"1124:5:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":159,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:1","nodeType":"VariableDeclaration","scope":651,"src":"1185:53:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":158,"keyName":"account","keyNameLocation":"1201:7:1","keyType":{"id":156,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":165,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:1","nodeType":"VariableDeclaration","scope":651,"src":"1245:83:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":164,"keyName":"account","keyNameLocation":"1261:7:1","keyType":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":163,"keyName":"spender","keyNameLocation":"1288:7:1","keyType":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":167,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:1","nodeType":"VariableDeclaration","scope":651,"src":"1335:28:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":166,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":169,"mutability":"mutable","name":"_name","nameLocation":"1385:5:1","nodeType":"VariableDeclaration","scope":651,"src":"1370:20:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":168,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":171,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:1","nodeType":"VariableDeclaration","scope":651,"src":"1396:22:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":170,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":187,"nodeType":"Block","src":"1638:57:1","statements":[{"expression":{"id":181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":179,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1648:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":180,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"1656:5:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":182,"nodeType":"ExpressionStatement","src":"1648:13:1"},{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":183,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1671:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":184,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"1681:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":186,"nodeType":"ExpressionStatement","src":"1671:17:1"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"1425:152:1","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":188,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"name_","nameLocation":"1608:5:1","nodeType":"VariableDeclaration","scope":188,"src":"1594:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":173,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:1","nodeType":"VariableDeclaration","scope":188,"src":"1615:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":175,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:1"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[],"src":"1638:0:1"},"scope":651,"src":"1582:113:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[742],"body":{"id":196,"nodeType":"Block","src":"1820:29:1","statements":[{"expression":{"id":194,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1837:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":193,"id":195,"nodeType":"Return","src":"1830:12:1"}]},"documentation":{"id":189,"nodeType":"StructuredDocumentation","src":"1701:54:1","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":197,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:1","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"1773:2:1"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":197,"src":"1805:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":191,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:1"},"scope":651,"src":"1760:89:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[748],"body":{"id":205,"nodeType":"Block","src":"2024:31:1","statements":[{"expression":{"id":203,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"2041:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":202,"id":204,"nodeType":"Return","src":"2034:14:1"}]},"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"1855:102:1","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":206,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:1","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"1977:2:1"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":206,"src":"2009:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":200,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:1"},"scope":651,"src":"1962:93:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[754],"body":{"id":214,"nodeType":"Block","src":"2744:26:1","statements":[{"expression":{"hexValue":"3138","id":212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:1","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":211,"id":213,"nodeType":"Return","src":"2754:9:1"}]},"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"2061:622:1","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"2705:2:1"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"2737:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":209,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:1"},"scope":651,"src":"2688:82:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[678],"body":{"id":223,"nodeType":"Block","src":"2864:36:1","statements":[{"expression":{"id":221,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"2881:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":220,"id":222,"nodeType":"Return","src":"2874:19:1"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"2776:22:1","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":224,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2812:11:1","nodeType":"FunctionDefinition","parameters":{"id":217,"nodeType":"ParameterList","parameters":[],"src":"2823:2:1"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":219,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":224,"src":"2855:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":218,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2854:9:1"},"scope":651,"src":"2803:97:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[686],"body":{"id":236,"nodeType":"Block","src":"3007:42:1","statements":[{"expression":{"baseExpression":{"id":232,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"3024:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":234,"indexExpression":{"id":233,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"3034:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":231,"id":235,"nodeType":"Return","src":"3017:25:1"}]},"documentation":{"id":225,"nodeType":"StructuredDocumentation","src":"2906:22:1","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":237,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2942:9:1","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"account","nameLocation":"2960:7:1","nodeType":"VariableDeclaration","scope":237,"src":"2952:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":226,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2951:17:1"},"returnParameters":{"id":231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":237,"src":"2998:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":229,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2997:9:1"},"scope":651,"src":"2933:116:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[696],"body":{"id":260,"nodeType":"Block","src":"3319:103:1","statements":[{"assignments":[248],"declarations":[{"constant":false,"id":248,"mutability":"mutable","name":"owner","nameLocation":"3337:5:1","nodeType":"VariableDeclaration","scope":260,"src":"3329:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":247,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":251,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":249,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"3345:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3329:28:1"},{"expression":{"arguments":[{"id":253,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"3377:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":254,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"3384:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"3388:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":252,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"3367:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"ExpressionStatement","src":"3367:27:1"},{"expression":{"hexValue":"74727565","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3411:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":246,"id":259,"nodeType":"Return","src":"3404:11:1"}]},"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"3055:184:1","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":261,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3253:8:1","nodeType":"FunctionDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"to","nameLocation":"3270:2:1","nodeType":"VariableDeclaration","scope":261,"src":"3262:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"3262:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":242,"mutability":"mutable","name":"value","nameLocation":"3282:5:1","nodeType":"VariableDeclaration","scope":261,"src":"3274:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":241,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3261:27:1"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":261,"src":"3313:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":244,"name":"bool","nodeType":"ElementaryTypeName","src":"3313:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3312:6:1"},"scope":651,"src":"3244:178:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[706],"body":{"id":277,"nodeType":"Block","src":"3544:51:1","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":271,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165,"src":"3561:11:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":273,"indexExpression":{"id":272,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":264,"src":"3573:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":275,"indexExpression":{"id":274,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"3580:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":270,"id":276,"nodeType":"Return","src":"3554:34:1"}]},"documentation":{"id":262,"nodeType":"StructuredDocumentation","src":"3428:22:1","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":278,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3464:9:1","nodeType":"FunctionDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"mutability":"mutable","name":"owner","nameLocation":"3482:5:1","nodeType":"VariableDeclaration","scope":278,"src":"3474:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":263,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":266,"mutability":"mutable","name":"spender","nameLocation":"3497:7:1","nodeType":"VariableDeclaration","scope":278,"src":"3489:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"3489:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3473:32:1"},"returnParameters":{"id":270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"3535:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":268,"name":"uint256","nodeType":"ElementaryTypeName","src":"3535:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:9:1"},"scope":651,"src":"3455:140:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[716],"body":{"id":301,"nodeType":"Block","src":"3981:107:1","statements":[{"assignments":[289],"declarations":[{"constant":false,"id":289,"mutability":"mutable","name":"owner","nameLocation":"3999:5:1","nodeType":"VariableDeclaration","scope":301,"src":"3991:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":288,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":292,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":290,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"4007:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3991:28:1"},{"expression":{"arguments":[{"id":294,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"4038:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":295,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"4045:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":283,"src":"4054:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":293,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[542,602],"referencedDeclaration":542,"src":"4029:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":298,"nodeType":"ExpressionStatement","src":"4029:31:1"},{"expression":{"hexValue":"74727565","id":299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4077:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":287,"id":300,"nodeType":"Return","src":"4070:11:1"}]},"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"3601:296:1","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":302,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3911:7:1","nodeType":"FunctionDefinition","parameters":{"id":284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":281,"mutability":"mutable","name":"spender","nameLocation":"3927:7:1","nodeType":"VariableDeclaration","scope":302,"src":"3919:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"value","nameLocation":"3944:5:1","nodeType":"VariableDeclaration","scope":302,"src":"3936:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3918:32:1"},"returnParameters":{"id":287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":286,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":302,"src":"3975:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":285,"name":"bool","nodeType":"ElementaryTypeName","src":"3975:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3974:6:1"},"scope":651,"src":"3902:186:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[728],"body":{"id":333,"nodeType":"Block","src":"4773:151:1","statements":[{"assignments":[315],"declarations":[{"constant":false,"id":315,"mutability":"mutable","name":"spender","nameLocation":"4791:7:1","nodeType":"VariableDeclaration","scope":333,"src":"4783:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":318,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":316,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"4801:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4783:30:1"},{"expression":{"arguments":[{"id":320,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"4839:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":321,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"4845:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":322,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"4854:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":319,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"4823:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":324,"nodeType":"ExpressionStatement","src":"4823:37:1"},{"expression":{"arguments":[{"id":326,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"4880:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":327,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"4886:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":328,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"4890:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":325,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"4870:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":330,"nodeType":"ExpressionStatement","src":"4870:26:1"},{"expression":{"hexValue":"74727565","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4913:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":313,"id":332,"nodeType":"Return","src":"4906:11:1"}]},"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"4094:581:1","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":334,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4689:12:1","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"from","nameLocation":"4710:4:1","nodeType":"VariableDeclaration","scope":334,"src":"4702:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":304,"name":"address","nodeType":"ElementaryTypeName","src":"4702:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":307,"mutability":"mutable","name":"to","nameLocation":"4724:2:1","nodeType":"VariableDeclaration","scope":334,"src":"4716:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":306,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":309,"mutability":"mutable","name":"value","nameLocation":"4736:5:1","nodeType":"VariableDeclaration","scope":334,"src":"4728:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:41:1"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":334,"src":"4767:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":311,"name":"bool","nodeType":"ElementaryTypeName","src":"4767:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4766:6:1"},"scope":651,"src":"4680:244:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":380,"nodeType":"Block","src":"5366:231:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":344,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"5380:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5396:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5388:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":345,"name":"address","nodeType":"ElementaryTypeName","src":"5388:7:1","typeDescriptions":{}}},"id":348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5380:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":358,"nodeType":"IfStatement","src":"5376:86:1","trueBody":{"id":357,"nodeType":"Block","src":"5400:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5440:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":351,"name":"address","nodeType":"ElementaryTypeName","src":"5440:7:1","typeDescriptions":{}}},"id":354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5440:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":350,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"5421:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"RevertStatement","src":"5414:37:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":359,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"5475:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5489:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5481:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":360,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:1","typeDescriptions":{}}},"id":363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5475:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":373,"nodeType":"IfStatement","src":"5471:86:1","trueBody":{"id":372,"nodeType":"Block","src":"5493:64:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:1","typeDescriptions":{}}},"id":369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":365,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"5514:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"RevertStatement","src":"5507:39:1"}]}},{"expression":{"arguments":[{"id":375,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"5574:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":376,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"5580:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"5584:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":374,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"5566:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":379,"nodeType":"ExpressionStatement","src":"5566:24:1"}]},"documentation":{"id":335,"nodeType":"StructuredDocumentation","src":"4930:362:1","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":381,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5306:9:1","nodeType":"FunctionDefinition","parameters":{"id":342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":337,"mutability":"mutable","name":"from","nameLocation":"5324:4:1","nodeType":"VariableDeclaration","scope":381,"src":"5316:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":339,"mutability":"mutable","name":"to","nameLocation":"5338:2:1","nodeType":"VariableDeclaration","scope":381,"src":"5330:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":338,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":341,"mutability":"mutable","name":"value","nameLocation":"5350:5:1","nodeType":"VariableDeclaration","scope":381,"src":"5342:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":340,"name":"uint256","nodeType":"ElementaryTypeName","src":"5342:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:41:1"},"returnParameters":{"id":343,"nodeType":"ParameterList","parameters":[],"src":"5366:0:1"},"scope":651,"src":"5297:300:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":457,"nodeType":"Block","src":"5987:1032:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":391,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6001:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6009:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"6009:7:1","typeDescriptions":{}}},"id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6001:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":428,"nodeType":"Block","src":"6175:362:1","statements":[{"assignments":[403],"declarations":[{"constant":false,"id":403,"mutability":"mutable","name":"fromBalance","nameLocation":"6197:11:1","nodeType":"VariableDeclaration","scope":428,"src":"6189:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":402,"name":"uint256","nodeType":"ElementaryTypeName","src":"6189:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":407,"initialValue":{"baseExpression":{"id":404,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"6211:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":406,"indexExpression":{"id":405,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6221:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6189:37:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":408,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"6244:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6258:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6244:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":418,"nodeType":"IfStatement","src":"6240:115:1","trueBody":{"id":417,"nodeType":"Block","src":"6265:90:1","statements":[{"errorCall":{"arguments":[{"id":412,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6315:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":413,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"6321:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6334:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":411,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"6290:24:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":416,"nodeType":"RevertStatement","src":"6283:57:1"}]}},{"id":427,"nodeType":"UncheckedBlock","src":"6368:159:1","statements":[{"expression":{"id":425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":419,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"6475:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":421,"indexExpression":{"id":420,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6485:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":422,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"6493:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6507:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:19:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:37:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":426,"nodeType":"ExpressionStatement","src":"6475:37:1"}]}]},"id":429,"nodeType":"IfStatement","src":"5997:540:1","trueBody":{"id":401,"nodeType":"Block","src":"6021:148:1","statements":[{"expression":{"id":399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":397,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"6137:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6153:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6137:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":400,"nodeType":"ExpressionStatement","src":"6137:21:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":430,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"6551:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":431,"name":"address","nodeType":"ElementaryTypeName","src":"6557:7:1","typeDescriptions":{}}},"id":434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6551:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":449,"nodeType":"Block","src":"6766:206:1","statements":[{"id":448,"nodeType":"UncheckedBlock","src":"6780:182:1","statements":[{"expression":{"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":442,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"6925:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":444,"indexExpression":{"id":443,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"6935:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6925:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6942:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":447,"nodeType":"ExpressionStatement","src":"6925:22:1"}]}]},"id":450,"nodeType":"IfStatement","src":"6547:425:1","trueBody":{"id":441,"nodeType":"Block","src":"6569:191:1","statements":[{"id":440,"nodeType":"UncheckedBlock","src":"6583:167:1","statements":[{"expression":{"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":436,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"6714:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6730:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6714:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":439,"nodeType":"ExpressionStatement","src":"6714:21:1"}]}]}},{"eventCall":{"arguments":[{"id":452,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6996:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":453,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"7002:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7006:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":451,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"6987:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":456,"nodeType":"EmitStatement","src":"6982:30:1"}]},"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"5603:304:1","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":458,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5921:7:1","nodeType":"FunctionDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"from","nameLocation":"5937:4:1","nodeType":"VariableDeclaration","scope":458,"src":"5929:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":383,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":386,"mutability":"mutable","name":"to","nameLocation":"5951:2:1","nodeType":"VariableDeclaration","scope":458,"src":"5943:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"value","nameLocation":"5963:5:1","nodeType":"VariableDeclaration","scope":458,"src":"5955:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5928:41:1"},"returnParameters":{"id":390,"nodeType":"ParameterList","parameters":[],"src":"5987:0:1"},"scope":651,"src":"5912:1107:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":490,"nodeType":"Block","src":"7418:152:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":466,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"7432:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":467,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:1","typeDescriptions":{}}},"id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7432:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":480,"nodeType":"IfStatement","src":"7428:91:1","trueBody":{"id":479,"nodeType":"Block","src":"7455:64:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7505:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7497:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":473,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:1","typeDescriptions":{}}},"id":476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7497:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":472,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"7476:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7476:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":478,"nodeType":"RevertStatement","src":"7469:39:1"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7544:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7536:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":482,"name":"address","nodeType":"ElementaryTypeName","src":"7536:7:1","typeDescriptions":{}}},"id":485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":486,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"7548:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"7557:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":481,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"7528:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":489,"nodeType":"ExpressionStatement","src":"7528:35:1"}]},"documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"7025:332:1","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":491,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7371:5:1","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"account","nameLocation":"7385:7:1","nodeType":"VariableDeclaration","scope":491,"src":"7377:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"7377:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":463,"mutability":"mutable","name":"value","nameLocation":"7402:5:1","nodeType":"VariableDeclaration","scope":491,"src":"7394:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":462,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:32:1"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"7418:0:1"},"scope":651,"src":"7362:208:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":523,"nodeType":"Block","src":"7944:150:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":499,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":494,"src":"7958:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7969:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"7969:7:1","typeDescriptions":{}}},"id":503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7969:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7958:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"7954:89:1","trueBody":{"id":512,"nodeType":"Block","src":"7981:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8021:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:1","typeDescriptions":{}}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8021:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":505,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"8002:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8002:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":511,"nodeType":"RevertStatement","src":"7995:37:1"}]}},{"expression":{"arguments":[{"id":515,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":494,"src":"8060:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8077:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8069:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"8069:7:1","typeDescriptions":{}}},"id":519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"8081:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":514,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"8052:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"8052:35:1"}]},"documentation":{"id":492,"nodeType":"StructuredDocumentation","src":"7576:307:1","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":524,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7897:5:1","nodeType":"FunctionDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"mutability":"mutable","name":"account","nameLocation":"7911:7:1","nodeType":"VariableDeclaration","scope":524,"src":"7903:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":493,"name":"address","nodeType":"ElementaryTypeName","src":"7903:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":496,"mutability":"mutable","name":"value","nameLocation":"7928:5:1","nodeType":"VariableDeclaration","scope":524,"src":"7920:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":495,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7902:32:1"},"returnParameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"7944:0:1"},"scope":651,"src":"7888:206:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":541,"nodeType":"Block","src":"8704:54:1","statements":[{"expression":{"arguments":[{"id":535,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":527,"src":"8723:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":536,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"8730:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"8739:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8746:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":534,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[542,602],"referencedDeclaration":602,"src":"8714:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8714:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":540,"nodeType":"ExpressionStatement","src":"8714:37:1"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"8100:525:1","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":542,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8639:8:1","nodeType":"FunctionDefinition","parameters":{"id":532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":527,"mutability":"mutable","name":"owner","nameLocation":"8656:5:1","nodeType":"VariableDeclaration","scope":542,"src":"8648:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":526,"name":"address","nodeType":"ElementaryTypeName","src":"8648:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":529,"mutability":"mutable","name":"spender","nameLocation":"8671:7:1","nodeType":"VariableDeclaration","scope":542,"src":"8663:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":528,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":531,"mutability":"mutable","name":"value","nameLocation":"8688:5:1","nodeType":"VariableDeclaration","scope":542,"src":"8680:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":530,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8647:47:1"},"returnParameters":{"id":533,"nodeType":"ParameterList","parameters":[],"src":"8704:0:1"},"scope":651,"src":"8630:128:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":601,"nodeType":"Block","src":"9703:334:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":554,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"9717:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9734:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9726:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":555,"name":"address","nodeType":"ElementaryTypeName","src":"9726:7:1","typeDescriptions":{}}},"id":558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9726:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9717:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":568,"nodeType":"IfStatement","src":"9713:89:1","trueBody":{"id":567,"nodeType":"Block","src":"9738:64:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9788:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9780:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"9780:7:1","typeDescriptions":{}}},"id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9780:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":560,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"9759:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9759:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"RevertStatement","src":"9752:39:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":569,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"9815:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9834:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9826:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"9826:7:1","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9826:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9815:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":583,"nodeType":"IfStatement","src":"9811:90:1","trueBody":{"id":582,"nodeType":"Block","src":"9838:63:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9887:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9879:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"9879:7:1","typeDescriptions":{}}},"id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9879:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":575,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"9859:19:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9859:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":581,"nodeType":"RevertStatement","src":"9852:38:1"}]}},{"expression":{"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":584,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165,"src":"9910:11:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":587,"indexExpression":{"id":585,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"9922:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9910:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":588,"indexExpression":{"id":586,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"9929:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9910:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"9940:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9910:35:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":591,"nodeType":"ExpressionStatement","src":"9910:35:1"},{"condition":{"id":592,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"9959:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":600,"nodeType":"IfStatement","src":"9955:76:1","trueBody":{"id":599,"nodeType":"Block","src":"9970:61:1","statements":[{"eventCall":{"arguments":[{"id":594,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"9998:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":595,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"10005:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":596,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"10014:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":593,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"9989:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9989:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":598,"nodeType":"EmitStatement","src":"9984:36:1"}]}}]},"documentation":{"id":543,"nodeType":"StructuredDocumentation","src":"8764:836:1","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":602,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9614:8:1","nodeType":"FunctionDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"owner","nameLocation":"9631:5:1","nodeType":"VariableDeclaration","scope":602,"src":"9623:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"9623:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":547,"mutability":"mutable","name":"spender","nameLocation":"9646:7:1","nodeType":"VariableDeclaration","scope":602,"src":"9638:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":546,"name":"address","nodeType":"ElementaryTypeName","src":"9638:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":549,"mutability":"mutable","name":"value","nameLocation":"9663:5:1","nodeType":"VariableDeclaration","scope":602,"src":"9655:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":548,"name":"uint256","nodeType":"ElementaryTypeName","src":"9655:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":551,"mutability":"mutable","name":"emitEvent","nameLocation":"9675:9:1","nodeType":"VariableDeclaration","scope":602,"src":"9670:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":550,"name":"bool","nodeType":"ElementaryTypeName","src":"9670:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9622:63:1"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"9703:0:1"},"scope":651,"src":"9605:432:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":649,"nodeType":"Block","src":"10408:387:1","statements":[{"assignments":[613],"declarations":[{"constant":false,"id":613,"mutability":"mutable","name":"currentAllowance","nameLocation":"10426:16:1","nodeType":"VariableDeclaration","scope":649,"src":"10418:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":612,"name":"uint256","nodeType":"ElementaryTypeName","src":"10418:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":618,"initialValue":{"arguments":[{"id":615,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"10455:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":616,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10462:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":614,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"10445:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10445:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10418:52:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":619,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10484:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10508:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":621,"name":"uint256","nodeType":"ElementaryTypeName","src":"10508:7:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":620,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10503:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10503:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10517:3:1","memberName":"max","nodeType":"MemberAccess","src":"10503:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10484:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":648,"nodeType":"IfStatement","src":"10480:309:1","trueBody":{"id":647,"nodeType":"Block","src":"10522:267:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":626,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10540:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"10559:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10540:24:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":636,"nodeType":"IfStatement","src":"10536:130:1","trueBody":{"id":635,"nodeType":"Block","src":"10566:100:1","statements":[{"errorCall":{"arguments":[{"id":630,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10618:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":631,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10627:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"10645:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":629,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"10591:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10591:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":634,"nodeType":"RevertStatement","src":"10584:67:1"}]}},{"id":646,"nodeType":"UncheckedBlock","src":"10679:100:1","statements":[{"expression":{"arguments":[{"id":638,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"10716:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":639,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10723:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":640,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10732:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"10751:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10732:24:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10758:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":637,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[542,602],"referencedDeclaration":602,"src":"10707:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10707:57:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":645,"nodeType":"ExpressionStatement","src":"10707:57:1"}]}]}}]},"documentation":{"id":603,"nodeType":"StructuredDocumentation","src":"10043:271:1","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":650,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10328:15:1","nodeType":"FunctionDefinition","parameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"owner","nameLocation":"10352:5:1","nodeType":"VariableDeclaration","scope":650,"src":"10344:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":604,"name":"address","nodeType":"ElementaryTypeName","src":"10344:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"spender","nameLocation":"10367:7:1","nodeType":"VariableDeclaration","scope":650,"src":"10359:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"10359:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"value","nameLocation":"10384:5:1","nodeType":"VariableDeclaration","scope":650,"src":"10376:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":608,"name":"uint256","nodeType":"ElementaryTypeName","src":"10376:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10343:47:1"},"returnParameters":{"id":611,"nodeType":"ParameterList","parameters":[],"src":"10408:0:1"},"scope":651,"src":"10319:476:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":652,"src":"1106:9691:1","usedErrors":[11,16,21,30,35,40],"usedEvents":[663,672]}],"src":"105:10693:1"},"id":1},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[729]},"id":730,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":653,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":654,"nodeType":"StructuredDocumentation","src":"133:71:2","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":729,"linearizedBaseContracts":[729],"name":"IERC20","nameLocation":"215:6:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":655,"nodeType":"StructuredDocumentation","src":"228:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":663,"name":"Transfer","nameLocation":"397:8:2","nodeType":"EventDefinition","parameters":{"id":662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:2","nodeType":"VariableDeclaration","scope":663,"src":"406:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":656,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":659,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:2","nodeType":"VariableDeclaration","scope":663,"src":"428:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":658,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":661,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:2","nodeType":"VariableDeclaration","scope":663,"src":"448:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":660,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:2"},"src":"391:72:2"},{"anonymous":false,"documentation":{"id":664,"nodeType":"StructuredDocumentation","src":"469:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":672,"name":"Approval","nameLocation":"628:8:2","nodeType":"EventDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":666,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:2","nodeType":"VariableDeclaration","scope":672,"src":"637:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":665,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":668,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:2","nodeType":"VariableDeclaration","scope":672,"src":"660:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":667,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":670,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:2","nodeType":"VariableDeclaration","scope":672,"src":"685:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:2"},"src":"622:78:2"},{"documentation":{"id":673,"nodeType":"StructuredDocumentation","src":"706:65:2","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":678,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:2","nodeType":"FunctionDefinition","parameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"796:2:2"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":678,"src":"822:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:2"},"scope":729,"src":"776:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":679,"nodeType":"StructuredDocumentation","src":"837:71:2","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":686,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:2","nodeType":"FunctionDefinition","parameters":{"id":682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":681,"mutability":"mutable","name":"account","nameLocation":"940:7:2","nodeType":"VariableDeclaration","scope":686,"src":"932:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":680,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:2"},"returnParameters":{"id":685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":686,"src":"972:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":683,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:2"},"scope":729,"src":"913:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":687,"nodeType":"StructuredDocumentation","src":"987:213:2","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":696,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:2","nodeType":"FunctionDefinition","parameters":{"id":692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"to","nameLocation":"1231:2:2","nodeType":"VariableDeclaration","scope":696,"src":"1223:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":688,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":691,"mutability":"mutable","name":"value","nameLocation":"1243:5:2","nodeType":"VariableDeclaration","scope":696,"src":"1235:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":690,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:2"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":696,"src":"1268:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":693,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:2"},"scope":729,"src":"1205:69:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":697,"nodeType":"StructuredDocumentation","src":"1280:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":706,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:2","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"owner","nameLocation":"1576:5:2","nodeType":"VariableDeclaration","scope":706,"src":"1568:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":701,"mutability":"mutable","name":"spender","nameLocation":"1591:7:2","nodeType":"VariableDeclaration","scope":706,"src":"1583:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":700,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:2"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":706,"src":"1623:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":703,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:2"},"scope":729,"src":"1549:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":707,"nodeType":"StructuredDocumentation","src":"1638:667:2","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":716,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:2","nodeType":"FunctionDefinition","parameters":{"id":712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":709,"mutability":"mutable","name":"spender","nameLocation":"2335:7:2","nodeType":"VariableDeclaration","scope":716,"src":"2327:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":708,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":711,"mutability":"mutable","name":"value","nameLocation":"2352:5:2","nodeType":"VariableDeclaration","scope":716,"src":"2344:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":710,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:2"},"returnParameters":{"id":715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":716,"src":"2377:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":713,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:2"},"scope":729,"src":"2310:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":717,"nodeType":"StructuredDocumentation","src":"2389:297:2","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":728,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:2","nodeType":"FunctionDefinition","parameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"from","nameLocation":"2721:4:2","nodeType":"VariableDeclaration","scope":728,"src":"2713:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":721,"mutability":"mutable","name":"to","nameLocation":"2735:2:2","nodeType":"VariableDeclaration","scope":728,"src":"2727:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":720,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":723,"mutability":"mutable","name":"value","nameLocation":"2747:5:2","nodeType":"VariableDeclaration","scope":728,"src":"2739:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":722,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:2"},"returnParameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"2772:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":725,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:2"},"scope":729,"src":"2691:87:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":730,"src":"205:2575:2","usedErrors":[],"usedEvents":[663,672]}],"src":"106:2675:2"},"id":2},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[729],"IERC20Metadata":[755]},"id":756,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":731,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"125:24:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":733,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":756,"sourceUnit":730,"src":"151:37:3","symbolAliases":[{"foreign":{"id":732,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"159:6:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":735,"name":"IERC20","nameLocations":["306:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":729,"src":"306:6:3"},"id":736,"nodeType":"InheritanceSpecifier","src":"306:6:3"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":734,"nodeType":"StructuredDocumentation","src":"190:87:3","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":755,"linearizedBaseContracts":[755,729],"name":"IERC20Metadata","nameLocation":"288:14:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":737,"nodeType":"StructuredDocumentation","src":"319:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":742,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:3","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[],"src":"391:2:3"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":742,"src":"417:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":739,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:3"},"scope":755,"src":"378:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"438:56:3","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":748,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:3","nodeType":"FunctionDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[],"src":"514:2:3"},"returnParameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":748,"src":"540:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":745,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:3"},"scope":755,"src":"499:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":749,"nodeType":"StructuredDocumentation","src":"561:65:3","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":754,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:3","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[],"src":"648:2:3"},"returnParameters":{"id":753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":754,"src":"674:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":751,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:3"},"scope":755,"src":"631:50:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":756,"src":"278:405:3","usedErrors":[],"usedEvents":[663,672]}],"src":"125:559:3"},"id":3},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[785]},"id":786,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":757,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:4"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"127:496:4","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":785,"linearizedBaseContracts":[785],"name":"Context","nameLocation":"642:7:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":766,"nodeType":"Block","src":"718:34:4","statements":[{"expression":{"expression":{"id":763,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:4","memberName":"sender","nodeType":"MemberAccess","src":"735:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":762,"id":765,"nodeType":"Return","src":"728:17:4"}]},"id":767,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:4","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"675:2:4"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":767,"src":"709:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":760,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:4"},"scope":785,"src":"656:96:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":775,"nodeType":"Block","src":"825:32:4","statements":[{"expression":{"expression":{"id":772,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:4","memberName":"data","nodeType":"MemberAccess","src":"842:8:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":771,"id":774,"nodeType":"Return","src":"835:15:4"}]},"id":776,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:4","nodeType":"FunctionDefinition","parameters":{"id":768,"nodeType":"ParameterList","parameters":[],"src":"775:2:4"},"returnParameters":{"id":771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":776,"src":"809:14:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":769,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:4"},"scope":785,"src":"758:99:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":783,"nodeType":"Block","src":"935:25:4","statements":[{"expression":{"hexValue":"30","id":781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":780,"id":782,"nodeType":"Return","src":"945:8:4"}]},"id":784,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:4","nodeType":"FunctionDefinition","parameters":{"id":777,"nodeType":"ParameterList","parameters":[],"src":"892:2:4"},"returnParameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":784,"src":"926:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:4"},"scope":785,"src":"863:97:4","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":786,"src":"624:338:4","usedErrors":[],"usedEvents":[]}],"src":"101:862:4"},"id":4},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[854]},"id":855,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":787,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:5"},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":788,"nodeType":"StructuredDocumentation","src":"135:894:5","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":854,"linearizedBaseContracts":[854],"name":"ReentrancyGuard","nameLocation":"1048:15:5","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":791,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1843:11:5","nodeType":"VariableDeclaration","scope":854,"src":"1818:40:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":789,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1857:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":794,"mutability":"constant","name":"ENTERED","nameLocation":"1889:7:5","nodeType":"VariableDeclaration","scope":854,"src":"1864:36:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":792,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1899:1:5","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":796,"mutability":"mutable","name":"_status","nameLocation":"1923:7:5","nodeType":"VariableDeclaration","scope":854,"src":"1907:23:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1907:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"documentation":{"id":797,"nodeType":"StructuredDocumentation","src":"1937:52:5","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":799,"name":"ReentrancyGuardReentrantCall","nameLocation":"2000:28:5","nodeType":"ErrorDefinition","parameters":{"id":798,"nodeType":"ParameterList","parameters":[],"src":"2028:2:5"},"src":"1994:37:5"},{"body":{"id":806,"nodeType":"Block","src":"2051:38:5","statements":[{"expression":{"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":802,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2061:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":803,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"2071:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2061:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":805,"nodeType":"ExpressionStatement","src":"2061:21:5"}]},"id":807,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":800,"nodeType":"ParameterList","parameters":[],"src":"2048:2:5"},"returnParameters":{"id":801,"nodeType":"ParameterList","parameters":[],"src":"2051:0:5"},"scope":854,"src":"2037:52:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":817,"nodeType":"Block","src":"2490:79:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":810,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":834,"src":"2500:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":812,"nodeType":"ExpressionStatement","src":"2500:21:5"},{"id":813,"nodeType":"PlaceholderStatement","src":"2531:1:5"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":814,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"2542:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2542:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":816,"nodeType":"ExpressionStatement","src":"2542:20:5"}]},"documentation":{"id":808,"nodeType":"StructuredDocumentation","src":"2095:366:5","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":818,"name":"nonReentrant","nameLocation":"2475:12:5","nodeType":"ModifierDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[],"src":"2487:2:5"},"src":"2466:103:5","virtual":false,"visibility":"internal"},{"body":{"id":833,"nodeType":"Block","src":"2614:268:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":821,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2702:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":822,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"2713:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2702:18:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":828,"nodeType":"IfStatement","src":"2698:86:5","trueBody":{"id":827,"nodeType":"Block","src":"2722:62:5","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":824,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"2743:28:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2743:30:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":826,"nodeType":"RevertStatement","src":"2736:37:5"}]}},{"expression":{"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":829,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2858:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":830,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"2868:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2858:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":832,"nodeType":"ExpressionStatement","src":"2858:17:5"}]},"id":834,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"2584:19:5","nodeType":"FunctionDefinition","parameters":{"id":819,"nodeType":"ParameterList","parameters":[],"src":"2603:2:5"},"returnParameters":{"id":820,"nodeType":"ParameterList","parameters":[],"src":"2614:0:5"},"scope":854,"src":"2575:307:5","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":841,"nodeType":"Block","src":"2926:170:5","statements":[{"expression":{"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":837,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3068:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":838,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"3078:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3068:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":840,"nodeType":"ExpressionStatement","src":"3068:21:5"}]},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"2897:18:5","nodeType":"FunctionDefinition","parameters":{"id":835,"nodeType":"ParameterList","parameters":[],"src":"2915:2:5"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[],"src":"2926:0:5"},"scope":854,"src":"2888:208:5","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":852,"nodeType":"Block","src":"3339:42:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":848,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3356:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":849,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"3367:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3356:18:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":847,"id":851,"nodeType":"Return","src":"3349:25:5"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"3102:168:5","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":853,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"3284:23:5","nodeType":"FunctionDefinition","parameters":{"id":844,"nodeType":"ParameterList","parameters":[],"src":"3307:2:5"},"returnParameters":{"id":847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":853,"src":"3333:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":845,"name":"bool","nodeType":"ElementaryTypeName","src":"3333:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3332:6:5"},"scope":854,"src":"3275:106:5","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":855,"src":"1030:2353:5","usedErrors":[799],"usedEvents":[]}],"src":"109:3275:5"},"id":5},"contracts/DLE.sol":{"ast":{"absolutePath":"contracts/DLE.sol","exportedSymbols":{"Context":[785],"DLE":[2613],"ERC20":[651],"IERC20":[729],"IERC20Errors":[41],"IERC20Metadata":[755],"ReentrancyGuard":[854]},"id":2614,"license":"PROPRIETARY AND MIT","nodeType":"SourceUnit","nodes":[{"id":856,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"423:24:6"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":857,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2614,"sourceUnit":652,"src":"449:55:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","id":858,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2614,"sourceUnit":855,"src":"505:59:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":860,"name":"ERC20","nameLocations":["766:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"766:5:6"},"id":861,"nodeType":"InheritanceSpecifier","src":"766:5:6"},{"baseName":{"id":862,"name":"ReentrancyGuard","nameLocations":["773:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"773:15:6"},"id":863,"nodeType":"InheritanceSpecifier","src":"773:15:6"}],"canonicalName":"DLE","contractDependencies":[],"contractKind":"contract","documentation":{"id":859,"nodeType":"StructuredDocumentation","src":"566:183:6","text":" @title DLE (Digital Legal Entity)\n @dev Основной контракт DLE с модульной архитектурой и мульти-чейн поддержкой"},"fullyImplemented":true,"id":2613,"linearizedBaseContracts":[2613,854,651,41,755,729,785],"name":"DLE","nameLocation":"759:3:6","nodeType":"ContractDefinition","nodes":[{"canonicalName":"DLE.DLEInfo","id":885,"members":[{"constant":false,"id":865,"mutability":"mutable","name":"name","nameLocation":"827:4:6","nodeType":"VariableDeclaration","scope":885,"src":"820:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":864,"name":"string","nodeType":"ElementaryTypeName","src":"820:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"symbol","nameLocation":"848:6:6","nodeType":"VariableDeclaration","scope":885,"src":"841:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":866,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":869,"mutability":"mutable","name":"location","nameLocation":"871:8:6","nodeType":"VariableDeclaration","scope":885,"src":"864:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":868,"name":"string","nodeType":"ElementaryTypeName","src":"864:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"coordinates","nameLocation":"896:11:6","nodeType":"VariableDeclaration","scope":885,"src":"889:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"889:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"jurisdiction","nameLocation":"925:12:6","nodeType":"VariableDeclaration","scope":885,"src":"917:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":872,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":875,"mutability":"mutable","name":"oktmo","nameLocation":"955:5:6","nodeType":"VariableDeclaration","scope":885,"src":"947:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"947:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":878,"mutability":"mutable","name":"okvedCodes","nameLocation":"979:10:6","nodeType":"VariableDeclaration","scope":885,"src":"970:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":876,"name":"string","nodeType":"ElementaryTypeName","src":"970:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":877,"nodeType":"ArrayTypeName","src":"970:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":880,"mutability":"mutable","name":"kpp","nameLocation":"1007:3:6","nodeType":"VariableDeclaration","scope":885,"src":"999:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":879,"name":"uint256","nodeType":"ElementaryTypeName","src":"999:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":882,"mutability":"mutable","name":"creationTimestamp","nameLocation":"1028:17:6","nodeType":"VariableDeclaration","scope":885,"src":"1020:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":884,"mutability":"mutable","name":"isActive","nameLocation":"1060:8:6","nodeType":"VariableDeclaration","scope":885,"src":"1055:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":883,"name":"bool","nodeType":"ElementaryTypeName","src":"1055:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"DLEInfo","nameLocation":"802:7:6","nodeType":"StructDefinition","scope":2613,"src":"795:280:6","visibility":"public"},{"canonicalName":"DLE.DLEConfig","id":914,"members":[{"constant":false,"id":887,"mutability":"mutable","name":"name","nameLocation":"1115:4:6","nodeType":"VariableDeclaration","scope":914,"src":"1108:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":886,"name":"string","nodeType":"ElementaryTypeName","src":"1108:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":889,"mutability":"mutable","name":"symbol","nameLocation":"1136:6:6","nodeType":"VariableDeclaration","scope":914,"src":"1129:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":888,"name":"string","nodeType":"ElementaryTypeName","src":"1129:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"location","nameLocation":"1159:8:6","nodeType":"VariableDeclaration","scope":914,"src":"1152:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":890,"name":"string","nodeType":"ElementaryTypeName","src":"1152:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"coordinates","nameLocation":"1184:11:6","nodeType":"VariableDeclaration","scope":914,"src":"1177:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":892,"name":"string","nodeType":"ElementaryTypeName","src":"1177:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"jurisdiction","nameLocation":"1213:12:6","nodeType":"VariableDeclaration","scope":914,"src":"1205:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":897,"mutability":"mutable","name":"oktmo","nameLocation":"1243:5:6","nodeType":"VariableDeclaration","scope":914,"src":"1235:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":896,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"okvedCodes","nameLocation":"1267:10:6","nodeType":"VariableDeclaration","scope":914,"src":"1258:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":898,"name":"string","nodeType":"ElementaryTypeName","src":"1258:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":899,"nodeType":"ArrayTypeName","src":"1258:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"kpp","nameLocation":"1295:3:6","nodeType":"VariableDeclaration","scope":914,"src":"1287:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1287:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"quorumPercentage","nameLocation":"1316:16:6","nodeType":"VariableDeclaration","scope":914,"src":"1308:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1308:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"initialPartners","nameLocation":"1352:15:6","nodeType":"VariableDeclaration","scope":914,"src":"1342:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":905,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":906,"nodeType":"ArrayTypeName","src":"1342:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":910,"mutability":"mutable","name":"initialAmounts","nameLocation":"1387:14:6","nodeType":"VariableDeclaration","scope":914,"src":"1377:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":908,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":909,"nodeType":"ArrayTypeName","src":"1377:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":913,"mutability":"mutable","name":"supportedChainIds","nameLocation":"1421:17:6","nodeType":"VariableDeclaration","scope":914,"src":"1411:27:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":911,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ArrayTypeName","src":"1411:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"DLEConfig","nameLocation":"1088:9:6","nodeType":"StructDefinition","scope":2613,"src":"1081:411:6","visibility":"public"},{"canonicalName":"DLE.Proposal","id":939,"members":[{"constant":false,"id":916,"mutability":"mutable","name":"id","nameLocation":"1532:2:6","nodeType":"VariableDeclaration","scope":939,"src":"1524:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":915,"name":"uint256","nodeType":"ElementaryTypeName","src":"1524:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":918,"mutability":"mutable","name":"description","nameLocation":"1551:11:6","nodeType":"VariableDeclaration","scope":939,"src":"1544:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":917,"name":"string","nodeType":"ElementaryTypeName","src":"1544:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":920,"mutability":"mutable","name":"forVotes","nameLocation":"1580:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1572:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":919,"name":"uint256","nodeType":"ElementaryTypeName","src":"1572:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"againstVotes","nameLocation":"1606:12:6","nodeType":"VariableDeclaration","scope":939,"src":"1598:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1598:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"executed","nameLocation":"1633:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1628:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":923,"name":"bool","nodeType":"ElementaryTypeName","src":"1628:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":926,"mutability":"mutable","name":"deadline","nameLocation":"1659:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1651:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1651:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":928,"mutability":"mutable","name":"initiator","nameLocation":"1685:9:6","nodeType":"VariableDeclaration","scope":939,"src":"1677:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":927,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":930,"mutability":"mutable","name":"operation","nameLocation":"1710:9:6","nodeType":"VariableDeclaration","scope":939,"src":"1704:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":929,"name":"bytes","nodeType":"ElementaryTypeName","src":"1704:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":934,"mutability":"mutable","name":"hasVoted","nameLocation":"1802:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1777:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":933,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":931,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1777:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":932,"name":"bool","nodeType":"ElementaryTypeName","src":"1796:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":938,"mutability":"mutable","name":"chainVoteSynced","nameLocation":"1845:15:6","nodeType":"VariableDeclaration","scope":939,"src":"1820:40:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":937,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":935,"name":"uint256","nodeType":"ElementaryTypeName","src":"1828:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1820:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":936,"name":"bool","nodeType":"ElementaryTypeName","src":"1839:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"Proposal","nameLocation":"1505:8:6","nodeType":"StructDefinition","scope":2613,"src":"1498:444:6","visibility":"public"},{"canonicalName":"DLE.MultiSigOperation","id":960,"members":[{"constant":false,"id":941,"mutability":"mutable","name":"operationHash","nameLocation":"1991:13:6","nodeType":"VariableDeclaration","scope":960,"src":"1983:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":940,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1983:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":943,"mutability":"mutable","name":"forSignatures","nameLocation":"2022:13:6","nodeType":"VariableDeclaration","scope":960,"src":"2014:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":945,"mutability":"mutable","name":"againstSignatures","nameLocation":"2053:17:6","nodeType":"VariableDeclaration","scope":960,"src":"2045:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":944,"name":"uint256","nodeType":"ElementaryTypeName","src":"2045:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":947,"mutability":"mutable","name":"executed","nameLocation":"2085:8:6","nodeType":"VariableDeclaration","scope":960,"src":"2080:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":946,"name":"bool","nodeType":"ElementaryTypeName","src":"2080:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"deadline","nameLocation":"2111:8:6","nodeType":"VariableDeclaration","scope":960,"src":"2103:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":951,"mutability":"mutable","name":"initiator","nameLocation":"2137:9:6","nodeType":"VariableDeclaration","scope":960,"src":"2129:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"2129:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"hasSigned","nameLocation":"2181:9:6","nodeType":"VariableDeclaration","scope":960,"src":"2156:34:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":954,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":952,"name":"address","nodeType":"ElementaryTypeName","src":"2164:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2156:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":953,"name":"bool","nodeType":"ElementaryTypeName","src":"2175:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"chainSignSynced","nameLocation":"2225:15:6","nodeType":"VariableDeclaration","scope":960,"src":"2200:40:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":958,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2200:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":957,"name":"bool","nodeType":"ElementaryTypeName","src":"2219:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"MultiSigOperation","nameLocation":"1955:17:6","nodeType":"StructDefinition","scope":2613,"src":"1948:376:6","visibility":"public"},{"constant":false,"functionSelector":"f2c26a47","id":963,"mutability":"mutable","name":"dleInfo","nameLocation":"2388:7:6","nodeType":"VariableDeclaration","scope":2613,"src":"2373:22:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo"},"typeName":{"id":962,"nodeType":"UserDefinedTypeName","pathNode":{"id":961,"name":"DLEInfo","nameLocations":["2373:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":885,"src":"2373:7:6"},"referencedDeclaration":885,"src":"2373:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage_ptr","typeString":"struct DLE.DLEInfo"}},"visibility":"public"},{"constant":false,"functionSelector":"4fa76ec9","id":965,"mutability":"mutable","name":"quorumPercentage","nameLocation":"2416:16:6","nodeType":"VariableDeclaration","scope":2613,"src":"2401:31:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2401:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"0c0512e9","id":967,"mutability":"mutable","name":"proposalCounter","nameLocation":"2453:15:6","nodeType":"VariableDeclaration","scope":2613,"src":"2438:30:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2438:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"8c7b04c9","id":969,"mutability":"mutable","name":"multiSigCounter","nameLocation":"2489:15:6","nodeType":"VariableDeclaration","scope":2613,"src":"2474:30:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"2474:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"6cbadbfa","id":971,"mutability":"mutable","name":"currentChainId","nameLocation":"2525:14:6","nodeType":"VariableDeclaration","scope":2613,"src":"2510:29:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2510:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"b0b6cc1a","id":975,"mutability":"mutable","name":"modules","nameLocation":"2601:7:6","nodeType":"VariableDeclaration","scope":2613,"src":"2566:42:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":974,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":972,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2574:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2566:27:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":973,"name":"address","nodeType":"ElementaryTypeName","src":"2585:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"constant":false,"functionSelector":"b3fe8bcb","id":979,"mutability":"mutable","name":"activeModules","nameLocation":"2646:13:6","nodeType":"VariableDeclaration","scope":2613,"src":"2614:45:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":978,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2622:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2614:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":977,"name":"bool","nodeType":"ElementaryTypeName","src":"2633:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"013cf08b","id":984,"mutability":"mutable","name":"proposals","nameLocation":"2762:9:6","nodeType":"VariableDeclaration","scope":2613,"src":"2726:45:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal)"},"typeName":{"id":983,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":980,"name":"uint256","nodeType":"ElementaryTypeName","src":"2734:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2726:28:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":982,"nodeType":"UserDefinedTypeName","pathNode":{"id":981,"name":"Proposal","nameLocations":["2745:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"2745:8:6"},"referencedDeclaration":939,"src":"2745:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}}},"visibility":"public"},{"constant":false,"functionSelector":"c51cab3a","id":989,"mutability":"mutable","name":"multiSigOperations","nameLocation":"2822:18:6","nodeType":"VariableDeclaration","scope":2613,"src":"2777:63:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation)"},"typeName":{"id":988,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":985,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2777:37:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":987,"nodeType":"UserDefinedTypeName","pathNode":{"id":986,"name":"MultiSigOperation","nameLocations":["2796:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"2796:17:6"},"referencedDeclaration":960,"src":"2796:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}}},"visibility":"public"},{"constant":false,"functionSelector":"548d496f","id":993,"mutability":"mutable","name":"supportedChains","nameLocation":"2908:15:6","nodeType":"VariableDeclaration","scope":2613,"src":"2876:47:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":992,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":990,"name":"uint256","nodeType":"ElementaryTypeName","src":"2884:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2876:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":991,"name":"bool","nodeType":"ElementaryTypeName","src":"2895:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"3b60288a","id":997,"mutability":"mutable","name":"executedProposals","nameLocation":"2961:17:6","nodeType":"VariableDeclaration","scope":2613,"src":"2929:49:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":996,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":994,"name":"uint256","nodeType":"ElementaryTypeName","src":"2937:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2929:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":995,"name":"bool","nodeType":"ElementaryTypeName","src":"2948:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"af89d2c4","id":1001,"mutability":"mutable","name":"executedMultiSig","nameLocation":"3092:16:6","nodeType":"VariableDeclaration","scope":2613,"src":"3060:48:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":1000,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":998,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3060:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":999,"name":"bool","nodeType":"ElementaryTypeName","src":"3079:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"anonymous":false,"eventSelector":"11b248463a1620b36a975da8f250009f56fb5dd0e9d5027a90a834d0ee84d6f6","id":1025,"name":"DLEInitialized","nameLocation":"3225:14:6","nodeType":"EventDefinition","parameters":{"id":1024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1003,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"3256:4:6","nodeType":"VariableDeclaration","scope":1025,"src":"3249:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1002,"name":"string","nodeType":"ElementaryTypeName","src":"3249:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1005,"indexed":false,"mutability":"mutable","name":"symbol","nameLocation":"3277:6:6","nodeType":"VariableDeclaration","scope":1025,"src":"3270:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1004,"name":"string","nodeType":"ElementaryTypeName","src":"3270:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1007,"indexed":false,"mutability":"mutable","name":"location","nameLocation":"3300:8:6","nodeType":"VariableDeclaration","scope":1025,"src":"3293:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1006,"name":"string","nodeType":"ElementaryTypeName","src":"3293:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1009,"indexed":false,"mutability":"mutable","name":"coordinates","nameLocation":"3325:11:6","nodeType":"VariableDeclaration","scope":1025,"src":"3318:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1008,"name":"string","nodeType":"ElementaryTypeName","src":"3318:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1011,"indexed":false,"mutability":"mutable","name":"jurisdiction","nameLocation":"3354:12:6","nodeType":"VariableDeclaration","scope":1025,"src":"3346:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1010,"name":"uint256","nodeType":"ElementaryTypeName","src":"3346:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1013,"indexed":false,"mutability":"mutable","name":"oktmo","nameLocation":"3384:5:6","nodeType":"VariableDeclaration","scope":1025,"src":"3376:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1012,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1016,"indexed":false,"mutability":"mutable","name":"okvedCodes","nameLocation":"3408:10:6","nodeType":"VariableDeclaration","scope":1025,"src":"3399:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1014,"name":"string","nodeType":"ElementaryTypeName","src":"3399:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1015,"nodeType":"ArrayTypeName","src":"3399:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1018,"indexed":false,"mutability":"mutable","name":"kpp","nameLocation":"3436:3:6","nodeType":"VariableDeclaration","scope":1025,"src":"3428:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3428:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1020,"indexed":false,"mutability":"mutable","name":"tokenAddress","nameLocation":"3457:12:6","nodeType":"VariableDeclaration","scope":1025,"src":"3449:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1019,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1023,"indexed":false,"mutability":"mutable","name":"supportedChainIds","nameLocation":"3489:17:6","nodeType":"VariableDeclaration","scope":1025,"src":"3479:27:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3479:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1022,"nodeType":"ArrayTypeName","src":"3479:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3239:273:6"},"src":"3219:294:6"},{"anonymous":false,"eventSelector":"f9e7aa11bcdcbb8ac33b5dba92fca799ef091e54c29270822065501d8edea1a5","id":1033,"name":"InitialTokensDistributed","nameLocation":"3524:24:6","nodeType":"EventDefinition","parameters":{"id":1032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1028,"indexed":false,"mutability":"mutable","name":"partners","nameLocation":"3559:8:6","nodeType":"VariableDeclaration","scope":1033,"src":"3549:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1026,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1027,"nodeType":"ArrayTypeName","src":"3549:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1031,"indexed":false,"mutability":"mutable","name":"amounts","nameLocation":"3579:7:6","nodeType":"VariableDeclaration","scope":1033,"src":"3569:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"3569:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1030,"nodeType":"ArrayTypeName","src":"3569:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3548:39:6"},"src":"3518:70:6"},{"anonymous":false,"eventSelector":"7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63","id":1041,"name":"ProposalCreated","nameLocation":"3599:15:6","nodeType":"EventDefinition","parameters":{"id":1040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"3623:10:6","nodeType":"VariableDeclaration","scope":1041,"src":"3615:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1034,"name":"uint256","nodeType":"ElementaryTypeName","src":"3615:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1037,"indexed":false,"mutability":"mutable","name":"initiator","nameLocation":"3643:9:6","nodeType":"VariableDeclaration","scope":1041,"src":"3635:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1036,"name":"address","nodeType":"ElementaryTypeName","src":"3635:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1039,"indexed":false,"mutability":"mutable","name":"description","nameLocation":"3661:11:6","nodeType":"VariableDeclaration","scope":1041,"src":"3654:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1038,"name":"string","nodeType":"ElementaryTypeName","src":"3654:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3614:59:6"},"src":"3593:81:6"},{"anonymous":false,"eventSelector":"78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a9","id":1051,"name":"ProposalVoted","nameLocation":"3685:13:6","nodeType":"EventDefinition","parameters":{"id":1050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1043,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"3707:10:6","nodeType":"VariableDeclaration","scope":1051,"src":"3699:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"3699:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1045,"indexed":false,"mutability":"mutable","name":"voter","nameLocation":"3727:5:6","nodeType":"VariableDeclaration","scope":1051,"src":"3719:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1044,"name":"address","nodeType":"ElementaryTypeName","src":"3719:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1047,"indexed":false,"mutability":"mutable","name":"support","nameLocation":"3739:7:6","nodeType":"VariableDeclaration","scope":1051,"src":"3734:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1046,"name":"bool","nodeType":"ElementaryTypeName","src":"3734:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1049,"indexed":false,"mutability":"mutable","name":"votingPower","nameLocation":"3756:11:6","nodeType":"VariableDeclaration","scope":1051,"src":"3748:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"3748:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3698:70:6"},"src":"3679:90:6"},{"anonymous":false,"eventSelector":"badbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2","id":1057,"name":"ProposalExecuted","nameLocation":"3780:16:6","nodeType":"EventDefinition","parameters":{"id":1056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1053,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"3805:10:6","nodeType":"VariableDeclaration","scope":1057,"src":"3797:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1052,"name":"uint256","nodeType":"ElementaryTypeName","src":"3797:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1055,"indexed":false,"mutability":"mutable","name":"operation","nameLocation":"3823:9:6","nodeType":"VariableDeclaration","scope":1057,"src":"3817:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1054,"name":"bytes","nodeType":"ElementaryTypeName","src":"3817:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:37:6"},"src":"3774:60:6"},{"anonymous":false,"eventSelector":"8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f0","id":1065,"name":"MultiSigOperationCreated","nameLocation":"3845:24:6","nodeType":"EventDefinition","parameters":{"id":1064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1059,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"3878:11:6","nodeType":"VariableDeclaration","scope":1065,"src":"3870:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1058,"name":"uint256","nodeType":"ElementaryTypeName","src":"3870:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1061,"indexed":false,"mutability":"mutable","name":"initiator","nameLocation":"3899:9:6","nodeType":"VariableDeclaration","scope":1065,"src":"3891:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1060,"name":"address","nodeType":"ElementaryTypeName","src":"3891:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1063,"indexed":false,"mutability":"mutable","name":"operationHash","nameLocation":"3918:13:6","nodeType":"VariableDeclaration","scope":1065,"src":"3910:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3910:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3869:63:6"},"src":"3839:94:6"},{"anonymous":false,"eventSelector":"78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc","id":1075,"name":"MultiSigSigned","nameLocation":"3944:14:6","nodeType":"EventDefinition","parameters":{"id":1074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1067,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"3967:11:6","nodeType":"VariableDeclaration","scope":1075,"src":"3959:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1066,"name":"uint256","nodeType":"ElementaryTypeName","src":"3959:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1069,"indexed":false,"mutability":"mutable","name":"signer","nameLocation":"3988:6:6","nodeType":"VariableDeclaration","scope":1075,"src":"3980:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1068,"name":"address","nodeType":"ElementaryTypeName","src":"3980:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1071,"indexed":false,"mutability":"mutable","name":"support","nameLocation":"4001:7:6","nodeType":"VariableDeclaration","scope":1075,"src":"3996:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1070,"name":"bool","nodeType":"ElementaryTypeName","src":"3996:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1073,"indexed":false,"mutability":"mutable","name":"signaturePower","nameLocation":"4018:14:6","nodeType":"VariableDeclaration","scope":1075,"src":"4010:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1072,"name":"uint256","nodeType":"ElementaryTypeName","src":"4010:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3958:75:6"},"src":"3938:96:6"},{"anonymous":false,"eventSelector":"64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5","id":1081,"name":"MultiSigExecuted","nameLocation":"4045:16:6","nodeType":"EventDefinition","parameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1077,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"4070:11:6","nodeType":"VariableDeclaration","scope":1081,"src":"4062:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1076,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1079,"indexed":false,"mutability":"mutable","name":"operationHash","nameLocation":"4091:13:6","nodeType":"VariableDeclaration","scope":1081,"src":"4083:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4083:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4061:44:6"},"src":"4039:67:6"},{"anonymous":false,"eventSelector":"f14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d72722719","id":1087,"name":"ModuleAdded","nameLocation":"4117:11:6","nodeType":"EventDefinition","parameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"indexed":false,"mutability":"mutable","name":"moduleId","nameLocation":"4137:8:6","nodeType":"VariableDeclaration","scope":1087,"src":"4129:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4129:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1085,"indexed":false,"mutability":"mutable","name":"moduleAddress","nameLocation":"4155:13:6","nodeType":"VariableDeclaration","scope":1087,"src":"4147:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1084,"name":"address","nodeType":"ElementaryTypeName","src":"4147:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4128:41:6"},"src":"4111:59:6"},{"anonymous":false,"eventSelector":"4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba853","id":1091,"name":"ModuleRemoved","nameLocation":"4181:13:6","nodeType":"EventDefinition","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"indexed":false,"mutability":"mutable","name":"moduleId","nameLocation":"4203:8:6","nodeType":"VariableDeclaration","scope":1091,"src":"4195:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4195:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4194:18:6"},"src":"4175:38:6"},{"anonymous":false,"eventSelector":"42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313","id":1099,"name":"CrossChainExecutionSync","nameLocation":"4224:23:6","nodeType":"EventDefinition","parameters":{"id":1098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1093,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"4256:10:6","nodeType":"VariableDeclaration","scope":1099,"src":"4248:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1092,"name":"uint256","nodeType":"ElementaryTypeName","src":"4248:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1095,"indexed":false,"mutability":"mutable","name":"fromChainId","nameLocation":"4276:11:6","nodeType":"VariableDeclaration","scope":1099,"src":"4268:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1094,"name":"uint256","nodeType":"ElementaryTypeName","src":"4268:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1097,"indexed":false,"mutability":"mutable","name":"toChainId","nameLocation":"4297:9:6","nodeType":"VariableDeclaration","scope":1099,"src":"4289:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1096,"name":"uint256","nodeType":"ElementaryTypeName","src":"4289:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4247:60:6"},"src":"4218:90:6"},{"anonymous":false,"eventSelector":"ca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb","id":1107,"name":"CrossChainVoteSync","nameLocation":"4319:18:6","nodeType":"EventDefinition","parameters":{"id":1106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"4346:10:6","nodeType":"VariableDeclaration","scope":1107,"src":"4338:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"4338:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1103,"indexed":false,"mutability":"mutable","name":"fromChainId","nameLocation":"4366:11:6","nodeType":"VariableDeclaration","scope":1107,"src":"4358:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"4358:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1105,"indexed":false,"mutability":"mutable","name":"toChainId","nameLocation":"4387:9:6","nodeType":"VariableDeclaration","scope":1107,"src":"4379:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4337:60:6"},"src":"4313:85:6"},{"anonymous":false,"eventSelector":"e379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe5","id":1115,"name":"CrossChainMultiSigSync","nameLocation":"4409:22:6","nodeType":"EventDefinition","parameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1109,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"4440:11:6","nodeType":"VariableDeclaration","scope":1115,"src":"4432:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1108,"name":"uint256","nodeType":"ElementaryTypeName","src":"4432:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1111,"indexed":false,"mutability":"mutable","name":"fromChainId","nameLocation":"4461:11:6","nodeType":"VariableDeclaration","scope":1115,"src":"4453:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1110,"name":"uint256","nodeType":"ElementaryTypeName","src":"4453:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1113,"indexed":false,"mutability":"mutable","name":"toChainId","nameLocation":"4482:9:6","nodeType":"VariableDeclaration","scope":1115,"src":"4474:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1112,"name":"uint256","nodeType":"ElementaryTypeName","src":"4474:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4431:61:6"},"src":"4403:90:6"},{"body":{"id":1285,"nodeType":"Block","src":"4617:1753:6","statements":[{"expression":{"id":1151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1129,"name":"dleInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"4627:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1131,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4665:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4672:4:6","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":887,"src":"4665:11:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1133,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4698:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4705:6:6","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":889,"src":"4698:13:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1135,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4735:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4742:8:6","memberName":"location","nodeType":"MemberAccess","referencedDeclaration":891,"src":"4735:15:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1137,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4777:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4784:11:6","memberName":"coordinates","nodeType":"MemberAccess","referencedDeclaration":893,"src":"4777:18:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1139,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4823:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4830:12:6","memberName":"jurisdiction","nodeType":"MemberAccess","referencedDeclaration":895,"src":"4823:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1141,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4863:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4870:5:6","memberName":"oktmo","nodeType":"MemberAccess","referencedDeclaration":897,"src":"4863:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1143,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4901:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4908:10:6","memberName":"okvedCodes","nodeType":"MemberAccess","referencedDeclaration":900,"src":"4901:17:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"expression":{"id":1145,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4937:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4944:3:6","memberName":"kpp","nodeType":"MemberAccess","referencedDeclaration":902,"src":"4937:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1147,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4980:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4986:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"4980:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5019:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1130,"name":"DLEInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4637:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DLEInfo_$885_storage_ptr_$","typeString":"type(struct DLE.DLEInfo storage pointer)"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["4659:4:6","4690:6:6","4725:8:6","4764:11:6","4809:12:6","4856:5:6","4889:10:6","4932:3:6","4961:17:6","5009:8:6"],"names":["name","symbol","location","coordinates","jurisdiction","oktmo","okvedCodes","kpp","creationTimestamp","isActive"],"nodeType":"FunctionCall","src":"4637:397:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_memory_ptr","typeString":"struct DLE.DLEInfo memory"}},"src":"4627:407:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo storage ref"}},"id":1152,"nodeType":"ExpressionStatement","src":"4627:407:6"},{"expression":{"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1153,"name":"quorumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"5053:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1154,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5072:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5079:16:6","memberName":"quorumPercentage","nodeType":"MemberAccess","referencedDeclaration":904,"src":"5072:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5053:42:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1157,"nodeType":"ExpressionStatement","src":"5053:42:6"},{"expression":{"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1158,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5105:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1159,"name":"_currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"5122:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5105:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1161,"nodeType":"ExpressionStatement","src":"5105:32:6"},{"body":{"id":1183,"nodeType":"Block","src":"5288:76:6","statements":[{"expression":{"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1174,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"5302:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1179,"indexExpression":{"baseExpression":{"expression":{"id":1175,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5318:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5325:17:6","memberName":"supportedChainIds","nodeType":"MemberAccess","referencedDeclaration":913,"src":"5318:24:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1178,"indexExpression":{"id":1177,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5343:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5318:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5302:44:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5302:51:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1182,"nodeType":"ExpressionStatement","src":"5302:51:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1166,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5246:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":1167,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5250:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5257:17:6","memberName":"supportedChainIds","nodeType":"MemberAccess","referencedDeclaration":913,"src":"5250:24:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5275:6:6","memberName":"length","nodeType":"MemberAccess","src":"5250:31:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5246:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1184,"initializationExpression":{"assignments":[1163],"declarations":[{"constant":false,"id":1163,"mutability":"mutable","name":"i","nameLocation":"5239:1:6","nodeType":"VariableDeclaration","scope":1184,"src":"5231:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"5231:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1165,"initialValue":{"hexValue":"30","id":1164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5231:13:6"},"loopExpression":{"expression":{"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5283:3:6","subExpression":{"id":1171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5283:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1173,"nodeType":"ExpressionStatement","src":"5283:3:6"},"nodeType":"ForStatement","src":"5226:138:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1186,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5469:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5476:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5469:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5492:6:6","memberName":"length","nodeType":"MemberAccess","src":"5469:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":1189,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5502:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5509:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"5502:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5524:6:6","memberName":"length","nodeType":"MemberAccess","src":"5502:28:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5469:61:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"417272617973206c656e677468206d69736d61746368","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5532:24:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_582fd48f3876d7686bfeaaaa0db0589073271dedd50d66094f02fee2a3d2e01c","typeString":"literal_string \"Arrays length mismatch\""},"value":"Arrays length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_582fd48f3876d7686bfeaaaa0db0589073271dedd50d66094f02fee2a3d2e01c","typeString":"literal_string \"Arrays length mismatch\""}],"id":1185,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5461:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5461:96:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1195,"nodeType":"ExpressionStatement","src":"5461:96:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1197,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5575:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5582:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5575:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5598:6:6","memberName":"length","nodeType":"MemberAccess","src":"5575:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5607:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5575:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20696e697469616c20706172746e657273","id":1202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5610:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_52ac33e2ca140c303c018eee17fe8221d2a3fad6b5586ebb7760b84287db7147","typeString":"literal_string \"No initial partners\""},"value":"No initial partners"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_52ac33e2ca140c303c018eee17fe8221d2a3fad6b5586ebb7760b84287db7147","typeString":"literal_string \"No initial partners\""}],"id":1196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5567:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5567:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1204,"nodeType":"ExpressionStatement","src":"5567:65:6"},{"body":{"id":1251,"nodeType":"Block","src":"5711:227:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":1218,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5733:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5740:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5733:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1221,"indexExpression":{"id":1220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5756:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5733:25:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5762:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1222,"name":"address","nodeType":"ElementaryTypeName","src":"5762:7:6","typeDescriptions":{}}},"id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5762:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5733:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f2061646472657373","id":1227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5774:14:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""},"value":"Zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""}],"id":1217,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5725:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5725:64:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1229,"nodeType":"ExpressionStatement","src":"5725:64:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":1231,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5811:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5818:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"5811:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1234,"indexExpression":{"id":1233,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5833:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5811:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5838:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5811:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f20616d6f756e74","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5841:13:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4","typeString":"literal_string \"Zero amount\""},"value":"Zero amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4","typeString":"literal_string \"Zero amount\""}],"id":1230,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5803:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5803:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1239,"nodeType":"ExpressionStatement","src":"5803:52:6"},{"expression":{"arguments":[{"baseExpression":{"expression":{"id":1241,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5875:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5882:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5875:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1244,"indexExpression":{"id":1243,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5898:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5875:25:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":1245,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5902:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5909:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"5902:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1248,"indexExpression":{"id":1247,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5924:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5902:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1240,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"5869:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5869:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1250,"nodeType":"ExpressionStatement","src":"5869:58:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1209,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5671:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":1210,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5675:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5682:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5675:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5698:6:6","memberName":"length","nodeType":"MemberAccess","src":"5675:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5671:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1252,"initializationExpression":{"assignments":[1206],"declarations":[{"constant":false,"id":1206,"mutability":"mutable","name":"i","nameLocation":"5664:1:6","nodeType":"VariableDeclaration","scope":1252,"src":"5656:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1205,"name":"uint256","nodeType":"ElementaryTypeName","src":"5656:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1208,"initialValue":{"hexValue":"30","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5668:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5656:13:6"},"loopExpression":{"expression":{"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5706:3:6","subExpression":{"id":1214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5706:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1216,"nodeType":"ExpressionStatement","src":"5706:3:6"},"nodeType":"ForStatement","src":"5651:287:6"},{"eventCall":{"arguments":[{"expression":{"id":1254,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5986:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5993:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5986:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":1256,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6010:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6017:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"6010:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":1253,"name":"InitialTokensDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"5961:24:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory,uint256[] memory)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5961:71:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1259,"nodeType":"EmitStatement","src":"5956:76:6"},{"eventCall":{"arguments":[{"expression":{"id":1261,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6075:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6082:4:6","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":887,"src":"6075:11:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1263,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6100:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6107:6:6","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":889,"src":"6100:13:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1265,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6127:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6134:8:6","memberName":"location","nodeType":"MemberAccess","referencedDeclaration":891,"src":"6127:15:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1267,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6156:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6163:11:6","memberName":"coordinates","nodeType":"MemberAccess","referencedDeclaration":893,"src":"6156:18:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1269,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6188:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6195:12:6","memberName":"jurisdiction","nodeType":"MemberAccess","referencedDeclaration":895,"src":"6188:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1271,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6221:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6228:5:6","memberName":"oktmo","nodeType":"MemberAccess","referencedDeclaration":897,"src":"6221:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1273,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6247:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6254:10:6","memberName":"okvedCodes","nodeType":"MemberAccess","referencedDeclaration":900,"src":"6247:17:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"expression":{"id":1275,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6278:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6285:3:6","memberName":"kpp","nodeType":"MemberAccess","referencedDeclaration":902,"src":"6278:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":1279,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6310:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_DLE_$2613","typeString":"contract DLE"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DLE_$2613","typeString":"contract DLE"}],"id":1278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6302:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1277,"name":"address","nodeType":"ElementaryTypeName","src":"6302:7:6","typeDescriptions":{}}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6302:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1281,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6329:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6336:17:6","memberName":"supportedChainIds","nodeType":"MemberAccess","referencedDeclaration":913,"src":"6329:24:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":1260,"name":"DLEInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"6047:14:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,uint256,uint256,string memory[] memory,uint256,address,uint256[] memory)"}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6047:316:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1284,"nodeType":"EmitStatement","src":"6042:321:6"}]},"id":1286,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":1123,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4589:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4596:4:6","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":887,"src":"4589:11:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1125,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4602:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4609:6:6","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":889,"src":"4602:13:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":1127,"kind":"baseConstructorSpecifier","modifierName":{"id":1122,"name":"ERC20","nameLocations":["4583:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"4583:5:6"},"nodeType":"ModifierInvocation","src":"4583:33:6"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1118,"mutability":"mutable","name":"config","nameLocation":"4537:6:6","nodeType":"VariableDeclaration","scope":1286,"src":"4520:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig"},"typeName":{"id":1117,"nodeType":"UserDefinedTypeName","pathNode":{"id":1116,"name":"DLEConfig","nameLocations":["4520:9:6"],"nodeType":"IdentifierPath","referencedDeclaration":914,"src":"4520:9:6"},"referencedDeclaration":914,"src":"4520:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_storage_ptr","typeString":"struct DLE.DLEConfig"}},"visibility":"internal"},{"constant":false,"id":1120,"mutability":"mutable","name":"_currentChainId","nameLocation":"4561:15:6","nodeType":"VariableDeclaration","scope":1286,"src":"4553:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1119,"name":"uint256","nodeType":"ElementaryTypeName","src":"4553:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4510:72:6"},"returnParameters":{"id":1128,"nodeType":"ParameterList","parameters":[],"src":"4617:0:6"},"scope":2613,"src":"4499:1871:6","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1404,"nodeType":"Block","src":"7000:842:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1302,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7028:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7032:6:6","memberName":"sender","nodeType":"MemberAccess","src":"7028:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1301,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"7018:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7018:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7018:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f73616c","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7045:37:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a2e6c5dda7c2ec2a91237927bcea1a227aaeb0a0dcd7bb09f5f8b66e3fd42c53","typeString":"literal_string \"Must hold tokens to create proposal\""},"value":"Must hold tokens to create proposal"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2e6c5dda7c2ec2a91237927bcea1a227aaeb0a0dcd7bb09f5f8b66e3fd42c53","typeString":"literal_string \"Must hold tokens to create proposal\""}],"id":1300,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7010:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7010:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1309,"nodeType":"ExpressionStatement","src":"7010:73:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1311,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"7101:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7113:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7101:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475726174696f6e206d75737420626520706f736974697665","id":1314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7116:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""},"value":"Duration must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""}],"id":1310,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7093:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7093:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1316,"nodeType":"ExpressionStatement","src":"7093:51:6"},{"expression":{"arguments":[{"baseExpression":{"id":1318,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"7162:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1320,"indexExpression":{"id":1319,"name":"_governanceChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"7178:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7162:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7199:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":1317,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7154:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7154:67:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1323,"nodeType":"ExpressionStatement","src":"7154:67:6"},{"expression":{"arguments":[{"arguments":[{"id":1326,"name":"_governanceChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"7260:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1325,"name":"checkChainConnection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"7239:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7239:40:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420617661696c61626c65","id":1328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7281:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d761b3d00f67c3638fc7145121be7a34feb3cfe2982cb2e73645fa1389c9e513","typeString":"literal_string \"Chain not available\""},"value":"Chain not available"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d761b3d00f67c3638fc7145121be7a34feb3cfe2982cb2e73645fa1389c9e513","typeString":"literal_string \"Chain not available\""}],"id":1324,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7231:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7231:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1330,"nodeType":"ExpressionStatement","src":"7231:72:6"},{"assignments":[1332],"declarations":[{"constant":false,"id":1332,"mutability":"mutable","name":"proposalId","nameLocation":"7322:10:6","nodeType":"VariableDeclaration","scope":1404,"src":"7314:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"7314:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1335,"initialValue":{"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7335:17:6","subExpression":{"id":1333,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"7335:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7314:38:6"},{"assignments":[1338],"declarations":[{"constant":false,"id":1338,"mutability":"mutable","name":"proposal","nameLocation":"7379:8:6","nodeType":"VariableDeclaration","scope":1404,"src":"7362:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1337,"nodeType":"UserDefinedTypeName","pathNode":{"id":1336,"name":"Proposal","nameLocations":["7362:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"7362:8:6"},"referencedDeclaration":939,"src":"7362:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1342,"initialValue":{"baseExpression":{"id":1339,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7390:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1341,"indexExpression":{"id":1340,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7400:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7390:21:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7362:49:6"},{"expression":{"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1343,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7430:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7439:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"7430:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1346,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7444:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7430:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1348,"nodeType":"ExpressionStatement","src":"7430:24:6"},{"expression":{"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1349,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7464:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7473:11:6","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":918,"src":"7464:20:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1352,"name":"_description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"7487:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"7464:35:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1354,"nodeType":"ExpressionStatement","src":"7464:35:6"},{"expression":{"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1355,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7509:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7518:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"7509:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7529:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7509:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1360,"nodeType":"ExpressionStatement","src":"7509:21:6"},{"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1361,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7540:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7549:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"7540:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7564:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7540:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1366,"nodeType":"ExpressionStatement","src":"7540:25:6"},{"expression":{"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1367,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7575:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7584:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"7575:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7595:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7575:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1372,"nodeType":"ExpressionStatement","src":"7575:25:6"},{"expression":{"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1373,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7610:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7619:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":926,"src":"7610:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1376,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7630:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7636:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"7630:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1378,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"7648:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7630:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7610:47:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1381,"nodeType":"ExpressionStatement","src":"7610:47:6"},{"expression":{"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1382,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7667:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7676:9:6","memberName":"initiator","nodeType":"MemberAccess","referencedDeclaration":928,"src":"7667:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7688:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7692:6:6","memberName":"sender","nodeType":"MemberAccess","src":"7688:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7667:31:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1388,"nodeType":"ExpressionStatement","src":"7667:31:6"},{"expression":{"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1389,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7708:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7717:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"7708:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1392,"name":"_operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"7729:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7708:31:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":1394,"nodeType":"ExpressionStatement","src":"7708:31:6"},{"eventCall":{"arguments":[{"id":1396,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7771:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1397,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7783:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7787:6:6","memberName":"sender","nodeType":"MemberAccess","src":"7783:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1399,"name":"_description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"7795:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1395,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"7755:15:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,address,string memory)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7755:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1401,"nodeType":"EmitStatement","src":"7750:58:6"},{"expression":{"id":1402,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7825:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1299,"id":1403,"nodeType":"Return","src":"7818:17:6"}]},"documentation":{"id":1287,"nodeType":"StructuredDocumentation","src":"6376:429:6","text":" @dev Создать предложение с выбором цепочки для кворума\n @param _description Описание предложения\n @param _duration Длительность голосования в секундах\n @param _operation Операция для исполнения\n @param _governanceChainId ID цепочки для сбора голосов"},"functionSelector":"b3594510","id":1405,"implemented":true,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"6819:14:6","nodeType":"FunctionDefinition","parameters":{"id":1296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1289,"mutability":"mutable","name":"_description","nameLocation":"6857:12:6","nodeType":"VariableDeclaration","scope":1405,"src":"6843:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1288,"name":"string","nodeType":"ElementaryTypeName","src":"6843:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"_duration","nameLocation":"6888:9:6","nodeType":"VariableDeclaration","scope":1405,"src":"6880:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"6880:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1293,"mutability":"mutable","name":"_operation","nameLocation":"6920:10:6","nodeType":"VariableDeclaration","scope":1405,"src":"6907:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1292,"name":"bytes","nodeType":"ElementaryTypeName","src":"6907:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1295,"mutability":"mutable","name":"_governanceChainId","nameLocation":"6948:18:6","nodeType":"VariableDeclaration","scope":1405,"src":"6940:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1294,"name":"uint256","nodeType":"ElementaryTypeName","src":"6940:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6833:139:6"},"returnParameters":{"id":1299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1405,"src":"6991:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1297,"name":"uint256","nodeType":"ElementaryTypeName","src":"6991:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6990:9:6"},"scope":2613,"src":"6810:1032:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1506,"nodeType":"Block","src":"8114:731:6","statements":[{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"proposal","nameLocation":"8141:8:6","nodeType":"VariableDeclaration","scope":1506,"src":"8124:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1416,"nodeType":"UserDefinedTypeName","pathNode":{"id":1415,"name":"Proposal","nameLocations":["8124:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"8124:8:6"},"referencedDeclaration":939,"src":"8124:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1421,"initialValue":{"baseExpression":{"id":1418,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"8152:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1420,"indexExpression":{"id":1419,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"8162:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8152:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8124:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1423,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8192:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8201:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"8192:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1425,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"8207:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8192:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8220:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1422,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8184:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8184:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"8184:62:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1431,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8264:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8270:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"8264:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1433,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8282:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8291:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":926,"src":"8282:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8264:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f74696e6720656e646564","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8301:14:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_211d0608ef50debe6357d9eaeecace048d209b7b495f49840d398b4315c37db4","typeString":"literal_string \"Voting ended\""},"value":"Voting ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211d0608ef50debe6357d9eaeecace048d209b7b495f49840d398b4315c37db4","typeString":"literal_string \"Voting ended\""}],"id":1430,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8256:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8256:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"8256:60:6"},{"expression":{"arguments":[{"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8334:18:6","subExpression":{"expression":{"id":1440,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8335:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8344:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"8335:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20616c7265616479206578656375746564","id":1443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8354:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""},"value":"Proposal already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""}],"id":1439,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8326:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8326:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1445,"nodeType":"ExpressionStatement","src":"8326:56:6"},{"expression":{"arguments":[{"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8400:30:6","subExpression":{"baseExpression":{"expression":{"id":1447,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8401:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8410:8:6","memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":934,"src":"8401:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1451,"indexExpression":{"expression":{"id":1449,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8419:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8423:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8419:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8401:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920766f746564","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8432:15:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_512fc59044d4f0722f9346c450973ffe8aac7aa1142e536739987018593c53b6","typeString":"literal_string \"Already voted\""},"value":"Already voted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_512fc59044d4f0722f9346c450973ffe8aac7aa1142e536739987018593c53b6","typeString":"literal_string \"Already voted\""}],"id":1446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8392:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8392:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1455,"nodeType":"ExpressionStatement","src":"8392:56:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1458,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8476:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8480:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8476:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1457,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"8466:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8466:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8466:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20746f6b656e7320746f20766f7465","id":1463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8493:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_824133654506f10a4f01c9f90ea8c64e0c5603376bd2f191fdab4c36e943ddd9","typeString":"literal_string \"No tokens to vote\""},"value":"No tokens to vote"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_824133654506f10a4f01c9f90ea8c64e0c5603376bd2f191fdab4c36e943ddd9","typeString":"literal_string \"No tokens to vote\""}],"id":1456,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8458:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8458:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1465,"nodeType":"ExpressionStatement","src":"8458:55:6"},{"assignments":[1467],"declarations":[{"constant":false,"id":1467,"mutability":"mutable","name":"votingPower","nameLocation":"8532:11:6","nodeType":"VariableDeclaration","scope":1506,"src":"8524:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1466,"name":"uint256","nodeType":"ElementaryTypeName","src":"8524:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1472,"initialValue":{"arguments":[{"expression":{"id":1469,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8556:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8560:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8556:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1468,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"8546:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8546:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8524:43:6"},{"expression":{"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1473,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8577:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8586:8:6","memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":934,"src":"8577:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1478,"indexExpression":{"expression":{"id":1475,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8595:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8599:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8595:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8577:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8609:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8577:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1481,"nodeType":"ExpressionStatement","src":"8577:36:6"},{"condition":{"id":1482,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"8628:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1496,"nodeType":"Block","src":"8701:61:6","statements":[{"expression":{"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1490,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8715:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8724:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"8715:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1493,"name":"votingPower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"8740:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8715:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1495,"nodeType":"ExpressionStatement","src":"8715:36:6"}]},"id":1497,"nodeType":"IfStatement","src":"8624:138:6","trueBody":{"id":1489,"nodeType":"Block","src":"8638:57:6","statements":[{"expression":{"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1483,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8652:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8661:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"8652:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1486,"name":"votingPower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"8673:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8652:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1488,"nodeType":"ExpressionStatement","src":"8652:32:6"}]}},{"eventCall":{"arguments":[{"id":1499,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"8791:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8804:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8808:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8804:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1502,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"8816:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1503,"name":"votingPower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"8826:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1498,"name":"ProposalVoted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"8777:13:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (uint256,address,bool,uint256)"}},"id":1504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8777:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1505,"nodeType":"EmitStatement","src":"8772:66:6"}]},"documentation":{"id":1406,"nodeType":"StructuredDocumentation","src":"7848:189:6","text":" @dev Голосовать за предложение\n @param _proposalId ID предложения\n @param _support Поддержка предложения"},"functionSelector":"c9d27afe","id":1507,"implemented":true,"kind":"function","modifiers":[{"id":1413,"kind":"modifierInvocation","modifierName":{"id":1412,"name":"nonReentrant","nameLocations":["8101:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":818,"src":"8101:12:6"},"nodeType":"ModifierInvocation","src":"8101:12:6"}],"name":"vote","nameLocation":"8051:4:6","nodeType":"FunctionDefinition","parameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1408,"mutability":"mutable","name":"_proposalId","nameLocation":"8064:11:6","nodeType":"VariableDeclaration","scope":1507,"src":"8056:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1407,"name":"uint256","nodeType":"ElementaryTypeName","src":"8056:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1410,"mutability":"mutable","name":"_support","nameLocation":"8082:8:6","nodeType":"VariableDeclaration","scope":1507,"src":"8077:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1409,"name":"bool","nodeType":"ElementaryTypeName","src":"8077:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8055:36:6"},"returnParameters":{"id":1414,"nodeType":"ParameterList","parameters":[],"src":"8114:0:6"},"scope":2613,"src":"8042:803:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1578,"nodeType":"Block","src":"9385:733:6","statements":[{"assignments":[1523],"declarations":[{"constant":false,"id":1523,"mutability":"mutable","name":"proposal","nameLocation":"9412:8:6","nodeType":"VariableDeclaration","scope":1578,"src":"9395:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1522,"nodeType":"UserDefinedTypeName","pathNode":{"id":1521,"name":"Proposal","nameLocations":["9395:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"9395:8:6"},"referencedDeclaration":939,"src":"9395:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1527,"initialValue":{"baseExpression":{"id":1524,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"9423:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1526,"indexExpression":{"id":1525,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"9433:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9423:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9395:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1529,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9463:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9472:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"9463:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1531,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"9478:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9463:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9491:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1528,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9455:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9455:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1535,"nodeType":"ExpressionStatement","src":"9455:62:6"},{"expression":{"arguments":[{"baseExpression":{"id":1537,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"9535:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1539,"indexExpression":{"id":1538,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"9551:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9535:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":1540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9566:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":1536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9527:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9527:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1542,"nodeType":"ExpressionStatement","src":"9527:61:6"},{"expression":{"arguments":[{"id":1548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9606:39:6","subExpression":{"baseExpression":{"expression":{"id":1544,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9607:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9616:15:6","memberName":"chainVoteSynced","nodeType":"MemberAccess","referencedDeclaration":938,"src":"9607:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1547,"indexExpression":{"id":1546,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"9632:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9607:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c72656164792073796e636564","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9647:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""},"value":"Already synced"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""}],"id":1543,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9598:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9598:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1551,"nodeType":"ExpressionStatement","src":"9598:66:6"},{"expression":{"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1552,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9901:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9910:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"9901:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1555,"name":"_forVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"9922:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9901:30:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1557,"nodeType":"ExpressionStatement","src":"9901:30:6"},{"expression":{"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1558,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9941:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9950:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"9941:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1561,"name":"_againstVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"9966:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9941:38:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1563,"nodeType":"ExpressionStatement","src":"9941:38:6"},{"expression":{"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1564,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9989:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9998:15:6","memberName":"chainVoteSynced","nodeType":"MemberAccess","referencedDeclaration":938,"src":"9989:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1568,"indexExpression":{"id":1566,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"10014:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9989:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10030:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"9989:45:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1571,"nodeType":"ExpressionStatement","src":"9989:45:6"},{"eventCall":{"arguments":[{"id":1573,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"10069:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1574,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"10082:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1575,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"10096:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1572,"name":"CrossChainVoteSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"10050:18:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10050:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1577,"nodeType":"EmitStatement","src":"10045:66:6"}]},"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"8851:335:6","text":" @dev Синхронизировать голос из другой цепочки\n @param _proposalId ID предложения\n @param _fromChainId ID цепочки откуда синхронизируем\n @param _forVotes Голоса за\n @param _againstVotes Голоса против"},"functionSelector":"456d10c1","id":1579,"implemented":true,"kind":"function","modifiers":[],"name":"syncVoteFromChain","nameLocation":"9200:17:6","nodeType":"FunctionDefinition","parameters":{"id":1519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1510,"mutability":"mutable","name":"_proposalId","nameLocation":"9235:11:6","nodeType":"VariableDeclaration","scope":1579,"src":"9227:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"9227:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1512,"mutability":"mutable","name":"_fromChainId","nameLocation":"9264:12:6","nodeType":"VariableDeclaration","scope":1579,"src":"9256:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"9256:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"_forVotes","nameLocation":"9294:9:6","nodeType":"VariableDeclaration","scope":1579,"src":"9286:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"9286:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1516,"mutability":"mutable","name":"_againstVotes","nameLocation":"9321:13:6","nodeType":"VariableDeclaration","scope":1579,"src":"9313:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"9313:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1579,"src":"9344:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1517,"name":"bytes","nodeType":"ElementaryTypeName","src":"9344:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9217:158:6"},"returnParameters":{"id":1520,"nodeType":"ParameterList","parameters":[],"src":"9385:0:6"},"scope":2613,"src":"9191:927:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1642,"nodeType":"Block","src":"10498:476:6","statements":[{"assignments":[1591],"declarations":[{"constant":false,"id":1591,"mutability":"mutable","name":"proposal","nameLocation":"10525:8:6","nodeType":"VariableDeclaration","scope":1642,"src":"10508:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1590,"nodeType":"UserDefinedTypeName","pathNode":{"id":1589,"name":"Proposal","nameLocations":["10508:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"10508:8:6"},"referencedDeclaration":939,"src":"10508:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1595,"initialValue":{"baseExpression":{"id":1592,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"10536:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1594,"indexExpression":{"id":1593,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"10546:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10536:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10508:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1597,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10576:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10585:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"10576:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1599,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"10591:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10576:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10604:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1596,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10568:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10568:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1603,"nodeType":"ExpressionStatement","src":"10568:62:6"},{"assignments":[1605],"declarations":[{"constant":false,"id":1605,"mutability":"mutable","name":"totalVotes","nameLocation":"10649:10:6","nodeType":"VariableDeclaration","scope":1642,"src":"10641:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1604,"name":"uint256","nodeType":"ElementaryTypeName","src":"10641:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1611,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1606,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10662:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10671:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"10662:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":1608,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10682:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10691:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"10682:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10662:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10641:62:6"},{"assignments":[1613],"declarations":[{"constant":false,"id":1613,"mutability":"mutable","name":"quorumRequired","nameLocation":"10721:14:6","nodeType":"VariableDeclaration","scope":1642,"src":"10713:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1621,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1614,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"10739:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10739:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1616,"name":"quorumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"10755:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10739:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10738:34:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":1619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10775:3:6","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"10738:40:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10713:65:6"},{"expression":{"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1622,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"10797:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1623,"name":"totalVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"10813:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1624,"name":"quorumRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"10827:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10813:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10797:44:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"ExpressionStatement","src":"10797:44:6"},{"expression":{"id":1636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1628,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"10851:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1629,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"10860:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1630,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10877:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10886:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"10877:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":1632,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10897:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10906:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"10897:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10877:41:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10860:58:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10851:67:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1637,"nodeType":"ExpressionStatement","src":"10851:67:6"},{"expression":{"components":[{"id":1638,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"10945:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1639,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"10953:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1640,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10944:23:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"functionReturnParameters":1588,"id":1641,"nodeType":"Return","src":"10937:30:6"}]},"documentation":{"id":1580,"nodeType":"StructuredDocumentation","src":"10124:265:6","text":" @dev Проверить результат предложения\n @param _proposalId ID предложения\n @return passed Прошло ли предложение\n @return quorumReached Достигнут ли кворум"},"functionSelector":"7e5a9b47","id":1643,"implemented":true,"kind":"function","modifiers":[],"name":"checkProposalResult","nameLocation":"10403:19:6","nodeType":"FunctionDefinition","parameters":{"id":1583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1582,"mutability":"mutable","name":"_proposalId","nameLocation":"10431:11:6","nodeType":"VariableDeclaration","scope":1643,"src":"10423:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"10423:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10422:21:6"},"returnParameters":{"id":1588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1585,"mutability":"mutable","name":"passed","nameLocation":"10470:6:6","nodeType":"VariableDeclaration","scope":1643,"src":"10465:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1584,"name":"bool","nodeType":"ElementaryTypeName","src":"10465:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1587,"mutability":"mutable","name":"quorumReached","nameLocation":"10483:13:6","nodeType":"VariableDeclaration","scope":1643,"src":"10478:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1586,"name":"bool","nodeType":"ElementaryTypeName","src":"10478:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10464:33:6"},"scope":2613,"src":"10394:580:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":1712,"nodeType":"Block","src":"11157:635:6","statements":[{"assignments":[1651],"declarations":[{"constant":false,"id":1651,"mutability":"mutable","name":"proposal","nameLocation":"11184:8:6","nodeType":"VariableDeclaration","scope":1712,"src":"11167:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1650,"nodeType":"UserDefinedTypeName","pathNode":{"id":1649,"name":"Proposal","nameLocations":["11167:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"11167:8:6"},"referencedDeclaration":939,"src":"11167:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1655,"initialValue":{"baseExpression":{"id":1652,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"11195:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1654,"indexExpression":{"id":1653,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11205:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11195:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11167:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1657,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11235:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11244:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"11235:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1659,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11250:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11235:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11263:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1656,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11227:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11227:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1663,"nodeType":"ExpressionStatement","src":"11227:62:6"},{"expression":{"arguments":[{"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11307:18:6","subExpression":{"expression":{"id":1665,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11308:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11317:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"11308:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20616c7265616479206578656375746564","id":1668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11327:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""},"value":"Proposal already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""}],"id":1664,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11299:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11299:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1670,"nodeType":"ExpressionStatement","src":"11299:56:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1672,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11373:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11379:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"11373:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":1674,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11392:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11401:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":926,"src":"11392:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11373:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f74696e67206e6f7420656e646564","id":1677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11411:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa3afa53d79e86c3f6a23b414e9eaabf98604d6fc663aa1da275377424956dc3","typeString":"literal_string \"Voting not ended\""},"value":"Voting not ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa3afa53d79e86c3f6a23b414e9eaabf98604d6fc663aa1da275377424956dc3","typeString":"literal_string \"Voting not ended\""}],"id":1671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11365:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11365:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1679,"nodeType":"ExpressionStatement","src":"11365:65:6"},{"assignments":[1681,1683],"declarations":[{"constant":false,"id":1681,"mutability":"mutable","name":"passed","nameLocation":"11447:6:6","nodeType":"VariableDeclaration","scope":1712,"src":"11442:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1680,"name":"bool","nodeType":"ElementaryTypeName","src":"11442:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1683,"mutability":"mutable","name":"quorumReached","nameLocation":"11460:13:6","nodeType":"VariableDeclaration","scope":1712,"src":"11455:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1682,"name":"bool","nodeType":"ElementaryTypeName","src":"11455:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1687,"initialValue":{"arguments":[{"id":1685,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11497:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1684,"name":"checkProposalResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"11477:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$_t_bool_$","typeString":"function (uint256) view returns (bool,bool)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11477:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"nodeType":"VariableDeclarationStatement","src":"11441:68:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1689,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"11527:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1690,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"11537:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11527:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c206e6f7420706173736564","id":1692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11552:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8789ac58780df0d349b543986ff0576f2825fbf77f8dd377739331d82041c18e","typeString":"literal_string \"Proposal not passed\""},"value":"Proposal not passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8789ac58780df0d349b543986ff0576f2825fbf77f8dd377739331d82041c18e","typeString":"literal_string \"Proposal not passed\""}],"id":1688,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11519:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11519:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1694,"nodeType":"ExpressionStatement","src":"11519:55:6"},{"expression":{"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1695,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11585:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11594:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"11585:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11605:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11585:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1700,"nodeType":"ExpressionStatement","src":"11585:24:6"},{"expression":{"arguments":[{"expression":{"id":1702,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11693:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1703,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11702:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"11693:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"id":1701,"name":"_executeOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"11675:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11675:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1705,"nodeType":"ExpressionStatement","src":"11675:37:6"},{"eventCall":{"arguments":[{"id":1707,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11753:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1708,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11766:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11775:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"11766:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"id":1706,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1057,"src":"11736:16:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory)"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11736:49:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1711,"nodeType":"EmitStatement","src":"11731:54:6"}]},"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"10980:117:6","text":" @dev Исполнить предложение\n @param _proposalId ID предложения"},"functionSelector":"0d61b519","id":1713,"implemented":true,"kind":"function","modifiers":[],"name":"executeProposal","nameLocation":"11111:15:6","nodeType":"FunctionDefinition","parameters":{"id":1647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"mutability":"mutable","name":"_proposalId","nameLocation":"11135:11:6","nodeType":"VariableDeclaration","scope":1713,"src":"11127:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1645,"name":"uint256","nodeType":"ElementaryTypeName","src":"11127:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11126:21:6"},"returnParameters":{"id":1648,"nodeType":"ParameterList","parameters":[],"src":"11157:0:6"},"scope":2613,"src":"11102:690:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1801,"nodeType":"Block","src":"12140:663:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1725,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12168:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12172:6:6","memberName":"sender","nodeType":"MemberAccess","src":"12168:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1724,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"12158:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12158:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12182:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12158:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f20637265617465206f7065726174696f6e","id":1730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12185:38:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b4c6044429574409cde35868815ebf07dd07f140f75d3558ab1494a2cd4af78a","typeString":"literal_string \"Must hold tokens to create operation\""},"value":"Must hold tokens to create operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b4c6044429574409cde35868815ebf07dd07f140f75d3558ab1494a2cd4af78a","typeString":"literal_string \"Must hold tokens to create operation\""}],"id":1723,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12150:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12150:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1732,"nodeType":"ExpressionStatement","src":"12150:74:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1734,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1718,"src":"12242:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12254:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12242:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475726174696f6e206d75737420626520706f736974697665","id":1737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12257:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""},"value":"Duration must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""}],"id":1733,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12234:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12234:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1739,"nodeType":"ExpressionStatement","src":"12234:51:6"},{"assignments":[1741],"declarations":[{"constant":false,"id":1741,"mutability":"mutable","name":"operationId","nameLocation":"12304:11:6","nodeType":"VariableDeclaration","scope":1801,"src":"12296:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1740,"name":"uint256","nodeType":"ElementaryTypeName","src":"12296:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1744,"initialValue":{"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12318:17:6","subExpression":{"id":1742,"name":"multiSigCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"12318:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12296:39:6"},{"assignments":[1747],"declarations":[{"constant":false,"id":1747,"mutability":"mutable","name":"operation","nameLocation":"12371:9:6","nodeType":"VariableDeclaration","scope":1801,"src":"12345:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1746,"nodeType":"UserDefinedTypeName","pathNode":{"id":1745,"name":"MultiSigOperation","nameLocations":["12345:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"12345:17:6"},"referencedDeclaration":960,"src":"12345:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1751,"initialValue":{"baseExpression":{"id":1748,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"12383:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1750,"indexExpression":{"id":1749,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"12402:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12383:31:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12345:69:6"},{"expression":{"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1752,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12433:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12443:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"12433:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1755,"name":"_operationHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"12459:14:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12433:40:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1757,"nodeType":"ExpressionStatement","src":"12433:40:6"},{"expression":{"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1758,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12483:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12493:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"12483:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12509:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12483:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1763,"nodeType":"ExpressionStatement","src":"12483:27:6"},{"expression":{"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1764,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12520:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12530:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"12520:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12550:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12520:31:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1769,"nodeType":"ExpressionStatement","src":"12520:31:6"},{"expression":{"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1770,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12561:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12571:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"12561:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12582:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12561:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1775,"nodeType":"ExpressionStatement","src":"12561:26:6"},{"expression":{"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1776,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12597:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12607:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":949,"src":"12597:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1779,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12618:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12624:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"12618:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1781,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1718,"src":"12636:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12618:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12597:48:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1784,"nodeType":"ExpressionStatement","src":"12597:48:6"},{"expression":{"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1785,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12655:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12665:9:6","memberName":"initiator","nodeType":"MemberAccess","referencedDeclaration":951,"src":"12655:19:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1788,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12677:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12681:6:6","memberName":"sender","nodeType":"MemberAccess","src":"12677:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12655:32:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1791,"nodeType":"ExpressionStatement","src":"12655:32:6"},{"eventCall":{"arguments":[{"id":1793,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"12728:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12741:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12745:6:6","memberName":"sender","nodeType":"MemberAccess","src":"12741:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1796,"name":"_operationHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"12753:14:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1792,"name":"MultiSigOperationCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1065,"src":"12703:24:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (uint256,address,bytes32)"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12703:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1798,"nodeType":"EmitStatement","src":"12698:70:6"},{"expression":{"id":1799,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"12785:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1722,"id":1800,"nodeType":"Return","src":"12778:18:6"}]},"documentation":{"id":1714,"nodeType":"StructuredDocumentation","src":"11798:212:6","text":" @dev Создать мультиподпись операцию\n @param _operationHash Хеш операции\n @param _duration Длительность сбора подписей"},"functionSelector":"b00e0730","id":1802,"implemented":true,"kind":"function","modifiers":[],"name":"createMultiSigOperation","nameLocation":"12024:23:6","nodeType":"FunctionDefinition","parameters":{"id":1719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1716,"mutability":"mutable","name":"_operationHash","nameLocation":"12065:14:6","nodeType":"VariableDeclaration","scope":1802,"src":"12057:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12057:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1718,"mutability":"mutable","name":"_duration","nameLocation":"12097:9:6","nodeType":"VariableDeclaration","scope":1802,"src":"12089:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1717,"name":"uint256","nodeType":"ElementaryTypeName","src":"12089:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12047:65:6"},"returnParameters":{"id":1722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1802,"src":"12131:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"12131:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12130:9:6"},"scope":2613,"src":"12015:788:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1906,"nodeType":"Block","src":"13096:798:6","statements":[{"assignments":[1814],"declarations":[{"constant":false,"id":1814,"mutability":"mutable","name":"operation","nameLocation":"13132:9:6","nodeType":"VariableDeclaration","scope":1906,"src":"13106:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1813,"nodeType":"UserDefinedTypeName","pathNode":{"id":1812,"name":"MultiSigOperation","nameLocations":["13106:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"13106:17:6"},"referencedDeclaration":960,"src":"13106:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1818,"initialValue":{"baseExpression":{"id":1815,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"13144:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1817,"indexExpression":{"id":1816,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"13163:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13144:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13106:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1820,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13194:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13204:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"13194:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13229:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13221:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13221:7:6","typeDescriptions":{}}},"id":1825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13221:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13194:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":1827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13233:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":1819,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13186:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13186:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1829,"nodeType":"ExpressionStatement","src":"13186:74:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1831,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13278:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13284:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"13278:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1833,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13296:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13306:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":949,"src":"13296:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13278:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e696e6720656e646564","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13316:15:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_950f8cf6a836192653a57ac3dc657e6414282f8063b5c5cd97e12fa3582f7f0b","typeString":"literal_string \"Signing ended\""},"value":"Signing ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_950f8cf6a836192653a57ac3dc657e6414282f8063b5c5cd97e12fa3582f7f0b","typeString":"literal_string \"Signing ended\""}],"id":1830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13270:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13270:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1838,"nodeType":"ExpressionStatement","src":"13270:62:6"},{"expression":{"arguments":[{"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13350:19:6","subExpression":{"expression":{"id":1840,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13351:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13361:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"13351:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20616c7265616479206578656375746564","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13371:28:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""},"value":"Operation already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""}],"id":1839,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13342:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13342:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1845,"nodeType":"ExpressionStatement","src":"13342:58:6"},{"expression":{"arguments":[{"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13418:32:6","subExpression":{"baseExpression":{"expression":{"id":1847,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13419:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13429:9:6","memberName":"hasSigned","nodeType":"MemberAccess","referencedDeclaration":955,"src":"13419:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1851,"indexExpression":{"expression":{"id":1849,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13439:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13443:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13439:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13419:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c7265616479207369676e6564","id":1853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13452:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_988ed7cc4955768d49d35b181a2bc2b0514174494b33f90da8e2fba3c967c228","typeString":"literal_string \"Already signed\""},"value":"Already signed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_988ed7cc4955768d49d35b181a2bc2b0514174494b33f90da8e2fba3c967c228","typeString":"literal_string \"Already signed\""}],"id":1846,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13410:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13410:59:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1855,"nodeType":"ExpressionStatement","src":"13410:59:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1858,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13497:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13501:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13497:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1857,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"13487:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13487:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13511:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13487:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20746f6b656e7320746f207369676e","id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13514:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_37e2d833e560c1ccf9c683771d8d4f9f76f0218dc9c833046d68f1d43e310ed7","typeString":"literal_string \"No tokens to sign\""},"value":"No tokens to sign"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37e2d833e560c1ccf9c683771d8d4f9f76f0218dc9c833046d68f1d43e310ed7","typeString":"literal_string \"No tokens to sign\""}],"id":1856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13479:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13479:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"ExpressionStatement","src":"13479:55:6"},{"assignments":[1867],"declarations":[{"constant":false,"id":1867,"mutability":"mutable","name":"signaturePower","nameLocation":"13553:14:6","nodeType":"VariableDeclaration","scope":1906,"src":"13545:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1866,"name":"uint256","nodeType":"ElementaryTypeName","src":"13545:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1872,"initialValue":{"arguments":[{"expression":{"id":1869,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13580:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13584:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13580:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1868,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"13570:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13570:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13545:46:6"},{"expression":{"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1873,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13601:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13611:9:6","memberName":"hasSigned","nodeType":"MemberAccess","referencedDeclaration":955,"src":"13601:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1878,"indexExpression":{"expression":{"id":1875,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13621:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13625:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13621:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13601:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13635:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"13601:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1881,"nodeType":"ExpressionStatement","src":"13601:38:6"},{"condition":{"id":1882,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"13654:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1896,"nodeType":"Block","src":"13736:70:6","statements":[{"expression":{"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1890,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13750:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13760:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"13750:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1893,"name":"signaturePower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"13781:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13750:45:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1895,"nodeType":"ExpressionStatement","src":"13750:45:6"}]},"id":1897,"nodeType":"IfStatement","src":"13650:156:6","trueBody":{"id":1889,"nodeType":"Block","src":"13664:66:6","statements":[{"expression":{"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1883,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13678:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13688:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"13678:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1886,"name":"signaturePower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"13705:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13678:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"nodeType":"ExpressionStatement","src":"13678:41:6"}]}},{"eventCall":{"arguments":[{"id":1899,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"13836:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1900,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13850:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13854:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13850:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1902,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"13862:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1903,"name":"signaturePower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"13872:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1898,"name":"MultiSigSigned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"13821:14:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (uint256,address,bool,uint256)"}},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13821:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1905,"nodeType":"EmitStatement","src":"13816:71:6"}]},"documentation":{"id":1803,"nodeType":"StructuredDocumentation","src":"12809:192:6","text":" @dev Подписать мультиподпись операцию\n @param _operationId ID операции\n @param _support Поддержка операции"},"functionSelector":"ccd7a490","id":1907,"implemented":true,"kind":"function","modifiers":[{"id":1810,"kind":"modifierInvocation","modifierName":{"id":1809,"name":"nonReentrant","nameLocations":["13083:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":818,"src":"13083:12:6"},"nodeType":"ModifierInvocation","src":"13083:12:6"}],"name":"signMultiSigOperation","nameLocation":"13015:21:6","nodeType":"FunctionDefinition","parameters":{"id":1808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"_operationId","nameLocation":"13045:12:6","nodeType":"VariableDeclaration","scope":1907,"src":"13037:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"13037:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1807,"mutability":"mutable","name":"_support","nameLocation":"13064:8:6","nodeType":"VariableDeclaration","scope":1907,"src":"13059:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1806,"name":"bool","nodeType":"ElementaryTypeName","src":"13059:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13036:37:6"},"returnParameters":{"id":1811,"nodeType":"ParameterList","parameters":[],"src":"13096:0:6"},"scope":2613,"src":"13006:888:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1981,"nodeType":"Block","src":"14474:747:6","statements":[{"assignments":[1923],"declarations":[{"constant":false,"id":1923,"mutability":"mutable","name":"operation","nameLocation":"14510:9:6","nodeType":"VariableDeclaration","scope":1981,"src":"14484:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1922,"nodeType":"UserDefinedTypeName","pathNode":{"id":1921,"name":"MultiSigOperation","nameLocations":["14484:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"14484:17:6"},"referencedDeclaration":960,"src":"14484:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1927,"initialValue":{"baseExpression":{"id":1924,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"14522:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1926,"indexExpression":{"id":1925,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"14541:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14522:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14484:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1929,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"14572:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14582:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"14572:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14607:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14599:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1931,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14599:7:6","typeDescriptions":{}}},"id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14599:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14572:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14611:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":1928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14564:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14564:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1938,"nodeType":"ExpressionStatement","src":"14564:74:6"},{"expression":{"arguments":[{"baseExpression":{"id":1940,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"14656:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1942,"indexExpression":{"id":1941,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"14672:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14656:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14687:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":1939,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14648:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14648:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1945,"nodeType":"ExpressionStatement","src":"14648:61:6"},{"expression":{"arguments":[{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14727:40:6","subExpression":{"baseExpression":{"expression":{"id":1947,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"14728:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14738:15:6","memberName":"chainSignSynced","nodeType":"MemberAccess","referencedDeclaration":959,"src":"14728:25:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1950,"indexExpression":{"id":1949,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"14754:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14728:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c72656164792073796e636564","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14769:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""},"value":"Already synced"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""}],"id":1946,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14719:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14719:67:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1954,"nodeType":"ExpressionStatement","src":"14719:67:6"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1955,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"14976:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14986:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"14976:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1958,"name":"_forSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1914,"src":"15003:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14976:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1960,"nodeType":"ExpressionStatement","src":"14976:41:6"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1961,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"15027:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15037:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"15027:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1964,"name":"_againstSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"15058:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15027:49:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"15027:49:6"},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1967,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"15086:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15096:15:6","memberName":"chainSignSynced","nodeType":"MemberAccess","referencedDeclaration":959,"src":"15086:25:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1971,"indexExpression":{"id":1969,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"15112:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15086:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15128:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15086:46:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1974,"nodeType":"ExpressionStatement","src":"15086:46:6"},{"eventCall":{"arguments":[{"id":1976,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"15171:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1977,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"15185:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1978,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"15199:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1975,"name":"CrossChainMultiSigSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"15148:22:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15148:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1980,"nodeType":"EmitStatement","src":"15143:71:6"}]},"documentation":{"id":1908,"nodeType":"StructuredDocumentation","src":"13900:360:6","text":" @dev Синхронизировать мультиподпись из другой цепочки\n @param _operationId ID операции\n @param _fromChainId ID цепочки откуда синхронизируем\n @param _forSignatures Подписи за\n @param _againstSignatures Подписи против"},"functionSelector":"2ee09598","id":1982,"implemented":true,"kind":"function","modifiers":[],"name":"syncMultiSigFromChain","nameLocation":"14274:21:6","nodeType":"FunctionDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"_operationId","nameLocation":"14313:12:6","nodeType":"VariableDeclaration","scope":1982,"src":"14305:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"14305:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1912,"mutability":"mutable","name":"_fromChainId","nameLocation":"14343:12:6","nodeType":"VariableDeclaration","scope":1982,"src":"14335:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1911,"name":"uint256","nodeType":"ElementaryTypeName","src":"14335:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1914,"mutability":"mutable","name":"_forSignatures","nameLocation":"14373:14:6","nodeType":"VariableDeclaration","scope":1982,"src":"14365:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1913,"name":"uint256","nodeType":"ElementaryTypeName","src":"14365:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1916,"mutability":"mutable","name":"_againstSignatures","nameLocation":"14405:18:6","nodeType":"VariableDeclaration","scope":1982,"src":"14397:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"14397:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"14433:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1917,"name":"bytes","nodeType":"ElementaryTypeName","src":"14433:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14295:169:6"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[],"src":"14474:0:6"},"scope":2613,"src":"14265:956:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2048,"nodeType":"Block","src":"15595:542:6","statements":[{"assignments":[1994],"declarations":[{"constant":false,"id":1994,"mutability":"mutable","name":"operation","nameLocation":"15631:9:6","nodeType":"VariableDeclaration","scope":2048,"src":"15605:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1993,"nodeType":"UserDefinedTypeName","pathNode":{"id":1992,"name":"MultiSigOperation","nameLocations":["15605:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"15605:17:6"},"referencedDeclaration":960,"src":"15605:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1998,"initialValue":{"baseExpression":{"id":1995,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"15643:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1997,"indexExpression":{"id":1996,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"15662:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15643:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15605:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2000,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"15693:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15703:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"15693:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15728:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15720:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15720:7:6","typeDescriptions":{}}},"id":2005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15720:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15693:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15732:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":1999,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15685:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15685:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2009,"nodeType":"ExpressionStatement","src":"15685:74:6"},{"assignments":[2011],"declarations":[{"constant":false,"id":2011,"mutability":"mutable","name":"totalSignatures","nameLocation":"15778:15:6","nodeType":"VariableDeclaration","scope":2048,"src":"15770:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2010,"name":"uint256","nodeType":"ElementaryTypeName","src":"15770:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2017,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2012,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"15796:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15806:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"15796:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2014,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"15822:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15832:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"15822:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15796:53:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15770:79:6"},{"assignments":[2019],"declarations":[{"constant":false,"id":2019,"mutability":"mutable","name":"quorumRequired","nameLocation":"15867:14:6","nodeType":"VariableDeclaration","scope":2048,"src":"15859:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2018,"name":"uint256","nodeType":"ElementaryTypeName","src":"15859:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2027,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2020,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"15885:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15885:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2022,"name":"quorumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"15901:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15885:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15884:34:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":2025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15921:3:6","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"15884:40:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15859:65:6"},{"expression":{"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2028,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"15943:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2029,"name":"totalSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"15959:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2030,"name":"quorumRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"15978:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15959:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15943:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2033,"nodeType":"ExpressionStatement","src":"15943:49:6"},{"expression":{"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2034,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"16002:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2035,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"16011:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2036,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"16028:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16038:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"16028:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":2038,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"16054:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16064:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"16054:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16028:53:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16011:70:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16002:79:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2043,"nodeType":"ExpressionStatement","src":"16002:79:6"},{"expression":{"components":[{"id":2044,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"16108:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2045,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"16116:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16107:23:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"functionReturnParameters":1991,"id":2047,"nodeType":"Return","src":"16100:30:6"}]},"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"15227:258:6","text":" @dev Проверить результат мультиподписи\n @param _operationId ID операции\n @return passed Прошла ли операция\n @return quorumReached Достигнут ли кворум"},"functionSelector":"057b2074","id":2049,"implemented":true,"kind":"function","modifiers":[],"name":"checkMultiSigResult","nameLocation":"15499:19:6","nodeType":"FunctionDefinition","parameters":{"id":1986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"_operationId","nameLocation":"15527:12:6","nodeType":"VariableDeclaration","scope":2049,"src":"15519:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1984,"name":"uint256","nodeType":"ElementaryTypeName","src":"15519:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15518:22:6"},"returnParameters":{"id":1991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1988,"mutability":"mutable","name":"passed","nameLocation":"15567:6:6","nodeType":"VariableDeclaration","scope":2049,"src":"15562:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1987,"name":"bool","nodeType":"ElementaryTypeName","src":"15562:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1990,"mutability":"mutable","name":"quorumReached","nameLocation":"15580:13:6","nodeType":"VariableDeclaration","scope":2049,"src":"15575:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1989,"name":"bool","nodeType":"ElementaryTypeName","src":"15575:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15561:33:6"},"scope":2613,"src":"15490:647:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2116,"nodeType":"Block","src":"16346:577:6","statements":[{"assignments":[2057],"declarations":[{"constant":false,"id":2057,"mutability":"mutable","name":"operation","nameLocation":"16382:9:6","nodeType":"VariableDeclaration","scope":2116,"src":"16356:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":2056,"nodeType":"UserDefinedTypeName","pathNode":{"id":2055,"name":"MultiSigOperation","nameLocations":["16356:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"16356:17:6"},"referencedDeclaration":960,"src":"16356:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":2061,"initialValue":{"baseExpression":{"id":2058,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"16394:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":2060,"indexExpression":{"id":2059,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"16413:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16394:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16356:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2063,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16444:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16454:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"16444:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16479:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16471:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16471:7:6","typeDescriptions":{}}},"id":2068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16471:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16444:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16483:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":2062,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16436:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16436:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2072,"nodeType":"ExpressionStatement","src":"16436:74:6"},{"expression":{"arguments":[{"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16528:19:6","subExpression":{"expression":{"id":2074,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16529:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16539:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"16529:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20616c7265616479206578656375746564","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16549:28:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""},"value":"Operation already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""}],"id":2073,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16520:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16520:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2079,"nodeType":"ExpressionStatement","src":"16520:58:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2081,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16596:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16602:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"16596:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2083,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16615:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16625:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":949,"src":"16615:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16596:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e696e67206e6f7420656e646564","id":2086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16635:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0c2359a9b356344627f350157767095abf42de074fcedb68d11fc108b96cd74","typeString":"literal_string \"Signing not ended\""},"value":"Signing not ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0c2359a9b356344627f350157767095abf42de074fcedb68d11fc108b96cd74","typeString":"literal_string \"Signing not ended\""}],"id":2080,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16588:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16588:67:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2088,"nodeType":"ExpressionStatement","src":"16588:67:6"},{"assignments":[2090,2092],"declarations":[{"constant":false,"id":2090,"mutability":"mutable","name":"passed","nameLocation":"16672:6:6","nodeType":"VariableDeclaration","scope":2116,"src":"16667:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2089,"name":"bool","nodeType":"ElementaryTypeName","src":"16667:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2092,"mutability":"mutable","name":"quorumReached","nameLocation":"16685:13:6","nodeType":"VariableDeclaration","scope":2116,"src":"16680:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2091,"name":"bool","nodeType":"ElementaryTypeName","src":"16680:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2096,"initialValue":{"arguments":[{"id":2094,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"16722:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2093,"name":"checkMultiSigResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"16702:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$_t_bool_$","typeString":"function (uint256) view returns (bool,bool)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16702:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"nodeType":"VariableDeclarationStatement","src":"16666:69:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"16753:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2099,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"16763:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16753:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e206e6f7420706173736564","id":2101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16778:22:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ddf475e14b5f6d3ed9adb8877fe9c76f990b431f369f905fc15026ec102ce36","typeString":"literal_string \"Operation not passed\""},"value":"Operation not passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ddf475e14b5f6d3ed9adb8877fe9c76f990b431f369f905fc15026ec102ce36","typeString":"literal_string \"Operation not passed\""}],"id":2097,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16745:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16745:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"16745:56:6"},{"expression":{"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2104,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16812:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16822:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"16812:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16833:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16812:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2109,"nodeType":"ExpressionStatement","src":"16812:25:6"},{"eventCall":{"arguments":[{"id":2111,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"16878:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2112,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16892:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16902:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"16892:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2110,"name":"MultiSigExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"16861:16:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,bytes32)"}},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16861:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2115,"nodeType":"EmitStatement","src":"16856:60:6"}]},"documentation":{"id":2050,"nodeType":"StructuredDocumentation","src":"16143:133:6","text":" @dev Исполнить мультиподпись операцию\n @param _operationId ID операции"},"functionSelector":"893d692a","id":2117,"implemented":true,"kind":"function","modifiers":[],"name":"executeMultiSigOperation","nameLocation":"16290:24:6","nodeType":"FunctionDefinition","parameters":{"id":2053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2052,"mutability":"mutable","name":"_operationId","nameLocation":"16323:12:6","nodeType":"VariableDeclaration","scope":2117,"src":"16315:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2051,"name":"uint256","nodeType":"ElementaryTypeName","src":"16315:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16314:22:6"},"returnParameters":{"id":2054,"nodeType":"ParameterList","parameters":[],"src":"16346:0:6"},"scope":2613,"src":"16281:642:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2172,"nodeType":"Block","src":"17324:702:6","statements":[{"expression":{"arguments":[{"baseExpression":{"id":2128,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"17342:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2130,"indexExpression":{"id":2129,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"17358:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17342:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":2131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17373:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":2127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17334:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17334:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2133,"nodeType":"ExpressionStatement","src":"17334:61:6"},{"expression":{"arguments":[{"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17413:31:6","subExpression":{"baseExpression":{"id":2135,"name":"executedProposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"17414:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2137,"indexExpression":{"id":2136,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17432:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17414:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c7265616479206578656375746564","id":2139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17446:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_58f47ea4e737df2d9cc4764db26c111751884cf0a1856aca9f4c66cadc811e1b","typeString":"literal_string \"Already executed\""},"value":"Already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_58f47ea4e737df2d9cc4764db26c111751884cf0a1856aca9f4c66cadc811e1b","typeString":"literal_string \"Already executed\""}],"id":2134,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17405:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17405:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2141,"nodeType":"ExpressionStatement","src":"17405:60:6"},{"expression":{"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2142,"name":"executedProposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"17655:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2144,"indexExpression":{"id":2143,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17673:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17655:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17688:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17655:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2147,"nodeType":"ExpressionStatement","src":"17655:37:6"},{"assignments":[2150],"declarations":[{"constant":false,"id":2150,"mutability":"mutable","name":"proposal","nameLocation":"17801:8:6","nodeType":"VariableDeclaration","scope":2172,"src":"17784:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":2149,"nodeType":"UserDefinedTypeName","pathNode":{"id":2148,"name":"Proposal","nameLocations":["17784:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"17784:8:6"},"referencedDeclaration":939,"src":"17784:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":2154,"initialValue":{"baseExpression":{"id":2151,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"17812:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":2153,"indexExpression":{"id":2152,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17822:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17812:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17784:50:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2155,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"17848:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":2156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17857:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"17848:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2157,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17863:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17848:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2165,"nodeType":"IfStatement","src":"17844:94:6","trueBody":{"id":2164,"nodeType":"Block","src":"17876:62:6","statements":[{"expression":{"arguments":[{"expression":{"id":2160,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"17908:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":2161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17917:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"17908:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"id":2159,"name":"_executeOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"17890:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17890:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2163,"nodeType":"ExpressionStatement","src":"17890:37:6"}]}},{"eventCall":{"arguments":[{"id":2167,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17977:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2168,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"17990:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2169,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"18004:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2166,"name":"CrossChainExecutionSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"17953:23:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":2170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17953:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2171,"nodeType":"EmitStatement","src":"17948:71:6"}]},"documentation":{"id":2118,"nodeType":"StructuredDocumentation","src":"16929:249:6","text":" @dev Синхронизировать исполнение из другой цепочки\n @param _proposalId ID предложения\n @param _fromChainId ID цепочки откуда синхронизируем"},"functionSelector":"044bc2bd","id":2173,"implemented":true,"kind":"function","modifiers":[],"name":"syncExecutionFromChain","nameLocation":"17192:22:6","nodeType":"FunctionDefinition","parameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2120,"mutability":"mutable","name":"_proposalId","nameLocation":"17232:11:6","nodeType":"VariableDeclaration","scope":2173,"src":"17224:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2119,"name":"uint256","nodeType":"ElementaryTypeName","src":"17224:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2122,"mutability":"mutable","name":"_fromChainId","nameLocation":"17261:12:6","nodeType":"VariableDeclaration","scope":2173,"src":"17253:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2121,"name":"uint256","nodeType":"ElementaryTypeName","src":"17253:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2173,"src":"17283:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2123,"name":"bytes","nodeType":"ElementaryTypeName","src":"17283:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17214:100:6"},"returnParameters":{"id":2126,"nodeType":"ParameterList","parameters":[],"src":"17324:0:6"},"scope":2613,"src":"17183:843:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2185,"nodeType":"Block","src":"18312:284:6","statements":[{"expression":{"baseExpression":{"id":2181,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"18564:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2183,"indexExpression":{"id":2182,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"18580:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18564:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2180,"id":2184,"nodeType":"Return","src":"18557:32:6"}]},"documentation":{"id":2174,"nodeType":"StructuredDocumentation","src":"18032:188:6","text":" @dev Проверить подключение к цепочке\n @param _chainId ID цепочки\n @return isAvailable Доступна ли цепочка"},"functionSelector":"4de184f6","id":2186,"implemented":true,"kind":"function","modifiers":[],"name":"checkChainConnection","nameLocation":"18234:20:6","nodeType":"FunctionDefinition","parameters":{"id":2177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2176,"mutability":"mutable","name":"_chainId","nameLocation":"18263:8:6","nodeType":"VariableDeclaration","scope":2186,"src":"18255:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2175,"name":"uint256","nodeType":"ElementaryTypeName","src":"18255:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18254:18:6"},"returnParameters":{"id":2180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2179,"mutability":"mutable","name":"isAvailable","nameLocation":"18299:11:6","nodeType":"VariableDeclaration","scope":2186,"src":"18294:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2178,"name":"bool","nodeType":"ElementaryTypeName","src":"18294:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18293:18:6"},"scope":2613,"src":"18225:371:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2238,"nodeType":"Block","src":"18932:482:6","statements":[{"assignments":[2196],"declarations":[{"constant":false,"id":2196,"mutability":"mutable","name":"proposal","nameLocation":"18959:8:6","nodeType":"VariableDeclaration","scope":2238,"src":"18942:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":2195,"nodeType":"UserDefinedTypeName","pathNode":{"id":2194,"name":"Proposal","nameLocations":["18942:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"18942:8:6"},"referencedDeclaration":939,"src":"18942:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":2200,"initialValue":{"baseExpression":{"id":2197,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"18970:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":2199,"indexExpression":{"id":2198,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2189,"src":"18980:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18970:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"18942:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2202,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"19010:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":2203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19019:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"19010:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2204,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2189,"src":"19025:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19010:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19038:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":2201,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19002:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19002:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2208,"nodeType":"ExpressionStatement","src":"19002:62:6"},{"body":{"id":2234,"nodeType":"Block","src":"19219:159:6","statements":[{"assignments":[2221],"declarations":[{"constant":false,"id":2221,"mutability":"mutable","name":"chainId","nameLocation":"19241:7:6","nodeType":"VariableDeclaration","scope":2234,"src":"19233:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2220,"name":"uint256","nodeType":"ElementaryTypeName","src":"19233:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2225,"initialValue":{"arguments":[{"id":2223,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"19271:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2222,"name":"getSupportedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"19251:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19251:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19233:40:6"},{"condition":{"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19291:30:6","subExpression":{"arguments":[{"id":2227,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"19313:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2226,"name":"checkChainConnection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"19292:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19292:29:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2233,"nodeType":"IfStatement","src":"19287:81:6","trueBody":{"id":2232,"nodeType":"Block","src":"19323:45:6","statements":[{"expression":{"hexValue":"66616c7365","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19348:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2193,"id":2231,"nodeType":"Return","src":"19341:12:6"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"19184:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2214,"name":"getSupportedChainCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"19188:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19188:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19184:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2235,"initializationExpression":{"assignments":[2210],"declarations":[{"constant":false,"id":2210,"mutability":"mutable","name":"i","nameLocation":"19177:1:6","nodeType":"VariableDeclaration","scope":2235,"src":"19169:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"19169:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2212,"initialValue":{"hexValue":"30","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19181:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19169:13:6"},"loopExpression":{"expression":{"id":2218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19214:3:6","subExpression":{"id":2217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"19214:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2219,"nodeType":"ExpressionStatement","src":"19214:3:6"},"nodeType":"ForStatement","src":"19164:214:6"},{"expression":{"hexValue":"74727565","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19403:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2193,"id":2237,"nodeType":"Return","src":"19396:11:6"}]},"documentation":{"id":2187,"nodeType":"StructuredDocumentation","src":"18602:234:6","text":" @dev Проверить все подключения перед синхронизацией\n @param _proposalId ID предложения\n @return allChainsReady Готовы ли все цепочки"},"functionSelector":"e49a62e9","id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"checkSyncReadiness","nameLocation":"18850:18:6","nodeType":"FunctionDefinition","parameters":{"id":2190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2189,"mutability":"mutable","name":"_proposalId","nameLocation":"18877:11:6","nodeType":"VariableDeclaration","scope":2239,"src":"18869:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2188,"name":"uint256","nodeType":"ElementaryTypeName","src":"18869:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18868:21:6"},"returnParameters":{"id":2193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2192,"mutability":"mutable","name":"allChainsReady","nameLocation":"18916:14:6","nodeType":"VariableDeclaration","scope":2239,"src":"18911:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2191,"name":"bool","nodeType":"ElementaryTypeName","src":"18911:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18910:21:6"},"scope":2613,"src":"18841:573:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2280,"nodeType":"Block","src":"19628:400:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":2247,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"19665:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2246,"name":"checkSyncReadiness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"19646:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19646:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420616c6c20636861696e73207265616479","id":2249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19679:22:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9ac91bcc9dd94a174980f450c5e56b966ea5d9e218d96b80a76095f437f6badf","typeString":"literal_string \"Not all chains ready\""},"value":"Not all chains ready"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9ac91bcc9dd94a174980f450c5e56b966ea5d9e218d96b80a76095f437f6badf","typeString":"literal_string \"Not all chains ready\""}],"id":2245,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19638:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19638:64:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2251,"nodeType":"ExpressionStatement","src":"19638:64:6"},{"body":{"id":2274,"nodeType":"Block","src":"19860:112:6","statements":[{"assignments":[2264],"declarations":[{"constant":false,"id":2264,"mutability":"mutable","name":"chainId","nameLocation":"19882:7:6","nodeType":"VariableDeclaration","scope":2274,"src":"19874:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2263,"name":"uint256","nodeType":"ElementaryTypeName","src":"19874:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2268,"initialValue":{"arguments":[{"id":2266,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"19912:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2265,"name":"getSupportedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"19892:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19874:40:6"},{"expression":{"arguments":[{"id":2270,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"19940:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2271,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"19953:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2269,"name":"syncToChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"19928:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19928:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2273,"nodeType":"ExpressionStatement","src":"19928:33:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"19825:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2257,"name":"getSupportedChainCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"19829:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19829:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19825:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2275,"initializationExpression":{"assignments":[2253],"declarations":[{"constant":false,"id":2253,"mutability":"mutable","name":"i","nameLocation":"19818:1:6","nodeType":"VariableDeclaration","scope":2275,"src":"19810:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2252,"name":"uint256","nodeType":"ElementaryTypeName","src":"19810:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2255,"initialValue":{"hexValue":"30","id":2254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19822:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19810:13:6"},"loopExpression":{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19855:3:6","subExpression":{"id":2260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"19855:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"19855:3:6"},"nodeType":"ForStatement","src":"19805:167:6"},{"eventCall":{"arguments":[{"id":2277,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"20009:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2276,"name":"SyncCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"19995:13:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19995:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2279,"nodeType":"EmitStatement","src":"19990:31:6"}]},"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"19420:148:6","text":" @dev Синхронизация только при 100% готовности\n @param _proposalId ID предложения"},"functionSelector":"7ce288ea","id":2281,"implemented":true,"kind":"function","modifiers":[],"name":"syncToAllChains","nameLocation":"19582:15:6","nodeType":"FunctionDefinition","parameters":{"id":2243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2242,"mutability":"mutable","name":"_proposalId","nameLocation":"19606:11:6","nodeType":"VariableDeclaration","scope":2281,"src":"19598:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2241,"name":"uint256","nodeType":"ElementaryTypeName","src":"19598:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19597:21:6"},"returnParameters":{"id":2244,"nodeType":"ParameterList","parameters":[],"src":"19628:0:6"},"scope":2613,"src":"19573:455:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2295,"nodeType":"Block","src":"20290:262:6","statements":[{"eventCall":{"arguments":[{"id":2290,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2284,"src":"20507:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2291,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"20520:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2292,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"20536:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2289,"name":"CrossChainExecutionSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"20483:23:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20483:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2294,"nodeType":"EmitStatement","src":"20478:67:6"}]},"documentation":{"id":2282,"nodeType":"StructuredDocumentation","src":"20034:182:6","text":" @dev Синхронизация в конкретную цепочку\n @param _proposalId ID предложения\n @param _chainId ID цепочки"},"id":2296,"implemented":true,"kind":"function","modifiers":[],"name":"syncToChain","nameLocation":"20230:11:6","nodeType":"FunctionDefinition","parameters":{"id":2287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2284,"mutability":"mutable","name":"_proposalId","nameLocation":"20250:11:6","nodeType":"VariableDeclaration","scope":2296,"src":"20242:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2283,"name":"uint256","nodeType":"ElementaryTypeName","src":"20242:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2286,"mutability":"mutable","name":"_chainId","nameLocation":"20271:8:6","nodeType":"VariableDeclaration","scope":2296,"src":"20263:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2285,"name":"uint256","nodeType":"ElementaryTypeName","src":"20263:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20241:39:6"},"returnParameters":{"id":2288,"nodeType":"ParameterList","parameters":[],"src":"20290:0:6"},"scope":2613,"src":"20221:331:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2304,"nodeType":"Block","src":"20732:251:6","statements":[{"expression":{"hexValue":"34","id":2302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20975:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"functionReturnParameters":2301,"id":2303,"nodeType":"Return","src":"20968:8:6"}]},"documentation":{"id":2297,"nodeType":"StructuredDocumentation","src":"20558:105:6","text":" @dev Получить количество поддерживаемых цепочек"},"functionSelector":"eced3dfb","id":2305,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedChainCount","nameLocation":"20677:22:6","nodeType":"FunctionDefinition","parameters":{"id":2298,"nodeType":"ParameterList","parameters":[],"src":"20699:2:6"},"returnParameters":{"id":2301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2305,"src":"20723:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2299,"name":"uint256","nodeType":"ElementaryTypeName","src":"20723:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20722:9:6"},"scope":2613,"src":"20668:315:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":2341,"nodeType":"Block","src":"21225:248:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21239:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21249:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21239:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2318,"nodeType":"IfStatement","src":"21235:25:6","trueBody":{"expression":{"hexValue":"31","id":2316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21259:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":2312,"id":2317,"nodeType":"Return","src":"21252:8:6"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2319,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21291:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":2320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21301:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21291:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2324,"nodeType":"IfStatement","src":"21287:27:6","trueBody":{"expression":{"hexValue":"313337","id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21311:3:6","typeDescriptions":{"typeIdentifier":"t_rational_137_by_1","typeString":"int_const 137"},"value":"137"},"functionReturnParameters":2312,"id":2323,"nodeType":"Return","src":"21304:10:6"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2325,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21342:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":2326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21352:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21342:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2330,"nodeType":"IfStatement","src":"21338:26:6","trueBody":{"expression":{"hexValue":"3536","id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21362:2:6","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},"functionReturnParameters":2312,"id":2329,"nodeType":"Return","src":"21355:9:6"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2331,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21389:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":2332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21399:1:6","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"21389:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2336,"nodeType":"IfStatement","src":"21385:29:6","trueBody":{"expression":{"hexValue":"3432313631","id":2334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21409:5:6","typeDescriptions":{"typeIdentifier":"t_rational_42161_by_1","typeString":"int_const 42161"},"value":"42161"},"functionReturnParameters":2312,"id":2335,"nodeType":"Return","src":"21402:12:6"}},{"expression":{"arguments":[{"hexValue":"496e76616c696420636861696e20696e646578","id":2338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21444:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51299dff4c796e1ac8ee8b9a472d4251ecba410abfcfdfff3c492d6f0f63bc13","typeString":"literal_string \"Invalid chain index\""},"value":"Invalid chain index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_51299dff4c796e1ac8ee8b9a472d4251ecba410abfcfdfff3c492d6f0f63bc13","typeString":"literal_string \"Invalid chain index\""}],"id":2337,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"21437:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21437:29:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2340,"nodeType":"ExpressionStatement","src":"21437:29:6"}]},"documentation":{"id":2306,"nodeType":"StructuredDocumentation","src":"20989:156:6","text":" @dev Получить ID поддерживаемой цепочки по индексу\n @param _index Индекс цепочки"},"functionSelector":"9a49bdde","id":2342,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedChainId","nameLocation":"21159:19:6","nodeType":"FunctionDefinition","parameters":{"id":2309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2308,"mutability":"mutable","name":"_index","nameLocation":"21187:6:6","nodeType":"VariableDeclaration","scope":2342,"src":"21179:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2307,"name":"uint256","nodeType":"ElementaryTypeName","src":"21179:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21178:16:6"},"returnParameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2342,"src":"21216:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2310,"name":"uint256","nodeType":"ElementaryTypeName","src":"21216:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21215:9:6"},"scope":2613,"src":"21150:323:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":2456,"nodeType":"Block","src":"21674:1052:6","statements":[{"assignments":[2349,2351],"declarations":[{"constant":false,"id":2349,"mutability":"mutable","name":"selector","nameLocation":"21741:8:6","nodeType":"VariableDeclaration","scope":2456,"src":"21734:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2348,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21734:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2351,"mutability":"mutable","name":"data","nameLocation":"21764:4:6","nodeType":"VariableDeclaration","scope":2456,"src":"21751:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2350,"name":"bytes","nodeType":"ElementaryTypeName","src":"21751:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2361,"initialValue":{"arguments":[{"id":2354,"name":"_operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2345,"src":"21783:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21796:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2355,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21796:6:6","typeDescriptions":{}}},{"id":2358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21804:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2357,"name":"bytes","nodeType":"ElementaryTypeName","src":"21804:5:6","typeDescriptions":{}}}],"id":2359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21795:15:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(bytes4),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(bytes4),type(bytes storage pointer))"}],"expression":{"id":2352,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21772:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21776:6:6","memberName":"decode","nodeType":"MemberAccess","src":"21772:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21772:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes4_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes4,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"21733:78:6"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2362,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"21834:8:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"7472616e7366657228616464726573732c75696e7432353629","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21863:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b","typeString":"literal_string \"transfer(address,uint256)\""},"value":"transfer(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b","typeString":"literal_string \"transfer(address,uint256)\""}],"id":2365,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"21853:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21853:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21846:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2363,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21846:6:6","typeDescriptions":{}}},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21846:46:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21834:58:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2392,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"22107:8:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"6d696e7428616464726573732c75696e7432353629","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22136:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_40c10f19c047ae7dfa66d6312b683d2ea3dfbcb4159e96b967c5f4b0a86f2842","typeString":"literal_string \"mint(address,uint256)\""},"value":"mint(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_40c10f19c047ae7dfa66d6312b683d2ea3dfbcb4159e96b967c5f4b0a86f2842","typeString":"literal_string \"mint(address,uint256)\""}],"id":2395,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"22126:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22126:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22119:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2393,"name":"bytes4","nodeType":"ElementaryTypeName","src":"22119:6:6","typeDescriptions":{}}},"id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22119:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"22107:54:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2420,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"22360:8:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"6275726e28616464726573732c75696e7432353629","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22389:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9dc29fac0ba6d4fc521c69c2b0c636d612e3343bc39ed934429b8876b0d12cba","typeString":"literal_string \"burn(address,uint256)\""},"value":"burn(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9dc29fac0ba6d4fc521c69c2b0c636d612e3343bc39ed934429b8876b0d12cba","typeString":"literal_string \"burn(address,uint256)\""}],"id":2423,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"22379:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22379:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22372:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2421,"name":"bytes4","nodeType":"ElementaryTypeName","src":"22372:6:6","typeDescriptions":{}}},"id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22372:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"22360:54:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2452,"nodeType":"Block","src":"22613:107:6","statements":[{"expression":{"arguments":[{"hexValue":"556e6b6e6f776e206f7065726174696f6e","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22689:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a8583565d5058e599a0a507bc84ed1111529ac3c53e437281d981e6a5fe8395d","typeString":"literal_string \"Unknown operation\""},"value":"Unknown operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a8583565d5058e599a0a507bc84ed1111529ac3c53e437281d981e6a5fe8395d","typeString":"literal_string \"Unknown operation\""}],"id":2448,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"22682:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22682:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2451,"nodeType":"ExpressionStatement","src":"22682:27:6"}]},"id":2453,"nodeType":"IfStatement","src":"22356:364:6","trueBody":{"id":2447,"nodeType":"Block","src":"22416:191:6","statements":[{"assignments":[2429,2431],"declarations":[{"constant":false,"id":2429,"mutability":"mutable","name":"from","nameLocation":"22503:4:6","nodeType":"VariableDeclaration","scope":2447,"src":"22495:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2428,"name":"address","nodeType":"ElementaryTypeName","src":"22495:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"amount","nameLocation":"22517:6:6","nodeType":"VariableDeclaration","scope":2447,"src":"22509:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"22509:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2441,"initialValue":{"arguments":[{"id":2434,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"22538:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22545:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2435,"name":"address","nodeType":"ElementaryTypeName","src":"22545:7:6","typeDescriptions":{}}},{"id":2438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22554:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2437,"name":"uint256","nodeType":"ElementaryTypeName","src":"22554:7:6","typeDescriptions":{}}}],"id":2439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22544:18:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":2432,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22527:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22531:6:6","memberName":"decode","nodeType":"MemberAccess","src":"22527:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22527:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"22494:69:6"},{"expression":{"arguments":[{"id":2443,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"22583:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2444,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"22589:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2442,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"22577:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22577:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2446,"nodeType":"ExpressionStatement","src":"22577:19:6"}]}},"id":2454,"nodeType":"IfStatement","src":"22103:617:6","trueBody":{"id":2419,"nodeType":"Block","src":"22163:187:6","statements":[{"assignments":[2401,2403],"declarations":[{"constant":false,"id":2401,"mutability":"mutable","name":"to","nameLocation":"22250:2:6","nodeType":"VariableDeclaration","scope":2419,"src":"22242:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2400,"name":"address","nodeType":"ElementaryTypeName","src":"22242:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2403,"mutability":"mutable","name":"amount","nameLocation":"22262:6:6","nodeType":"VariableDeclaration","scope":2419,"src":"22254:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2402,"name":"uint256","nodeType":"ElementaryTypeName","src":"22254:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2413,"initialValue":{"arguments":[{"id":2406,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"22283:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22290:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"22290:7:6","typeDescriptions":{}}},{"id":2410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22299:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2409,"name":"uint256","nodeType":"ElementaryTypeName","src":"22299:7:6","typeDescriptions":{}}}],"id":2411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22289:18:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":2404,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22272:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22276:6:6","memberName":"decode","nodeType":"MemberAccess","src":"22272:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22272:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"22241:67:6"},{"expression":{"arguments":[{"id":2415,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2401,"src":"22328:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2416,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2403,"src":"22332:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2414,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"22322:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22322:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2418,"nodeType":"ExpressionStatement","src":"22322:17:6"}]}},"id":2455,"nodeType":"IfStatement","src":"21830:890:6","trueBody":{"id":2391,"nodeType":"Block","src":"21894:203:6","statements":[{"assignments":[2371,2373],"declarations":[{"constant":false,"id":2371,"mutability":"mutable","name":"to","nameLocation":"21981:2:6","nodeType":"VariableDeclaration","scope":2391,"src":"21973:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2370,"name":"address","nodeType":"ElementaryTypeName","src":"21973:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2373,"mutability":"mutable","name":"amount","nameLocation":"21993:6:6","nodeType":"VariableDeclaration","scope":2391,"src":"21985:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2372,"name":"uint256","nodeType":"ElementaryTypeName","src":"21985:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2383,"initialValue":{"arguments":[{"id":2376,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"22014:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22021:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"22021:7:6","typeDescriptions":{}}},{"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22030:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"22030:7:6","typeDescriptions":{}}}],"id":2381,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22020:18:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":2374,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22003:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22007:6:6","memberName":"decode","nodeType":"MemberAccess","src":"22003:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22003:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"21972:67:6"},{"expression":{"arguments":[{"expression":{"id":2385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22063:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22067:6:6","memberName":"sender","nodeType":"MemberAccess","src":"22063:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2371,"src":"22075:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2388,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2373,"src":"22079:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2384,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"22053:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22053:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2390,"nodeType":"ExpressionStatement","src":"22053:33:6"}]}}]},"documentation":{"id":2343,"nodeType":"StructuredDocumentation","src":"21479:129:6","text":" @dev Исполнить операцию\n @param _operation Операция для исполнения"},"id":2457,"implemented":true,"kind":"function","modifiers":[],"name":"_executeOperation","nameLocation":"21622:17:6","nodeType":"FunctionDefinition","parameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2345,"mutability":"mutable","name":"_operation","nameLocation":"21653:10:6","nodeType":"VariableDeclaration","scope":2457,"src":"21640:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2344,"name":"bytes","nodeType":"ElementaryTypeName","src":"21640:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21639:25:6"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[],"src":"21674:0:6"},"scope":2613,"src":"21613:1113:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2510,"nodeType":"Block","src":"22954:358:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2467,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22982:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22986:6:6","memberName":"sender","nodeType":"MemberAccess","src":"22982:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2466,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"22972:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22972:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22996:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22972:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c65","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22999:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_386d52cc0823e9cc706c7e0057db969b8e9f95b86428ad9df4e5e7e608f0ee74","typeString":"literal_string \"Must hold tokens to add module\""},"value":"Must hold tokens to add module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_386d52cc0823e9cc706c7e0057db969b8e9f95b86428ad9df4e5e7e608f0ee74","typeString":"literal_string \"Must hold tokens to add module\""}],"id":2465,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22964:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22964:68:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2474,"nodeType":"ExpressionStatement","src":"22964:68:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2476,"name":"_moduleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"23050:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23076:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23068:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2477,"name":"address","nodeType":"ElementaryTypeName","src":"23068:7:6","typeDescriptions":{}}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23068:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23050:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f2061646472657373","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23080:14:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""},"value":"Zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""}],"id":2475,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23042:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23042:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2484,"nodeType":"ExpressionStatement","src":"23042:53:6"},{"expression":{"arguments":[{"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23113:25:6","subExpression":{"baseExpression":{"id":2486,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23114:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2488,"indexExpression":{"id":2487,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23128:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23114:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6f64756c6520616c726561647920657869737473","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23140:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_886f67ba7d9a179ad4a77f53bed0afe9305a32e844dbd6b94e697def54438978","typeString":"literal_string \"Module already exists\""},"value":"Module already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_886f67ba7d9a179ad4a77f53bed0afe9305a32e844dbd6b94e697def54438978","typeString":"literal_string \"Module already exists\""}],"id":2485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23105:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23105:59:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2492,"nodeType":"ExpressionStatement","src":"23105:59:6"},{"expression":{"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2493,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"23175:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":2495,"indexExpression":{"id":2494,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23183:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23175:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2496,"name":"_moduleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"23196:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23175:35:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2498,"nodeType":"ExpressionStatement","src":"23175:35:6"},{"expression":{"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2499,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23220:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2501,"indexExpression":{"id":2500,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23234:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23220:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23247:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"23220:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2504,"nodeType":"ExpressionStatement","src":"23220:31:6"},{"eventCall":{"arguments":[{"id":2506,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23279:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2507,"name":"_moduleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"23290:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2505,"name":"ModuleAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"23267:11:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23267:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2509,"nodeType":"EmitStatement","src":"23262:43:6"}]},"documentation":{"id":2458,"nodeType":"StructuredDocumentation","src":"22732:146:6","text":" @dev Добавить модуль\n @param _moduleId ID модуля\n @param _moduleAddress Адрес модуля"},"functionSelector":"35324eee","id":2511,"implemented":true,"kind":"function","modifiers":[],"name":"addModule","nameLocation":"22892:9:6","nodeType":"FunctionDefinition","parameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"mutability":"mutable","name":"_moduleId","nameLocation":"22910:9:6","nodeType":"VariableDeclaration","scope":2511,"src":"22902:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22902:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"_moduleAddress","nameLocation":"22929:14:6","nodeType":"VariableDeclaration","scope":2511,"src":"22921:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2461,"name":"address","nodeType":"ElementaryTypeName","src":"22921:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22901:43:6"},"returnParameters":{"id":2464,"nodeType":"ParameterList","parameters":[],"src":"22954:0:6"},"scope":2613,"src":"22883:429:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2549,"nodeType":"Block","src":"23464:274:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2519,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23492:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23496:6:6","memberName":"sender","nodeType":"MemberAccess","src":"23492:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2518,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"23482:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23482:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23506:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23482:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c65","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23509:35:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc7fbb9ac88e81b58eadf3fb00bfe01ffe693076256b7e1212d2dec03ec2a636","typeString":"literal_string \"Must hold tokens to remove module\""},"value":"Must hold tokens to remove module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc7fbb9ac88e81b58eadf3fb00bfe01ffe693076256b7e1212d2dec03ec2a636","typeString":"literal_string \"Must hold tokens to remove module\""}],"id":2517,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23474:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23474:71:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2526,"nodeType":"ExpressionStatement","src":"23474:71:6"},{"expression":{"arguments":[{"baseExpression":{"id":2528,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23563:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2530,"indexExpression":{"id":2529,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23577:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23563:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6f64756c6520646f6573206e6f74206578697374","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23589:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_148e71891f99baebb1c86efc789ab7bd91f813832ac214a9b47559ccdff1d356","typeString":"literal_string \"Module does not exist\""},"value":"Module does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_148e71891f99baebb1c86efc789ab7bd91f813832ac214a9b47559ccdff1d356","typeString":"literal_string \"Module does not exist\""}],"id":2527,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23555:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23555:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2533,"nodeType":"ExpressionStatement","src":"23555:58:6"},{"expression":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"23624:25:6","subExpression":{"baseExpression":{"id":2534,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"23631:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":2536,"indexExpression":{"id":2535,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23639:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23631:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2538,"nodeType":"ExpressionStatement","src":"23624:25:6"},{"expression":{"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2539,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23659:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2541,"indexExpression":{"id":2540,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23673:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23659:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23686:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"23659:32:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2544,"nodeType":"ExpressionStatement","src":"23659:32:6"},{"eventCall":{"arguments":[{"id":2546,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23721:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2545,"name":"ModuleRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"23707:13:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23707:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2548,"nodeType":"EmitStatement","src":"23702:29:6"}]},"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"23318:91:6","text":" @dev Удалить модуль\n @param _moduleId ID модуля"},"functionSelector":"4114509b","id":2550,"implemented":true,"kind":"function","modifiers":[],"name":"removeModule","nameLocation":"23423:12:6","nodeType":"FunctionDefinition","parameters":{"id":2515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2514,"mutability":"mutable","name":"_moduleId","nameLocation":"23444:9:6","nodeType":"VariableDeclaration","scope":2550,"src":"23436:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23436:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23435:19:6"},"returnParameters":{"id":2516,"nodeType":"ParameterList","parameters":[],"src":"23464:0:6"},"scope":2613,"src":"23414:324:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2559,"nodeType":"Block","src":"23878:31:6","statements":[{"expression":{"id":2557,"name":"dleInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"23895:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo storage ref"}},"functionReturnParameters":2556,"id":2558,"nodeType":"Return","src":"23888:14:6"}]},"documentation":{"id":2551,"nodeType":"StructuredDocumentation","src":"23744:68:6","text":" @dev Получить информацию о DLE"},"functionSelector":"204c5d1f","id":2560,"implemented":true,"kind":"function","modifiers":[],"name":"getDLEInfo","nameLocation":"23826:10:6","nodeType":"FunctionDefinition","parameters":{"id":2552,"nodeType":"ParameterList","parameters":[],"src":"23836:2:6"},"returnParameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2555,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2560,"src":"23862:14:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_memory_ptr","typeString":"struct DLE.DLEInfo"},"typeName":{"id":2554,"nodeType":"UserDefinedTypeName","pathNode":{"id":2553,"name":"DLEInfo","nameLocations":["23862:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":885,"src":"23862:7:6"},"referencedDeclaration":885,"src":"23862:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage_ptr","typeString":"struct DLE.DLEInfo"}},"visibility":"internal"}],"src":"23861:16:6"},"scope":2613,"src":"23817:92:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2572,"nodeType":"Block","src":"24108:48:6","statements":[{"expression":{"baseExpression":{"id":2568,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"24125:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2570,"indexExpression":{"id":2569,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"24139:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24125:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2567,"id":2571,"nodeType":"Return","src":"24118:31:6"}]},"documentation":{"id":2561,"nodeType":"StructuredDocumentation","src":"23915:116:6","text":" @dev Проверить, активен ли модуль\n @param _moduleId ID модуля"},"functionSelector":"4b145793","id":2573,"implemented":true,"kind":"function","modifiers":[],"name":"isModuleActive","nameLocation":"24045:14:6","nodeType":"FunctionDefinition","parameters":{"id":2564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2563,"mutability":"mutable","name":"_moduleId","nameLocation":"24068:9:6","nodeType":"VariableDeclaration","scope":2573,"src":"24060:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24060:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24059:19:6"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2573,"src":"24102:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2565,"name":"bool","nodeType":"ElementaryTypeName","src":"24102:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24101:6:6"},"scope":2613,"src":"24036:120:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2585,"nodeType":"Block","src":"24348:42:6","statements":[{"expression":{"baseExpression":{"id":2581,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"24365:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":2583,"indexExpression":{"id":2582,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2576,"src":"24373:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24365:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2580,"id":2584,"nodeType":"Return","src":"24358:25:6"}]},"documentation":{"id":2574,"nodeType":"StructuredDocumentation","src":"24162:104:6","text":" @dev Получить адрес модуля\n @param _moduleId ID модуля"},"functionSelector":"22dbefbb","id":2586,"implemented":true,"kind":"function","modifiers":[],"name":"getModuleAddress","nameLocation":"24280:16:6","nodeType":"FunctionDefinition","parameters":{"id":2577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2576,"mutability":"mutable","name":"_moduleId","nameLocation":"24305:9:6","nodeType":"VariableDeclaration","scope":2586,"src":"24297:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24297:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24296:19:6"},"returnParameters":{"id":2580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2586,"src":"24339:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"24339:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24338:9:6"},"scope":2613,"src":"24271:119:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2598,"nodeType":"Block","src":"24607:49:6","statements":[{"expression":{"baseExpression":{"id":2594,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"24624:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2596,"indexExpression":{"id":2595,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"24640:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24624:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2593,"id":2597,"nodeType":"Return","src":"24617:32:6"}]},"documentation":{"id":2587,"nodeType":"StructuredDocumentation","src":"24396:133:6","text":" @dev Проверить, поддерживается ли цепочка\n @param _chainId ID цепочки"},"functionSelector":"5221c1f0","id":2599,"implemented":true,"kind":"function","modifiers":[],"name":"isChainSupported","nameLocation":"24543:16:6","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2589,"mutability":"mutable","name":"_chainId","nameLocation":"24568:8:6","nodeType":"VariableDeclaration","scope":2599,"src":"24560:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2588,"name":"uint256","nodeType":"ElementaryTypeName","src":"24560:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24559:18:6"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2599,"src":"24601:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2591,"name":"bool","nodeType":"ElementaryTypeName","src":"24601:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24600:6:6"},"scope":2613,"src":"24534:122:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2607,"nodeType":"Block","src":"24801:38:6","statements":[{"expression":{"id":2605,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"24818:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2604,"id":2606,"nodeType":"Return","src":"24811:21:6"}]},"documentation":{"id":2600,"nodeType":"StructuredDocumentation","src":"24662:73:6","text":" @dev Получить текущий ID цепочки"},"functionSelector":"5cf0e8a4","id":2608,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentChainId","nameLocation":"24749:17:6","nodeType":"FunctionDefinition","parameters":{"id":2601,"nodeType":"ParameterList","parameters":[],"src":"24766:2:6"},"returnParameters":{"id":2604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2608,"src":"24792:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2602,"name":"uint256","nodeType":"ElementaryTypeName","src":"24792:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24791:9:6"},"scope":2613,"src":"24740:99:6","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910","id":2612,"name":"SyncCompleted","nameLocation":"24906:13:6","nodeType":"EventDefinition","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2610,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"24928:10:6","nodeType":"VariableDeclaration","scope":2612,"src":"24920:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2609,"name":"uint256","nodeType":"ElementaryTypeName","src":"24920:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24919:20:6"},"src":"24900:40:6"}],"scope":2614,"src":"750:24192:6","usedErrors":[11,16,21,30,35,40,799],"usedEvents":[663,672,1025,1033,1041,1051,1057,1065,1075,1081,1087,1091,1099,1107,1115,2612]}],"src":"423:24520:6"},"id":6}},"contracts":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]}},\"version\":1}"}},"contracts/DLE.sol":{"DLE":{"abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"location","type":"string"},{"internalType":"string","name":"coordinates","type":"string"},{"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"internalType":"uint256","name":"oktmo","type":"uint256"},{"internalType":"string[]","name":"okvedCodes","type":"string[]"},{"internalType":"uint256","name":"kpp","type":"uint256"},{"internalType":"uint256","name":"quorumPercentage","type":"uint256"},{"internalType":"address[]","name":"initialPartners","type":"address[]"},{"internalType":"uint256[]","name":"initialAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"supportedChainIds","type":"uint256[]"}],"internalType":"struct DLE.DLEConfig","name":"config","type":"tuple"},{"internalType":"uint256","name":"_currentChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainId","type":"uint256"}],"name":"CrossChainExecutionSync","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainId","type":"uint256"}],"name":"CrossChainMultiSigSync","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainId","type":"uint256"}],"name":"CrossChainVoteSync","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"string","name":"location","type":"string"},{"indexed":false,"internalType":"string","name":"coordinates","type":"string"},{"indexed":false,"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oktmo","type":"uint256"},{"indexed":false,"internalType":"string[]","name":"okvedCodes","type":"string[]"},{"indexed":false,"internalType":"uint256","name":"kpp","type":"uint256"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"supportedChainIds","type":"uint256[]"}],"name":"DLEInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"partners","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"InitialTokensDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"moduleId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"moduleAddress","type":"address"}],"name":"ModuleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"moduleId","type":"bytes32"}],"name":"ModuleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"operationHash","type":"bytes32"}],"name":"MultiSigExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"bytes32","name":"operationHash","type":"bytes32"}],"name":"MultiSigOperationCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"signaturePower","type":"uint256"}],"name":"MultiSigSigned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"operation","type":"bytes"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votingPower","type":"uint256"}],"name":"ProposalVoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"SyncCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"activeModules","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"},{"internalType":"address","name":"_moduleAddress","type":"address"}],"name":"addModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"name":"checkChainConnection","outputs":[{"internalType":"bool","name":"isAvailable","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"}],"name":"checkMultiSigResult","outputs":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"bool","name":"quorumReached","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"checkProposalResult","outputs":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"bool","name":"quorumReached","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"checkSyncReadiness","outputs":[{"internalType":"bool","name":"allChainsReady","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_operationHash","type":"bytes32"},{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"createMultiSigOperation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_description","type":"string"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"bytes","name":"_operation","type":"bytes"},{"internalType":"uint256","name":"_governanceChainId","type":"uint256"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dleInfo","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"location","type":"string"},{"internalType":"string","name":"coordinates","type":"string"},{"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"internalType":"uint256","name":"oktmo","type":"uint256"},{"internalType":"uint256","name":"kpp","type":"uint256"},{"internalType":"uint256","name":"creationTimestamp","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"}],"name":"executeMultiSigOperation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"executeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"executedMultiSig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"executedProposals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDLEInfo","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"location","type":"string"},{"internalType":"string","name":"coordinates","type":"string"},{"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"internalType":"uint256","name":"oktmo","type":"uint256"},{"internalType":"string[]","name":"okvedCodes","type":"string[]"},{"internalType":"uint256","name":"kpp","type":"uint256"},{"internalType":"uint256","name":"creationTimestamp","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"internalType":"struct DLE.DLEInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"}],"name":"getModuleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSupportedChainCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getSupportedChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"name":"isChainSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"}],"name":"isModuleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"modules","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiSigCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiSigOperations","outputs":[{"internalType":"bytes32","name":"operationHash","type":"bytes32"},{"internalType":"uint256","name":"forSignatures","type":"uint256"},{"internalType":"uint256","name":"againstSignatures","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"initiator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"initiator","type":"address"},{"internalType":"bytes","name":"operation","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"}],"name":"removeModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"name":"signMultiSigOperation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"supportedChains","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_fromChainId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"syncExecutionFromChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"},{"internalType":"uint256","name":"_fromChainId","type":"uint256"},{"internalType":"uint256","name":"_forSignatures","type":"uint256"},{"internalType":"uint256","name":"_againstSignatures","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"syncMultiSigFromChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"syncToAllChains","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_fromChainId","type":"uint256"},{"internalType":"uint256","name":"_forVotes","type":"uint256"},{"internalType":"uint256","name":"_againstVotes","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"syncVoteFromChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":4642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":4531,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4880,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4934,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":4456,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_string_dyn":{"entryPoint":4618,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":4796,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":4494,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4735,"id":null,"parameterSlots":1,"returnSlots":1},"increment_uint256":{"entryPoint":4821,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":4837,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"608060405234620011075762003e8380380390816200001e8162001168565b918239604081838101031262001107578051906001600160401b03821162001107576101809283838301828401031262001107576040519384016001600160401b0381118582101762000b7b57604052818301516001600160401b038111620011075762000094908284019085850101620011b3565b8452818301602001516001600160401b0381116200110757620000bf908284019085850101620011b3565b6020850152818301604001516001600160401b0381116200110757620000ed908284019085850101620011b3565b6040850152818301606001516001600160401b03811162001107576200011b908284019085850101620011b3565b60608501528183016080818101519086015260a0808201519086015260c001516001600160401b038111620011075783830101818301601f8201121562001107578051620001736200016d826200120a565b62001168565b9160208084848152019260051b820101918486018311620011075760208201905b83821062001134575050505060c085015281830160e08181015190860152610100808201519086015261012001516001600160401b0381116200110757818301601f8286860101011215620011075780848401015190620001f96200016d836200120a565b91602083828152019184860160208360051b838a8a01010101116200110757916020838888010101925b60208360051b828a8a0101010184106200110c575050505061012085015281830161014001516001600160401b03811162001107576200026b90828401908585010162001222565b6101408501528183016101600151926001600160401b03841162001107576020936200029d9284019184010162001222565b610160840152015181516020830151815191939092916001600160401b03811162000b7b57620002cf6003546200127f565b601f8111620010b4575b506020601f82116001146200104457819293949560009262001038575b50508160011b916000199060031b1c1916176003555b82516001600160401b03811162000b7b576200032a6004546200127f565b601f811162000fe5575b506020601f821160011462000f76578192939460009262000f6a575b50508160011b916000199060031b1c1916176004555b6001600555805191602082015160408301516060840151608085015160a08601519060c08701519260e088015194604051968761014081011060018060401b036101408a01111762000b7b5761014088016040528a8852602088015260408701526060860152608085015260a084015260c083015260e0820152426101008201526001610120820152835160018060401b03811162000b7b576200040c6006546200127f565b601f811162000f17575b506020601f821160011462000ea757819293949560009262000e9b575b50508160011b916000199060031b1c1916176006555b602081015180519093906001600160401b03811162000b7b576200046f6007546200127f565b601f811162000e48575b506020601f821160011462000dd857819293949560009262000dcc575b50508160011b916000199060031b1c1916176007555b604082015180519093906001600160401b03811162000b7b57620004d26008546200127f565b601f811162000d79575b506020601f821160011462000d0957819293949560009262000cfd575b50508160011b916000199060031b1c1916176008555b606083015180519093906001600160401b03811162000b7b57620005356009546200127f565b601f811162000caa575b506020601f821160011462000c3a57819293949560009262000c2e575b50508160011b916000199060031b1c1916176009555b6080810151600a5560a0810151600b5560c081015180519068010000000000000000821162000b7b57600c5482600c5580831062000b91575b50600c60009081527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c792916020015b82821062000a495786866101208760e0810151600d55610100810151600e550151151560ff8019600f5416911617600f5561010082015160105560135560005b61016082015190815181101562000660576200063b816200065a93620012e5565b5160005260186020526040600020600160ff19825416179055620012d5565b6200061a565b8261012081015151610140820151510362000a04576101208101515115620009bf5760005b6101208201518051821015620007f1576001600160a01b03908190620006ad908490620012e5565b511615620007bd57620006c682610140850151620012e5565b51156200078a57620006de82610120850151620012e5565b511690620006f281610140850151620012e5565b51918015620007715760025483810181116200075b577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208562000755966000940160025584845283825260408420818154019055604051908152a3620012d5565b62000685565b634e487b7160e01b600052601160045260246000fd5b60405163ec442f0560e01b815260006004820152602490fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b8261012081015161014082015190604051916040830160408452825180915260206060850193019060005b8181106200099f57867ff9e7aa11bcdcbb8ac33b5dba92fca799ef091e54c29270822065501d8edea1a587806200085c8989838203602085015262001310565b0390a1805160208201516040830151926060810151608082015190620008e160a084015191620008d260c086015198620008c361016060e089015198015198620008b46040519b6101408d526101408d019062001346565b908b820360208d015262001346565b9089820360408b015262001346565b90878203606089015262001346565b91608086015260a085015283810360c0850152845180825260208201916020808360051b8301019701926000915b8383106200096f577f11b248463a1620b36a975da8f250009f56fb5dd0e9d5027a90a834d0ee84d6f688806200095c8c8b8b60e08501523061010085015283820361012085015262001310565b0390a1604051612b1590816200136e8239f35b90919293976020806200098f600193601f198682030187528c5162001346565b9a0193019301919392906200090f565b82516001600160a01b03168552602094850194909201916001016200081c565b60405162461bcd60e51b815260206004820152601360248201527f4e6f20696e697469616c20706172746e657273000000000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527f417272617973206c656e677468206d69736d61746368000000000000000000006044820152606490fd5b80518051906001600160401b03821162000b7b5762000a6986546200127f565b601f811162000b39575b50602090601f831160011462000ac457928260019493602093869560009262000ab8575b5050600019600383901b1c191690841b1787555b01940191019092620005da565b01519050388062000a97565b908660005260206000209160005b601f198516811062000b20575083602093600196938796938794601f1981161062000b06575b505050811b01875562000aab565b015160001960f88460031b161c1916905538808062000af8565b9192602060018192868501518155019401920162000ad2565b62000b6990876000526020600020601f850160051c8101916020861062000b70575b601f0160051c0190620012bc565b3862000a73565b909150819062000b5b565b634e487b7160e01b600052604160045260246000fd5b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7908382015b818301811062000bce575050620005ab565b8062000bdd600192546200127f565b8062000bec575b500162000bbc565b601f8111831462000c045750600081555b3862000be4565b60009082825262000c24601f60208420920160051c8201858301620012bc565b8183555562000bfd565b0151905038806200055c565b600960005260206000209060005b601f198416811062000c91575060019394959683601f1981161062000c77575b505050811b0160095562000572565b015160001960f88460031b161c1916905538808062000c68565b9091602060018192858b01518155019301910162000c48565b600960005262000cf6907f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b386200053f565b015190503880620004f9565b600860005260206000209060005b601f198416811062000d60575060019394959683601f1981161062000d46575b505050811b016008556200050f565b015160001960f88460031b161c1916905538808062000d37565b9091602060018192858b01518155019301910162000d17565b600860005262000dc5907ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b38620004dc565b01519050388062000496565b600760005260206000209060005b601f198416811062000e2f575060019394959683601f1981161062000e15575b505050811b01600755620004ac565b015160001960f88460031b161c1916905538808062000e06565b9091602060018192858b01518155019301910162000de6565b600760005262000e94907fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000479565b01519050388062000433565b600660005260206000209060005b601f198416811062000efe575060019394959683601f1981161062000ee4575b505050811b0160065562000449565b015160001960f88460031b161c1916905538808062000ed5565b9091602060018192858b01518155019301910162000eb5565b600660005262000f63907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000416565b01519050388062000350565b600460005260206000209060005b601f198416811062000fcc5750600193949583601f1981161062000fb2575b505050811b0160045562000366565b015160001960f88460031b161c1916905538808062000fa3565b9091602060018192858a01518155019301910162000f84565b600460005262001031907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000334565b015190503880620002f6565b600360005260206000209060005b601f19841681106200109b575060019394959683601f1981161062001081575b505050811b016003556200030c565b015160001960f88460031b161c1916905538808062001072565b9091602060018192858b01518155019301910162001052565b600360005262001100907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b38620002d9565b600080fd5b8351916001600160a01b03831683036200110757602081819482935201940193915062000223565b81516001600160401b03811162001107576020916200115c8392838a8c0191880101620011b3565b81520191019062000194565b6040519190601f01601f191682016001600160401b0381118382101762000b7b57604052565b60005b838110620011a25750506000910152565b818101518382015260200162001191565b81601f82011215620011075780516001600160401b03811162000b7b57620011e5601f8201601f191660200162001168565b928184526020828401011162001107576200120791602080850191016200118e565b90565b6001600160401b03811162000b7b5760051b60200190565b9080601f830112156200110757815190620012416200016d836200120a565b9182938184526020808095019260051b82010192831162001107578301905b8282106200126f575050505090565b8151815290830190830162001260565b90600182811c92168015620012b1575b60208310146200129b57565b634e487b7160e01b600052602260045260246000fd5b91607f16916200128f565b818110620012c8575050565b60008155600101620012bc565b60001981146200075b5760010190565b8051821015620012fa5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815180825260208080930193019160005b82811062001331575050505090565b83518552938101939281019260010162001322565b9060209162001361815180928185528580860191016200118e565b601f01601f191601019056fe60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14611dda57508163044bc2bd14611cab578163057b207414611c9057816306fdde0314611bc2578163095ea7b314611b235781630c0512e914611b055781630d61b519146118ff57816318160ddd146118e1578163204c5d1f1461164e57816322dbefbb14610b3c57816323b872dd146115565781632ee09598146114bc578163313ce567146114a057816335324eee146113385781633b60288a146113095781634114509b146111ef578163456d10c1146111095781634b145793146107455781634de184f6146110e65781634fa76ec9146110eb5781635221c1f0146110e6578163548d496f146110b75781635cf0e8a4146110995781636cbadbfa1461109957816370a082311461105f5781637ce288ea14610f6b5781637e5a9b4714610f3c578163893d692a14610e205781638c7b04c914610e0257816395d89b4114610d175781639a49bdde14610cf2578163a9059cbb14610cc1578163af89d2c414610c92578163b00e073014610b6e578163b0b6cc1a14610b3c578163b359451014610774578163b3fe8bcb14610745578163c51cab3a146106d5578163c9d27afe1461054e578163ccd7a49014610388578163dd62ed3e14610337578163e49a62e914610310578163eced3dfb146102f4575063f2c26a471461020557600080fd5b346102ef5760003660031901126102ef576102a46040516102308161022981611edb565b03826121dd565b6040516102408161022981611f7f565b604051906102588261025181612006565b03836121dd565b60405191610270836102698161208d565b03846121dd565b600a5492600b546102ce600d54926102c0600e54956102b260ff600f5416986040519c8d9c8d610120908181520190612222565b8c810360208e015290612222565b908a820360408c0152612222565b9088820360608a0152612222565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b346102ef5760003660031901126102ef57602090604051908152f35b346102ef5760203660031901126102ef5761032d6020913561278c565b6040519015158152f35b346102ef5760403660031901126102ef576103506122b8565b6103586122ce565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346102ef576103963661234c565b9061039f6125f5565b80600052602092601784526040600020906103bc825415156126c5565b8082015442101561051a576103d860ff60038401541615612711565b60068201903360005281865260ff604060002054166104e5573360005260008652604060002054156104ad57509361048e917f78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc95336000526000835260406000205492526040600020600160ff198254161790558460001461049857600101610462828254612449565b90555b604080519384523360208501529315159383019390935260608201929092529081906080820190565b0390a16001600555005b6002016104a6828254612449565b9055610465565b60405162461bcd60e51b815290810186905260116024820152702737903a37b5b2b739903a379039b4b3b760791b6044820152606490fd5b60405162461bcd60e51b8152908101869052600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b60405162461bcd60e51b8152908101859052600d60248201526c14da59db9a5b99c8195b991959609a1b6044820152606490fd5b346102ef5761055c3661234c565b906105656125f5565b80600052602092601684526040600020906105828383541461255d565b60058201544210156106a25761059e60ff8284015416156125a9565b60088201903360005281865260ff6040600020541661066e5733600052600086526040600020541561063657509361048e917f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a995336000526000835260406000205492526040600020600160ff198254161790558460001461062857600201610462828254612449565b6003016104a6828254612449565b60405162461bcd60e51b815290810186905260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b60405162461bcd60e51b8152908101869052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b60405162461bcd60e51b8152908101859052600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b346102ef5760203660031901126102ef578060c091356000526017602052604060002090815491600181015491600282015460ff6003840154169183015492600560018060a01b0391015416936040519586526020860152604085015215156060840152608083015260a0820152f35b346102ef5760203660031901126102ef57356000526015602052602060ff604060002054166040519015158152f35b346102ef5760803660031901126102ef57803567ffffffffffffffff918282116102ef57366023830112156102ef576107b7602492369084818501359101612263565b908235936044358181116102ef576107d2903690840161229a565b9460643595336000526020966000885260406000205415610aed576107f883151561246c565b806000526018885261081160ff604060002054166124b8565b6000526018875260ff6040600020541615610ab45760115495610833876124fa565b601155866000526016885260406000208781556001938482018851878111610aa057610869816108638454611ea1565b84612509565b8b8c601f8311600114610a2b5750918160079594926108bc94600091610a20575b50600019600383901b1c191690891b1790555b600060028401556000600384015588830160ff19815416905542612449565b600582015560068101336001600160601b0360a01b82541617905501948251948511610a0d5750506108f8836108f28654611ea1565b86612509565b8690601f841160011461098057928061096a959381937f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639896600094610975575b50501b916000199060031b1c19161790555b6040519182918583523387840152606060408401526060830190612222565b0390a1604051908152f35b015192508a80610939565b90601f9392931983169185600052886000209260005b8a8282106109f9575050917f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63979593918561096a989694106109e0575b505050811b01905561094b565b015160001960f88460031b161c191690558880806109d3565b838501518655948701949384019301610996565b604190634e487b7160e01b600052526000fd5b90508c01518f61088a565b8892918c601f1984168660005283600020936000905b828210610a855750509160079897959391856108bc98969410610a6c575b505050811b01905561089d565b015160001960f88460031b161c191690558f808e610a5f565b9284015185558c9690940193928201928f9290810190610a41565b8460418a634e487b7160e01b600052526000fd5b60405162461bcd60e51b815280850188905260138188015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60405162461bcd60e51b81528086018990526023818901527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b346102ef5760203660031901126102ef57356000526014602052602060018060a01b0360406000205416604051908152f35b346102ef5760403660031901126102ef5780359060243533600052600060205260406000205415610c42576060602093600583610bcd7f8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f095151561246c565b60125495610bda876124fa565b6012558660005260178852610c1160406000209285845560006001850155600060028501556003840160ff19815416905542612449565b9082015501336001600160601b0360a01b8254161790556040519084825233868301526040820152a1604051908152f35b60405162461bcd60e51b81526020818401526024808201527f4d75737420686f6c6420746f6b656e7320746f20637265617465206f706572616044820152633a34b7b760e11b6064820152608490fd5b346102ef5760203660031901126102ef5735600052601a602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef57610ce7610cdd6122b8565b602435903361236b565b602060405160018152f35b346102ef5760203660031901126102ef57610d0f602091356127ed565b604051908152f35b346102ef5760003660031901126102ef57604051906000908054610d3a81611ea1565b80855291600191808316908115610dd85750600114610d7c575b610d7885610d64818703826121dd565b604051918291602083526020830190612222565b0390f35b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610dc0575050508101602001610d6482610d78610d54565b80546020858701810191909152909301928101610da5565b869550610d7896935060209250610d6494915060ff191682840152151560051b8201019293610d54565b346102ef5760003660031901126102ef576020601254604051908152f35b346102ef5760203660031901126102ef57803590816000526017602052604060002090815491610e518315156126c5565b600381019180835492610e6760ff851615612711565b01544210610f0457610e788561275d565b81610efc575b5015610ec1577f64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5604086868660018760ff191617905582519182526020820152a1005b60649060206040519162461bcd60e51b8352820152601460248201527313dc195c985d1a5bdb881b9bdd081c185cdcd95960621b6044820152fd5b905086610e7e565b60649060206040519162461bcd60e51b8352820152601160248201527014da59db9a5b99c81b9bdd08195b991959607a1b6044820152fd5b346102ef5760203660031901126102ef57610f579035612668565b604080519215158352901515602083015290f35b346102ef5760203660031901126102ef57803590610f888261278c565b156110245760135460005b828110610fc7577f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910602085604051908152a1005b807f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313611017610ff861101f946127ed565b604051918291878a846040919493926060820195825260208201520152565b0390a16124fa565b610f93565b60649060206040519162461bcd60e51b835282015260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152fd5b346102ef5760203660031901126102ef576001600160a01b036110806122b8565b1660005260006020526020604060002054604051908152f35b346102ef5760003660031901126102ef576020601354604051908152f35b346102ef5760203660031901126102ef57356000526018602052602060ff604060002054166040519015158152f35b61231f565b346102ef5760003660031901126102ef576020601054604051908152f35b346102ef577fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb611138366122e4565b508360009493945260166020526111ae6003604060002061115b8682541461255d565b86600052601860205261117560ff604060002054166124b8565b6009810194876000528560205261119460ff6040600020541615612618565b6111a360028301918254612449565b905501918254612449565b9055826000526020526040600020600160ff198254161790556111ea601354604051938493846040919493926060820195825260208201520152565b0390a1005b346102ef576020806003193601126102ef578135913360005260008252604060002054156112bd57826000526015825260ff60406000205416156112835750600082815260148252604080822080546001600160a01b03191690556015835290819020805460ff19169055519182527f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba85391a1005b6064916040519162461bcd60e51b83528201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152fd5b6084916040519162461bcd60e51b8352820152602160248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c6044820152606560f81b6064820152fd5b346102ef5760203660031901126102ef57356000526019602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef578035906113546122ce565b33600052602090600082526040600020541561145c576001600160a01b031691821561142b57836000526015825260ff604060002054166113f1577ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d727227196040858585826000526014815283600020826001600160601b0360a01b8254161790556015815283600020600160ff198254161790558351928352820152a1005b6064916040519162461bcd60e51b835282015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152fd5b6064916040519162461bcd60e51b8352820152600c60248201526b5a65726f206164647265737360a01b6044820152fd5b60405162461bcd60e51b8152808401839052601e60248201527f4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c6500006044820152606490fd5b346102ef5760003660031901126102ef57602060405160128152f35b346102ef577fe379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe56114eb366122e4565b508360009493945260176020526111ae6002604060002061150e815415156126c5565b86600052601860205261152860ff604060002054166124b8565b6007810194876000528560205261154760ff6040600020541615612618565b6111a360018301918254612449565b346102ef5760603660031901126102ef5761156f6122b8565b6115776122ce565b6044359160018060a01b0381168060005260016020526040600020336000526020526040600020549460001986106115b6575b5050610ce7935061236b565b84861061162257811561160a5733156115f25750610ce794849160005260016020526040600020336000526020520360406000205584806115aa565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b346102ef5760003660031901126102ef576000610120604051611670816121aa565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051906116b7826121aa565b6040516116c78161022981611edb565b82526040516116d98161022981611f7f565b60208301526040516116ee8161022981612006565b6040830152604051611703816102298161208d565b6060830152600a546080830152600b5460a0830152600c549067ffffffffffffffff82116118cc57506040519061174060208260051b01836121dd565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b8383106118a757858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526118086117f26117dc6117c685516101406020870152610160860190612222565b6020860151858203601f19016040870152612222565b6040850151848203601f19016060860152612222565b6060840151838203601f19016080850152612222565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061187a578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080611898600193601f198682030187528951612222565b97019301930191939290611849565b6001602081926040516118be816102298189612114565b815201920192019190611771565b604190634e487b7160e01b6000525260246000fd5b346102ef5760003660031901126102ef576020600254604051908152f35b346102ef576020806003193601126102ef57813591826000526016825260406000209161192e8484541461255d565b8183019283549261194260ff8516156125a9565b60058201544210611ace5761195686612668565b81611ac6575b5015611a8c57506007906001948560ff19809616179055019261198e604051611989816102298189612114565b612884565b60405194855260408286015260009380546119a881611ea1565b948560408901528382169182600014611a465750506001146119ed575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b838510611a3257505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d284806119c5565b8054868601606001529382019381016119f9565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b820101919284806119c5565b60405162461bcd60e51b81529081018390526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b90508761195c565b60405162461bcd60e51b8152908101839052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346102ef5760003660031901126102ef576020601154604051908152f35b346102ef5760403660031901126102ef57611b3c6122b8565b602435903315611baa576001600160a01b03169182156115f25750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b346102ef5760003660031901126102ef576040516000600354611be481611ea1565b80845290600190818116908115611c695750600114611c0e575b610d7884610d64818603826121dd565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611c51575050508101602001610d6482611bfe565b80546020858701810191909152909301928101611c39565b60ff191660208087019190915292151560051b85019092019250610d649150839050611bfe565b346102ef5760203660031901126102ef57610f57903561275d565b346102ef5760603660031901126102ef57602435813560443567ffffffffffffffff81116102ef57611ce0903690850161229a565b50816000526018602052611cfb60ff604060002054166124b8565b80600052601960205260ff60406000205416611da3577f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e8331392508060005260196020526040600020600160ff198254161790556016602052604060002081815414611d84575b506111ea601354604051938493846040919493926060820195825260208201520152565b6007611989611d9d926102296040518094819301612114565b83611d60565b60405162461bcd60e51b8152602081850152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b90346102ef5760203660031901126102ef5780356000526016602052610d786040600020916007835493611e1c86611e158160018501612114565b03876121dd565b60028101549260ff60038301549183015416600583015491611e5c60018060a01b0360068601541694611e556040518098819301612114565b03866121dd565b611e78604051998a998a526101008060208c01528a0190612222565b95604089015260608801521515608087015260a086015260c085015283820360e0850152612222565b90600182811c92168015611ed1575b6020831014611ebb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611eb0565b60065460009291611eeb82611ea1565b80825291600190818116908115611f625750600114611f0957505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410611f4a57505060209250010190565b80546020858501810191909152909301928101611f38565b915050602093945060ff929192191683830152151560051b010190565b60075460009291611f8f82611ea1565b80825291600190818116908115611f625750600114611fad57505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410611fee57505060209250010190565b80546020858501810191909152909301928101611fdc565b6008546000929161201682611ea1565b80825291600190818116908115611f62575060011461203457505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b84841061207557505060209250010190565b80546020858501810191909152909301928101612063565b6009546000929161209d82611ea1565b80825291600190818116908115611f6257506001146120bb57505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b8484106120fc57505060209250010190565b805460208585018101919091529093019281016120ea565b906000929180549161212583611ea1565b9182825260019384811690816000146121875750600114612147575b50505050565b90919394506000526020928360002092846000945b838610612173575050505001019038808080612141565b80548587018301529401938590820161215c565b9294505050602093945060ff191683830152151560051b01019038808080612141565b610140810190811067ffffffffffffffff8211176121c757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176121c757604052565b60005b8381106122125750506000910152565b8181015183820152602001612202565b9060209161223b815180928185528580860191016121ff565b601f01601f1916010190565b67ffffffffffffffff81116121c757601f01601f191660200190565b92919261226f82612247565b9161227d60405193846121dd565b8294818452818301116102ef578281602093846000960137010152565b9080601f830112156102ef578160206122b593359101612263565b90565b600435906001600160a01b03821682036102ef57565b602435906001600160a01b03821682036102ef57565b60a06003198201126102ef57600435916024359160443591606435916084359067ffffffffffffffff82116102ef576122b59160040161229a565b346102ef5760203660031901126102ef57602061032d600435600052601860205260ff6040600020541690565b60409060031901126102ef576004359060243580151581036102ef5790565b916001600160a01b03808416928315612430571692831561241757600090838252816020526040822054908382106123e5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161245657565b634e487b7160e01b600052601160045260246000fd5b1561247357565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b156124bf57565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b60001981146124565760010190565b90601f811161251757505050565b600091825260208220906020601f850160051c83019410612553575b601f0160051c01915b82811061254857505050565b81815560010161253c565b9092508290612533565b1561256457565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b156125b057565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b600260055414612606576002600555565b604051633ee5aeb560e01b8152600490fd5b1561261f57565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b8181029291811591840414171561245657565b9081600052601660205261268360406000209283541461255d565b60036002830154920154916126988382612449565b60646126a960025460105490612655565b041115928391826126bb575b50509190565b11905038806126b5565b156126cc57565b60405162461bcd60e51b815260206004820152601860248201527f4f7065726174696f6e20646f6573206e6f7420657869737400000000000000006044820152606490fd5b1561271857565b60405162461bcd60e51b815260206004820152601a60248201527f4f7065726174696f6e20616c72656164792065786563757465640000000000006044820152606490fd5b6000526017602052604060002090612777825415156126c5565b60026001830154920154916126988382612449565b6127a5600091808352601660205260408320541461255d565b805b600481106127b6575050600190565b6127d66127c2826127ed565b600052601860205260ff6040600020541690565b156127e9576127e4906124fa565b6127a7565b5090565b80156128575760018114612851576002811461284b576003146128455760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b61a4b190565b50603890565b50608990565b50600190565b91908260409103126102ef5781516001600160a01b03811681036102ef5760209092015190565b80518101906020908082840193604091829103126102ef57818301516001600160e01b0319811692908390036102ef57818101519067ffffffffffffffff82116102ef57019184603f840112156102ef5783830151926128e384612247565b936128f0845195866121dd565b808552858501968482840101116102ef57868461290d93016121ff565b63a9059cbb60e01b8103612942575050916129309183612940945101019061285d565b906001600160a01b03163361236b565b565b909391906340c10f1960e01b81036129d95750908282612965935101019061285d565b6001600160a01b039091169283156129c25791816000936129a97fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600254612449565b60025585855284835280852082815401905551908152a3565b5163ec442f0560e01b815260006004820152602490fd5b939493632770a7eb60e21b03612aa7579082826129f9935101019061285d565b916001600160a01b03909116908115612a8f576000928284528382528584205495818710612a615781859697857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9697528785520381872055816002540360025551908152a3565b5163391434e360e21b81526001600160a01b0384166004820152602481018790526044810191909152606490fd5b8451634b637e8f60e11b815260006004820152602490fd5b845162461bcd60e51b81526004810184905260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fdfea2646970667358221220f64aff06e475b418e3cb3e3892104b639f9a88cb834dec83d25ec4b55d34f0bd64736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH3 0x1107 JUMPI PUSH3 0x3E83 DUP1 CODESIZE SUB SWAP1 DUP2 PUSH3 0x1E DUP2 PUSH3 0x1168 JUMP JUMPDEST SWAP2 DUP3 CODECOPY PUSH1 0x40 DUP2 DUP4 DUP2 ADD SUB SLT PUSH3 0x1107 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH3 0x1107 JUMPI PUSH2 0x180 SWAP3 DUP4 DUP4 DUP4 ADD DUP3 DUP5 ADD SUB SLT PUSH3 0x1107 JUMPI PUSH1 0x40 MLOAD SWAP4 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP6 DUP3 LT OR PUSH3 0xB7B JUMPI PUSH1 0x40 MSTORE DUP2 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0x94 SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST DUP5 MSTORE DUP2 DUP4 ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0xBF SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0xED SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0x11B SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0x80 DUP2 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI DUP4 DUP4 ADD ADD DUP2 DUP4 ADD PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP1 MLOAD PUSH3 0x173 PUSH3 0x16D DUP3 PUSH3 0x120A JUMP JUMPDEST PUSH3 0x1168 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 DUP5 DUP7 ADD DUP4 GT PUSH3 0x1107 JUMPI PUSH1 0x20 DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH3 0x1134 JUMPI POP POP POP POP PUSH1 0xC0 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0xE0 DUP2 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI DUP2 DUP4 ADD PUSH1 0x1F DUP3 DUP7 DUP7 ADD ADD ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP1 DUP5 DUP5 ADD ADD MLOAD SWAP1 PUSH3 0x1F9 PUSH3 0x16D DUP4 PUSH3 0x120A JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD SWAP2 DUP5 DUP7 ADD PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP4 DUP11 DUP11 ADD ADD ADD ADD GT PUSH3 0x1107 JUMPI SWAP2 PUSH1 0x20 DUP4 DUP9 DUP9 ADD ADD ADD SWAP3 JUMPDEST PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP3 DUP11 DUP11 ADD ADD ADD ADD DUP5 LT PUSH3 0x110C JUMPI POP POP POP POP PUSH2 0x120 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0x26B SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x1222 JUMP JUMPDEST PUSH2 0x140 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH2 0x160 ADD MLOAD SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH3 0x1107 JUMPI PUSH1 0x20 SWAP4 PUSH3 0x29D SWAP3 DUP5 ADD SWAP2 DUP5 ADD ADD PUSH3 0x1222 JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE ADD MLOAD DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD DUP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x2CF PUSH1 0x3 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0x10B4 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0x1044 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0x1038 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x32A PUSH1 0x4 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xFE5 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xF76 JUMPI DUP2 SWAP3 SWAP4 SWAP5 PUSH1 0x0 SWAP3 PUSH3 0xF6A JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x5 SSTORE DUP1 MLOAD SWAP2 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD SWAP1 PUSH1 0xC0 DUP8 ADD MLOAD SWAP3 PUSH1 0xE0 DUP9 ADD MLOAD SWAP5 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x140 DUP2 ADD LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB PUSH2 0x140 DUP11 ADD GT OR PUSH3 0xB7B JUMPI PUSH2 0x140 DUP9 ADD PUSH1 0x40 MSTORE DUP11 DUP9 MSTORE PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP3 ADD MSTORE TIMESTAMP PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH2 0x120 DUP3 ADD MSTORE DUP4 MLOAD PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x40C PUSH1 0x6 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xF17 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xEA7 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xE9B JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x6 SSTORE JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x46F PUSH1 0x7 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xE48 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xDD8 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xDCC JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x4D2 PUSH1 0x8 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xD79 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xD09 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xCFD JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x8 SSTORE JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x535 PUSH1 0x9 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xCAA JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xC3A JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xC2E JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x9 SSTORE JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xB SSTORE PUSH1 0xC0 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 GT PUSH3 0xB7B JUMPI PUSH1 0xC SLOAD DUP3 PUSH1 0xC SSTORE DUP1 DUP4 LT PUSH3 0xB91 JUMPI JUMPDEST POP PUSH1 0xC PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 SWAP3 SWAP2 PUSH1 0x20 ADD JUMPDEST DUP3 DUP3 LT PUSH3 0xA49 JUMPI DUP7 DUP7 PUSH2 0x120 DUP8 PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0xE SSTORE ADD MLOAD ISZERO ISZERO PUSH1 0xFF DUP1 NOT PUSH1 0xF SLOAD AND SWAP2 AND OR PUSH1 0xF SSTORE PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x13 SSTORE PUSH1 0x0 JUMPDEST PUSH2 0x160 DUP3 ADD MLOAD SWAP1 DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x660 JUMPI PUSH3 0x63B DUP2 PUSH3 0x65A SWAP4 PUSH3 0x12E5 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH3 0x12D5 JUMP JUMPDEST PUSH3 0x61A JUMP JUMPDEST DUP3 PUSH2 0x120 DUP2 ADD MLOAD MLOAD PUSH2 0x140 DUP3 ADD MLOAD MLOAD SUB PUSH3 0xA04 JUMPI PUSH2 0x120 DUP2 ADD MLOAD MLOAD ISZERO PUSH3 0x9BF JUMPI PUSH1 0x0 JUMPDEST PUSH2 0x120 DUP3 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH3 0x7F1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 SWAP1 PUSH3 0x6AD SWAP1 DUP5 SWAP1 PUSH3 0x12E5 JUMP JUMPDEST MLOAD AND ISZERO PUSH3 0x7BD JUMPI PUSH3 0x6C6 DUP3 PUSH2 0x140 DUP6 ADD MLOAD PUSH3 0x12E5 JUMP JUMPDEST MLOAD ISZERO PUSH3 0x78A JUMPI PUSH3 0x6DE DUP3 PUSH2 0x120 DUP6 ADD MLOAD PUSH3 0x12E5 JUMP JUMPDEST MLOAD AND SWAP1 PUSH3 0x6F2 DUP2 PUSH2 0x140 DUP6 ADD MLOAD PUSH3 0x12E5 JUMP JUMPDEST MLOAD SWAP2 DUP1 ISZERO PUSH3 0x771 JUMPI PUSH1 0x2 SLOAD DUP4 DUP2 ADD DUP2 GT PUSH3 0x75B JUMPI PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x20 DUP6 PUSH3 0x755 SWAP7 PUSH1 0x0 SWAP5 ADD PUSH1 0x2 SSTORE DUP5 DUP5 MSTORE DUP4 DUP3 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 PUSH3 0x12D5 JUMP JUMPDEST PUSH3 0x685 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x16995C9BC8185B5BDD5B9D PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A65726F2061646472657373 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x140 DUP3 ADD MLOAD SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD PUSH1 0x40 DUP5 MSTORE DUP3 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH1 0x60 DUP6 ADD SWAP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH3 0x99F JUMPI DUP7 PUSH32 0xF9E7AA11BCDCBB8AC33B5DBA92FCA799EF091E54C29270822065501D8EDEA1A5 DUP8 DUP1 PUSH3 0x85C DUP10 DUP10 DUP4 DUP3 SUB PUSH1 0x20 DUP6 ADD MSTORE PUSH3 0x1310 JUMP JUMPDEST SUB SWAP1 LOG1 DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD SWAP1 PUSH3 0x8E1 PUSH1 0xA0 DUP5 ADD MLOAD SWAP2 PUSH3 0x8D2 PUSH1 0xC0 DUP7 ADD MLOAD SWAP9 PUSH3 0x8C3 PUSH2 0x160 PUSH1 0xE0 DUP10 ADD MLOAD SWAP9 ADD MLOAD SWAP9 PUSH3 0x8B4 PUSH1 0x40 MLOAD SWAP12 PUSH2 0x140 DUP14 MSTORE PUSH2 0x140 DUP14 ADD SWAP1 PUSH3 0x1346 JUMP JUMPDEST SWAP1 DUP12 DUP3 SUB PUSH1 0x20 DUP14 ADD MSTORE PUSH3 0x1346 JUMP JUMPDEST SWAP1 DUP10 DUP3 SUB PUSH1 0x40 DUP12 ADD MSTORE PUSH3 0x1346 JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x60 DUP10 ADD MSTORE PUSH3 0x1346 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 PUSH1 0x20 DUP1 DUP4 PUSH1 0x5 SHL DUP4 ADD ADD SWAP8 ADD SWAP3 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH3 0x96F JUMPI PUSH32 0x11B248463A1620B36A975DA8F250009F56FB5DD0E9D5027A90A834D0EE84D6F6 DUP9 DUP1 PUSH3 0x95C DUP13 DUP12 DUP12 PUSH1 0xE0 DUP6 ADD MSTORE ADDRESS PUSH2 0x100 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH2 0x120 DUP6 ADD MSTORE PUSH3 0x1310 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH2 0x2B15 SWAP1 DUP2 PUSH3 0x136E DUP3 CODECOPY RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP8 PUSH1 0x20 DUP1 PUSH3 0x98F PUSH1 0x1 SWAP4 PUSH1 0x1F NOT DUP7 DUP3 SUB ADD DUP8 MSTORE DUP13 MLOAD PUSH3 0x1346 JUMP JUMPDEST SWAP11 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH3 0x90F JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x81C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F20696E697469616C20706172746E65727300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x417272617973206C656E677468206D69736D6174636800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH3 0xB7B JUMPI PUSH3 0xA69 DUP7 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xB39 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH3 0xAC4 JUMPI SWAP3 DUP3 PUSH1 0x1 SWAP5 SWAP4 PUSH1 0x20 SWAP4 DUP7 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xAB8 JUMPI JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP5 SHL OR DUP8 SSTORE JUMPDEST ADD SWAP5 ADD SWAP2 ADD SWAP1 SWAP3 PUSH3 0x5DA JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0xA97 JUMP JUMPDEST SWAP1 DUP7 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH3 0xB20 JUMPI POP DUP4 PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP7 SWAP4 DUP8 SWAP7 SWAP4 DUP8 SWAP5 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xB06 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP8 SSTORE PUSH3 0xAAB JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xAF8 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH3 0xAD2 JUMP JUMPDEST PUSH3 0xB69 SWAP1 DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP7 LT PUSH3 0xB70 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0xA73 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH3 0xB5B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xC PUSH1 0x0 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 SWAP1 DUP4 DUP3 ADD JUMPDEST DUP2 DUP4 ADD DUP2 LT PUSH3 0xBCE JUMPI POP POP PUSH3 0x5AB JUMP JUMPDEST DUP1 PUSH3 0xBDD PUSH1 0x1 SWAP3 SLOAD PUSH3 0x127F JUMP JUMPDEST DUP1 PUSH3 0xBEC JUMPI JUMPDEST POP ADD PUSH3 0xBBC JUMP JUMPDEST PUSH1 0x1F DUP2 GT DUP4 EQ PUSH3 0xC04 JUMPI POP PUSH1 0x0 DUP2 SSTORE JUMPDEST CODESIZE PUSH3 0xBE4 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP3 DUP3 MSTORE PUSH3 0xC24 PUSH1 0x1F PUSH1 0x20 DUP5 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD DUP6 DUP4 ADD PUSH3 0x12BC JUMP JUMPDEST DUP2 DUP4 SSTORE SSTORE PUSH3 0xBFD JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x55C JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xC91 JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xC77 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x9 SSTORE PUSH3 0x572 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xC68 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xC48 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 MSTORE PUSH3 0xCF6 SWAP1 PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x53F JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x4F9 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xD60 JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xD46 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x8 SSTORE PUSH3 0x50F JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xD37 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xD17 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 MSTORE PUSH3 0xDC5 SWAP1 PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x4DC JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x496 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xE2F JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xE15 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x7 SSTORE PUSH3 0x4AC JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xE06 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xDE6 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 MSTORE PUSH3 0xE94 SWAP1 PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x479 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x433 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xEFE JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xEE4 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x6 SSTORE PUSH3 0x449 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xED5 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xEB5 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 MSTORE PUSH3 0xF63 SWAP1 PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x416 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x350 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xFCC JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xFB2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH3 0x366 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xFA3 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xF84 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 MSTORE PUSH3 0x1031 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x334 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x2F6 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0x109B JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0x1081 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH3 0x30C JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0x1072 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0x1052 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 MSTORE PUSH3 0x1100 SWAP1 PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x2D9 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP4 SUB PUSH3 0x1107 JUMPI PUSH1 0x20 DUP2 DUP2 SWAP5 DUP3 SWAP4 MSTORE ADD SWAP5 ADD SWAP4 SWAP2 POP PUSH3 0x223 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH1 0x20 SWAP2 PUSH3 0x115C DUP4 SWAP3 DUP4 DUP11 DUP13 ADD SWAP2 DUP9 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH3 0x194 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH3 0xB7B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH3 0x11A2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1191 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x11E5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH3 0x1168 JUMP JUMPDEST SWAP3 DUP2 DUP5 MSTORE PUSH1 0x20 DUP3 DUP5 ADD ADD GT PUSH3 0x1107 JUMPI PUSH3 0x1207 SWAP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 ADD PUSH3 0x118E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP2 MLOAD SWAP1 PUSH3 0x1241 PUSH3 0x16D DUP4 PUSH3 0x120A JUMP JUMPDEST SWAP2 DUP3 SWAP4 DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP6 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH3 0x1107 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH3 0x126F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH3 0x1260 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH3 0x12B1 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH3 0x129B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH3 0x128F JUMP JUMPDEST DUP2 DUP2 LT PUSH3 0x12C8 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x12BC JUMP JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH3 0x75B JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH3 0x12FA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH3 0x1331 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH3 0x1322 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH3 0x1361 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH3 0x118E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP2 DUP3 PUSH4 0x13CF08B EQ PUSH2 0x1DDA JUMPI POP DUP2 PUSH4 0x44BC2BD EQ PUSH2 0x1CAB JUMPI DUP2 PUSH4 0x57B2074 EQ PUSH2 0x1C90 JUMPI DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1BC2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1B23 JUMPI DUP2 PUSH4 0xC0512E9 EQ PUSH2 0x1B05 JUMPI DUP2 PUSH4 0xD61B519 EQ PUSH2 0x18FF JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x18E1 JUMPI DUP2 PUSH4 0x204C5D1F EQ PUSH2 0x164E JUMPI DUP2 PUSH4 0x22DBEFBB EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x1556 JUMPI DUP2 PUSH4 0x2EE09598 EQ PUSH2 0x14BC JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x14A0 JUMPI DUP2 PUSH4 0x35324EEE EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x3B60288A EQ PUSH2 0x1309 JUMPI DUP2 PUSH4 0x4114509B EQ PUSH2 0x11EF JUMPI DUP2 PUSH4 0x456D10C1 EQ PUSH2 0x1109 JUMPI DUP2 PUSH4 0x4B145793 EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0x4DE184F6 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x4FA76EC9 EQ PUSH2 0x10EB JUMPI DUP2 PUSH4 0x5221C1F0 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x548D496F EQ PUSH2 0x10B7 JUMPI DUP2 PUSH4 0x5CF0E8A4 EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x6CBADBFA EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x105F JUMPI DUP2 PUSH4 0x7CE288EA EQ PUSH2 0xF6B JUMPI DUP2 PUSH4 0x7E5A9B47 EQ PUSH2 0xF3C JUMPI DUP2 PUSH4 0x893D692A EQ PUSH2 0xE20 JUMPI DUP2 PUSH4 0x8C7B04C9 EQ PUSH2 0xE02 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xD17 JUMPI DUP2 PUSH4 0x9A49BDDE EQ PUSH2 0xCF2 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCC1 JUMPI DUP2 PUSH4 0xAF89D2C4 EQ PUSH2 0xC92 JUMPI DUP2 PUSH4 0xB00E0730 EQ PUSH2 0xB6E JUMPI DUP2 PUSH4 0xB0B6CC1A EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0xB3594510 EQ PUSH2 0x774 JUMPI DUP2 PUSH4 0xB3FE8BCB EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0xC51CAB3A EQ PUSH2 0x6D5 JUMPI DUP2 PUSH4 0xC9D27AFE EQ PUSH2 0x54E JUMPI DUP2 PUSH4 0xCCD7A490 EQ PUSH2 0x388 JUMPI DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x337 JUMPI DUP2 PUSH4 0xE49A62E9 EQ PUSH2 0x310 JUMPI DUP2 PUSH4 0xECED3DFB EQ PUSH2 0x2F4 JUMPI POP PUSH4 0xF2C26A47 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x2A4 PUSH1 0x40 MLOAD PUSH2 0x230 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x240 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x258 DUP3 PUSH2 0x251 DUP2 PUSH2 0x2006 JUMP JUMPDEST SUB DUP4 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH2 0x270 DUP4 PUSH2 0x269 DUP2 PUSH2 0x208D JUMP JUMPDEST SUB DUP5 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0xA SLOAD SWAP3 PUSH1 0xB SLOAD PUSH2 0x2CE PUSH1 0xD SLOAD SWAP3 PUSH2 0x2C0 PUSH1 0xE SLOAD SWAP6 PUSH2 0x2B2 PUSH1 0xFF PUSH1 0xF SLOAD AND SWAP9 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP13 DUP14 PUSH2 0x120 SWAP1 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST DUP13 DUP2 SUB PUSH1 0x20 DUP15 ADD MSTORE SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x40 DUP13 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x32D PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x278C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x350 PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x22CE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x396 CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x39F PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x17 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x3BC DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP1 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x51A JUMPI PUSH2 0x3D8 PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x2711 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x4E5 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x4AD JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78B8E65C466DF05EA5DDF0593B44648ECA1F35C039F180E31257A6F1BDD005DC SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x498 JUMPI PUSH1 0x1 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE CALLER PUSH1 0x20 DUP6 ADD MSTORE SWAP4 ISZERO ISZERO SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x80 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x5 SSTORE STOP JUMPDEST PUSH1 0x2 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2737903A37B5B2B739903A379039B4B3B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDA59DB9959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x14DA59DB9A5B99C8195B991959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x55C CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x565 PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x16 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x582 DUP4 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x59E PUSH1 0xFF DUP3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x8 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x66E JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x636 JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78975AAF742630489BADD22949B88AC50EAAEA576339EE05440B671A33BFB6A9 SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x628 JUMPI PUSH1 0x2 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x3 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4E6F20746F6B656E7320746F20766F7465 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x105B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x159BDD1A5B99C8195B991959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 PUSH1 0xC0 SWAP2 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND SWAP2 DUP4 ADD SLOAD SWAP3 PUSH1 0x5 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 ADD SLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0x2EF JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI PUSH2 0x7B7 PUSH1 0x24 SWAP3 CALLDATASIZE SWAP1 DUP5 DUP2 DUP6 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 DUP3 CALLDATALOAD SWAP4 PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x7D2 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x229A JUMP JUMPDEST SWAP5 PUSH1 0x64 CALLDATALOAD SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP7 PUSH1 0x0 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xAED JUMPI PUSH2 0x7F8 DUP4 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x18 DUP9 MSTORE PUSH2 0x811 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 DUP8 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x11 SLOAD SWAP6 PUSH2 0x833 DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x11 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x16 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP8 DUP2 SSTORE PUSH1 0x1 SWAP4 DUP5 DUP3 ADD DUP9 MLOAD DUP8 DUP2 GT PUSH2 0xAA0 JUMPI PUSH2 0x869 DUP2 PUSH2 0x863 DUP5 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP5 PUSH2 0x2509 JUMP JUMPDEST DUP12 DUP13 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xA2B JUMPI POP SWAP2 DUP2 PUSH1 0x7 SWAP6 SWAP5 SWAP3 PUSH2 0x8BC SWAP5 PUSH1 0x0 SWAP2 PUSH2 0xA20 JUMPI JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP10 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP5 ADD SSTORE PUSH1 0x0 PUSH1 0x3 DUP5 ADD SSTORE DUP9 DUP4 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SSTORE PUSH1 0x6 DUP2 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE ADD SWAP5 DUP3 MLOAD SWAP5 DUP6 GT PUSH2 0xA0D JUMPI POP POP PUSH2 0x8F8 DUP4 PUSH2 0x8F2 DUP7 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP7 PUSH2 0x2509 JUMP JUMPDEST DUP7 SWAP1 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x980 JUMPI SWAP3 DUP1 PUSH2 0x96A SWAP6 SWAP4 DUP2 SWAP4 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP9 SWAP7 PUSH1 0x0 SWAP5 PUSH2 0x975 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP6 DUP4 MSTORE CALLER DUP8 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP DUP11 DUP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 PUSH1 0x1F SWAP4 SWAP3 SWAP4 NOT DUP4 AND SWAP2 DUP6 PUSH1 0x0 MSTORE DUP9 PUSH1 0x0 KECCAK256 SWAP3 PUSH1 0x0 JUMPDEST DUP11 DUP3 DUP3 LT PUSH2 0x9F9 JUMPI POP POP SWAP2 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x96A SWAP9 SWAP7 SWAP5 LT PUSH2 0x9E0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x94B JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP9 DUP1 DUP1 PUSH2 0x9D3 JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE SWAP5 DUP8 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x996 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP13 ADD MLOAD DUP16 PUSH2 0x88A JUMP JUMPDEST DUP9 SWAP3 SWAP2 DUP13 PUSH1 0x1F NOT DUP5 AND DUP7 PUSH1 0x0 MSTORE DUP4 PUSH1 0x0 KECCAK256 SWAP4 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xA85 JUMPI POP POP SWAP2 PUSH1 0x7 SWAP9 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x8BC SWAP9 SWAP7 SWAP5 LT PUSH2 0xA6C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x89D JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP16 DUP1 DUP15 PUSH2 0xA5F JUMP JUMPDEST SWAP3 DUP5 ADD MLOAD DUP6 SSTORE DUP13 SWAP7 SWAP1 SWAP5 ADD SWAP4 SWAP3 DUP3 ADD SWAP3 DUP16 SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0xA41 JUMP JUMPDEST DUP5 PUSH1 0x41 DUP11 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP6 ADD DUP9 SWAP1 MSTORE PUSH1 0x13 DUP2 DUP9 ADD MSTORE PUSH19 0x436861696E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP7 ADD DUP10 SWAP1 MSTORE PUSH1 0x23 DUP2 DUP10 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F206372656174652070726F706F PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x1CD85B PUSH1 0xEA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xC42 JUMPI PUSH1 0x60 PUSH1 0x20 SWAP4 PUSH1 0x5 DUP4 PUSH2 0xBCD PUSH32 0x8D5C76B09B9C1F4D0453D21436DCB0B568A50E9C0AE059E4D0AE8C95C71D07F0 SWAP6 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST PUSH1 0x12 SLOAD SWAP6 PUSH2 0xBDA DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x12 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x17 DUP9 MSTORE PUSH2 0xC11 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP6 DUP5 SSTORE PUSH1 0x0 PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0x0 PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x3 DUP5 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST SWAP1 DUP3 ADD SSTORE ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP5 DUP3 MSTORE CALLER DUP7 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP5 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20637265617465206F70657261 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x3A34B7B7 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xCE7 PUSH2 0xCDD PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0x236B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xD0F PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x0 SWAP1 DUP1 SLOAD PUSH2 0xD3A DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0xDD8 JUMPI POP PUSH1 0x1 EQ PUSH2 0xD7C JUMPI JUMPDEST PUSH2 0xD78 DUP6 PUSH2 0xD64 DUP2 DUP8 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xDC0 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0xD78 PUSH2 0xD54 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xDA5 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0xD78 SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0xD64 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0xD54 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x12 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH2 0xE51 DUP4 ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SWAP2 DUP1 DUP4 SLOAD SWAP3 PUSH2 0xE67 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x2711 JUMP JUMPDEST ADD SLOAD TIMESTAMP LT PUSH2 0xF04 JUMPI PUSH2 0xE78 DUP6 PUSH2 0x275D JUMP JUMPDEST DUP2 PUSH2 0xEFC JUMPI JUMPDEST POP ISZERO PUSH2 0xEC1 JUMPI PUSH32 0x64CEE5A70D662A7EEF5B2A171DAA51DC624F3D64A35D0855B385262B893DC5A5 PUSH1 0x40 DUP7 DUP7 DUP7 PUSH1 0x1 DUP8 PUSH1 0xFF NOT AND OR SWAP1 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x13DC195C985D1A5BDB881B9BDD081C185CDCD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP DUP7 PUSH2 0xE7E JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x14DA59DB9A5B99C81B9BDD08195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x2668 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xF88 DUP3 PUSH2 0x278C JUMP JUMPDEST ISZERO PUSH2 0x1024 JUMPI PUSH1 0x13 SLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFC7 JUMPI PUSH32 0x57DF5A6A467271F04B10F7FE9E66D21DCD8AE7EAF079099D48959F24A53B6910 PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST DUP1 PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 PUSH2 0x1017 PUSH2 0xFF8 PUSH2 0x101F SWAP5 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP8 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x4E6F7420616C6C20636861696E73207265616479 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1080 PUSH2 0x22B8 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH2 0x231F JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x10 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xCA1838D50CA3156F1ACE7CDE39A081CC9C9A333AF6FCA55DB71817F8717E1DCB PUSH2 0x1138 CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x3 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x115B DUP7 DUP3 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1175 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x9 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1194 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x2 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x12BD JUMPI DUP3 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x1283 JUMPI POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x14 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x15 DUP4 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C7C76ABE482A2C36EA52F1B999474C69F8B4AFEEAC5635F8AEA2526864BA853 SWAP2 LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x135BD91D5B1948191BD95CC81B9BDD08195E1A5CDD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F2072656D6F7665206D6F64756C PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x65 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1354 PUSH2 0x22CE JUMP JUMPDEST CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x145C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x142B JUMPI DUP4 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x13F1 JUMPI PUSH32 0xF14475B19484BF096265507CC0C41CD3BF1994992088806830686E2D72722719 PUSH1 0x40 DUP6 DUP6 DUP6 DUP3 PUSH1 0x0 MSTORE PUSH1 0x14 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x15 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4D6F64756C6520616C726561647920657869737473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A65726F2061646472657373 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20616464206D6F64756C650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xE379B3DEB66DDFA7962A2BDF35E9A08B5BED672C9DA3ECF7CC6174D253C6DFE5 PUSH2 0x14EB CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x2 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x150E DUP2 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1528 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x7 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1547 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x1 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x156F PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x1577 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP5 PUSH1 0x0 NOT DUP7 LT PUSH2 0x15B6 JUMPI JUMPDEST POP POP PUSH2 0xCE7 SWAP4 POP PUSH2 0x236B JUMP JUMPDEST DUP5 DUP7 LT PUSH2 0x1622 JUMPI DUP2 ISZERO PUSH2 0x160A JUMPI CALLER ISZERO PUSH2 0x15F2 JUMPI POP PUSH2 0xCE7 SWAP5 DUP5 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE DUP5 DUP1 PUSH2 0x15AA JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD DUP9 SWAP1 MSTORE SWAP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1670 DUP2 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x16B7 DUP3 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16C7 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST DUP3 MSTORE PUSH1 0x40 MLOAD PUSH2 0x16D9 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x16EE DUP2 PUSH2 0x229 DUP2 PUSH2 0x2006 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x1703 DUP2 PUSH2 0x229 DUP2 PUSH2 0x208D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xB SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x18CC JUMPI POP PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1740 PUSH1 0x20 DUP3 PUSH1 0x5 SHL ADD DUP4 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0xC PUSH1 0x0 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x18A7 JUMPI DUP6 DUP6 PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0xF SLOAD AND ISZERO ISZERO PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 MSTORE PUSH2 0x1808 PUSH2 0x17F2 PUSH2 0x17DC PUSH2 0x17C6 DUP6 MLOAD PUSH2 0x140 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x160 DUP7 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP4 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD SWAP1 PUSH1 0x1F NOT DUP4 DUP3 SUB ADD PUSH1 0xE0 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 PUSH1 0x20 DUP1 DUP4 PUSH1 0x5 SHL DUP4 ADD ADD SWAP5 ADD SWAP3 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x187A JUMPI DUP7 DUP1 DUP8 PUSH2 0x120 DUP12 PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x1898 PUSH1 0x1 SWAP4 PUSH1 0x1F NOT DUP7 DUP3 SUB ADD DUP8 MSTORE DUP10 MLOAD PUSH2 0x2222 JUMP JUMPDEST SWAP8 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH2 0x1849 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x40 MLOAD PUSH2 0x18BE DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x1771 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 DUP3 PUSH1 0x0 MSTORE PUSH1 0x16 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH2 0x192E DUP5 DUP5 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP2 DUP4 ADD SWAP3 DUP4 SLOAD SWAP3 PUSH2 0x1942 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT PUSH2 0x1ACE JUMPI PUSH2 0x1956 DUP7 PUSH2 0x2668 JUMP JUMPDEST DUP2 PUSH2 0x1AC6 JUMPI JUMPDEST POP ISZERO PUSH2 0x1A8C JUMPI POP PUSH1 0x7 SWAP1 PUSH1 0x1 SWAP5 DUP6 PUSH1 0xFF NOT DUP1 SWAP7 AND OR SWAP1 SSTORE ADD SWAP3 PUSH2 0x198E PUSH1 0x40 MLOAD PUSH2 0x1989 DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x2884 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x40 DUP3 DUP7 ADD MSTORE PUSH1 0x0 SWAP4 DUP1 SLOAD PUSH2 0x19A8 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST SWAP5 DUP6 PUSH1 0x40 DUP10 ADD MSTORE DUP4 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x1A46 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x19ED JUMPI JUMPDEST PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP7 DUP7 SUB DUP8 LOG1 STOP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP1 SWAP5 POP JUMPDEST DUP4 DUP6 LT PUSH2 0x1A32 JUMPI POP POP POP POP DUP2 ADD PUSH1 0x60 ADD DUP2 PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST DUP1 SLOAD DUP7 DUP7 ADD PUSH1 0x60 ADD MSTORE SWAP4 DUP3 ADD SWAP4 DUP2 ADD PUSH2 0x19F9 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 SWAP6 POP PUSH1 0x60 SWAP4 POP PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 SWAP7 SWAP5 SWAP3 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 SWAP3 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x141C9BDC1BDCD85B081B9BDD081C185CDCD959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 POP DUP8 PUSH2 0x195C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x159BDD1A5B99C81B9BDD08195B991959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x1B3C PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER ISZERO PUSH2 0x1BAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x15F2 JUMPI POP CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x20 CALLER SWAP3 LOG3 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 DUP2 DUP6 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x3 SLOAD PUSH2 0x1BE4 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1C69 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1C0E JUMPI JUMPDEST PUSH2 0xD78 DUP5 PUSH2 0xD64 DUP2 DUP7 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B JUMPDEST DUP3 DUP5 LT PUSH2 0x1C51 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0x1BFE JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1C39 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP PUSH2 0xD64 SWAP2 POP DUP4 SWAP1 POP PUSH2 0x1BFE JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x275D JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x24 CALLDATALOAD DUP2 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x1CE0 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x229A JUMP JUMPDEST POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1CFB PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x1DA3 JUMPI PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 SWAP3 POP DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD EQ PUSH2 0x1D84 JUMPI JUMPDEST POP PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x7 PUSH2 0x1989 PUSH2 0x1D9D SWAP3 PUSH2 0x229 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST DUP4 PUSH2 0x1D60 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP6 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x105B1C9958591E48195E1958DD5D1959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0xD78 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x7 DUP4 SLOAD SWAP4 PUSH2 0x1E1C DUP7 PUSH2 0x1E15 DUP2 PUSH1 0x1 DUP6 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP8 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP3 PUSH1 0xFF PUSH1 0x3 DUP4 ADD SLOAD SWAP2 DUP4 ADD SLOAD AND PUSH1 0x5 DUP4 ADD SLOAD SWAP2 PUSH2 0x1E5C PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x6 DUP7 ADD SLOAD AND SWAP5 PUSH2 0x1E55 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP7 PUSH2 0x21DD JUMP JUMPDEST PUSH2 0x1E78 PUSH1 0x40 MLOAD SWAP10 DUP11 SWAP10 DUP11 MSTORE PUSH2 0x100 DUP1 PUSH1 0x20 DUP13 ADD MSTORE DUP11 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x60 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1ED1 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1EBB JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1EB0 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1EEB DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1F09 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x6 PUSH1 0x0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1F4A JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1F38 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1F8F DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1FAD JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x7 PUSH1 0x0 MSTORE PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1FEE JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1FDC JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x2016 DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2034 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x8 PUSH1 0x0 MSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x2075 JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x209D DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x20BB JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x9 PUSH1 0x0 MSTORE PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x20FC JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x20EA JUMP JUMPDEST SWAP1 PUSH1 0x0 SWAP3 SWAP2 DUP1 SLOAD SWAP2 PUSH2 0x2125 DUP4 PUSH2 0x1EA1 JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x1 SWAP4 DUP5 DUP2 AND SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x2187 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2147 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP5 POP PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 DUP4 PUSH1 0x0 KECCAK256 SWAP3 DUP5 PUSH1 0x0 SWAP5 JUMPDEST DUP4 DUP7 LT PUSH2 0x2173 JUMPI POP POP POP POP ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST DUP1 SLOAD DUP6 DUP8 ADD DUP4 ADD MSTORE SWAP5 ADD SWAP4 DUP6 SWAP1 DUP3 ADD PUSH2 0x215C JUMP JUMPDEST SWAP3 SWAP5 POP POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2212 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2202 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x223B DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x21C7 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x226F DUP3 PUSH2 0x2247 JUMP JUMPDEST SWAP2 PUSH2 0x227D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x21DD JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2EF JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP2 PUSH1 0x20 PUSH2 0x22B5 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI PUSH2 0x22B5 SWAP2 PUSH1 0x4 ADD PUSH2 0x229A JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH2 0x32D PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2EF JUMPI SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x2430 JUMPI AND SWAP3 DUP4 ISZERO PUSH2 0x2417 JUMPI PUSH1 0x0 SWAP1 DUP4 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 DUP4 DUP3 LT PUSH2 0x23E5 JUMPI POP SWAP2 PUSH1 0x40 DUP3 DUP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP6 DUP8 PUSH1 0x20 SWAP7 MSTORE DUP3 DUP7 MSTORE SUB DUP3 DUP3 KECCAK256 SSTORE DUP7 DUP2 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2456 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x2473 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E206D75737420626520706F73697469766500000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x24BF JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10DA185A5B881B9BDD081CDD5C1C1BDC9D1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2456 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x2517 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x2553 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2548 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x253C JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x2533 JUMP JUMPDEST ISZERO PUSH2 0x2564 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20646F6573206E6F74206578697374000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x25B0 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20616C726561647920657865637574656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x2606 JUMPI PUSH1 0x2 PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x261F JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDE5B98D959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2456 JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x2683 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x26A9 PUSH1 0x2 SLOAD PUSH1 0x10 SLOAD SWAP1 PUSH2 0x2655 JUMP JUMPDEST DIV GT ISZERO SWAP3 DUP4 SWAP2 DUP3 PUSH2 0x26BB JUMPI JUMPDEST POP POP SWAP2 SWAP1 JUMP JUMPDEST GT SWAP1 POP CODESIZE DUP1 PUSH2 0x26B5 JUMP JUMPDEST ISZERO PUSH2 0x26CC JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20646F6573206E6F742065786973740000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x2718 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20616C7265616479206578656375746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x2777 DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x27A5 PUSH1 0x0 SWAP2 DUP1 DUP4 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x27B6 JUMPI POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x27D6 PUSH2 0x27C2 DUP3 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x27E9 JUMPI PUSH2 0x27E4 SWAP1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0x27A7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2857 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2851 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x284B JUMPI PUSH1 0x3 EQ PUSH2 0x2845 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x92DCECC2D8D2C840C6D0C2D2DC40D2DCC8CAF PUSH1 0x6B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0xA4B1 SWAP1 JUMP JUMPDEST POP PUSH1 0x38 SWAP1 JUMP JUMPDEST POP PUSH1 0x89 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP2 ADD SWAP1 PUSH1 0x20 SWAP1 DUP1 DUP3 DUP5 ADD SWAP4 PUSH1 0x40 SWAP2 DUP3 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP1 DUP4 SWAP1 SUB PUSH2 0x2EF JUMPI DUP2 DUP2 ADD MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI ADD SWAP2 DUP5 PUSH1 0x3F DUP5 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP4 DUP4 ADD MLOAD SWAP3 PUSH2 0x28E3 DUP5 PUSH2 0x2247 JUMP JUMPDEST SWAP4 PUSH2 0x28F0 DUP5 MLOAD SWAP6 DUP7 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP6 MSTORE DUP6 DUP6 ADD SWAP7 DUP5 DUP3 DUP5 ADD ADD GT PUSH2 0x2EF JUMPI DUP7 DUP5 PUSH2 0x290D SWAP4 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x2942 JUMPI POP POP SWAP2 PUSH2 0x2930 SWAP2 DUP4 PUSH2 0x2940 SWAP5 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x236B JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP1 PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x29D9 JUMPI POP SWAP1 DUP3 DUP3 PUSH2 0x2965 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x29C2 JUMPI SWAP2 DUP2 PUSH1 0x0 SWAP4 PUSH2 0x29A9 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP5 PUSH1 0x2 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x2 SSTORE DUP6 DUP6 MSTORE DUP5 DUP4 MSTORE DUP1 DUP6 KECCAK256 DUP3 DUP2 SLOAD ADD SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP4 SWAP5 SWAP4 PUSH4 0x2770A7EB PUSH1 0xE2 SHL SUB PUSH2 0x2AA7 JUMPI SWAP1 DUP3 DUP3 PUSH2 0x29F9 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2A8F JUMPI PUSH1 0x0 SWAP3 DUP3 DUP5 MSTORE DUP4 DUP3 MSTORE DUP6 DUP5 KECCAK256 SLOAD SWAP6 DUP2 DUP8 LT PUSH2 0x2A61 JUMPI DUP2 DUP6 SWAP7 SWAP8 DUP6 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP7 SWAP8 MSTORE DUP8 DUP6 MSTORE SUB DUP2 DUP8 KECCAK256 SSTORE DUP2 PUSH1 0x2 SLOAD SUB PUSH1 0x2 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2AB735B737BBB71037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0x4A SELFDESTRUCT MOD 0xE4 PUSH22 0xB418E3CB3E3892104B639F9A88CB834DEC83D25EC4B5 0x5D CALLVALUE CREATE 0xBD PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"750:24192:6:-:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;4589:11;;750:24192;;;4602:13;750:24192;;4589:11;;4602:13;;750:24192;-1:-1:-1;;;;;750:24192:6;;;;;1648:13:1;750:24192:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;1648:13:1;750:24192:6;;;;-1:-1:-1;;;;;750:24192:6;;;;;1671:17:1;750:24192:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;1671:17:1;750:24192:6;;;;;4665:11;;750:24192;;;;4698:13;750:24192;;;4735:15;750:24192;;;4777:18;750:24192;;;;;;;;;;;;4901:17;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;4980:15;750:24192;4637:397;;750:24192;;;4637:397;;750:24192;;;;;;;;;;;;;4627:407;750:24192;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;4627:407;750:24192;;;4637:397;;750:24192;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;4637:397;;750:24192;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;4637:397;;750:24192;;;;;4637:397;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;4637:397;;750:24192;;;;4637:397;;750:24192;;;;4637:397;;750:24192;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;4637:397;;750:24192;4637:397;750:24192;4637:397;;750:24192;;;;4637:397;;750:24192;;;4637:397;750:24192;;;;;;;;;;;;;;;;;;5053:42;750:24192;5105:32;750:24192;-1:-1:-1;5283:3:6;750:24192;;;5250:24;750:24192;;;5246:35;;;;;5318:27;;5283:3;5318:27;;:::i;:::-;750:24192;-1:-1:-1;750:24192:6;5302:15;750:24192;;;-1:-1:-1;750:24192:6;;;;;;;;;;5283:3;:::i;:::-;5231:13;;5246:35;;750:24192;;;5469:22;750:24192;;;;5502:21;750:24192;5469:61;750:24192;;;;;5575:22;750:24192;5575:33;750:24192;;-1:-1:-1;5706:3:6;750:24192;;;5675:22;750:24192;;5671:33;;;;;-1:-1:-1;;;;;750:24192:6;;;5733:25;;750:24192;;5733:25;:::i;:::-;750:24192;;5733:39;750:24192;;5811:24;750:24192;;;;5811:21;:24;:::i;:::-;750:24192;5811:28;750:24192;;5875:25;750:24192;;;;5875:22;:25;:::i;:::-;750:24192;;;5902:24;750:24192;;;;5902:21;:24;:::i;:::-;750:24192;7432:21:1;;;7428:91;;750:24192:6;;;;;;;;;6987:25:1;750:24192:6;;5706:3;750:24192;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;6987:25:1;5706:3:6;:::i;:::-;5656:13;;750:24192;;;;-1:-1:-1;750:24192:6;;1671:17:1;750:24192:6;;-1:-1:-1;750:24192:6;7428:91:1;750:24192:6;;-1:-1:-1;;;7476:32:1;;-1:-1:-1;1671:17:1;7476:32;;750:24192:6;;;7476:32:1;750:24192:6;;;-1:-1:-1;;;750:24192:6;;;1671:17:1;750:24192:6;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;1671:17:1;750:24192:6;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;5671:33;;750:24192;;;5986:22;750:24192;;;6010:21;750:24192;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;5961:71;750:24192;;;;;;;;;;;;;:::i;:::-;5961:71;;;6075:11;;750:24192;;;6100:13;750:24192;;;6127:15;750:24192;;;;6156:18;750:24192;;;;;;;;;;;;;;;6247:17;750:24192;;;;;;;;;6329:24;750:24192;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;6047:316;750:24192;;;;;;;;;;6310:4;750:24192;;;;;;;;;;;;:::i;:::-;6047:316;;;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;1671:17:1;750:24192:6;;;5105:32;750:24192;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;1671:17:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;-1:-1:-1;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;-1:-1:-1;750:24192:6;;1671:17:1;750:24192:6;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;4627:407;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;4627:407;750:24192;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4627:407;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;1671:17:1;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:1;750:24192:6;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:1;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;1648:13:1;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;1648:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:1;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;-1:-1:-1;;;;;750:24192:6;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;750:24192:6;;;;:::o"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":8910,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_28165":{"entryPoint":8888,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_payablet_uint256_fromMemory":{"entryPoint":10333,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":8803,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":8858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_bool":{"entryPoint":9036,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_uint256t_uint256t_uint256t_uint256t_bytes":{"entryPoint":8932,"id":null,"parameterSlots":1,"returnSlots":5},"abi_encode_address_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool_bool":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_string":{"entryPoint":8738,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":8468,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage_28169":{"entryPoint":7899,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_storage_28170":{"entryPoint":8063,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_storage_28171":{"entryPoint":8198,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_storage_28172":{"entryPoint":8333,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256_address_bool_uint256":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_uint256_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":8775,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":9289,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":9813,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":9481,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":8703,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_checkChainConnection":{"entryPoint":8991,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":7841,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":8669,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_28167":{"entryPoint":8618,"id":null,"parameterSlots":1,"returnSlots":0},"fun_checkChainConnection":{"entryPoint":null,"id":2186,"parameterSlots":1,"returnSlots":1},"fun_checkMultiSigResult":{"entryPoint":10077,"id":2049,"parameterSlots":1,"returnSlots":2},"fun_checkProposalResult":{"entryPoint":9832,"id":1643,"parameterSlots":1,"returnSlots":2},"fun_checkSyncReadiness":{"entryPoint":10124,"id":2239,"parameterSlots":1,"returnSlots":1},"fun_executeOperation":{"entryPoint":10372,"id":2457,"parameterSlots":1,"returnSlots":0},"fun_getSupportedChainId":{"entryPoint":10221,"id":2342,"parameterSlots":1,"returnSlots":1},"fun_nonReentrantBefore":{"entryPoint":9717,"id":834,"parameterSlots":0,"returnSlots":0},"fun_transfer":{"entryPoint":9067,"id":381,"parameterSlots":3,"returnSlots":0},"increment_uint256":{"entryPoint":9466,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":9641,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8ad9":{"entryPoint":9400,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8e62":{"entryPoint":9565,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_a88b":{"entryPoint":9925,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b44f":{"entryPoint":9752,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d556":{"entryPoint":10001,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e2db":{"entryPoint":9324,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14611dda57508163044bc2bd14611cab578163057b207414611c9057816306fdde0314611bc2578163095ea7b314611b235781630c0512e914611b055781630d61b519146118ff57816318160ddd146118e1578163204c5d1f1461164e57816322dbefbb14610b3c57816323b872dd146115565781632ee09598146114bc578163313ce567146114a057816335324eee146113385781633b60288a146113095781634114509b146111ef578163456d10c1146111095781634b145793146107455781634de184f6146110e65781634fa76ec9146110eb5781635221c1f0146110e6578163548d496f146110b75781635cf0e8a4146110995781636cbadbfa1461109957816370a082311461105f5781637ce288ea14610f6b5781637e5a9b4714610f3c578163893d692a14610e205781638c7b04c914610e0257816395d89b4114610d175781639a49bdde14610cf2578163a9059cbb14610cc1578163af89d2c414610c92578163b00e073014610b6e578163b0b6cc1a14610b3c578163b359451014610774578163b3fe8bcb14610745578163c51cab3a146106d5578163c9d27afe1461054e578163ccd7a49014610388578163dd62ed3e14610337578163e49a62e914610310578163eced3dfb146102f4575063f2c26a471461020557600080fd5b346102ef5760003660031901126102ef576102a46040516102308161022981611edb565b03826121dd565b6040516102408161022981611f7f565b604051906102588261025181612006565b03836121dd565b60405191610270836102698161208d565b03846121dd565b600a5492600b546102ce600d54926102c0600e54956102b260ff600f5416986040519c8d9c8d610120908181520190612222565b8c810360208e015290612222565b908a820360408c0152612222565b9088820360608a0152612222565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b346102ef5760003660031901126102ef57602090604051908152f35b346102ef5760203660031901126102ef5761032d6020913561278c565b6040519015158152f35b346102ef5760403660031901126102ef576103506122b8565b6103586122ce565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346102ef576103963661234c565b9061039f6125f5565b80600052602092601784526040600020906103bc825415156126c5565b8082015442101561051a576103d860ff60038401541615612711565b60068201903360005281865260ff604060002054166104e5573360005260008652604060002054156104ad57509361048e917f78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc95336000526000835260406000205492526040600020600160ff198254161790558460001461049857600101610462828254612449565b90555b604080519384523360208501529315159383019390935260608201929092529081906080820190565b0390a16001600555005b6002016104a6828254612449565b9055610465565b60405162461bcd60e51b815290810186905260116024820152702737903a37b5b2b739903a379039b4b3b760791b6044820152606490fd5b60405162461bcd60e51b8152908101869052600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b60405162461bcd60e51b8152908101859052600d60248201526c14da59db9a5b99c8195b991959609a1b6044820152606490fd5b346102ef5761055c3661234c565b906105656125f5565b80600052602092601684526040600020906105828383541461255d565b60058201544210156106a25761059e60ff8284015416156125a9565b60088201903360005281865260ff6040600020541661066e5733600052600086526040600020541561063657509361048e917f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a995336000526000835260406000205492526040600020600160ff198254161790558460001461062857600201610462828254612449565b6003016104a6828254612449565b60405162461bcd60e51b815290810186905260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b60405162461bcd60e51b8152908101869052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b60405162461bcd60e51b8152908101859052600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b346102ef5760203660031901126102ef578060c091356000526017602052604060002090815491600181015491600282015460ff6003840154169183015492600560018060a01b0391015416936040519586526020860152604085015215156060840152608083015260a0820152f35b346102ef5760203660031901126102ef57356000526015602052602060ff604060002054166040519015158152f35b346102ef5760803660031901126102ef57803567ffffffffffffffff918282116102ef57366023830112156102ef576107b7602492369084818501359101612263565b908235936044358181116102ef576107d2903690840161229a565b9460643595336000526020966000885260406000205415610aed576107f883151561246c565b806000526018885261081160ff604060002054166124b8565b6000526018875260ff6040600020541615610ab45760115495610833876124fa565b601155866000526016885260406000208781556001938482018851878111610aa057610869816108638454611ea1565b84612509565b8b8c601f8311600114610a2b5750918160079594926108bc94600091610a20575b50600019600383901b1c191690891b1790555b600060028401556000600384015588830160ff19815416905542612449565b600582015560068101336001600160601b0360a01b82541617905501948251948511610a0d5750506108f8836108f28654611ea1565b86612509565b8690601f841160011461098057928061096a959381937f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639896600094610975575b50501b916000199060031b1c19161790555b6040519182918583523387840152606060408401526060830190612222565b0390a1604051908152f35b015192508a80610939565b90601f9392931983169185600052886000209260005b8a8282106109f9575050917f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63979593918561096a989694106109e0575b505050811b01905561094b565b015160001960f88460031b161c191690558880806109d3565b838501518655948701949384019301610996565b604190634e487b7160e01b600052526000fd5b90508c01518f61088a565b8892918c601f1984168660005283600020936000905b828210610a855750509160079897959391856108bc98969410610a6c575b505050811b01905561089d565b015160001960f88460031b161c191690558f808e610a5f565b9284015185558c9690940193928201928f9290810190610a41565b8460418a634e487b7160e01b600052526000fd5b60405162461bcd60e51b815280850188905260138188015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60405162461bcd60e51b81528086018990526023818901527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b346102ef5760203660031901126102ef57356000526014602052602060018060a01b0360406000205416604051908152f35b346102ef5760403660031901126102ef5780359060243533600052600060205260406000205415610c42576060602093600583610bcd7f8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f095151561246c565b60125495610bda876124fa565b6012558660005260178852610c1160406000209285845560006001850155600060028501556003840160ff19815416905542612449565b9082015501336001600160601b0360a01b8254161790556040519084825233868301526040820152a1604051908152f35b60405162461bcd60e51b81526020818401526024808201527f4d75737420686f6c6420746f6b656e7320746f20637265617465206f706572616044820152633a34b7b760e11b6064820152608490fd5b346102ef5760203660031901126102ef5735600052601a602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef57610ce7610cdd6122b8565b602435903361236b565b602060405160018152f35b346102ef5760203660031901126102ef57610d0f602091356127ed565b604051908152f35b346102ef5760003660031901126102ef57604051906000908054610d3a81611ea1565b80855291600191808316908115610dd85750600114610d7c575b610d7885610d64818703826121dd565b604051918291602083526020830190612222565b0390f35b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610dc0575050508101602001610d6482610d78610d54565b80546020858701810191909152909301928101610da5565b869550610d7896935060209250610d6494915060ff191682840152151560051b8201019293610d54565b346102ef5760003660031901126102ef576020601254604051908152f35b346102ef5760203660031901126102ef57803590816000526017602052604060002090815491610e518315156126c5565b600381019180835492610e6760ff851615612711565b01544210610f0457610e788561275d565b81610efc575b5015610ec1577f64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5604086868660018760ff191617905582519182526020820152a1005b60649060206040519162461bcd60e51b8352820152601460248201527313dc195c985d1a5bdb881b9bdd081c185cdcd95960621b6044820152fd5b905086610e7e565b60649060206040519162461bcd60e51b8352820152601160248201527014da59db9a5b99c81b9bdd08195b991959607a1b6044820152fd5b346102ef5760203660031901126102ef57610f579035612668565b604080519215158352901515602083015290f35b346102ef5760203660031901126102ef57803590610f888261278c565b156110245760135460005b828110610fc7577f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910602085604051908152a1005b807f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313611017610ff861101f946127ed565b604051918291878a846040919493926060820195825260208201520152565b0390a16124fa565b610f93565b60649060206040519162461bcd60e51b835282015260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152fd5b346102ef5760203660031901126102ef576001600160a01b036110806122b8565b1660005260006020526020604060002054604051908152f35b346102ef5760003660031901126102ef576020601354604051908152f35b346102ef5760203660031901126102ef57356000526018602052602060ff604060002054166040519015158152f35b61231f565b346102ef5760003660031901126102ef576020601054604051908152f35b346102ef577fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb611138366122e4565b508360009493945260166020526111ae6003604060002061115b8682541461255d565b86600052601860205261117560ff604060002054166124b8565b6009810194876000528560205261119460ff6040600020541615612618565b6111a360028301918254612449565b905501918254612449565b9055826000526020526040600020600160ff198254161790556111ea601354604051938493846040919493926060820195825260208201520152565b0390a1005b346102ef576020806003193601126102ef578135913360005260008252604060002054156112bd57826000526015825260ff60406000205416156112835750600082815260148252604080822080546001600160a01b03191690556015835290819020805460ff19169055519182527f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba85391a1005b6064916040519162461bcd60e51b83528201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152fd5b6084916040519162461bcd60e51b8352820152602160248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c6044820152606560f81b6064820152fd5b346102ef5760203660031901126102ef57356000526019602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef578035906113546122ce565b33600052602090600082526040600020541561145c576001600160a01b031691821561142b57836000526015825260ff604060002054166113f1577ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d727227196040858585826000526014815283600020826001600160601b0360a01b8254161790556015815283600020600160ff198254161790558351928352820152a1005b6064916040519162461bcd60e51b835282015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152fd5b6064916040519162461bcd60e51b8352820152600c60248201526b5a65726f206164647265737360a01b6044820152fd5b60405162461bcd60e51b8152808401839052601e60248201527f4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c6500006044820152606490fd5b346102ef5760003660031901126102ef57602060405160128152f35b346102ef577fe379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe56114eb366122e4565b508360009493945260176020526111ae6002604060002061150e815415156126c5565b86600052601860205261152860ff604060002054166124b8565b6007810194876000528560205261154760ff6040600020541615612618565b6111a360018301918254612449565b346102ef5760603660031901126102ef5761156f6122b8565b6115776122ce565b6044359160018060a01b0381168060005260016020526040600020336000526020526040600020549460001986106115b6575b5050610ce7935061236b565b84861061162257811561160a5733156115f25750610ce794849160005260016020526040600020336000526020520360406000205584806115aa565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b346102ef5760003660031901126102ef576000610120604051611670816121aa565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051906116b7826121aa565b6040516116c78161022981611edb565b82526040516116d98161022981611f7f565b60208301526040516116ee8161022981612006565b6040830152604051611703816102298161208d565b6060830152600a546080830152600b5460a0830152600c549067ffffffffffffffff82116118cc57506040519061174060208260051b01836121dd565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b8383106118a757858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526118086117f26117dc6117c685516101406020870152610160860190612222565b6020860151858203601f19016040870152612222565b6040850151848203601f19016060860152612222565b6060840151838203601f19016080850152612222565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061187a578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080611898600193601f198682030187528951612222565b97019301930191939290611849565b6001602081926040516118be816102298189612114565b815201920192019190611771565b604190634e487b7160e01b6000525260246000fd5b346102ef5760003660031901126102ef576020600254604051908152f35b346102ef576020806003193601126102ef57813591826000526016825260406000209161192e8484541461255d565b8183019283549261194260ff8516156125a9565b60058201544210611ace5761195686612668565b81611ac6575b5015611a8c57506007906001948560ff19809616179055019261198e604051611989816102298189612114565b612884565b60405194855260408286015260009380546119a881611ea1565b948560408901528382169182600014611a465750506001146119ed575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b838510611a3257505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d284806119c5565b8054868601606001529382019381016119f9565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b820101919284806119c5565b60405162461bcd60e51b81529081018390526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b90508761195c565b60405162461bcd60e51b8152908101839052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346102ef5760003660031901126102ef576020601154604051908152f35b346102ef5760403660031901126102ef57611b3c6122b8565b602435903315611baa576001600160a01b03169182156115f25750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b346102ef5760003660031901126102ef576040516000600354611be481611ea1565b80845290600190818116908115611c695750600114611c0e575b610d7884610d64818603826121dd565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611c51575050508101602001610d6482611bfe565b80546020858701810191909152909301928101611c39565b60ff191660208087019190915292151560051b85019092019250610d649150839050611bfe565b346102ef5760203660031901126102ef57610f57903561275d565b346102ef5760603660031901126102ef57602435813560443567ffffffffffffffff81116102ef57611ce0903690850161229a565b50816000526018602052611cfb60ff604060002054166124b8565b80600052601960205260ff60406000205416611da3577f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e8331392508060005260196020526040600020600160ff198254161790556016602052604060002081815414611d84575b506111ea601354604051938493846040919493926060820195825260208201520152565b6007611989611d9d926102296040518094819301612114565b83611d60565b60405162461bcd60e51b8152602081850152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b90346102ef5760203660031901126102ef5780356000526016602052610d786040600020916007835493611e1c86611e158160018501612114565b03876121dd565b60028101549260ff60038301549183015416600583015491611e5c60018060a01b0360068601541694611e556040518098819301612114565b03866121dd565b611e78604051998a998a526101008060208c01528a0190612222565b95604089015260608801521515608087015260a086015260c085015283820360e0850152612222565b90600182811c92168015611ed1575b6020831014611ebb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611eb0565b60065460009291611eeb82611ea1565b80825291600190818116908115611f625750600114611f0957505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410611f4a57505060209250010190565b80546020858501810191909152909301928101611f38565b915050602093945060ff929192191683830152151560051b010190565b60075460009291611f8f82611ea1565b80825291600190818116908115611f625750600114611fad57505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410611fee57505060209250010190565b80546020858501810191909152909301928101611fdc565b6008546000929161201682611ea1565b80825291600190818116908115611f62575060011461203457505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b84841061207557505060209250010190565b80546020858501810191909152909301928101612063565b6009546000929161209d82611ea1565b80825291600190818116908115611f6257506001146120bb57505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b8484106120fc57505060209250010190565b805460208585018101919091529093019281016120ea565b906000929180549161212583611ea1565b9182825260019384811690816000146121875750600114612147575b50505050565b90919394506000526020928360002092846000945b838610612173575050505001019038808080612141565b80548587018301529401938590820161215c565b9294505050602093945060ff191683830152151560051b01019038808080612141565b610140810190811067ffffffffffffffff8211176121c757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176121c757604052565b60005b8381106122125750506000910152565b8181015183820152602001612202565b9060209161223b815180928185528580860191016121ff565b601f01601f1916010190565b67ffffffffffffffff81116121c757601f01601f191660200190565b92919261226f82612247565b9161227d60405193846121dd565b8294818452818301116102ef578281602093846000960137010152565b9080601f830112156102ef578160206122b593359101612263565b90565b600435906001600160a01b03821682036102ef57565b602435906001600160a01b03821682036102ef57565b60a06003198201126102ef57600435916024359160443591606435916084359067ffffffffffffffff82116102ef576122b59160040161229a565b346102ef5760203660031901126102ef57602061032d600435600052601860205260ff6040600020541690565b60409060031901126102ef576004359060243580151581036102ef5790565b916001600160a01b03808416928315612430571692831561241757600090838252816020526040822054908382106123e5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161245657565b634e487b7160e01b600052601160045260246000fd5b1561247357565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b156124bf57565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b60001981146124565760010190565b90601f811161251757505050565b600091825260208220906020601f850160051c83019410612553575b601f0160051c01915b82811061254857505050565b81815560010161253c565b9092508290612533565b1561256457565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b156125b057565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b600260055414612606576002600555565b604051633ee5aeb560e01b8152600490fd5b1561261f57565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b8181029291811591840414171561245657565b9081600052601660205261268360406000209283541461255d565b60036002830154920154916126988382612449565b60646126a960025460105490612655565b041115928391826126bb575b50509190565b11905038806126b5565b156126cc57565b60405162461bcd60e51b815260206004820152601860248201527f4f7065726174696f6e20646f6573206e6f7420657869737400000000000000006044820152606490fd5b1561271857565b60405162461bcd60e51b815260206004820152601a60248201527f4f7065726174696f6e20616c72656164792065786563757465640000000000006044820152606490fd5b6000526017602052604060002090612777825415156126c5565b60026001830154920154916126988382612449565b6127a5600091808352601660205260408320541461255d565b805b600481106127b6575050600190565b6127d66127c2826127ed565b600052601860205260ff6040600020541690565b156127e9576127e4906124fa565b6127a7565b5090565b80156128575760018114612851576002811461284b576003146128455760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b61a4b190565b50603890565b50608990565b50600190565b91908260409103126102ef5781516001600160a01b03811681036102ef5760209092015190565b80518101906020908082840193604091829103126102ef57818301516001600160e01b0319811692908390036102ef57818101519067ffffffffffffffff82116102ef57019184603f840112156102ef5783830151926128e384612247565b936128f0845195866121dd565b808552858501968482840101116102ef57868461290d93016121ff565b63a9059cbb60e01b8103612942575050916129309183612940945101019061285d565b906001600160a01b03163361236b565b565b909391906340c10f1960e01b81036129d95750908282612965935101019061285d565b6001600160a01b039091169283156129c25791816000936129a97fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600254612449565b60025585855284835280852082815401905551908152a3565b5163ec442f0560e01b815260006004820152602490fd5b939493632770a7eb60e21b03612aa7579082826129f9935101019061285d565b916001600160a01b03909116908115612a8f576000928284528382528584205495818710612a615781859697857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9697528785520381872055816002540360025551908152a3565b5163391434e360e21b81526001600160a01b0384166004820152602481018790526044810191909152606490fd5b8451634b637e8f60e11b815260006004820152602490fd5b845162461bcd60e51b81526004810184905260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fdfea2646970667358221220f64aff06e475b418e3cb3e3892104b639f9a88cb834dec83d25ec4b55d34f0bd64736f6c63430008140033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP2 DUP3 PUSH4 0x13CF08B EQ PUSH2 0x1DDA JUMPI POP DUP2 PUSH4 0x44BC2BD EQ PUSH2 0x1CAB JUMPI DUP2 PUSH4 0x57B2074 EQ PUSH2 0x1C90 JUMPI DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1BC2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1B23 JUMPI DUP2 PUSH4 0xC0512E9 EQ PUSH2 0x1B05 JUMPI DUP2 PUSH4 0xD61B519 EQ PUSH2 0x18FF JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x18E1 JUMPI DUP2 PUSH4 0x204C5D1F EQ PUSH2 0x164E JUMPI DUP2 PUSH4 0x22DBEFBB EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x1556 JUMPI DUP2 PUSH4 0x2EE09598 EQ PUSH2 0x14BC JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x14A0 JUMPI DUP2 PUSH4 0x35324EEE EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x3B60288A EQ PUSH2 0x1309 JUMPI DUP2 PUSH4 0x4114509B EQ PUSH2 0x11EF JUMPI DUP2 PUSH4 0x456D10C1 EQ PUSH2 0x1109 JUMPI DUP2 PUSH4 0x4B145793 EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0x4DE184F6 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x4FA76EC9 EQ PUSH2 0x10EB JUMPI DUP2 PUSH4 0x5221C1F0 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x548D496F EQ PUSH2 0x10B7 JUMPI DUP2 PUSH4 0x5CF0E8A4 EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x6CBADBFA EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x105F JUMPI DUP2 PUSH4 0x7CE288EA EQ PUSH2 0xF6B JUMPI DUP2 PUSH4 0x7E5A9B47 EQ PUSH2 0xF3C JUMPI DUP2 PUSH4 0x893D692A EQ PUSH2 0xE20 JUMPI DUP2 PUSH4 0x8C7B04C9 EQ PUSH2 0xE02 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xD17 JUMPI DUP2 PUSH4 0x9A49BDDE EQ PUSH2 0xCF2 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCC1 JUMPI DUP2 PUSH4 0xAF89D2C4 EQ PUSH2 0xC92 JUMPI DUP2 PUSH4 0xB00E0730 EQ PUSH2 0xB6E JUMPI DUP2 PUSH4 0xB0B6CC1A EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0xB3594510 EQ PUSH2 0x774 JUMPI DUP2 PUSH4 0xB3FE8BCB EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0xC51CAB3A EQ PUSH2 0x6D5 JUMPI DUP2 PUSH4 0xC9D27AFE EQ PUSH2 0x54E JUMPI DUP2 PUSH4 0xCCD7A490 EQ PUSH2 0x388 JUMPI DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x337 JUMPI DUP2 PUSH4 0xE49A62E9 EQ PUSH2 0x310 JUMPI DUP2 PUSH4 0xECED3DFB EQ PUSH2 0x2F4 JUMPI POP PUSH4 0xF2C26A47 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x2A4 PUSH1 0x40 MLOAD PUSH2 0x230 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x240 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x258 DUP3 PUSH2 0x251 DUP2 PUSH2 0x2006 JUMP JUMPDEST SUB DUP4 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH2 0x270 DUP4 PUSH2 0x269 DUP2 PUSH2 0x208D JUMP JUMPDEST SUB DUP5 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0xA SLOAD SWAP3 PUSH1 0xB SLOAD PUSH2 0x2CE PUSH1 0xD SLOAD SWAP3 PUSH2 0x2C0 PUSH1 0xE SLOAD SWAP6 PUSH2 0x2B2 PUSH1 0xFF PUSH1 0xF SLOAD AND SWAP9 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP13 DUP14 PUSH2 0x120 SWAP1 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST DUP13 DUP2 SUB PUSH1 0x20 DUP15 ADD MSTORE SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x40 DUP13 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x32D PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x278C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x350 PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x22CE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x396 CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x39F PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x17 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x3BC DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP1 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x51A JUMPI PUSH2 0x3D8 PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x2711 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x4E5 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x4AD JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78B8E65C466DF05EA5DDF0593B44648ECA1F35C039F180E31257A6F1BDD005DC SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x498 JUMPI PUSH1 0x1 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE CALLER PUSH1 0x20 DUP6 ADD MSTORE SWAP4 ISZERO ISZERO SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x80 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x5 SSTORE STOP JUMPDEST PUSH1 0x2 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2737903A37B5B2B739903A379039B4B3B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDA59DB9959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x14DA59DB9A5B99C8195B991959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x55C CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x565 PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x16 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x582 DUP4 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x59E PUSH1 0xFF DUP3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x8 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x66E JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x636 JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78975AAF742630489BADD22949B88AC50EAAEA576339EE05440B671A33BFB6A9 SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x628 JUMPI PUSH1 0x2 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x3 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4E6F20746F6B656E7320746F20766F7465 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x105B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x159BDD1A5B99C8195B991959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 PUSH1 0xC0 SWAP2 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND SWAP2 DUP4 ADD SLOAD SWAP3 PUSH1 0x5 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 ADD SLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0x2EF JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI PUSH2 0x7B7 PUSH1 0x24 SWAP3 CALLDATASIZE SWAP1 DUP5 DUP2 DUP6 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 DUP3 CALLDATALOAD SWAP4 PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x7D2 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x229A JUMP JUMPDEST SWAP5 PUSH1 0x64 CALLDATALOAD SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP7 PUSH1 0x0 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xAED JUMPI PUSH2 0x7F8 DUP4 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x18 DUP9 MSTORE PUSH2 0x811 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 DUP8 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x11 SLOAD SWAP6 PUSH2 0x833 DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x11 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x16 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP8 DUP2 SSTORE PUSH1 0x1 SWAP4 DUP5 DUP3 ADD DUP9 MLOAD DUP8 DUP2 GT PUSH2 0xAA0 JUMPI PUSH2 0x869 DUP2 PUSH2 0x863 DUP5 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP5 PUSH2 0x2509 JUMP JUMPDEST DUP12 DUP13 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xA2B JUMPI POP SWAP2 DUP2 PUSH1 0x7 SWAP6 SWAP5 SWAP3 PUSH2 0x8BC SWAP5 PUSH1 0x0 SWAP2 PUSH2 0xA20 JUMPI JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP10 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP5 ADD SSTORE PUSH1 0x0 PUSH1 0x3 DUP5 ADD SSTORE DUP9 DUP4 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SSTORE PUSH1 0x6 DUP2 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE ADD SWAP5 DUP3 MLOAD SWAP5 DUP6 GT PUSH2 0xA0D JUMPI POP POP PUSH2 0x8F8 DUP4 PUSH2 0x8F2 DUP7 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP7 PUSH2 0x2509 JUMP JUMPDEST DUP7 SWAP1 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x980 JUMPI SWAP3 DUP1 PUSH2 0x96A SWAP6 SWAP4 DUP2 SWAP4 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP9 SWAP7 PUSH1 0x0 SWAP5 PUSH2 0x975 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP6 DUP4 MSTORE CALLER DUP8 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP DUP11 DUP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 PUSH1 0x1F SWAP4 SWAP3 SWAP4 NOT DUP4 AND SWAP2 DUP6 PUSH1 0x0 MSTORE DUP9 PUSH1 0x0 KECCAK256 SWAP3 PUSH1 0x0 JUMPDEST DUP11 DUP3 DUP3 LT PUSH2 0x9F9 JUMPI POP POP SWAP2 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x96A SWAP9 SWAP7 SWAP5 LT PUSH2 0x9E0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x94B JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP9 DUP1 DUP1 PUSH2 0x9D3 JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE SWAP5 DUP8 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x996 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP13 ADD MLOAD DUP16 PUSH2 0x88A JUMP JUMPDEST DUP9 SWAP3 SWAP2 DUP13 PUSH1 0x1F NOT DUP5 AND DUP7 PUSH1 0x0 MSTORE DUP4 PUSH1 0x0 KECCAK256 SWAP4 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xA85 JUMPI POP POP SWAP2 PUSH1 0x7 SWAP9 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x8BC SWAP9 SWAP7 SWAP5 LT PUSH2 0xA6C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x89D JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP16 DUP1 DUP15 PUSH2 0xA5F JUMP JUMPDEST SWAP3 DUP5 ADD MLOAD DUP6 SSTORE DUP13 SWAP7 SWAP1 SWAP5 ADD SWAP4 SWAP3 DUP3 ADD SWAP3 DUP16 SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0xA41 JUMP JUMPDEST DUP5 PUSH1 0x41 DUP11 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP6 ADD DUP9 SWAP1 MSTORE PUSH1 0x13 DUP2 DUP9 ADD MSTORE PUSH19 0x436861696E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP7 ADD DUP10 SWAP1 MSTORE PUSH1 0x23 DUP2 DUP10 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F206372656174652070726F706F PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x1CD85B PUSH1 0xEA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xC42 JUMPI PUSH1 0x60 PUSH1 0x20 SWAP4 PUSH1 0x5 DUP4 PUSH2 0xBCD PUSH32 0x8D5C76B09B9C1F4D0453D21436DCB0B568A50E9C0AE059E4D0AE8C95C71D07F0 SWAP6 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST PUSH1 0x12 SLOAD SWAP6 PUSH2 0xBDA DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x12 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x17 DUP9 MSTORE PUSH2 0xC11 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP6 DUP5 SSTORE PUSH1 0x0 PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0x0 PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x3 DUP5 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST SWAP1 DUP3 ADD SSTORE ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP5 DUP3 MSTORE CALLER DUP7 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP5 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20637265617465206F70657261 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x3A34B7B7 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xCE7 PUSH2 0xCDD PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0x236B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xD0F PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x0 SWAP1 DUP1 SLOAD PUSH2 0xD3A DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0xDD8 JUMPI POP PUSH1 0x1 EQ PUSH2 0xD7C JUMPI JUMPDEST PUSH2 0xD78 DUP6 PUSH2 0xD64 DUP2 DUP8 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xDC0 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0xD78 PUSH2 0xD54 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xDA5 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0xD78 SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0xD64 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0xD54 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x12 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH2 0xE51 DUP4 ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SWAP2 DUP1 DUP4 SLOAD SWAP3 PUSH2 0xE67 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x2711 JUMP JUMPDEST ADD SLOAD TIMESTAMP LT PUSH2 0xF04 JUMPI PUSH2 0xE78 DUP6 PUSH2 0x275D JUMP JUMPDEST DUP2 PUSH2 0xEFC JUMPI JUMPDEST POP ISZERO PUSH2 0xEC1 JUMPI PUSH32 0x64CEE5A70D662A7EEF5B2A171DAA51DC624F3D64A35D0855B385262B893DC5A5 PUSH1 0x40 DUP7 DUP7 DUP7 PUSH1 0x1 DUP8 PUSH1 0xFF NOT AND OR SWAP1 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x13DC195C985D1A5BDB881B9BDD081C185CDCD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP DUP7 PUSH2 0xE7E JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x14DA59DB9A5B99C81B9BDD08195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x2668 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xF88 DUP3 PUSH2 0x278C JUMP JUMPDEST ISZERO PUSH2 0x1024 JUMPI PUSH1 0x13 SLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFC7 JUMPI PUSH32 0x57DF5A6A467271F04B10F7FE9E66D21DCD8AE7EAF079099D48959F24A53B6910 PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST DUP1 PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 PUSH2 0x1017 PUSH2 0xFF8 PUSH2 0x101F SWAP5 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP8 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x4E6F7420616C6C20636861696E73207265616479 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1080 PUSH2 0x22B8 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH2 0x231F JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x10 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xCA1838D50CA3156F1ACE7CDE39A081CC9C9A333AF6FCA55DB71817F8717E1DCB PUSH2 0x1138 CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x3 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x115B DUP7 DUP3 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1175 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x9 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1194 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x2 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x12BD JUMPI DUP3 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x1283 JUMPI POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x14 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x15 DUP4 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C7C76ABE482A2C36EA52F1B999474C69F8B4AFEEAC5635F8AEA2526864BA853 SWAP2 LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x135BD91D5B1948191BD95CC81B9BDD08195E1A5CDD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F2072656D6F7665206D6F64756C PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x65 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1354 PUSH2 0x22CE JUMP JUMPDEST CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x145C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x142B JUMPI DUP4 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x13F1 JUMPI PUSH32 0xF14475B19484BF096265507CC0C41CD3BF1994992088806830686E2D72722719 PUSH1 0x40 DUP6 DUP6 DUP6 DUP3 PUSH1 0x0 MSTORE PUSH1 0x14 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x15 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4D6F64756C6520616C726561647920657869737473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A65726F2061646472657373 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20616464206D6F64756C650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xE379B3DEB66DDFA7962A2BDF35E9A08B5BED672C9DA3ECF7CC6174D253C6DFE5 PUSH2 0x14EB CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x2 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x150E DUP2 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1528 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x7 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1547 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x1 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x156F PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x1577 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP5 PUSH1 0x0 NOT DUP7 LT PUSH2 0x15B6 JUMPI JUMPDEST POP POP PUSH2 0xCE7 SWAP4 POP PUSH2 0x236B JUMP JUMPDEST DUP5 DUP7 LT PUSH2 0x1622 JUMPI DUP2 ISZERO PUSH2 0x160A JUMPI CALLER ISZERO PUSH2 0x15F2 JUMPI POP PUSH2 0xCE7 SWAP5 DUP5 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE DUP5 DUP1 PUSH2 0x15AA JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD DUP9 SWAP1 MSTORE SWAP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1670 DUP2 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x16B7 DUP3 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16C7 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST DUP3 MSTORE PUSH1 0x40 MLOAD PUSH2 0x16D9 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x16EE DUP2 PUSH2 0x229 DUP2 PUSH2 0x2006 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x1703 DUP2 PUSH2 0x229 DUP2 PUSH2 0x208D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xB SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x18CC JUMPI POP PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1740 PUSH1 0x20 DUP3 PUSH1 0x5 SHL ADD DUP4 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0xC PUSH1 0x0 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x18A7 JUMPI DUP6 DUP6 PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0xF SLOAD AND ISZERO ISZERO PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 MSTORE PUSH2 0x1808 PUSH2 0x17F2 PUSH2 0x17DC PUSH2 0x17C6 DUP6 MLOAD PUSH2 0x140 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x160 DUP7 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP4 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD SWAP1 PUSH1 0x1F NOT DUP4 DUP3 SUB ADD PUSH1 0xE0 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 PUSH1 0x20 DUP1 DUP4 PUSH1 0x5 SHL DUP4 ADD ADD SWAP5 ADD SWAP3 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x187A JUMPI DUP7 DUP1 DUP8 PUSH2 0x120 DUP12 PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x1898 PUSH1 0x1 SWAP4 PUSH1 0x1F NOT DUP7 DUP3 SUB ADD DUP8 MSTORE DUP10 MLOAD PUSH2 0x2222 JUMP JUMPDEST SWAP8 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH2 0x1849 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x40 MLOAD PUSH2 0x18BE DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x1771 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 DUP3 PUSH1 0x0 MSTORE PUSH1 0x16 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH2 0x192E DUP5 DUP5 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP2 DUP4 ADD SWAP3 DUP4 SLOAD SWAP3 PUSH2 0x1942 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT PUSH2 0x1ACE JUMPI PUSH2 0x1956 DUP7 PUSH2 0x2668 JUMP JUMPDEST DUP2 PUSH2 0x1AC6 JUMPI JUMPDEST POP ISZERO PUSH2 0x1A8C JUMPI POP PUSH1 0x7 SWAP1 PUSH1 0x1 SWAP5 DUP6 PUSH1 0xFF NOT DUP1 SWAP7 AND OR SWAP1 SSTORE ADD SWAP3 PUSH2 0x198E PUSH1 0x40 MLOAD PUSH2 0x1989 DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x2884 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x40 DUP3 DUP7 ADD MSTORE PUSH1 0x0 SWAP4 DUP1 SLOAD PUSH2 0x19A8 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST SWAP5 DUP6 PUSH1 0x40 DUP10 ADD MSTORE DUP4 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x1A46 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x19ED JUMPI JUMPDEST PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP7 DUP7 SUB DUP8 LOG1 STOP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP1 SWAP5 POP JUMPDEST DUP4 DUP6 LT PUSH2 0x1A32 JUMPI POP POP POP POP DUP2 ADD PUSH1 0x60 ADD DUP2 PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST DUP1 SLOAD DUP7 DUP7 ADD PUSH1 0x60 ADD MSTORE SWAP4 DUP3 ADD SWAP4 DUP2 ADD PUSH2 0x19F9 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 SWAP6 POP PUSH1 0x60 SWAP4 POP PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 SWAP7 SWAP5 SWAP3 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 SWAP3 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x141C9BDC1BDCD85B081B9BDD081C185CDCD959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 POP DUP8 PUSH2 0x195C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x159BDD1A5B99C81B9BDD08195B991959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x1B3C PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER ISZERO PUSH2 0x1BAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x15F2 JUMPI POP CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x20 CALLER SWAP3 LOG3 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 DUP2 DUP6 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x3 SLOAD PUSH2 0x1BE4 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1C69 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1C0E JUMPI JUMPDEST PUSH2 0xD78 DUP5 PUSH2 0xD64 DUP2 DUP7 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B JUMPDEST DUP3 DUP5 LT PUSH2 0x1C51 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0x1BFE JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1C39 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP PUSH2 0xD64 SWAP2 POP DUP4 SWAP1 POP PUSH2 0x1BFE JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x275D JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x24 CALLDATALOAD DUP2 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x1CE0 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x229A JUMP JUMPDEST POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1CFB PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x1DA3 JUMPI PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 SWAP3 POP DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD EQ PUSH2 0x1D84 JUMPI JUMPDEST POP PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x7 PUSH2 0x1989 PUSH2 0x1D9D SWAP3 PUSH2 0x229 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST DUP4 PUSH2 0x1D60 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP6 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x105B1C9958591E48195E1958DD5D1959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0xD78 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x7 DUP4 SLOAD SWAP4 PUSH2 0x1E1C DUP7 PUSH2 0x1E15 DUP2 PUSH1 0x1 DUP6 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP8 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP3 PUSH1 0xFF PUSH1 0x3 DUP4 ADD SLOAD SWAP2 DUP4 ADD SLOAD AND PUSH1 0x5 DUP4 ADD SLOAD SWAP2 PUSH2 0x1E5C PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x6 DUP7 ADD SLOAD AND SWAP5 PUSH2 0x1E55 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP7 PUSH2 0x21DD JUMP JUMPDEST PUSH2 0x1E78 PUSH1 0x40 MLOAD SWAP10 DUP11 SWAP10 DUP11 MSTORE PUSH2 0x100 DUP1 PUSH1 0x20 DUP13 ADD MSTORE DUP11 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x60 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1ED1 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1EBB JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1EB0 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1EEB DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1F09 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x6 PUSH1 0x0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1F4A JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1F38 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1F8F DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1FAD JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x7 PUSH1 0x0 MSTORE PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1FEE JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1FDC JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x2016 DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2034 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x8 PUSH1 0x0 MSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x2075 JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x209D DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x20BB JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x9 PUSH1 0x0 MSTORE PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x20FC JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x20EA JUMP JUMPDEST SWAP1 PUSH1 0x0 SWAP3 SWAP2 DUP1 SLOAD SWAP2 PUSH2 0x2125 DUP4 PUSH2 0x1EA1 JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x1 SWAP4 DUP5 DUP2 AND SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x2187 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2147 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP5 POP PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 DUP4 PUSH1 0x0 KECCAK256 SWAP3 DUP5 PUSH1 0x0 SWAP5 JUMPDEST DUP4 DUP7 LT PUSH2 0x2173 JUMPI POP POP POP POP ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST DUP1 SLOAD DUP6 DUP8 ADD DUP4 ADD MSTORE SWAP5 ADD SWAP4 DUP6 SWAP1 DUP3 ADD PUSH2 0x215C JUMP JUMPDEST SWAP3 SWAP5 POP POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2212 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2202 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x223B DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x21C7 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x226F DUP3 PUSH2 0x2247 JUMP JUMPDEST SWAP2 PUSH2 0x227D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x21DD JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2EF JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP2 PUSH1 0x20 PUSH2 0x22B5 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI PUSH2 0x22B5 SWAP2 PUSH1 0x4 ADD PUSH2 0x229A JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH2 0x32D PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2EF JUMPI SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x2430 JUMPI AND SWAP3 DUP4 ISZERO PUSH2 0x2417 JUMPI PUSH1 0x0 SWAP1 DUP4 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 DUP4 DUP3 LT PUSH2 0x23E5 JUMPI POP SWAP2 PUSH1 0x40 DUP3 DUP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP6 DUP8 PUSH1 0x20 SWAP7 MSTORE DUP3 DUP7 MSTORE SUB DUP3 DUP3 KECCAK256 SSTORE DUP7 DUP2 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2456 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x2473 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E206D75737420626520706F73697469766500000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x24BF JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10DA185A5B881B9BDD081CDD5C1C1BDC9D1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2456 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x2517 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x2553 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2548 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x253C JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x2533 JUMP JUMPDEST ISZERO PUSH2 0x2564 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20646F6573206E6F74206578697374000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x25B0 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20616C726561647920657865637574656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x2606 JUMPI PUSH1 0x2 PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x261F JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDE5B98D959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2456 JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x2683 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x26A9 PUSH1 0x2 SLOAD PUSH1 0x10 SLOAD SWAP1 PUSH2 0x2655 JUMP JUMPDEST DIV GT ISZERO SWAP3 DUP4 SWAP2 DUP3 PUSH2 0x26BB JUMPI JUMPDEST POP POP SWAP2 SWAP1 JUMP JUMPDEST GT SWAP1 POP CODESIZE DUP1 PUSH2 0x26B5 JUMP JUMPDEST ISZERO PUSH2 0x26CC JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20646F6573206E6F742065786973740000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x2718 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20616C7265616479206578656375746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x2777 DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x27A5 PUSH1 0x0 SWAP2 DUP1 DUP4 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x27B6 JUMPI POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x27D6 PUSH2 0x27C2 DUP3 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x27E9 JUMPI PUSH2 0x27E4 SWAP1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0x27A7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2857 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2851 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x284B JUMPI PUSH1 0x3 EQ PUSH2 0x2845 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x92DCECC2D8D2C840C6D0C2D2DC40D2DCC8CAF PUSH1 0x6B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0xA4B1 SWAP1 JUMP JUMPDEST POP PUSH1 0x38 SWAP1 JUMP JUMPDEST POP PUSH1 0x89 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP2 ADD SWAP1 PUSH1 0x20 SWAP1 DUP1 DUP3 DUP5 ADD SWAP4 PUSH1 0x40 SWAP2 DUP3 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP1 DUP4 SWAP1 SUB PUSH2 0x2EF JUMPI DUP2 DUP2 ADD MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI ADD SWAP2 DUP5 PUSH1 0x3F DUP5 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP4 DUP4 ADD MLOAD SWAP3 PUSH2 0x28E3 DUP5 PUSH2 0x2247 JUMP JUMPDEST SWAP4 PUSH2 0x28F0 DUP5 MLOAD SWAP6 DUP7 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP6 MSTORE DUP6 DUP6 ADD SWAP7 DUP5 DUP3 DUP5 ADD ADD GT PUSH2 0x2EF JUMPI DUP7 DUP5 PUSH2 0x290D SWAP4 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x2942 JUMPI POP POP SWAP2 PUSH2 0x2930 SWAP2 DUP4 PUSH2 0x2940 SWAP5 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x236B JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP1 PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x29D9 JUMPI POP SWAP1 DUP3 DUP3 PUSH2 0x2965 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x29C2 JUMPI SWAP2 DUP2 PUSH1 0x0 SWAP4 PUSH2 0x29A9 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP5 PUSH1 0x2 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x2 SSTORE DUP6 DUP6 MSTORE DUP5 DUP4 MSTORE DUP1 DUP6 KECCAK256 DUP3 DUP2 SLOAD ADD SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP4 SWAP5 SWAP4 PUSH4 0x2770A7EB PUSH1 0xE2 SHL SUB PUSH2 0x2AA7 JUMPI SWAP1 DUP3 DUP3 PUSH2 0x29F9 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2A8F JUMPI PUSH1 0x0 SWAP3 DUP3 DUP5 MSTORE DUP4 DUP3 MSTORE DUP6 DUP5 KECCAK256 SLOAD SWAP6 DUP2 DUP8 LT PUSH2 0x2A61 JUMPI DUP2 DUP6 SWAP7 SWAP8 DUP6 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP7 SWAP8 MSTORE DUP8 DUP6 MSTORE SUB DUP2 DUP8 KECCAK256 SSTORE DUP2 PUSH1 0x2 SLOAD SUB PUSH1 0x2 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2AB735B737BBB71037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0x4A SELFDESTRUCT MOD 0xE4 PUSH22 0xB418E3CB3E3892104B639F9A88CB834DEC83D25EC4B5 0x5D CALLVALUE CREATE 0xBD PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"750:24192:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;2373:22;750:24192;;2373:22;750:24192;;2373:22;750:24192;;;2373:22;750:24192;;;;2373:22;750:24192;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2466:103:5;;;:::i;:::-;750:24192:6;;;;;13144:18;750:24192;;;;;;13186:74;750:24192;;13194:37;;13186:74;:::i;:::-;13296:18;;;750:24192;13278:15;:36;750:24192;;;13342:58;750:24192;13351:18;;;750:24192;;13350:19;13342:58;:::i;:::-;13419:19;;;13439:10;;750:24192;;;;;;;;;;;;;13439:10;750:24192;;;;;;;;;13487:25;750:24192;;13439:10;;13821:66;13439:10;13821:66;13439:10;;750:24192;;;;;;;;;;;;;;13635:4;750:24192;;;;;;;;13650:156;;;;;13635:4;13678:23;:41;750:24192;;;13678:41;:::i;:::-;750:24192;;13650:156;750:24192;;;;;;13439:10;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13821:66;;;;13635:4;3068:21:5;750:24192:6;;13650:156;13750:27;;:45;750:24192;;;13750:45;:::i;:::-;750:24192;;13650:156;;750:24192;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;:::i;:::-;2466:103:5;;;:::i;:::-;750:24192:6;;;;;8152:9;750:24192;;;;;;8184:62;750:24192;;;8192:26;8184:62;:::i;:::-;8282:17;;;750:24192;8264:15;:35;750:24192;;;8326:56;750:24192;8335:17;;;750:24192;;8334:18;8326:56;:::i;:::-;8401:17;;;8419:10;;750:24192;;;;;;;;;;;;;8419:10;750:24192;;;;;;;;;8466:25;750:24192;;8419:10;;8777:61;8419:10;8777:61;8419:10;;750:24192;;;;;;;;;;;;;;8609:4;750:24192;;;;;;;;8624:138;;;;;8652:17;;:32;750:24192;;;8652:32;:::i;8624:138::-;8715:21;;:36;750:24192;;;8715:36;:::i;750:24192::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;2777:63;750:24192;;;;;;;;2777:63;750:24192;2777:63;;750:24192;2777:63;;;;750:24192;;;2777:63;;750:24192;;2777:63;;;750:24192;;2777:63;750:24192;;;;;2777:63;;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2614:45;750:24192;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7028:10;;750:24192;;;;;;;;;;;7018:25;750:24192;;7093:51;7101:13;;;7093:51;:::i;:::-;750:24192;;;7162:15;750:24192;;7154:67;750:24192;;;;;;7154:67;:::i;:::-;750:24192;;7162:15;750:24192;;;;;;;;;;;7335:17;750:24192;7335:17;;;;:::i;:::-;;750:24192;;;;7390:9;750:24192;;;;;;;;;7464:20;;;;750:24192;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;7708:18;750:24192;;;7630:27;750:24192;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;7509:17;;;750:24192;;;7540:21;;750:24192;7575:17;;;750:24192;;;;;;;7630:15;:27;:::i;:::-;7610:17;;;750:24192;7667:18;;;7028:10;-1:-1:-1;;;;;750:24192:6;;;;;;;;7708:18;750:24192;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;7755:53;750:24192;;;;;;;;;;10503:17:1;;;750:24192:6;;;;;;;;;;;;;;;;;;7028:10;750:24192;;;;;;;;;;;;;;:::i;:::-;7755:53;;;750:24192;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7755:53;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;10503:17:1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7708:18;750:24192;;;;;;7630:27;750:24192;;;;;;;;;;;;;;;;;;;;10503:17:1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2566:42;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;12168:10;750:24192;;;;;;;;;12158:25;750:24192;;;;12242:13;12655:19;12242:13;12234:51;12703:65;12242:13;;;12234:51;:::i;:::-;12318:17;750:24192;12318:17;;;;:::i;:::-;;750:24192;;;;12383:18;750:24192;;12618:27;750:24192;;;;;;;;;12483:23;;750:24192;;12520:27;;;750:24192;;12561:18;;750:24192;;;;;;;12618:15;:27;:::i;:::-;12597:18;;;750:24192;12655:19;12168:10;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;12168:10;750:24192;;;;;;;;12703:65;750:24192;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;3060:48;750:24192;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;3388:5:1;750:24192:6;;:::i;:::-;;;735:10:4;;3388:5:1;:::i;:::-;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2474:30;750:24192;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;16394:18;750:24192;;;;;;;;16444:37;16436:74;16444:37;;;16436:74;:::i;:::-;750:24192;16529:18;;750:24192;;;;;16520:58;750:24192;;;16528:19;16520:58;:::i;:::-;16615:18;750:24192;16596:15;:37;750:24192;;16702:33;;;:::i;:::-;16753:23;;;750:24192;;;;;16861:55;750:24192;;;;;;;;;;;;;;;;;;;;;16861:55;750:24192;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;16753:23;;;;;;750:24192;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;19646:31;;;;:::i;:::-;750:24192;;;20520:14;750:24192;;19825:28;;;;;;19995:26;750:24192;;;;;;;19995:26;750:24192;19855:3;19892:22;20483:62;;19892:22;19855:3;19892:22;;:::i;:::-;750:24192;;20483:62;;;;;;750:24192;;;;;;;;;;;;;;;;;;20483:62;;;;19855:3;:::i;:::-;19810:13;;750:24192;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;-1:-1:-1;;;;;750:24192:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2510:29;750:24192;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2876:47;750:24192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;750:24192:6;;;;;2401:31;750:24192;;;;;;;;;;;10050:61;750:24192;;;:::i;:::-;;;;;;;;9423:9;750:24192;;9941:38;:21;750:24192;;;9455:62;750:24192;;;9463:26;9455:62;:::i;:::-;750:24192;;;9535:15;750:24192;;9527:61;750:24192;;;;;;9527:61;:::i;:::-;9607:24;;;750:24192;;;;;;;9598:66;750:24192;;;;;;9606:39;9598:66;:::i;:::-;9901:30;:17;;;750:24192;;;9901:30;:::i;:::-;750:24192;;9941:21;750:24192;;;9941:38;:::i;:::-;750:24192;;;;;;;;;;10030:4;750:24192;;;;;;;;10050:61;10096:14;750:24192;;;10050:61;;;;750:24192;;;;;;;;;;;;;;;;;;10050:61;;;;750:24192;;;;;;;;;;;;;;;;23492:10;;750:24192;;;;;;;;;23482:25;750:24192;;;;;23563:13;750:24192;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;23631:7;750:24192;;;;;;;;-1:-1:-1;;;;;;750:24192:6;;;23563:13;750:24192;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;23707:24;;;750:24192;;;;;;;;;;;;;;;23563:13;750:24192;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2929:49;750:24192;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;:::i;:::-;22982:10;750:24192;;;;;;;;;;;22972:25;750:24192;;-1:-1:-1;;;;;750:24192:6;;23050:28;;750:24192;;;;;23114:13;750:24192;;;;;;;;;;23267:38;750:24192;;;;;;;23175:7;750:24192;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;23114:13;750:24192;;;;;;;;;;;;;;;;;;;;;;23267:38;750:24192;;;;;;;;;;;;;;;23114:13;750:24192;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2761:2:1;750:24192:6;;;;;;;15148:66;750:24192;;;:::i;:::-;;;;;;;;14522:18;750:24192;;15027:49;:27;750:24192;;;14564:74;750:24192;;14572:37;;14564:74;:::i;:::-;750:24192;;;14656:15;750:24192;;14648:61;750:24192;;;;;;14648:61;:::i;:::-;14728:25;;;750:24192;;;;;;;14719:67;750:24192;;;;;;14727:40;14719:67;:::i;:::-;14976:41;:23;;;750:24192;;;14976:41;:::i;750:24192::-;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;735:10:4;750:24192:6;;;;;;;;10503:17:1;;;10484:36;;10480:309;;750:24192:6;4890:5:1;;;;;;:::i;10480:309::-;10540:24;;;10536:130;;9717:19;;9713:89;;735:10:4;9815:21:1;9811:90;;750:24192:6;4890:5:1;750:24192:6;;;;;;;;;;;735:10:4;750:24192:6;;;;;;;;;10480:309:1;;;;9811:90;750:24192:6;;;;;9859:31:1;;;;;;;;750:24192:6;9859:31:1;9713:89;750:24192:6;;;;;9759:32:1;;;;;;;;750:24192:6;9759:32:1;10536:130;750:24192:6;;;-1:-1:-1;;;10591:60:1;;735:10:4;10591:60:1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;10591:60:1;;;750:24192:6;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2881:12:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;11195:9;750:24192;;;;;;11227:62;750:24192;;;11235:26;11227:62;:::i;:::-;11308:17;;;750:24192;;;;11299:56;750:24192;;;11307:18;11299:56;:::i;:::-;11392:17;;;750:24192;11373:15;:36;750:24192;;11477:32;;;:::i;:::-;11527:23;;;750:24192;;;;;;11693:18;750:24192;;;;;;;;;;;;11693:18;750:24192;11675:37;750:24192;;;;;;;;:::i;:::-;11675:37;:::i;:::-;750:24192;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11736:49;;;;;;750:24192;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;;;;750:24192:6;;;;;11736:49;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11736:49;750:24192;;;;;;;;;;;11392:17;750:24192;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;11527:23;;;;;;750:24192;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2438:30;750:24192;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;735:10:4;;9717:19:1;9713:89;;-1:-1:-1;;;;;750:24192:6;;9815:21:1;;9811:90;;735:10:4;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;9989:31:1;750:24192:6;735:10:4;9989:31:1;;750:24192:6;;;;;;;9713:89:1;750:24192:6;;-1:-1:-1;;;9759:32:1;;750:24192:6;9759:32:1;;;750:24192:6;;;9759:32:1;750:24192:6;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;17342:15;750:24192;;17334:61;750:24192;;;;;;17334:61;:::i;:::-;750:24192;;;17414:17;750:24192;;;;;;;;;;17953:66;750:24192;;;;;17414:17;750:24192;;;;;;;;;;;;;;17812:9;750:24192;;;;;;;;17848:26;17844:94;;750:24192;;17953:66;18004:14;750:24192;;;17953:66;;;;750:24192;;;;;;;;;;;;;;;;;;17844:94;17908:18;750:24192;17890:37;750:24192;;;;17908:18;;;;;750:24192;:::i;17890:37::-;17844:94;;;750:24192;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;2726:45;750:24192;;;;;;;2726:45;750:24192;;2726:45;750:24192;2726:45;750:24192;2726:45;750:24192;2726:45;;750:24192;:::i;:::-;;;;:::i;:::-;2726:45;;;750:24192;2726:45;750:24192;;2726:45;;750:24192;2726:45;;;750:24192;;2726:45;;;750:24192;;;;;;;;2726:45;;;750:24192;;;;;;2726:45;;;;;750:24192;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;23895:7;750:24192;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;23895:7;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;750:24192:6;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;750:24192:6;;;;;;:::o;:::-;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;-1:-1:-1;750:24192:6;18564:15;750:24192;;;;-1:-1:-1;750:24192:6;;;18225:371;;750:24192;;;;;;;;;;;;;;;;;;;;;;:::o;5297:300:1:-;;-1:-1:-1;;;;;750:24192:6;;;;5380:18:1;;5376:86;;750:24192:6;5475:16:1;;;5471:86;;5997:540;750:24192:6;;;;;;;;;;;6244:19:1;;;;6240:115;;750:24192:6;;;;;6987:25:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:25:1;5297:300::o;6240:115::-;750:24192:6;;-1:-1:-1;;;6290:50:1;;-1:-1:-1;;;;;750:24192:6;;;;6290:50:1;;;750:24192:6;;;;;;;;;;;;;;;;10591:60:1;5471:86;750:24192:6;;-1:-1:-1;;;5514:32:1;;5396:1;5514:32;;;750:24192:6;;;5514:32:1;5376:86;750:24192:6;;-1:-1:-1;;;5421:30:1;;5396:1;5421:30;;;750:24192:6;;;5421:30:1;750:24192:6;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;2575:307:5;1899:1;2702:7;750:24192:6;2702:18:5;2698:86;;1899:1;2702:7;750:24192:6;2575:307:5:o;2698:86::-;750:24192:6;;-1:-1:-1;;;2743:30:5;;;;;750:24192:6;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;:::o;10394:580::-;;750:24192;-1:-1:-1;750:24192:6;10536:9;750:24192;;10568:62;750:24192;-1:-1:-1;750:24192:6;;;;10576:26;10568:62;:::i;:::-;10682:21;10662:17;;;750:24192;10682:21;;750:24192;10662:41;;;;;:::i;:::-;10775:3;10739:32;10662:17;750:24192;10755:16;750:24192;10739:32;;:::i;:::-;750:24192;-1:-1:-1;10813:28:6;;;;;10860:58;;10394:580;10937:30;;;10394:580;:::o;10860:58::-;10877:41;;-1:-1:-1;10860:58:6;;;;750:24192;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;15490:647;-1:-1:-1;750:24192:6;15643:18;750:24192;;;-1:-1:-1;750:24192:6;;15685:74;750:24192;;15693:37;;15685:74;:::i;:::-;15822:27;15796:23;;;750:24192;15822:27;;750:24192;15796:53;;;;;:::i;18841:573::-;19002:62;-1:-1:-1;750:24192:6;;;;18970:9;750:24192;;;;;;19010:26;19002:62;:::i;:::-;19169:13;19184:28;20975:1;19184:28;;;;19396:11;;19403:4;18841:573;:::o;19214:3::-;19292:29;19251:22;;;:::i;:::-;-1:-1:-1;750:24192:6;18564:15;750:24192;;;;-1:-1:-1;750:24192:6;;;18225:371;;19292:29;19291:30;19287:81;;19214:3;;;:::i;:::-;19169:13;;19287:81;19341:12;;:::o;21150:323::-;21239:11;;21235:25;;21301:1;21291:11;;21287:27;;21352:1;21342:11;;21338:26;;21399:1;21389:11;21385:29;;750:24192;;-1:-1:-1;;;21437:29:6;;750:24192;21437:29;;;750:24192;;;;;;-1:-1:-1;;;750:24192:6;;;;;;21437:29;21385;21409:5;21402:12;:::o;21338:26::-;21355:9;21362:2;21355:9;:::o;21287:27::-;21304:10;21311:3;21304:10;:::o;21235:25::-;21252:8;21259:1;21252:8;:::o;750:24192::-;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;:::o;21613:1113::-;750:24192;;21772:39;;;;;;;;;750:24192;;;;;;;;;21772:39;;;750:24192;-1:-1:-1;;;;;;750:24192:6;;;21772:39;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;21834:58:6;;750:24192;;;;;22003:36;750:24192;;22079:6;750:24192;;22003:36;;;;:::i;:::-;750:24192;-1:-1:-1;;;;;750:24192:6;22063:10;22079:6;:::i;:::-;21613:1113::o;21830:890::-;750:24192;;;;-1:-1:-1;;;22107:54:6;;750:24192;;;;;;22272:36;750:24192;;22272:36;;;;:::i;:::-;-1:-1:-1;;;;;750:24192:6;;;;7432:21:1;;7428:91;;750:24192:6;;6547:425:1;750:24192:6;6137:21:1;6987:25;750:24192:6;6137:21:1;750:24192:6;6137:21:1;:::i;:::-;;750:24192:6;;;;;;;;;;;;;;;;;;;;6987:25:1;21613:1113:6:o;7428:91:1:-;750:24192:6;-1:-1:-1;;;7476:32:1;;-1:-1:-1;7476:32:1;;;750:24192:6;;;7476:32:1;22103:617:6;750:24192;;;-1:-1:-1;;;22360:54:6;750:24192;;;;;22527:36;750:24192;;22527:36;;;;:::i;:::-;750:24192;-1:-1:-1;;;;;750:24192:6;;;;7958:21:1;;7954:89;;5997:540;750:24192:6;;;;;;;;;;;6244:19:1;;;;6240:115;;750:24192:6;;;;;6987:25:1;750:24192:6;;;;;;;;;;;;6714:21:1;750:24192:6;;6714:21:1;750:24192:6;;;;;6987:25:1;21613:1113:6:o;6240:115:1:-;750:24192:6;-1:-1:-1;;;6290:50:1;;-1:-1:-1;;;;;750:24192:6;;6290:50:1;;;750:24192:6;;;;;;;;;;;;;;;;10591:60:1;7954:89;750:24192:6;;-1:-1:-1;;;8002:30:1;;-1:-1:-1;8002:30:1;;;750:24192:6;;;8002:30:1;22356:364:6;750:24192;;-1:-1:-1;;;22682:27:6;;;;;750:24192;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;22682:27"},"methodIdentifiers":{"activeModules(bytes32)":"b3fe8bcb","addModule(bytes32,address)":"35324eee","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","checkChainConnection(uint256)":"4de184f6","checkMultiSigResult(uint256)":"057b2074","checkProposalResult(uint256)":"7e5a9b47","checkSyncReadiness(uint256)":"e49a62e9","createMultiSigOperation(bytes32,uint256)":"b00e0730","createProposal(string,uint256,bytes,uint256)":"b3594510","currentChainId()":"6cbadbfa","decimals()":"313ce567","dleInfo()":"f2c26a47","executeMultiSigOperation(uint256)":"893d692a","executeProposal(uint256)":"0d61b519","executedMultiSig(uint256)":"af89d2c4","executedProposals(uint256)":"3b60288a","getCurrentChainId()":"5cf0e8a4","getDLEInfo()":"204c5d1f","getModuleAddress(bytes32)":"22dbefbb","getSupportedChainCount()":"eced3dfb","getSupportedChainId(uint256)":"9a49bdde","isChainSupported(uint256)":"5221c1f0","isModuleActive(bytes32)":"4b145793","modules(bytes32)":"b0b6cc1a","multiSigCounter()":"8c7b04c9","multiSigOperations(uint256)":"c51cab3a","name()":"06fdde03","proposalCounter()":"0c0512e9","proposals(uint256)":"013cf08b","quorumPercentage()":"4fa76ec9","removeModule(bytes32)":"4114509b","signMultiSigOperation(uint256,bool)":"ccd7a490","supportedChains(uint256)":"548d496f","symbol()":"95d89b41","syncExecutionFromChain(uint256,uint256,bytes)":"044bc2bd","syncMultiSigFromChain(uint256,uint256,uint256,uint256,bytes)":"2ee09598","syncToAllChains(uint256)":"7ce288ea","syncVoteFromChain(uint256,uint256,uint256,uint256,bytes)":"456d10c1","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","vote(uint256,bool)":"c9d27afe"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"okvedCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorumPercentage\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"initialPartners\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"initialAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"supportedChainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct DLE.DLEConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_currentChainId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toChainId\",\"type\":\"uint256\"}],\"name\":\"CrossChainExecutionSync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toChainId\",\"type\":\"uint256\"}],\"name\":\"CrossChainMultiSigSync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toChainId\",\"type\":\"uint256\"}],\"name\":\"CrossChainVoteSync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"okvedCodes\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"supportedChainIds\",\"type\":\"uint256[]\"}],\"name\":\"DLEInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"partners\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"InitialTokensDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"moduleId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"moduleId\",\"type\":\"bytes32\"}],\"name\":\"ModuleRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"operationHash\",\"type\":\"bytes32\"}],\"name\":\"MultiSigExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"operationHash\",\"type\":\"bytes32\"}],\"name\":\"MultiSigOperationCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"signaturePower\",\"type\":\"uint256\"}],\"name\":\"MultiSigSigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operation\",\"type\":\"bytes\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votingPower\",\"type\":\"uint256\"}],\"name\":\"ProposalVoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"SyncCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"activeModules\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_moduleAddress\",\"type\":\"address\"}],\"name\":\"addModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"checkChainConnection\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAvailable\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"}],\"name\":\"checkMultiSigResult\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"quorumReached\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"checkProposalResult\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"quorumReached\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"checkSyncReadiness\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allChainsReady\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_operationHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"createMultiSigOperation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_description\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_operation\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_governanceChainId\",\"type\":\"uint256\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dleInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"}],\"name\":\"executeMultiSigOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executedMultiSig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executedProposals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDLEInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"okvedCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"internalType\":\"struct DLE.DLEInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"}],\"name\":\"getModuleAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedChainCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSupportedChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"isChainSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"}],\"name\":\"isModuleActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"modules\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiSigCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"multiSigOperations\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"forSignatures\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstSignatures\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"operation\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"}],\"name\":\"removeModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"signMultiSigOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"supportedChains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fromChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"syncExecutionFromChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fromChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_forSignatures\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_againstSignatures\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"syncMultiSigFromChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"syncToAllChains\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fromChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"syncVoteFromChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"\\u041e\\u0441\\u043d\\u043e\\u0432\\u043d\\u043e\\u0439 \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u043a\\u0442 DLE \\u0441 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\\u043d\\u043e\\u0439 \\u0430\\u0440\\u0445\\u0438\\u0442\\u0435\\u043a\\u0442\\u0443\\u0440\\u043e\\u0439 \\u0438 \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438-\\u0447\\u0435\\u0439\\u043d \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u043e\\u0439\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"addModule(bytes32,address)\":{\"details\":\"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\",\"params\":{\"_moduleAddress\":\"\\u0410\\u0434\\u0440\\u0435\\u0441 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\",\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"checkChainConnection(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u043f\\u043e\\u0434\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u0435 \\u043a \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0435\",\"params\":{\"_chainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"},\"returns\":{\"isAvailable\":\"\\u0414\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0430 \\u043b\\u0438 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0430\"}},\"checkMultiSigResult(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u0440\\u0435\\u0437\\u0443\\u043b\\u044c\\u0442\\u0430\\u0442 \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0438\",\"params\":{\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"},\"returns\":{\"passed\":\"\\u041f\\u0440\\u043e\\u0448\\u043b\\u0430 \\u043b\\u0438 \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044f\",\"quorumReached\":\"\\u0414\\u043e\\u0441\\u0442\\u0438\\u0433\\u043d\\u0443\\u0442 \\u043b\\u0438 \\u043a\\u0432\\u043e\\u0440\\u0443\\u043c\"}},\"checkProposalResult(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u0440\\u0435\\u0437\\u0443\\u043b\\u044c\\u0442\\u0430\\u0442 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"},\"returns\":{\"passed\":\"\\u041f\\u0440\\u043e\\u0448\\u043b\\u043e \\u043b\\u0438 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\",\"quorumReached\":\"\\u0414\\u043e\\u0441\\u0442\\u0438\\u0433\\u043d\\u0443\\u0442 \\u043b\\u0438 \\u043a\\u0432\\u043e\\u0440\\u0443\\u043c\"}},\"checkSyncReadiness(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u0432\\u0441\\u0435 \\u043f\\u043e\\u0434\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u044f \\u043f\\u0435\\u0440\\u0435\\u0434 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0430\\u0446\\u0438\\u0435\\u0439\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"},\"returns\":{\"allChainsReady\":\"\\u0413\\u043e\\u0442\\u043e\\u0432\\u044b \\u043b\\u0438 \\u0432\\u0441\\u0435 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"}},\"createMultiSigOperation(bytes32,uint256)\":{\"details\":\"\\u0421\\u043e\\u0437\\u0434\\u0430\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044e\",\"params\":{\"_duration\":\"\\u0414\\u043b\\u0438\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0441\\u0442\\u044c \\u0441\\u0431\\u043e\\u0440\\u0430 \\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0435\\u0439\",\"_operationHash\":\"\\u0425\\u0435\\u0448 \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"createProposal(string,uint256,bytes,uint256)\":{\"details\":\"\\u0421\\u043e\\u0437\\u0434\\u0430\\u0442\\u044c \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435 \\u0441 \\u0432\\u044b\\u0431\\u043e\\u0440\\u043e\\u043c \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u0434\\u043b\\u044f \\u043a\\u0432\\u043e\\u0440\\u0443\\u043c\\u0430\",\"params\":{\"_description\":\"\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\",\"_duration\":\"\\u0414\\u043b\\u0438\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0441\\u0442\\u044c \\u0433\\u043e\\u043b\\u043e\\u0441\\u043e\\u0432\\u0430\\u043d\\u0438\\u044f \\u0432 \\u0441\\u0435\\u043a\\u0443\\u043d\\u0434\\u0430\\u0445\",\"_governanceChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u0434\\u043b\\u044f \\u0441\\u0431\\u043e\\u0440\\u0430 \\u0433\\u043e\\u043b\\u043e\\u0441\\u043e\\u0432\",\"_operation\":\"\\u041e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044f \\u0434\\u043b\\u044f \\u0438\\u0441\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"executeMultiSigOperation(uint256)\":{\"details\":\"\\u0418\\u0441\\u043f\\u043e\\u043b\\u043d\\u0438\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044e\",\"params\":{\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"executeProposal(uint256)\":{\"details\":\"\\u0418\\u0441\\u043f\\u043e\\u043b\\u043d\\u0438\\u0442\\u044c \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"getCurrentChainId()\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u0442\\u0435\\u043a\\u0443\\u0449\\u0438\\u0439 ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"},\"getDLEInfo()\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u0438\\u043d\\u0444\\u043e\\u0440\\u043c\\u0430\\u0446\\u0438\\u044e \\u043e DLE\"},\"getModuleAddress(bytes32)\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u0430\\u0434\\u0440\\u0435\\u0441 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\",\"params\":{\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"getSupportedChainCount()\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u043a\\u043e\\u043b\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043e \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u043c\\u044b\\u0445 \\u0446\\u0435\\u043f\\u043e\\u0447\\u0435\\u043a\"},\"getSupportedChainId(uint256)\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c ID \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u043c\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043f\\u043e \\u0438\\u043d\\u0434\\u0435\\u043a\\u0441\\u0443\",\"params\":{\"_index\":\"\\u0418\\u043d\\u0434\\u0435\\u043a\\u0441 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"}},\"isChainSupported(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c, \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044f \\u043b\\u0438 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0430\",\"params\":{\"_chainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"}},\"isModuleActive(bytes32)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c, \\u0430\\u043a\\u0442\\u0438\\u0432\\u0435\\u043d \\u043b\\u0438 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\",\"params\":{\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"removeModule(bytes32)\":{\"details\":\"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\",\"params\":{\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"signMultiSigOperation(uint256,bool)\":{\"details\":\"\\u041f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0430\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044e\",\"params\":{\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\",\"_support\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430 \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"syncExecutionFromChain(uint256,uint256,bytes)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0438\\u0441\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u0435 \\u0438\\u0437 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\",\"params\":{\"_fromChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043e\\u0442\\u043a\\u0443\\u0434\\u0430 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u0443\\u0435\\u043c\",\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"syncMultiSigFromChain(uint256,uint256,uint256,uint256,bytes)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u0438\\u0437 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\",\"params\":{\"_againstSignatures\":\"\\u041f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0438 \\u043f\\u0440\\u043e\\u0442\\u0438\\u0432\",\"_forSignatures\":\"\\u041f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0438 \\u0437\\u0430\",\"_fromChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043e\\u0442\\u043a\\u0443\\u0434\\u0430 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u0443\\u0435\\u043c\",\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"syncToAllChains(uint256)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0430\\u0446\\u0438\\u044f \\u0442\\u043e\\u043b\\u044c\\u043a\\u043e \\u043f\\u0440\\u0438 100% \\u0433\\u043e\\u0442\\u043e\\u0432\\u043d\\u043e\\u0441\\u0442\\u0438\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"syncVoteFromChain(uint256,uint256,uint256,uint256,bytes)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0433\\u043e\\u043b\\u043e\\u0441 \\u0438\\u0437 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\",\"params\":{\"_againstVotes\":\"\\u0413\\u043e\\u043b\\u043e\\u0441\\u0430 \\u043f\\u0440\\u043e\\u0442\\u0438\\u0432\",\"_forVotes\":\"\\u0413\\u043e\\u043b\\u043e\\u0441\\u0430 \\u0437\\u0430\",\"_fromChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043e\\u0442\\u043a\\u0443\\u0434\\u0430 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u0443\\u0435\\u043c\",\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"vote(uint256,bool)\":{\"details\":\"\\u0413\\u043e\\u043b\\u043e\\u0441\\u043e\\u0432\\u0430\\u0442\\u044c \\u0437\\u0430 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\",\"_support\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}}},\"title\":\"DLE (Digital Legal Entity)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DLE.sol\":\"DLE\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"contracts/DLE.sol\":{\"keccak256\":\"0xfe624e844a95cf86f74c5f7b27898dab0b51dfd7f245a1796b03993e95c56db1\",\"license\":\"PROPRIETARY AND MIT\",\"urls\":[\"bzz-raw://8008399d9582266b053a21a1b76b72309b53b6670adca2208c69129cb1debd96\",\"dweb:/ipfs/QmZa9YXkdNyexgEaJWkJSsrZfDigV8QXB7e54vumPTdf5Q\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/backend/artifacts/build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json b/backend/artifacts/build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json deleted file mode 100644 index ffb1d7f..0000000 --- a/backend/artifacts/build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"ca6cf114dd2b9a54ebfddbb4ba9a86a9","_format":"hh-sol-build-info-1","solcVersion":"0.8.20","solcLongVersion":"0.8.20+commit.a1b79de6","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant NOT_ENTERED = 1;\n uint256 private constant ENTERED = 2;\n\n uint256 private _status;\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n constructor() {\n _status = NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if (_status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n _status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = NOT_ENTERED;\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n return _status == ENTERED;\n }\n}\n"},"contracts/DLE.sol":{"content":"// SPDX-License-Identifier: PROPRIETARY AND MIT\n// Copyright (c) 2024-2025 Тарабанов Александр Викторович\n// All rights reserved.\n//\n// This software is proprietary and confidential.\n// Unauthorized copying, modification, or distribution is prohibited.\n//\n// For licensing inquiries: info@hb3-accelerator.com\n// Website: https://hb3-accelerator.com\n// GitHub: https://github.com/HB3-ACCELERATOR\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\n/**\n * @title DLE (Digital Legal Entity)\n * @dev Основной контракт DLE с модульной архитектурой и мульти-чейн поддержкой\n */\ncontract DLE is ERC20, ReentrancyGuard {\n struct DLEInfo {\n string name;\n string symbol;\n string location;\n string coordinates;\n uint256 jurisdiction;\n uint256 oktmo;\n string[] okvedCodes;\n uint256 kpp;\n uint256 creationTimestamp;\n bool isActive;\n }\n\n struct DLEConfig {\n string name;\n string symbol;\n string location;\n string coordinates;\n uint256 jurisdiction;\n uint256 oktmo;\n string[] okvedCodes;\n uint256 kpp;\n uint256 quorumPercentage;\n address[] initialPartners;\n uint256[] initialAmounts;\n uint256[] supportedChainIds; // Поддерживаемые цепочки\n }\n\n struct Proposal {\n uint256 id;\n string description;\n uint256 forVotes;\n uint256 againstVotes;\n bool executed;\n uint256 deadline;\n address initiator;\n bytes operation; // Операция для исполнения\n mapping(address => bool) hasVoted;\n mapping(uint256 => bool) chainVoteSynced; // Синхронизация голосов между цепочками\n }\n\n struct MultiSigOperation {\n bytes32 operationHash;\n uint256 forSignatures;\n uint256 againstSignatures;\n bool executed;\n uint256 deadline;\n address initiator;\n mapping(address => bool) hasSigned;\n mapping(uint256 => bool) chainSignSynced; // Синхронизация подписей между цепочками\n }\n\n // Основные настройки\n DLEInfo public dleInfo;\n uint256 public quorumPercentage;\n uint256 public proposalCounter;\n uint256 public multiSigCounter;\n uint256 public currentChainId;\n\n // Модули\n mapping(bytes32 => address) public modules;\n mapping(bytes32 => bool) public activeModules;\n\n // Предложения и мультиподписи\n mapping(uint256 => Proposal) public proposals;\n mapping(uint256 => MultiSigOperation) public multiSigOperations;\n\n // Мульти-чейн\n mapping(uint256 => bool) public supportedChains;\n mapping(uint256 => bool) public executedProposals; // Синхронизация исполненных предложений\n mapping(uint256 => bool) public executedMultiSig; // Синхронизация исполненных мультиподписей\n\n // События\n event DLEInitialized(\n string name,\n string symbol,\n string location,\n string coordinates,\n uint256 jurisdiction,\n uint256 oktmo,\n string[] okvedCodes,\n uint256 kpp,\n address tokenAddress,\n uint256[] supportedChainIds\n );\n event InitialTokensDistributed(address[] partners, uint256[] amounts);\n event ProposalCreated(uint256 proposalId, address initiator, string description);\n event ProposalVoted(uint256 proposalId, address voter, bool support, uint256 votingPower);\n event ProposalExecuted(uint256 proposalId, bytes operation);\n event MultiSigOperationCreated(uint256 operationId, address initiator, bytes32 operationHash);\n event MultiSigSigned(uint256 operationId, address signer, bool support, uint256 signaturePower);\n event MultiSigExecuted(uint256 operationId, bytes32 operationHash);\n event ModuleAdded(bytes32 moduleId, address moduleAddress);\n event ModuleRemoved(bytes32 moduleId);\n event CrossChainExecutionSync(uint256 proposalId, uint256 fromChainId, uint256 toChainId);\n event CrossChainVoteSync(uint256 proposalId, uint256 fromChainId, uint256 toChainId);\n event CrossChainMultiSigSync(uint256 operationId, uint256 fromChainId, uint256 toChainId);\n\n constructor(\n DLEConfig memory config,\n uint256 _currentChainId\n ) ERC20(config.name, config.symbol) {\n dleInfo = DLEInfo({\n name: config.name,\n symbol: config.symbol,\n location: config.location,\n coordinates: config.coordinates,\n jurisdiction: config.jurisdiction,\n oktmo: config.oktmo,\n okvedCodes: config.okvedCodes,\n kpp: config.kpp,\n creationTimestamp: block.timestamp,\n isActive: true\n });\n \n quorumPercentage = config.quorumPercentage;\n currentChainId = _currentChainId;\n\n // Настраиваем поддерживаемые цепочки\n for (uint256 i = 0; i < config.supportedChainIds.length; i++) {\n supportedChains[config.supportedChainIds[i]] = true;\n }\n\n // Распределяем начальные токены партнерам\n require(config.initialPartners.length == config.initialAmounts.length, \"Arrays length mismatch\");\n require(config.initialPartners.length > 0, \"No initial partners\");\n \n for (uint256 i = 0; i < config.initialPartners.length; i++) {\n require(config.initialPartners[i] != address(0), \"Zero address\");\n require(config.initialAmounts[i] > 0, \"Zero amount\");\n _mint(config.initialPartners[i], config.initialAmounts[i]);\n }\n \n emit InitialTokensDistributed(config.initialPartners, config.initialAmounts);\n emit DLEInitialized(\n config.name,\n config.symbol,\n config.location,\n config.coordinates,\n config.jurisdiction,\n config.oktmo,\n config.okvedCodes,\n config.kpp,\n address(this),\n config.supportedChainIds\n );\n }\n\n /**\n * @dev Создать предложение с выбором цепочки для кворума\n * @param _description Описание предложения\n * @param _duration Длительность голосования в секундах\n * @param _operation Операция для исполнения\n * @param _governanceChainId ID цепочки для сбора голосов\n */\n function createProposal(\n string memory _description, \n uint256 _duration,\n bytes memory _operation,\n uint256 _governanceChainId\n ) external returns (uint256) {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to create proposal\");\n require(_duration > 0, \"Duration must be positive\");\n require(supportedChains[_governanceChainId], \"Chain not supported\");\n require(checkChainConnection(_governanceChainId), \"Chain not available\");\n\n uint256 proposalId = proposalCounter++;\n Proposal storage proposal = proposals[proposalId];\n \n proposal.id = proposalId;\n proposal.description = _description;\n proposal.forVotes = 0;\n proposal.againstVotes = 0;\n proposal.executed = false;\n proposal.deadline = block.timestamp + _duration;\n proposal.initiator = msg.sender;\n proposal.operation = _operation;\n\n emit ProposalCreated(proposalId, msg.sender, _description);\n return proposalId;\n }\n\n /**\n * @dev Голосовать за предложение\n * @param _proposalId ID предложения\n * @param _support Поддержка предложения\n */\n function vote(uint256 _proposalId, bool _support) external nonReentrant {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n require(block.timestamp < proposal.deadline, \"Voting ended\");\n require(!proposal.executed, \"Proposal already executed\");\n require(!proposal.hasVoted[msg.sender], \"Already voted\");\n require(balanceOf(msg.sender) > 0, \"No tokens to vote\");\n\n uint256 votingPower = balanceOf(msg.sender);\n proposal.hasVoted[msg.sender] = true;\n\n if (_support) {\n proposal.forVotes += votingPower;\n } else {\n proposal.againstVotes += votingPower;\n }\n\n emit ProposalVoted(_proposalId, msg.sender, _support, votingPower);\n }\n\n /**\n * @dev Синхронизировать голос из другой цепочки\n * @param _proposalId ID предложения\n * @param _fromChainId ID цепочки откуда синхронизируем\n * @param _forVotes Голоса за\n * @param _againstVotes Голоса против\n */\n function syncVoteFromChain(\n uint256 _proposalId,\n uint256 _fromChainId,\n uint256 _forVotes,\n uint256 _againstVotes,\n bytes memory /* _proof */\n ) external {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n require(supportedChains[_fromChainId], \"Chain not supported\");\n require(!proposal.chainVoteSynced[_fromChainId], \"Already synced\");\n\n // Здесь должна быть проверка proof (для простоты пропускаем)\n // В реальной реализации нужно проверять доказательство\n\n proposal.forVotes += _forVotes;\n proposal.againstVotes += _againstVotes;\n proposal.chainVoteSynced[_fromChainId] = true;\n\n emit CrossChainVoteSync(_proposalId, _fromChainId, currentChainId);\n }\n\n /**\n * @dev Проверить результат предложения\n * @param _proposalId ID предложения\n * @return passed Прошло ли предложение\n * @return quorumReached Достигнут ли кворум\n */\n function checkProposalResult(uint256 _proposalId) public view returns (bool passed, bool quorumReached) {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n\n uint256 totalVotes = proposal.forVotes + proposal.againstVotes;\n uint256 quorumRequired = (totalSupply() * quorumPercentage) / 100;\n \n quorumReached = totalVotes >= quorumRequired;\n passed = quorumReached && proposal.forVotes > proposal.againstVotes;\n \n return (passed, quorumReached);\n }\n\n /**\n * @dev Исполнить предложение\n * @param _proposalId ID предложения\n */\n function executeProposal(uint256 _proposalId) external {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n require(!proposal.executed, \"Proposal already executed\");\n require(block.timestamp >= proposal.deadline, \"Voting not ended\");\n\n (bool passed, bool quorumReached) = checkProposalResult(_proposalId);\n require(passed && quorumReached, \"Proposal not passed\");\n\n proposal.executed = true;\n \n // Исполняем операцию\n _executeOperation(proposal.operation);\n \n emit ProposalExecuted(_proposalId, proposal.operation);\n }\n\n /**\n * @dev Создать мультиподпись операцию\n * @param _operationHash Хеш операции\n * @param _duration Длительность сбора подписей\n */\n function createMultiSigOperation(\n bytes32 _operationHash,\n uint256 _duration\n ) external returns (uint256) {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to create operation\");\n require(_duration > 0, \"Duration must be positive\");\n\n uint256 operationId = multiSigCounter++;\n MultiSigOperation storage operation = multiSigOperations[operationId];\n \n operation.operationHash = _operationHash;\n operation.forSignatures = 0;\n operation.againstSignatures = 0;\n operation.executed = false;\n operation.deadline = block.timestamp + _duration;\n operation.initiator = msg.sender;\n\n emit MultiSigOperationCreated(operationId, msg.sender, _operationHash);\n return operationId;\n }\n\n /**\n * @dev Подписать мультиподпись операцию\n * @param _operationId ID операции\n * @param _support Поддержка операции\n */\n function signMultiSigOperation(uint256 _operationId, bool _support) external nonReentrant {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n require(block.timestamp < operation.deadline, \"Signing ended\");\n require(!operation.executed, \"Operation already executed\");\n require(!operation.hasSigned[msg.sender], \"Already signed\");\n require(balanceOf(msg.sender) > 0, \"No tokens to sign\");\n\n uint256 signaturePower = balanceOf(msg.sender);\n operation.hasSigned[msg.sender] = true;\n\n if (_support) {\n operation.forSignatures += signaturePower;\n } else {\n operation.againstSignatures += signaturePower;\n }\n\n emit MultiSigSigned(_operationId, msg.sender, _support, signaturePower);\n }\n\n /**\n * @dev Синхронизировать мультиподпись из другой цепочки\n * @param _operationId ID операции\n * @param _fromChainId ID цепочки откуда синхронизируем\n * @param _forSignatures Подписи за\n * @param _againstSignatures Подписи против\n */\n function syncMultiSigFromChain(\n uint256 _operationId,\n uint256 _fromChainId,\n uint256 _forSignatures,\n uint256 _againstSignatures,\n bytes memory /* _proof */\n ) external {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n require(supportedChains[_fromChainId], \"Chain not supported\");\n require(!operation.chainSignSynced[_fromChainId], \"Already synced\");\n\n // Здесь должна быть проверка proof\n // В реальной реализации нужно проверять доказательство\n\n operation.forSignatures += _forSignatures;\n operation.againstSignatures += _againstSignatures;\n operation.chainSignSynced[_fromChainId] = true;\n\n emit CrossChainMultiSigSync(_operationId, _fromChainId, currentChainId);\n }\n\n /**\n * @dev Проверить результат мультиподписи\n * @param _operationId ID операции\n * @return passed Прошла ли операция\n * @return quorumReached Достигнут ли кворум\n */\n function checkMultiSigResult(uint256 _operationId) public view returns (bool passed, bool quorumReached) {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n\n uint256 totalSignatures = operation.forSignatures + operation.againstSignatures;\n uint256 quorumRequired = (totalSupply() * quorumPercentage) / 100;\n \n quorumReached = totalSignatures >= quorumRequired;\n passed = quorumReached && operation.forSignatures > operation.againstSignatures;\n \n return (passed, quorumReached);\n }\n\n /**\n * @dev Исполнить мультиподпись операцию\n * @param _operationId ID операции\n */\n function executeMultiSigOperation(uint256 _operationId) external {\n MultiSigOperation storage operation = multiSigOperations[_operationId];\n require(operation.operationHash != bytes32(0), \"Operation does not exist\");\n require(!operation.executed, \"Operation already executed\");\n require(block.timestamp >= operation.deadline, \"Signing not ended\");\n\n (bool passed, bool quorumReached) = checkMultiSigResult(_operationId);\n require(passed && quorumReached, \"Operation not passed\");\n\n operation.executed = true;\n \n emit MultiSigExecuted(_operationId, operation.operationHash);\n }\n\n /**\n * @dev Синхронизировать исполнение из другой цепочки\n * @param _proposalId ID предложения\n * @param _fromChainId ID цепочки откуда синхронизируем\n */\n function syncExecutionFromChain(\n uint256 _proposalId,\n uint256 _fromChainId,\n bytes memory /* _proof */\n ) external {\n require(supportedChains[_fromChainId], \"Chain not supported\");\n require(!executedProposals[_proposalId], \"Already executed\");\n\n // Здесь должна быть проверка proof\n // В реальной реализации нужно проверять доказательство\n\n executedProposals[_proposalId] = true;\n \n // Получаем операцию из предложения\n Proposal storage proposal = proposals[_proposalId];\n if (proposal.id == _proposalId) {\n _executeOperation(proposal.operation);\n }\n\n emit CrossChainExecutionSync(_proposalId, _fromChainId, currentChainId);\n }\n\n /**\n * @dev Проверить подключение к цепочке\n * @param _chainId ID цепочки\n * @return isAvailable Доступна ли цепочка\n */\n function checkChainConnection(uint256 _chainId) public view returns (bool isAvailable) {\n // В реальной реализации здесь должна быть проверка подключения\n // Для примера возвращаем true для поддерживаемых цепочек\n return supportedChains[_chainId];\n }\n\n /**\n * @dev Проверить все подключения перед синхронизацией\n * @param _proposalId ID предложения\n * @return allChainsReady Готовы ли все цепочки\n */\n function checkSyncReadiness(uint256 _proposalId) public view returns (bool allChainsReady) {\n Proposal storage proposal = proposals[_proposalId];\n require(proposal.id == _proposalId, \"Proposal does not exist\");\n \n // Проверяем все поддерживаемые цепочки\n for (uint256 i = 0; i < getSupportedChainCount(); i++) {\n uint256 chainId = getSupportedChainId(i);\n if (!checkChainConnection(chainId)) {\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * @dev Синхронизация только при 100% готовности\n * @param _proposalId ID предложения\n */\n function syncToAllChains(uint256 _proposalId) external {\n require(checkSyncReadiness(_proposalId), \"Not all chains ready\");\n \n // Выполняем синхронизацию во все цепочки\n for (uint256 i = 0; i < getSupportedChainCount(); i++) {\n uint256 chainId = getSupportedChainId(i);\n syncToChain(_proposalId, chainId);\n }\n \n emit SyncCompleted(_proposalId);\n }\n\n /**\n * @dev Синхронизация в конкретную цепочку\n * @param _proposalId ID предложения\n * @param _chainId ID цепочки\n */\n function syncToChain(uint256 _proposalId, uint256 _chainId) internal {\n // В реальной реализации здесь будет вызов cross-chain bridge\n // Для примера просто эмитим событие\n emit CrossChainExecutionSync(_proposalId, currentChainId, _chainId);\n }\n\n /**\n * @dev Получить количество поддерживаемых цепочек\n */\n function getSupportedChainCount() public pure returns (uint256) {\n // В реальной реализации нужно хранить массив поддерживаемых цепочек\n // Для примера возвращаем 4 (Ethereum, Polygon, BSC, Arbitrum)\n return 4;\n }\n\n /**\n * @dev Получить ID поддерживаемой цепочки по индексу\n * @param _index Индекс цепочки\n */\n function getSupportedChainId(uint256 _index) public pure returns (uint256) {\n if (_index == 0) return 1; // Ethereum\n if (_index == 1) return 137; // Polygon\n if (_index == 2) return 56; // BSC\n if (_index == 3) return 42161; // Arbitrum\n revert(\"Invalid chain index\");\n }\n\n /**\n * @dev Исполнить операцию\n * @param _operation Операция для исполнения\n */\n function _executeOperation(bytes memory _operation) internal {\n // Декодируем операцию\n (bytes4 selector, bytes memory data) = abi.decode(_operation, (bytes4, bytes));\n \n if (selector == bytes4(keccak256(\"transfer(address,uint256)\"))) {\n // Операция передачи токенов\n (address to, uint256 amount) = abi.decode(data, (address, uint256));\n _transfer(msg.sender, to, amount);\n } else if (selector == bytes4(keccak256(\"mint(address,uint256)\"))) {\n // Операция минтинга токенов\n (address to, uint256 amount) = abi.decode(data, (address, uint256));\n _mint(to, amount);\n } else if (selector == bytes4(keccak256(\"burn(address,uint256)\"))) {\n // Операция сжигания токенов\n (address from, uint256 amount) = abi.decode(data, (address, uint256));\n _burn(from, amount);\n } else {\n // Неизвестная операция\n revert(\"Unknown operation\");\n }\n }\n\n /**\n * @dev Добавить модуль\n * @param _moduleId ID модуля\n * @param _moduleAddress Адрес модуля\n */\n function addModule(bytes32 _moduleId, address _moduleAddress) external {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to add module\");\n require(_moduleAddress != address(0), \"Zero address\");\n require(!activeModules[_moduleId], \"Module already exists\");\n\n modules[_moduleId] = _moduleAddress;\n activeModules[_moduleId] = true;\n\n emit ModuleAdded(_moduleId, _moduleAddress);\n }\n\n /**\n * @dev Удалить модуль\n * @param _moduleId ID модуля\n */\n function removeModule(bytes32 _moduleId) external {\n require(balanceOf(msg.sender) > 0, \"Must hold tokens to remove module\");\n require(activeModules[_moduleId], \"Module does not exist\");\n\n delete modules[_moduleId];\n activeModules[_moduleId] = false;\n\n emit ModuleRemoved(_moduleId);\n }\n\n /**\n * @dev Получить информацию о DLE\n */\n function getDLEInfo() external view returns (DLEInfo memory) {\n return dleInfo;\n }\n\n /**\n * @dev Проверить, активен ли модуль\n * @param _moduleId ID модуля\n */\n function isModuleActive(bytes32 _moduleId) external view returns (bool) {\n return activeModules[_moduleId];\n }\n\n /**\n * @dev Получить адрес модуля\n * @param _moduleId ID модуля\n */\n function getModuleAddress(bytes32 _moduleId) external view returns (address) {\n return modules[_moduleId];\n }\n\n /**\n * @dev Проверить, поддерживается ли цепочка\n * @param _chainId ID цепочки\n */\n function isChainSupported(uint256 _chainId) external view returns (bool) {\n return supportedChains[_chainId];\n }\n\n /**\n * @dev Получить текущий ID цепочки\n */\n function getCurrentChainId() external view returns (uint256) {\n return currentChainId;\n }\n\n // События для новых функций\n event SyncCompleted(uint256 proposalId);\n} "}},"settings":{"optimizer":{"enabled":true,"runs":200},"viaIR":true,"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[136],"IERC20Errors":[41],"IERC721Errors":[89]},"id":137,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"138:141:0","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":41,"linearizedBaseContracts":[41],"name":"IERC20Errors","nameLocation":"290:12:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"309:309:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":11,"name":"ERC20InsufficientBalance","nameLocation":"629:24:0","nodeType":"ErrorDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"sender","nameLocation":"662:6:0","nodeType":"VariableDeclaration","scope":11,"src":"654:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"balance","nameLocation":"678:7:0","nodeType":"VariableDeclaration","scope":11,"src":"670:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"needed","nameLocation":"695:6:0","nodeType":"VariableDeclaration","scope":11,"src":"687:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:0"},"src":"623:80:0"},{"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"709:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":16,"name":"ERC20InvalidSender","nameLocation":"872:18:0","nodeType":"ErrorDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"sender","nameLocation":"899:6:0","nodeType":"VariableDeclaration","scope":16,"src":"891:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:0"},"src":"866:41:0"},{"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"913:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":21,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:0","nodeType":"ErrorDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:0","nodeType":"VariableDeclaration","scope":21,"src":"1104:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:0"},"src":"1077:45:0"},{"documentation":{"id":22,"nodeType":"StructuredDocumentation","src":"1128:345:0","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":30,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:0","nodeType":"ErrorDefinition","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"spender","nameLocation":"1519:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1511:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:0","nodeType":"VariableDeclaration","scope":30,"src":"1528:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"needed","nameLocation":"1555:6:0","nodeType":"VariableDeclaration","scope":30,"src":"1547:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:0"},"src":"1478:85:0"},{"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1569:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":35,"name":"ERC20InvalidApprover","nameLocation":"1754:20:0","nodeType":"ErrorDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"approver","nameLocation":"1783:8:0","nodeType":"VariableDeclaration","scope":35,"src":"1775:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:0"},"src":"1748:45:0"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1799:195:0","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":40,"name":"ERC20InvalidSpender","nameLocation":"2005:19:0","nodeType":"ErrorDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"spender","nameLocation":"2033:7:0","nodeType":"VariableDeclaration","scope":40,"src":"2025:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:0"},"src":"1999:43:0"}],"scope":137,"src":"280:1764:0","usedErrors":[11,16,21,30,35,40],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"2046:143:0","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":89,"linearizedBaseContracts":[89],"name":"IERC721Errors","nameLocation":"2200:13:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"2220:219:0","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":47,"name":"ERC721InvalidOwner","nameLocation":"2450:18:0","nodeType":"ErrorDefinition","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"mutability":"mutable","name":"owner","nameLocation":"2477:5:0","nodeType":"VariableDeclaration","scope":47,"src":"2469:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:0"},"src":"2444:40:0"},{"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"2490:132:0","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":52,"name":"ERC721NonexistentToken","nameLocation":"2633:22:0","nodeType":"ErrorDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:0","nodeType":"VariableDeclaration","scope":52,"src":"2656:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":49,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:0"},"src":"2627:46:0"},{"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"2679:289:0","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":61,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:0","nodeType":"ErrorDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"mutability":"mutable","name":"sender","nameLocation":"3008:6:0","nodeType":"VariableDeclaration","scope":61,"src":"3000:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":57,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:0","nodeType":"VariableDeclaration","scope":61,"src":"3016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"owner","nameLocation":"3041:5:0","nodeType":"VariableDeclaration","scope":61,"src":"3033:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:0"},"src":"2973:75:0"},{"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"3054:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":66,"name":"ERC721InvalidSender","nameLocation":"3217:19:0","nodeType":"ErrorDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"sender","nameLocation":"3245:6:0","nodeType":"VariableDeclaration","scope":66,"src":"3237:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:0"},"src":"3211:42:0"},{"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"3259:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":71,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:0","nodeType":"ErrorDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:0","nodeType":"VariableDeclaration","scope":71,"src":"3451:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:0"},"src":"3423:46:0"},{"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3475:247:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":78,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:0","nodeType":"ErrorDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"operator","nameLocation":"3768:8:0","nodeType":"VariableDeclaration","scope":78,"src":"3760:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:0","nodeType":"VariableDeclaration","scope":78,"src":"3778:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:0"},"src":"3727:68:0"},{"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"3801:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":83,"name":"ERC721InvalidApprover","nameLocation":"3986:21:0","nodeType":"ErrorDefinition","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"approver","nameLocation":"4016:8:0","nodeType":"VariableDeclaration","scope":83,"src":"4008:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:0"},"src":"3980:46:0"},{"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"4032:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":88,"name":"ERC721InvalidOperator","nameLocation":"4240:21:0","nodeType":"ErrorDefinition","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"operator","nameLocation":"4270:8:0","nodeType":"VariableDeclaration","scope":88,"src":"4262:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:0"},"src":"4234:46:0"}],"scope":137,"src":"2190:2092:0","usedErrors":[47,52,61,66,71,78,83,88],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"4284:145:0","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":136,"linearizedBaseContracts":[136],"name":"IERC1155Errors","nameLocation":"4440:14:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"4461:361:0","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":101,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:0","nodeType":"ErrorDefinition","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"sender","nameLocation":"4868:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4860:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"balance","nameLocation":"4884:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4876:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"needed","nameLocation":"4901:6:0","nodeType":"VariableDeclaration","scope":101,"src":"4893:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:0","nodeType":"VariableDeclaration","scope":101,"src":"4909:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:0"},"src":"4827:99:0"},{"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"4932:152:0","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":106,"name":"ERC1155InvalidSender","nameLocation":"5095:20:0","nodeType":"ErrorDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"5124:6:0","nodeType":"VariableDeclaration","scope":106,"src":"5116:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:0"},"src":"5089:43:0"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"5138:159:0","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":111,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:0","nodeType":"ErrorDefinition","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:0","nodeType":"VariableDeclaration","scope":111,"src":"5331:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:0"},"src":"5302:47:0"},{"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"5355:256:0","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":118,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:0","nodeType":"ErrorDefinition","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"operator","nameLocation":"5659:8:0","nodeType":"VariableDeclaration","scope":118,"src":"5651:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"owner","nameLocation":"5677:5:0","nodeType":"VariableDeclaration","scope":118,"src":"5669:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:0"},"src":"5616:68:0"},{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"5690:174:0","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":123,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:0","nodeType":"ErrorDefinition","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"approver","nameLocation":"5906:8:0","nodeType":"VariableDeclaration","scope":123,"src":"5898:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:0"},"src":"5869:47:0"},{"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"5922:197:0","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":128,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:0","nodeType":"ErrorDefinition","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"operator","nameLocation":"6161:8:0","nodeType":"VariableDeclaration","scope":128,"src":"6153:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:0"},"src":"6124:47:0"},{"documentation":{"id":129,"nodeType":"StructuredDocumentation","src":"6177:280:0","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":135,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:0","nodeType":"ErrorDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:0","nodeType":"VariableDeclaration","scope":135,"src":"6494:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:0","nodeType":"VariableDeclaration","scope":135,"src":"6513:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:0"},"src":"6462:73:0"}],"scope":137,"src":"4430:2107:0","usedErrors":[101,106,111,118,123,128,135],"usedEvents":[]}],"src":"112:6426:0"},"id":0},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[785],"ERC20":[651],"IERC20":[729],"IERC20Errors":[41],"IERC20Metadata":[755]},"id":652,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":138,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:1"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":140,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":730,"src":"131:36:1","symbolAliases":[{"foreign":{"id":139,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"139:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":142,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":756,"src":"168:63:1","symbolAliases":[{"foreign":{"id":141,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"176:14:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":144,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":786,"src":"232:48:1","symbolAliases":[{"foreign":{"id":143,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"240:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":146,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":652,"sourceUnit":137,"src":"281:65:1","symbolAliases":[{"foreign":{"id":145,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"289:12:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":148,"name":"Context","nameLocations":["1133:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":785,"src":"1133:7:1"},"id":149,"nodeType":"InheritanceSpecifier","src":"1133:7:1"},{"baseName":{"id":150,"name":"IERC20","nameLocations":["1142:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":729,"src":"1142:6:1"},"id":151,"nodeType":"InheritanceSpecifier","src":"1142:6:1"},{"baseName":{"id":152,"name":"IERC20Metadata","nameLocations":["1150:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":755,"src":"1150:14:1"},"id":153,"nodeType":"InheritanceSpecifier","src":"1150:14:1"},{"baseName":{"id":154,"name":"IERC20Errors","nameLocations":["1166:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":41,"src":"1166:12:1"},"id":155,"nodeType":"InheritanceSpecifier","src":"1166:12:1"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"348:757:1","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":651,"linearizedBaseContracts":[651,41,755,729,785],"name":"ERC20","nameLocation":"1124:5:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":159,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:1","nodeType":"VariableDeclaration","scope":651,"src":"1185:53:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":158,"keyName":"account","keyNameLocation":"1201:7:1","keyType":{"id":156,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":165,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:1","nodeType":"VariableDeclaration","scope":651,"src":"1245:83:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":164,"keyName":"account","keyNameLocation":"1261:7:1","keyType":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":163,"keyName":"spender","keyNameLocation":"1288:7:1","keyType":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":167,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:1","nodeType":"VariableDeclaration","scope":651,"src":"1335:28:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":166,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":169,"mutability":"mutable","name":"_name","nameLocation":"1385:5:1","nodeType":"VariableDeclaration","scope":651,"src":"1370:20:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":168,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":171,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:1","nodeType":"VariableDeclaration","scope":651,"src":"1396:22:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":170,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":187,"nodeType":"Block","src":"1657:57:1","statements":[{"expression":{"id":181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":179,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1667:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":180,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"1675:5:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1667:13:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":182,"nodeType":"ExpressionStatement","src":"1667:13:1"},{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":183,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1690:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":184,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"1700:7:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1690:17:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":186,"nodeType":"ExpressionStatement","src":"1690:17:1"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"1425:171:1","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":188,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"name_","nameLocation":"1627:5:1","nodeType":"VariableDeclaration","scope":188,"src":"1613:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":173,"name":"string","nodeType":"ElementaryTypeName","src":"1613:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"symbol_","nameLocation":"1648:7:1","nodeType":"VariableDeclaration","scope":188,"src":"1634:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":175,"name":"string","nodeType":"ElementaryTypeName","src":"1634:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1612:44:1"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[],"src":"1657:0:1"},"scope":651,"src":"1601:113:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[742],"body":{"id":196,"nodeType":"Block","src":"1839:29:1","statements":[{"expression":{"id":194,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"1856:5:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":193,"id":195,"nodeType":"Return","src":"1849:12:1"}]},"documentation":{"id":189,"nodeType":"StructuredDocumentation","src":"1720:54:1","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":197,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1788:4:1","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"1792:2:1"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":197,"src":"1824:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":191,"name":"string","nodeType":"ElementaryTypeName","src":"1824:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1823:15:1"},"scope":651,"src":"1779:89:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[748],"body":{"id":205,"nodeType":"Block","src":"2043:31:1","statements":[{"expression":{"id":203,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"2060:7:1","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":202,"id":204,"nodeType":"Return","src":"2053:14:1"}]},"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"1874:102:1","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":206,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1990:6:1","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"1996:2:1"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":206,"src":"2028:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":200,"name":"string","nodeType":"ElementaryTypeName","src":"2028:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2027:15:1"},"scope":651,"src":"1981:93:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[754],"body":{"id":214,"nodeType":"Block","src":"2763:26:1","statements":[{"expression":{"hexValue":"3138","id":212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2780:2:1","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":211,"id":213,"nodeType":"Return","src":"2773:9:1"}]},"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"2080:622:1","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2716:8:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"2724:2:1"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"2756:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":209,"name":"uint8","nodeType":"ElementaryTypeName","src":"2756:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2755:7:1"},"scope":651,"src":"2707:82:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[678],"body":{"id":223,"nodeType":"Block","src":"2910:36:1","statements":[{"expression":{"id":221,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"2927:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":220,"id":222,"nodeType":"Return","src":"2920:19:1"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"2795:49:1","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":224,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2858:11:1","nodeType":"FunctionDefinition","parameters":{"id":217,"nodeType":"ParameterList","parameters":[],"src":"2869:2:1"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":219,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":224,"src":"2901:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":218,"name":"uint256","nodeType":"ElementaryTypeName","src":"2901:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2900:9:1"},"scope":651,"src":"2849:97:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[686],"body":{"id":236,"nodeType":"Block","src":"3078:42:1","statements":[{"expression":{"baseExpression":{"id":232,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"3095:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":234,"indexExpression":{"id":233,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"3105:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3095:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":231,"id":235,"nodeType":"Return","src":"3088:25:1"}]},"documentation":{"id":225,"nodeType":"StructuredDocumentation","src":"2952:47:1","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":237,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3013:9:1","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"account","nameLocation":"3031:7:1","nodeType":"VariableDeclaration","scope":237,"src":"3023:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":226,"name":"address","nodeType":"ElementaryTypeName","src":"3023:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3022:17:1"},"returnParameters":{"id":231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":237,"src":"3069:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":229,"name":"uint256","nodeType":"ElementaryTypeName","src":"3069:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3068:9:1"},"scope":651,"src":"3004:116:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[696],"body":{"id":260,"nodeType":"Block","src":"3390:103:1","statements":[{"assignments":[248],"declarations":[{"constant":false,"id":248,"mutability":"mutable","name":"owner","nameLocation":"3408:5:1","nodeType":"VariableDeclaration","scope":260,"src":"3400:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":247,"name":"address","nodeType":"ElementaryTypeName","src":"3400:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":251,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":249,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"3416:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3416:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3400:28:1"},{"expression":{"arguments":[{"id":253,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"3448:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":254,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"3455:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"3459:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":252,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"3438:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3438:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"ExpressionStatement","src":"3438:27:1"},{"expression":{"hexValue":"74727565","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3482:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":246,"id":259,"nodeType":"Return","src":"3475:11:1"}]},"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"3126:184:1","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":261,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3324:8:1","nodeType":"FunctionDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"to","nameLocation":"3341:2:1","nodeType":"VariableDeclaration","scope":261,"src":"3333:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":242,"mutability":"mutable","name":"value","nameLocation":"3353:5:1","nodeType":"VariableDeclaration","scope":261,"src":"3345:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":241,"name":"uint256","nodeType":"ElementaryTypeName","src":"3345:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3332:27:1"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":261,"src":"3384:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":244,"name":"bool","nodeType":"ElementaryTypeName","src":"3384:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3383:6:1"},"scope":651,"src":"3315:178:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[706],"body":{"id":277,"nodeType":"Block","src":"3640:51:1","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":271,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165,"src":"3657:11:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":273,"indexExpression":{"id":272,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":264,"src":"3669:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3657:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":275,"indexExpression":{"id":274,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"3676:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3657:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":270,"id":276,"nodeType":"Return","src":"3650:34:1"}]},"documentation":{"id":262,"nodeType":"StructuredDocumentation","src":"3499:47:1","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":278,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3560:9:1","nodeType":"FunctionDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"mutability":"mutable","name":"owner","nameLocation":"3578:5:1","nodeType":"VariableDeclaration","scope":278,"src":"3570:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":263,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":266,"mutability":"mutable","name":"spender","nameLocation":"3593:7:1","nodeType":"VariableDeclaration","scope":278,"src":"3585:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"3585:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:32:1"},"returnParameters":{"id":270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"3631:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":268,"name":"uint256","nodeType":"ElementaryTypeName","src":"3631:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3630:9:1"},"scope":651,"src":"3551:140:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[716],"body":{"id":301,"nodeType":"Block","src":"4077:107:1","statements":[{"assignments":[289],"declarations":[{"constant":false,"id":289,"mutability":"mutable","name":"owner","nameLocation":"4095:5:1","nodeType":"VariableDeclaration","scope":301,"src":"4087:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":288,"name":"address","nodeType":"ElementaryTypeName","src":"4087:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":292,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":290,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"4103:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4087:28:1"},{"expression":{"arguments":[{"id":294,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"4134:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":295,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"4141:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":283,"src":"4150:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":293,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[542,602],"referencedDeclaration":542,"src":"4125:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4125:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":298,"nodeType":"ExpressionStatement","src":"4125:31:1"},{"expression":{"hexValue":"74727565","id":299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4173:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":287,"id":300,"nodeType":"Return","src":"4166:11:1"}]},"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"3697:296:1","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":302,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4007:7:1","nodeType":"FunctionDefinition","parameters":{"id":284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":281,"mutability":"mutable","name":"spender","nameLocation":"4023:7:1","nodeType":"VariableDeclaration","scope":302,"src":"4015:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"4015:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"value","nameLocation":"4040:5:1","nodeType":"VariableDeclaration","scope":302,"src":"4032:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"4032:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4014:32:1"},"returnParameters":{"id":287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":286,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":302,"src":"4071:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":285,"name":"bool","nodeType":"ElementaryTypeName","src":"4071:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4070:6:1"},"scope":651,"src":"3998:186:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[728],"body":{"id":333,"nodeType":"Block","src":"4869:151:1","statements":[{"assignments":[315],"declarations":[{"constant":false,"id":315,"mutability":"mutable","name":"spender","nameLocation":"4887:7:1","nodeType":"VariableDeclaration","scope":333,"src":"4879:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":318,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":316,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"4897:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4897:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4879:30:1"},{"expression":{"arguments":[{"id":320,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"4935:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":321,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"4941:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":322,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"4950:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":319,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"4919:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":324,"nodeType":"ExpressionStatement","src":"4919:37:1"},{"expression":{"arguments":[{"id":326,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"4976:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":327,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"4982:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":328,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"4986:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":325,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"4966:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4966:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":330,"nodeType":"ExpressionStatement","src":"4966:26:1"},{"expression":{"hexValue":"74727565","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5009:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":313,"id":332,"nodeType":"Return","src":"5002:11:1"}]},"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"4190:581:1","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":334,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4785:12:1","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"from","nameLocation":"4806:4:1","nodeType":"VariableDeclaration","scope":334,"src":"4798:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":304,"name":"address","nodeType":"ElementaryTypeName","src":"4798:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":307,"mutability":"mutable","name":"to","nameLocation":"4820:2:1","nodeType":"VariableDeclaration","scope":334,"src":"4812:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":306,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":309,"mutability":"mutable","name":"value","nameLocation":"4832:5:1","nodeType":"VariableDeclaration","scope":334,"src":"4824:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4824:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4797:41:1"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":334,"src":"4863:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":311,"name":"bool","nodeType":"ElementaryTypeName","src":"4863:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4862:6:1"},"scope":651,"src":"4776:244:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":380,"nodeType":"Block","src":"5462:231:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":344,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"5476:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5492:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5484:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":345,"name":"address","nodeType":"ElementaryTypeName","src":"5484:7:1","typeDescriptions":{}}},"id":348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5476:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":358,"nodeType":"IfStatement","src":"5472:86:1","trueBody":{"id":357,"nodeType":"Block","src":"5496:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5544:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5536:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":351,"name":"address","nodeType":"ElementaryTypeName","src":"5536:7:1","typeDescriptions":{}}},"id":354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5536:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":350,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"5517:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5517:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"RevertStatement","src":"5510:37:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":359,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"5571:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5585:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5577:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":360,"name":"address","nodeType":"ElementaryTypeName","src":"5577:7:1","typeDescriptions":{}}},"id":363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5577:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5571:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":373,"nodeType":"IfStatement","src":"5567:86:1","trueBody":{"id":372,"nodeType":"Block","src":"5589:64:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5639:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5631:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"5631:7:1","typeDescriptions":{}}},"id":369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5631:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":365,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"5610:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"RevertStatement","src":"5603:39:1"}]}},{"expression":{"arguments":[{"id":375,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"5670:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":376,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"5676:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"5680:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":374,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"5662:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5662:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":379,"nodeType":"ExpressionStatement","src":"5662:24:1"}]},"documentation":{"id":335,"nodeType":"StructuredDocumentation","src":"5026:362:1","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":381,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5402:9:1","nodeType":"FunctionDefinition","parameters":{"id":342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":337,"mutability":"mutable","name":"from","nameLocation":"5420:4:1","nodeType":"VariableDeclaration","scope":381,"src":"5412:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"5412:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":339,"mutability":"mutable","name":"to","nameLocation":"5434:2:1","nodeType":"VariableDeclaration","scope":381,"src":"5426:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":338,"name":"address","nodeType":"ElementaryTypeName","src":"5426:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":341,"mutability":"mutable","name":"value","nameLocation":"5446:5:1","nodeType":"VariableDeclaration","scope":381,"src":"5438:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":340,"name":"uint256","nodeType":"ElementaryTypeName","src":"5438:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5411:41:1"},"returnParameters":{"id":343,"nodeType":"ParameterList","parameters":[],"src":"5462:0:1"},"scope":651,"src":"5393:300:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":457,"nodeType":"Block","src":"6083:1032:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":391,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6097:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6113:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6105:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"6105:7:1","typeDescriptions":{}}},"id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6105:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6097:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":428,"nodeType":"Block","src":"6271:362:1","statements":[{"assignments":[403],"declarations":[{"constant":false,"id":403,"mutability":"mutable","name":"fromBalance","nameLocation":"6293:11:1","nodeType":"VariableDeclaration","scope":428,"src":"6285:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":402,"name":"uint256","nodeType":"ElementaryTypeName","src":"6285:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":407,"initialValue":{"baseExpression":{"id":404,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"6307:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":406,"indexExpression":{"id":405,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6317:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6307:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6285:37:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":408,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"6340:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6354:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6340:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":418,"nodeType":"IfStatement","src":"6336:115:1","trueBody":{"id":417,"nodeType":"Block","src":"6361:90:1","statements":[{"errorCall":{"arguments":[{"id":412,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6411:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":413,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"6417:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6430:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":411,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"6386:24:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6386:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":416,"nodeType":"RevertStatement","src":"6379:57:1"}]}},{"id":427,"nodeType":"UncheckedBlock","src":"6464:159:1","statements":[{"expression":{"id":425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":419,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"6571:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":421,"indexExpression":{"id":420,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"6581:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6571:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":422,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"6589:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6603:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6589:19:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6571:37:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":426,"nodeType":"ExpressionStatement","src":"6571:37:1"}]}]},"id":429,"nodeType":"IfStatement","src":"6093:540:1","trueBody":{"id":401,"nodeType":"Block","src":"6117:148:1","statements":[{"expression":{"id":399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":397,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"6233:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6249:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6233:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":400,"nodeType":"ExpressionStatement","src":"6233:21:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":430,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"6647:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6661:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6653:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":431,"name":"address","nodeType":"ElementaryTypeName","src":"6653:7:1","typeDescriptions":{}}},"id":434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6653:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6647:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":449,"nodeType":"Block","src":"6862:206:1","statements":[{"id":448,"nodeType":"UncheckedBlock","src":"6876:182:1","statements":[{"expression":{"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":442,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7021:9:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":444,"indexExpression":{"id":443,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"7031:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7021:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7038:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7021:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":447,"nodeType":"ExpressionStatement","src":"7021:22:1"}]}]},"id":450,"nodeType":"IfStatement","src":"6643:425:1","trueBody":{"id":441,"nodeType":"Block","src":"6665:191:1","statements":[{"id":440,"nodeType":"UncheckedBlock","src":"6679:167:1","statements":[{"expression":{"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":436,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"6810:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6826:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6810:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":439,"nodeType":"ExpressionStatement","src":"6810:21:1"}]}]}},{"eventCall":{"arguments":[{"id":452,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"7092:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":453,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"7098:2:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7102:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":451,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"7083:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7083:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":456,"nodeType":"EmitStatement","src":"7078:30:1"}]},"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"5699:304:1","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":458,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"6017:7:1","nodeType":"FunctionDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"from","nameLocation":"6033:4:1","nodeType":"VariableDeclaration","scope":458,"src":"6025:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":383,"name":"address","nodeType":"ElementaryTypeName","src":"6025:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":386,"mutability":"mutable","name":"to","nameLocation":"6047:2:1","nodeType":"VariableDeclaration","scope":458,"src":"6039:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"6039:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"value","nameLocation":"6059:5:1","nodeType":"VariableDeclaration","scope":458,"src":"6051:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"6051:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6024:41:1"},"returnParameters":{"id":390,"nodeType":"ParameterList","parameters":[],"src":"6083:0:1"},"scope":651,"src":"6008:1107:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":490,"nodeType":"Block","src":"7514:152:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":466,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"7528:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7547:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7539:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":467,"name":"address","nodeType":"ElementaryTypeName","src":"7539:7:1","typeDescriptions":{}}},"id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7539:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7528:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":480,"nodeType":"IfStatement","src":"7524:91:1","trueBody":{"id":479,"nodeType":"Block","src":"7551:64:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7601:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7593:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":473,"name":"address","nodeType":"ElementaryTypeName","src":"7593:7:1","typeDescriptions":{}}},"id":476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7593:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":472,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"7572:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7572:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":478,"nodeType":"RevertStatement","src":"7565:39:1"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7640:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7632:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":482,"name":"address","nodeType":"ElementaryTypeName","src":"7632:7:1","typeDescriptions":{}}},"id":485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7632:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":486,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"7644:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"7653:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":481,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"7624:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7624:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":489,"nodeType":"ExpressionStatement","src":"7624:35:1"}]},"documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"7121:332:1","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":491,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7467:5:1","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"account","nameLocation":"7481:7:1","nodeType":"VariableDeclaration","scope":491,"src":"7473:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"7473:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":463,"mutability":"mutable","name":"value","nameLocation":"7498:5:1","nodeType":"VariableDeclaration","scope":491,"src":"7490:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":462,"name":"uint256","nodeType":"ElementaryTypeName","src":"7490:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7472:32:1"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"7514:0:1"},"scope":651,"src":"7458:208:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":523,"nodeType":"Block","src":"8040:150:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":499,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":494,"src":"8054:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8073:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8065:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"8065:7:1","typeDescriptions":{}}},"id":503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8065:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8054:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"8050:89:1","trueBody":{"id":512,"nodeType":"Block","src":"8077:62:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8125:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8117:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"8117:7:1","typeDescriptions":{}}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8117:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":505,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"8098:18:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":511,"nodeType":"RevertStatement","src":"8091:37:1"}]}},{"expression":{"arguments":[{"id":515,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":494,"src":"8156:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8173:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8165:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"8165:7:1","typeDescriptions":{}}},"id":519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8165:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"8177:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":514,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"8148:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8148:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"8148:35:1"}]},"documentation":{"id":492,"nodeType":"StructuredDocumentation","src":"7672:307:1","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":524,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7993:5:1","nodeType":"FunctionDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"mutability":"mutable","name":"account","nameLocation":"8007:7:1","nodeType":"VariableDeclaration","scope":524,"src":"7999:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":493,"name":"address","nodeType":"ElementaryTypeName","src":"7999:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":496,"mutability":"mutable","name":"value","nameLocation":"8024:5:1","nodeType":"VariableDeclaration","scope":524,"src":"8016:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":495,"name":"uint256","nodeType":"ElementaryTypeName","src":"8016:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7998:32:1"},"returnParameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"8040:0:1"},"scope":651,"src":"7984:206:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":541,"nodeType":"Block","src":"8800:54:1","statements":[{"expression":{"arguments":[{"id":535,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":527,"src":"8819:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":536,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"8826:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"8835:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8842:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":534,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[542,602],"referencedDeclaration":602,"src":"8810:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8810:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":540,"nodeType":"ExpressionStatement","src":"8810:37:1"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"8196:525:1","text":" @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":542,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8735:8:1","nodeType":"FunctionDefinition","parameters":{"id":532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":527,"mutability":"mutable","name":"owner","nameLocation":"8752:5:1","nodeType":"VariableDeclaration","scope":542,"src":"8744:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":526,"name":"address","nodeType":"ElementaryTypeName","src":"8744:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":529,"mutability":"mutable","name":"spender","nameLocation":"8767:7:1","nodeType":"VariableDeclaration","scope":542,"src":"8759:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":528,"name":"address","nodeType":"ElementaryTypeName","src":"8759:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":531,"mutability":"mutable","name":"value","nameLocation":"8784:5:1","nodeType":"VariableDeclaration","scope":542,"src":"8776:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":530,"name":"uint256","nodeType":"ElementaryTypeName","src":"8776:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8743:47:1"},"returnParameters":{"id":533,"nodeType":"ParameterList","parameters":[],"src":"8800:0:1"},"scope":651,"src":"8726:128:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":601,"nodeType":"Block","src":"9799:334:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":554,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"9813:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9830:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9822:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":555,"name":"address","nodeType":"ElementaryTypeName","src":"9822:7:1","typeDescriptions":{}}},"id":558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9813:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":568,"nodeType":"IfStatement","src":"9809:89:1","trueBody":{"id":567,"nodeType":"Block","src":"9834:64:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9884:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9876:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"9876:7:1","typeDescriptions":{}}},"id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9876:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":560,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"9855:20:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9855:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"RevertStatement","src":"9848:39:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":569,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"9911:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9930:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9922:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"9922:7:1","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9922:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9911:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":583,"nodeType":"IfStatement","src":"9907:90:1","trueBody":{"id":582,"nodeType":"Block","src":"9934:63:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9983:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9975:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"9975:7:1","typeDescriptions":{}}},"id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9975:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":575,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"9955:19:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9955:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":581,"nodeType":"RevertStatement","src":"9948:38:1"}]}},{"expression":{"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":584,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165,"src":"10006:11:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":587,"indexExpression":{"id":585,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"10018:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10006:18:1","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":588,"indexExpression":{"id":586,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"10025:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10006:27:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"10036:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10006:35:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":591,"nodeType":"ExpressionStatement","src":"10006:35:1"},{"condition":{"id":592,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"10055:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":600,"nodeType":"IfStatement","src":"10051:76:1","trueBody":{"id":599,"nodeType":"Block","src":"10066:61:1","statements":[{"eventCall":{"arguments":[{"id":594,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"10094:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":595,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"10101:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":596,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"10110:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":593,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"10085:8:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10085:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":598,"nodeType":"EmitStatement","src":"10080:36:1"}]}}]},"documentation":{"id":543,"nodeType":"StructuredDocumentation","src":"8860:836:1","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":602,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9710:8:1","nodeType":"FunctionDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"mutability":"mutable","name":"owner","nameLocation":"9727:5:1","nodeType":"VariableDeclaration","scope":602,"src":"9719:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"9719:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":547,"mutability":"mutable","name":"spender","nameLocation":"9742:7:1","nodeType":"VariableDeclaration","scope":602,"src":"9734:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":546,"name":"address","nodeType":"ElementaryTypeName","src":"9734:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":549,"mutability":"mutable","name":"value","nameLocation":"9759:5:1","nodeType":"VariableDeclaration","scope":602,"src":"9751:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":548,"name":"uint256","nodeType":"ElementaryTypeName","src":"9751:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":551,"mutability":"mutable","name":"emitEvent","nameLocation":"9771:9:1","nodeType":"VariableDeclaration","scope":602,"src":"9766:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":550,"name":"bool","nodeType":"ElementaryTypeName","src":"9766:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9718:63:1"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"9799:0:1"},"scope":651,"src":"9701:432:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":649,"nodeType":"Block","src":"10504:387:1","statements":[{"assignments":[613],"declarations":[{"constant":false,"id":613,"mutability":"mutable","name":"currentAllowance","nameLocation":"10522:16:1","nodeType":"VariableDeclaration","scope":649,"src":"10514:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":612,"name":"uint256","nodeType":"ElementaryTypeName","src":"10514:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":618,"initialValue":{"arguments":[{"id":615,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"10551:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":616,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10558:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":614,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"10541:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10541:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10514:52:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":619,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10580:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10604:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":621,"name":"uint256","nodeType":"ElementaryTypeName","src":"10604:7:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":620,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10599:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10599:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10613:3:1","memberName":"max","nodeType":"MemberAccess","src":"10599:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10580:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":648,"nodeType":"IfStatement","src":"10576:309:1","trueBody":{"id":647,"nodeType":"Block","src":"10618:267:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":626,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10636:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"10655:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10636:24:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":636,"nodeType":"IfStatement","src":"10632:130:1","trueBody":{"id":635,"nodeType":"Block","src":"10662:100:1","statements":[{"errorCall":{"arguments":[{"id":630,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10714:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":631,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10723:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"10741:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":629,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"10687:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10687:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":634,"nodeType":"RevertStatement","src":"10680:67:1"}]}},{"id":646,"nodeType":"UncheckedBlock","src":"10775:100:1","statements":[{"expression":{"arguments":[{"id":638,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"10812:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":639,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10819:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":640,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"10828:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"10847:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10828:24:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10854:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":637,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[542,602],"referencedDeclaration":602,"src":"10803:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10803:57:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":645,"nodeType":"ExpressionStatement","src":"10803:57:1"}]}]}}]},"documentation":{"id":603,"nodeType":"StructuredDocumentation","src":"10139:271:1","text":" @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":650,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10424:15:1","nodeType":"FunctionDefinition","parameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"owner","nameLocation":"10448:5:1","nodeType":"VariableDeclaration","scope":650,"src":"10440:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":604,"name":"address","nodeType":"ElementaryTypeName","src":"10440:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"spender","nameLocation":"10463:7:1","nodeType":"VariableDeclaration","scope":650,"src":"10455:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"10455:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"value","nameLocation":"10480:5:1","nodeType":"VariableDeclaration","scope":650,"src":"10472:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":608,"name":"uint256","nodeType":"ElementaryTypeName","src":"10472:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10439:47:1"},"returnParameters":{"id":611,"nodeType":"ParameterList","parameters":[],"src":"10504:0:1"},"scope":651,"src":"10415:476:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":652,"src":"1106:9787:1","usedErrors":[11,16,21,30,35,40],"usedEvents":[663,672]}],"src":"105:10789:1"},"id":1},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[729]},"id":730,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":653,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":654,"nodeType":"StructuredDocumentation","src":"132:71:2","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":729,"linearizedBaseContracts":[729],"name":"IERC20","nameLocation":"214:6:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":655,"nodeType":"StructuredDocumentation","src":"227:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":663,"name":"Transfer","nameLocation":"396:8:2","nodeType":"EventDefinition","parameters":{"id":662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:2","nodeType":"VariableDeclaration","scope":663,"src":"405:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":656,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":659,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:2","nodeType":"VariableDeclaration","scope":663,"src":"427:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":658,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":661,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:2","nodeType":"VariableDeclaration","scope":663,"src":"447:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":660,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:2"},"src":"390:72:2"},{"anonymous":false,"documentation":{"id":664,"nodeType":"StructuredDocumentation","src":"468:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":672,"name":"Approval","nameLocation":"627:8:2","nodeType":"EventDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":666,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:2","nodeType":"VariableDeclaration","scope":672,"src":"636:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":665,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":668,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:2","nodeType":"VariableDeclaration","scope":672,"src":"659:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":667,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":670,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:2","nodeType":"VariableDeclaration","scope":672,"src":"684:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:2"},"src":"621:78:2"},{"documentation":{"id":673,"nodeType":"StructuredDocumentation","src":"705:65:2","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":678,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:2","nodeType":"FunctionDefinition","parameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"795:2:2"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":678,"src":"821:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:2"},"scope":729,"src":"775:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":679,"nodeType":"StructuredDocumentation","src":"836:71:2","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":686,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:2","nodeType":"FunctionDefinition","parameters":{"id":682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":681,"mutability":"mutable","name":"account","nameLocation":"939:7:2","nodeType":"VariableDeclaration","scope":686,"src":"931:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":680,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:2"},"returnParameters":{"id":685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":686,"src":"971:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":683,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:2"},"scope":729,"src":"912:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":687,"nodeType":"StructuredDocumentation","src":"986:213:2","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":696,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:2","nodeType":"FunctionDefinition","parameters":{"id":692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"to","nameLocation":"1230:2:2","nodeType":"VariableDeclaration","scope":696,"src":"1222:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":688,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":691,"mutability":"mutable","name":"value","nameLocation":"1242:5:2","nodeType":"VariableDeclaration","scope":696,"src":"1234:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":690,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:2"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":696,"src":"1267:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":693,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:2"},"scope":729,"src":"1204:69:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":697,"nodeType":"StructuredDocumentation","src":"1279:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":706,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:2","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"owner","nameLocation":"1575:5:2","nodeType":"VariableDeclaration","scope":706,"src":"1567:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":701,"mutability":"mutable","name":"spender","nameLocation":"1590:7:2","nodeType":"VariableDeclaration","scope":706,"src":"1582:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":700,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:2"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":706,"src":"1622:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":703,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:2"},"scope":729,"src":"1548:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":707,"nodeType":"StructuredDocumentation","src":"1637:667:2","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":716,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:2","nodeType":"FunctionDefinition","parameters":{"id":712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":709,"mutability":"mutable","name":"spender","nameLocation":"2334:7:2","nodeType":"VariableDeclaration","scope":716,"src":"2326:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":708,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":711,"mutability":"mutable","name":"value","nameLocation":"2351:5:2","nodeType":"VariableDeclaration","scope":716,"src":"2343:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":710,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:2"},"returnParameters":{"id":715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":716,"src":"2376:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":713,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:2"},"scope":729,"src":"2309:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":717,"nodeType":"StructuredDocumentation","src":"2388:297:2","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":728,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:2","nodeType":"FunctionDefinition","parameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"from","nameLocation":"2720:4:2","nodeType":"VariableDeclaration","scope":728,"src":"2712:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":721,"mutability":"mutable","name":"to","nameLocation":"2734:2:2","nodeType":"VariableDeclaration","scope":728,"src":"2726:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":720,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":723,"mutability":"mutable","name":"value","nameLocation":"2746:5:2","nodeType":"VariableDeclaration","scope":728,"src":"2738:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":722,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:2"},"returnParameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"2771:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":725,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:2"},"scope":729,"src":"2690:87:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":730,"src":"204:2575:2","usedErrors":[],"usedEvents":[663,672]}],"src":"106:2674:2"},"id":2},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[729],"IERC20Metadata":[755]},"id":756,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":731,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":733,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":756,"sourceUnit":730,"src":"151:37:3","symbolAliases":[{"foreign":{"id":732,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"159:6:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":735,"name":"IERC20","nameLocations":["306:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":729,"src":"306:6:3"},"id":736,"nodeType":"InheritanceSpecifier","src":"306:6:3"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":734,"nodeType":"StructuredDocumentation","src":"190:87:3","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":755,"linearizedBaseContracts":[755,729],"name":"IERC20Metadata","nameLocation":"288:14:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":737,"nodeType":"StructuredDocumentation","src":"319:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":742,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:3","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[],"src":"391:2:3"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":742,"src":"417:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":739,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:3"},"scope":755,"src":"378:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"438:56:3","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":748,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:3","nodeType":"FunctionDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[],"src":"514:2:3"},"returnParameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":748,"src":"540:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":745,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:3"},"scope":755,"src":"499:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":749,"nodeType":"StructuredDocumentation","src":"561:65:3","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":754,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:3","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[],"src":"648:2:3"},"returnParameters":{"id":753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":754,"src":"674:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":751,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:3"},"scope":755,"src":"631:50:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":756,"src":"278:405:3","usedErrors":[],"usedEvents":[663,672]}],"src":"125:559:3"},"id":3},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[785]},"id":786,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":757,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:4"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"127:496:4","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":785,"linearizedBaseContracts":[785],"name":"Context","nameLocation":"642:7:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":766,"nodeType":"Block","src":"718:34:4","statements":[{"expression":{"expression":{"id":763,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:4","memberName":"sender","nodeType":"MemberAccess","src":"735:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":762,"id":765,"nodeType":"Return","src":"728:17:4"}]},"id":767,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:4","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"675:2:4"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":767,"src":"709:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":760,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:4"},"scope":785,"src":"656:96:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":775,"nodeType":"Block","src":"825:32:4","statements":[{"expression":{"expression":{"id":772,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:4","memberName":"data","nodeType":"MemberAccess","src":"842:8:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":771,"id":774,"nodeType":"Return","src":"835:15:4"}]},"id":776,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:4","nodeType":"FunctionDefinition","parameters":{"id":768,"nodeType":"ParameterList","parameters":[],"src":"775:2:4"},"returnParameters":{"id":771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":776,"src":"809:14:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":769,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:4"},"scope":785,"src":"758:99:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":783,"nodeType":"Block","src":"935:25:4","statements":[{"expression":{"hexValue":"30","id":781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":780,"id":782,"nodeType":"Return","src":"945:8:4"}]},"id":784,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:4","nodeType":"FunctionDefinition","parameters":{"id":777,"nodeType":"ParameterList","parameters":[],"src":"892:2:4"},"returnParameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":784,"src":"926:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:4"},"scope":785,"src":"863:97:4","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":786,"src":"624:338:4","usedErrors":[],"usedEvents":[]}],"src":"101:862:4"},"id":4},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[854]},"id":855,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":787,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:5"},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":788,"nodeType":"StructuredDocumentation","src":"135:894:5","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":854,"linearizedBaseContracts":[854],"name":"ReentrancyGuard","nameLocation":"1048:15:5","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":791,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1843:11:5","nodeType":"VariableDeclaration","scope":854,"src":"1818:40:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":789,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1857:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":794,"mutability":"constant","name":"ENTERED","nameLocation":"1889:7:5","nodeType":"VariableDeclaration","scope":854,"src":"1864:36:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":792,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1899:1:5","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":796,"mutability":"mutable","name":"_status","nameLocation":"1923:7:5","nodeType":"VariableDeclaration","scope":854,"src":"1907:23:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1907:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"documentation":{"id":797,"nodeType":"StructuredDocumentation","src":"1937:52:5","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":799,"name":"ReentrancyGuardReentrantCall","nameLocation":"2000:28:5","nodeType":"ErrorDefinition","parameters":{"id":798,"nodeType":"ParameterList","parameters":[],"src":"2028:2:5"},"src":"1994:37:5"},{"body":{"id":806,"nodeType":"Block","src":"2051:38:5","statements":[{"expression":{"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":802,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2061:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":803,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"2071:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2061:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":805,"nodeType":"ExpressionStatement","src":"2061:21:5"}]},"id":807,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":800,"nodeType":"ParameterList","parameters":[],"src":"2048:2:5"},"returnParameters":{"id":801,"nodeType":"ParameterList","parameters":[],"src":"2051:0:5"},"scope":854,"src":"2037:52:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":817,"nodeType":"Block","src":"2490:79:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":810,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":834,"src":"2500:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":812,"nodeType":"ExpressionStatement","src":"2500:21:5"},{"id":813,"nodeType":"PlaceholderStatement","src":"2531:1:5"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":814,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"2542:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2542:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":816,"nodeType":"ExpressionStatement","src":"2542:20:5"}]},"documentation":{"id":808,"nodeType":"StructuredDocumentation","src":"2095:366:5","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":818,"name":"nonReentrant","nameLocation":"2475:12:5","nodeType":"ModifierDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[],"src":"2487:2:5"},"src":"2466:103:5","virtual":false,"visibility":"internal"},{"body":{"id":833,"nodeType":"Block","src":"2614:268:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":821,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2702:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":822,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"2713:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2702:18:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":828,"nodeType":"IfStatement","src":"2698:86:5","trueBody":{"id":827,"nodeType":"Block","src":"2722:62:5","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":824,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"2743:28:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2743:30:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":826,"nodeType":"RevertStatement","src":"2736:37:5"}]}},{"expression":{"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":829,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"2858:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":830,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"2868:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2858:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":832,"nodeType":"ExpressionStatement","src":"2858:17:5"}]},"id":834,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"2584:19:5","nodeType":"FunctionDefinition","parameters":{"id":819,"nodeType":"ParameterList","parameters":[],"src":"2603:2:5"},"returnParameters":{"id":820,"nodeType":"ParameterList","parameters":[],"src":"2614:0:5"},"scope":854,"src":"2575:307:5","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":841,"nodeType":"Block","src":"2926:170:5","statements":[{"expression":{"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":837,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3068:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":838,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"3078:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3068:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":840,"nodeType":"ExpressionStatement","src":"3068:21:5"}]},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"2897:18:5","nodeType":"FunctionDefinition","parameters":{"id":835,"nodeType":"ParameterList","parameters":[],"src":"2915:2:5"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[],"src":"2926:0:5"},"scope":854,"src":"2888:208:5","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":852,"nodeType":"Block","src":"3339:42:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":848,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3356:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":849,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"3367:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3356:18:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":847,"id":851,"nodeType":"Return","src":"3349:25:5"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"3102:168:5","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":853,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"3284:23:5","nodeType":"FunctionDefinition","parameters":{"id":844,"nodeType":"ParameterList","parameters":[],"src":"3307:2:5"},"returnParameters":{"id":847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":853,"src":"3333:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":845,"name":"bool","nodeType":"ElementaryTypeName","src":"3333:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3332:6:5"},"scope":854,"src":"3275:106:5","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":855,"src":"1030:2353:5","usedErrors":[799],"usedEvents":[]}],"src":"109:3275:5"},"id":5},"contracts/DLE.sol":{"ast":{"absolutePath":"contracts/DLE.sol","exportedSymbols":{"Context":[785],"DLE":[2613],"ERC20":[651],"IERC20":[729],"IERC20Errors":[41],"IERC20Metadata":[755],"ReentrancyGuard":[854]},"id":2614,"license":"PROPRIETARY AND MIT","nodeType":"SourceUnit","nodes":[{"id":856,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"423:24:6"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":857,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2614,"sourceUnit":652,"src":"449:55:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","id":858,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2614,"sourceUnit":855,"src":"505:59:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":860,"name":"ERC20","nameLocations":["766:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"766:5:6"},"id":861,"nodeType":"InheritanceSpecifier","src":"766:5:6"},{"baseName":{"id":862,"name":"ReentrancyGuard","nameLocations":["773:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"773:15:6"},"id":863,"nodeType":"InheritanceSpecifier","src":"773:15:6"}],"canonicalName":"DLE","contractDependencies":[],"contractKind":"contract","documentation":{"id":859,"nodeType":"StructuredDocumentation","src":"566:183:6","text":" @title DLE (Digital Legal Entity)\n @dev Основной контракт DLE с модульной архитектурой и мульти-чейн поддержкой"},"fullyImplemented":true,"id":2613,"linearizedBaseContracts":[2613,854,651,41,755,729,785],"name":"DLE","nameLocation":"759:3:6","nodeType":"ContractDefinition","nodes":[{"canonicalName":"DLE.DLEInfo","id":885,"members":[{"constant":false,"id":865,"mutability":"mutable","name":"name","nameLocation":"827:4:6","nodeType":"VariableDeclaration","scope":885,"src":"820:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":864,"name":"string","nodeType":"ElementaryTypeName","src":"820:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"symbol","nameLocation":"848:6:6","nodeType":"VariableDeclaration","scope":885,"src":"841:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":866,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":869,"mutability":"mutable","name":"location","nameLocation":"871:8:6","nodeType":"VariableDeclaration","scope":885,"src":"864:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":868,"name":"string","nodeType":"ElementaryTypeName","src":"864:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"coordinates","nameLocation":"896:11:6","nodeType":"VariableDeclaration","scope":885,"src":"889:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"889:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"jurisdiction","nameLocation":"925:12:6","nodeType":"VariableDeclaration","scope":885,"src":"917:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":872,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":875,"mutability":"mutable","name":"oktmo","nameLocation":"955:5:6","nodeType":"VariableDeclaration","scope":885,"src":"947:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"947:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":878,"mutability":"mutable","name":"okvedCodes","nameLocation":"979:10:6","nodeType":"VariableDeclaration","scope":885,"src":"970:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":876,"name":"string","nodeType":"ElementaryTypeName","src":"970:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":877,"nodeType":"ArrayTypeName","src":"970:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":880,"mutability":"mutable","name":"kpp","nameLocation":"1007:3:6","nodeType":"VariableDeclaration","scope":885,"src":"999:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":879,"name":"uint256","nodeType":"ElementaryTypeName","src":"999:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":882,"mutability":"mutable","name":"creationTimestamp","nameLocation":"1028:17:6","nodeType":"VariableDeclaration","scope":885,"src":"1020:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":884,"mutability":"mutable","name":"isActive","nameLocation":"1060:8:6","nodeType":"VariableDeclaration","scope":885,"src":"1055:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":883,"name":"bool","nodeType":"ElementaryTypeName","src":"1055:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"DLEInfo","nameLocation":"802:7:6","nodeType":"StructDefinition","scope":2613,"src":"795:280:6","visibility":"public"},{"canonicalName":"DLE.DLEConfig","id":914,"members":[{"constant":false,"id":887,"mutability":"mutable","name":"name","nameLocation":"1115:4:6","nodeType":"VariableDeclaration","scope":914,"src":"1108:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":886,"name":"string","nodeType":"ElementaryTypeName","src":"1108:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":889,"mutability":"mutable","name":"symbol","nameLocation":"1136:6:6","nodeType":"VariableDeclaration","scope":914,"src":"1129:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":888,"name":"string","nodeType":"ElementaryTypeName","src":"1129:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"location","nameLocation":"1159:8:6","nodeType":"VariableDeclaration","scope":914,"src":"1152:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":890,"name":"string","nodeType":"ElementaryTypeName","src":"1152:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"coordinates","nameLocation":"1184:11:6","nodeType":"VariableDeclaration","scope":914,"src":"1177:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":892,"name":"string","nodeType":"ElementaryTypeName","src":"1177:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"jurisdiction","nameLocation":"1213:12:6","nodeType":"VariableDeclaration","scope":914,"src":"1205:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":897,"mutability":"mutable","name":"oktmo","nameLocation":"1243:5:6","nodeType":"VariableDeclaration","scope":914,"src":"1235:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":896,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"okvedCodes","nameLocation":"1267:10:6","nodeType":"VariableDeclaration","scope":914,"src":"1258:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":898,"name":"string","nodeType":"ElementaryTypeName","src":"1258:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":899,"nodeType":"ArrayTypeName","src":"1258:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"kpp","nameLocation":"1295:3:6","nodeType":"VariableDeclaration","scope":914,"src":"1287:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1287:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"quorumPercentage","nameLocation":"1316:16:6","nodeType":"VariableDeclaration","scope":914,"src":"1308:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1308:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"initialPartners","nameLocation":"1352:15:6","nodeType":"VariableDeclaration","scope":914,"src":"1342:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":905,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":906,"nodeType":"ArrayTypeName","src":"1342:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":910,"mutability":"mutable","name":"initialAmounts","nameLocation":"1387:14:6","nodeType":"VariableDeclaration","scope":914,"src":"1377:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":908,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":909,"nodeType":"ArrayTypeName","src":"1377:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":913,"mutability":"mutable","name":"supportedChainIds","nameLocation":"1421:17:6","nodeType":"VariableDeclaration","scope":914,"src":"1411:27:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":911,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"nodeType":"ArrayTypeName","src":"1411:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"DLEConfig","nameLocation":"1088:9:6","nodeType":"StructDefinition","scope":2613,"src":"1081:411:6","visibility":"public"},{"canonicalName":"DLE.Proposal","id":939,"members":[{"constant":false,"id":916,"mutability":"mutable","name":"id","nameLocation":"1532:2:6","nodeType":"VariableDeclaration","scope":939,"src":"1524:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":915,"name":"uint256","nodeType":"ElementaryTypeName","src":"1524:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":918,"mutability":"mutable","name":"description","nameLocation":"1551:11:6","nodeType":"VariableDeclaration","scope":939,"src":"1544:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":917,"name":"string","nodeType":"ElementaryTypeName","src":"1544:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":920,"mutability":"mutable","name":"forVotes","nameLocation":"1580:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1572:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":919,"name":"uint256","nodeType":"ElementaryTypeName","src":"1572:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"againstVotes","nameLocation":"1606:12:6","nodeType":"VariableDeclaration","scope":939,"src":"1598:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1598:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"executed","nameLocation":"1633:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1628:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":923,"name":"bool","nodeType":"ElementaryTypeName","src":"1628:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":926,"mutability":"mutable","name":"deadline","nameLocation":"1659:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1651:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1651:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":928,"mutability":"mutable","name":"initiator","nameLocation":"1685:9:6","nodeType":"VariableDeclaration","scope":939,"src":"1677:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":927,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":930,"mutability":"mutable","name":"operation","nameLocation":"1710:9:6","nodeType":"VariableDeclaration","scope":939,"src":"1704:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":929,"name":"bytes","nodeType":"ElementaryTypeName","src":"1704:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":934,"mutability":"mutable","name":"hasVoted","nameLocation":"1802:8:6","nodeType":"VariableDeclaration","scope":939,"src":"1777:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":933,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":931,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1777:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":932,"name":"bool","nodeType":"ElementaryTypeName","src":"1796:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":938,"mutability":"mutable","name":"chainVoteSynced","nameLocation":"1845:15:6","nodeType":"VariableDeclaration","scope":939,"src":"1820:40:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":937,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":935,"name":"uint256","nodeType":"ElementaryTypeName","src":"1828:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1820:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":936,"name":"bool","nodeType":"ElementaryTypeName","src":"1839:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"Proposal","nameLocation":"1505:8:6","nodeType":"StructDefinition","scope":2613,"src":"1498:444:6","visibility":"public"},{"canonicalName":"DLE.MultiSigOperation","id":960,"members":[{"constant":false,"id":941,"mutability":"mutable","name":"operationHash","nameLocation":"1991:13:6","nodeType":"VariableDeclaration","scope":960,"src":"1983:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":940,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1983:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":943,"mutability":"mutable","name":"forSignatures","nameLocation":"2022:13:6","nodeType":"VariableDeclaration","scope":960,"src":"2014:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":945,"mutability":"mutable","name":"againstSignatures","nameLocation":"2053:17:6","nodeType":"VariableDeclaration","scope":960,"src":"2045:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":944,"name":"uint256","nodeType":"ElementaryTypeName","src":"2045:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":947,"mutability":"mutable","name":"executed","nameLocation":"2085:8:6","nodeType":"VariableDeclaration","scope":960,"src":"2080:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":946,"name":"bool","nodeType":"ElementaryTypeName","src":"2080:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"deadline","nameLocation":"2111:8:6","nodeType":"VariableDeclaration","scope":960,"src":"2103:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":951,"mutability":"mutable","name":"initiator","nameLocation":"2137:9:6","nodeType":"VariableDeclaration","scope":960,"src":"2129:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"2129:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":955,"mutability":"mutable","name":"hasSigned","nameLocation":"2181:9:6","nodeType":"VariableDeclaration","scope":960,"src":"2156:34:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":954,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":952,"name":"address","nodeType":"ElementaryTypeName","src":"2164:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2156:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":953,"name":"bool","nodeType":"ElementaryTypeName","src":"2175:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"chainSignSynced","nameLocation":"2225:15:6","nodeType":"VariableDeclaration","scope":960,"src":"2200:40:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":958,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2200:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":957,"name":"bool","nodeType":"ElementaryTypeName","src":"2219:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"MultiSigOperation","nameLocation":"1955:17:6","nodeType":"StructDefinition","scope":2613,"src":"1948:376:6","visibility":"public"},{"constant":false,"functionSelector":"f2c26a47","id":963,"mutability":"mutable","name":"dleInfo","nameLocation":"2388:7:6","nodeType":"VariableDeclaration","scope":2613,"src":"2373:22:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo"},"typeName":{"id":962,"nodeType":"UserDefinedTypeName","pathNode":{"id":961,"name":"DLEInfo","nameLocations":["2373:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":885,"src":"2373:7:6"},"referencedDeclaration":885,"src":"2373:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage_ptr","typeString":"struct DLE.DLEInfo"}},"visibility":"public"},{"constant":false,"functionSelector":"4fa76ec9","id":965,"mutability":"mutable","name":"quorumPercentage","nameLocation":"2416:16:6","nodeType":"VariableDeclaration","scope":2613,"src":"2401:31:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2401:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"0c0512e9","id":967,"mutability":"mutable","name":"proposalCounter","nameLocation":"2453:15:6","nodeType":"VariableDeclaration","scope":2613,"src":"2438:30:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2438:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"8c7b04c9","id":969,"mutability":"mutable","name":"multiSigCounter","nameLocation":"2489:15:6","nodeType":"VariableDeclaration","scope":2613,"src":"2474:30:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"2474:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"6cbadbfa","id":971,"mutability":"mutable","name":"currentChainId","nameLocation":"2525:14:6","nodeType":"VariableDeclaration","scope":2613,"src":"2510:29:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2510:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"b0b6cc1a","id":975,"mutability":"mutable","name":"modules","nameLocation":"2601:7:6","nodeType":"VariableDeclaration","scope":2613,"src":"2566:42:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":974,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":972,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2574:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2566:27:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":973,"name":"address","nodeType":"ElementaryTypeName","src":"2585:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"constant":false,"functionSelector":"b3fe8bcb","id":979,"mutability":"mutable","name":"activeModules","nameLocation":"2646:13:6","nodeType":"VariableDeclaration","scope":2613,"src":"2614:45:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":978,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2622:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2614:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":977,"name":"bool","nodeType":"ElementaryTypeName","src":"2633:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"013cf08b","id":984,"mutability":"mutable","name":"proposals","nameLocation":"2762:9:6","nodeType":"VariableDeclaration","scope":2613,"src":"2726:45:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal)"},"typeName":{"id":983,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":980,"name":"uint256","nodeType":"ElementaryTypeName","src":"2734:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2726:28:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":982,"nodeType":"UserDefinedTypeName","pathNode":{"id":981,"name":"Proposal","nameLocations":["2745:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"2745:8:6"},"referencedDeclaration":939,"src":"2745:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}}},"visibility":"public"},{"constant":false,"functionSelector":"c51cab3a","id":989,"mutability":"mutable","name":"multiSigOperations","nameLocation":"2822:18:6","nodeType":"VariableDeclaration","scope":2613,"src":"2777:63:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation)"},"typeName":{"id":988,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":985,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2777:37:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":987,"nodeType":"UserDefinedTypeName","pathNode":{"id":986,"name":"MultiSigOperation","nameLocations":["2796:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"2796:17:6"},"referencedDeclaration":960,"src":"2796:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}}},"visibility":"public"},{"constant":false,"functionSelector":"548d496f","id":993,"mutability":"mutable","name":"supportedChains","nameLocation":"2908:15:6","nodeType":"VariableDeclaration","scope":2613,"src":"2876:47:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":992,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":990,"name":"uint256","nodeType":"ElementaryTypeName","src":"2884:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2876:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":991,"name":"bool","nodeType":"ElementaryTypeName","src":"2895:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"3b60288a","id":997,"mutability":"mutable","name":"executedProposals","nameLocation":"2961:17:6","nodeType":"VariableDeclaration","scope":2613,"src":"2929:49:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":996,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":994,"name":"uint256","nodeType":"ElementaryTypeName","src":"2937:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2929:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":995,"name":"bool","nodeType":"ElementaryTypeName","src":"2948:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"constant":false,"functionSelector":"af89d2c4","id":1001,"mutability":"mutable","name":"executedMultiSig","nameLocation":"3092:16:6","nodeType":"VariableDeclaration","scope":2613,"src":"3060:48:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":1000,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":998,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3060:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":999,"name":"bool","nodeType":"ElementaryTypeName","src":"3079:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"anonymous":false,"eventSelector":"11b248463a1620b36a975da8f250009f56fb5dd0e9d5027a90a834d0ee84d6f6","id":1025,"name":"DLEInitialized","nameLocation":"3225:14:6","nodeType":"EventDefinition","parameters":{"id":1024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1003,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"3256:4:6","nodeType":"VariableDeclaration","scope":1025,"src":"3249:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1002,"name":"string","nodeType":"ElementaryTypeName","src":"3249:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1005,"indexed":false,"mutability":"mutable","name":"symbol","nameLocation":"3277:6:6","nodeType":"VariableDeclaration","scope":1025,"src":"3270:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1004,"name":"string","nodeType":"ElementaryTypeName","src":"3270:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1007,"indexed":false,"mutability":"mutable","name":"location","nameLocation":"3300:8:6","nodeType":"VariableDeclaration","scope":1025,"src":"3293:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1006,"name":"string","nodeType":"ElementaryTypeName","src":"3293:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1009,"indexed":false,"mutability":"mutable","name":"coordinates","nameLocation":"3325:11:6","nodeType":"VariableDeclaration","scope":1025,"src":"3318:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1008,"name":"string","nodeType":"ElementaryTypeName","src":"3318:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1011,"indexed":false,"mutability":"mutable","name":"jurisdiction","nameLocation":"3354:12:6","nodeType":"VariableDeclaration","scope":1025,"src":"3346:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1010,"name":"uint256","nodeType":"ElementaryTypeName","src":"3346:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1013,"indexed":false,"mutability":"mutable","name":"oktmo","nameLocation":"3384:5:6","nodeType":"VariableDeclaration","scope":1025,"src":"3376:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1012,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1016,"indexed":false,"mutability":"mutable","name":"okvedCodes","nameLocation":"3408:10:6","nodeType":"VariableDeclaration","scope":1025,"src":"3399:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":1014,"name":"string","nodeType":"ElementaryTypeName","src":"3399:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":1015,"nodeType":"ArrayTypeName","src":"3399:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":1018,"indexed":false,"mutability":"mutable","name":"kpp","nameLocation":"3436:3:6","nodeType":"VariableDeclaration","scope":1025,"src":"3428:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3428:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1020,"indexed":false,"mutability":"mutable","name":"tokenAddress","nameLocation":"3457:12:6","nodeType":"VariableDeclaration","scope":1025,"src":"3449:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1019,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1023,"indexed":false,"mutability":"mutable","name":"supportedChainIds","nameLocation":"3489:17:6","nodeType":"VariableDeclaration","scope":1025,"src":"3479:27:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3479:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1022,"nodeType":"ArrayTypeName","src":"3479:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3239:273:6"},"src":"3219:294:6"},{"anonymous":false,"eventSelector":"f9e7aa11bcdcbb8ac33b5dba92fca799ef091e54c29270822065501d8edea1a5","id":1033,"name":"InitialTokensDistributed","nameLocation":"3524:24:6","nodeType":"EventDefinition","parameters":{"id":1032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1028,"indexed":false,"mutability":"mutable","name":"partners","nameLocation":"3559:8:6","nodeType":"VariableDeclaration","scope":1033,"src":"3549:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1026,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1027,"nodeType":"ArrayTypeName","src":"3549:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1031,"indexed":false,"mutability":"mutable","name":"amounts","nameLocation":"3579:7:6","nodeType":"VariableDeclaration","scope":1033,"src":"3569:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"3569:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1030,"nodeType":"ArrayTypeName","src":"3569:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3548:39:6"},"src":"3518:70:6"},{"anonymous":false,"eventSelector":"7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63","id":1041,"name":"ProposalCreated","nameLocation":"3599:15:6","nodeType":"EventDefinition","parameters":{"id":1040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"3623:10:6","nodeType":"VariableDeclaration","scope":1041,"src":"3615:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1034,"name":"uint256","nodeType":"ElementaryTypeName","src":"3615:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1037,"indexed":false,"mutability":"mutable","name":"initiator","nameLocation":"3643:9:6","nodeType":"VariableDeclaration","scope":1041,"src":"3635:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1036,"name":"address","nodeType":"ElementaryTypeName","src":"3635:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1039,"indexed":false,"mutability":"mutable","name":"description","nameLocation":"3661:11:6","nodeType":"VariableDeclaration","scope":1041,"src":"3654:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1038,"name":"string","nodeType":"ElementaryTypeName","src":"3654:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3614:59:6"},"src":"3593:81:6"},{"anonymous":false,"eventSelector":"78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a9","id":1051,"name":"ProposalVoted","nameLocation":"3685:13:6","nodeType":"EventDefinition","parameters":{"id":1050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1043,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"3707:10:6","nodeType":"VariableDeclaration","scope":1051,"src":"3699:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"3699:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1045,"indexed":false,"mutability":"mutable","name":"voter","nameLocation":"3727:5:6","nodeType":"VariableDeclaration","scope":1051,"src":"3719:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1044,"name":"address","nodeType":"ElementaryTypeName","src":"3719:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1047,"indexed":false,"mutability":"mutable","name":"support","nameLocation":"3739:7:6","nodeType":"VariableDeclaration","scope":1051,"src":"3734:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1046,"name":"bool","nodeType":"ElementaryTypeName","src":"3734:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1049,"indexed":false,"mutability":"mutable","name":"votingPower","nameLocation":"3756:11:6","nodeType":"VariableDeclaration","scope":1051,"src":"3748:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"3748:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3698:70:6"},"src":"3679:90:6"},{"anonymous":false,"eventSelector":"badbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2","id":1057,"name":"ProposalExecuted","nameLocation":"3780:16:6","nodeType":"EventDefinition","parameters":{"id":1056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1053,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"3805:10:6","nodeType":"VariableDeclaration","scope":1057,"src":"3797:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1052,"name":"uint256","nodeType":"ElementaryTypeName","src":"3797:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1055,"indexed":false,"mutability":"mutable","name":"operation","nameLocation":"3823:9:6","nodeType":"VariableDeclaration","scope":1057,"src":"3817:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1054,"name":"bytes","nodeType":"ElementaryTypeName","src":"3817:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:37:6"},"src":"3774:60:6"},{"anonymous":false,"eventSelector":"8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f0","id":1065,"name":"MultiSigOperationCreated","nameLocation":"3845:24:6","nodeType":"EventDefinition","parameters":{"id":1064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1059,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"3878:11:6","nodeType":"VariableDeclaration","scope":1065,"src":"3870:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1058,"name":"uint256","nodeType":"ElementaryTypeName","src":"3870:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1061,"indexed":false,"mutability":"mutable","name":"initiator","nameLocation":"3899:9:6","nodeType":"VariableDeclaration","scope":1065,"src":"3891:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1060,"name":"address","nodeType":"ElementaryTypeName","src":"3891:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1063,"indexed":false,"mutability":"mutable","name":"operationHash","nameLocation":"3918:13:6","nodeType":"VariableDeclaration","scope":1065,"src":"3910:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3910:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3869:63:6"},"src":"3839:94:6"},{"anonymous":false,"eventSelector":"78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc","id":1075,"name":"MultiSigSigned","nameLocation":"3944:14:6","nodeType":"EventDefinition","parameters":{"id":1074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1067,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"3967:11:6","nodeType":"VariableDeclaration","scope":1075,"src":"3959:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1066,"name":"uint256","nodeType":"ElementaryTypeName","src":"3959:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1069,"indexed":false,"mutability":"mutable","name":"signer","nameLocation":"3988:6:6","nodeType":"VariableDeclaration","scope":1075,"src":"3980:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1068,"name":"address","nodeType":"ElementaryTypeName","src":"3980:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1071,"indexed":false,"mutability":"mutable","name":"support","nameLocation":"4001:7:6","nodeType":"VariableDeclaration","scope":1075,"src":"3996:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1070,"name":"bool","nodeType":"ElementaryTypeName","src":"3996:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1073,"indexed":false,"mutability":"mutable","name":"signaturePower","nameLocation":"4018:14:6","nodeType":"VariableDeclaration","scope":1075,"src":"4010:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1072,"name":"uint256","nodeType":"ElementaryTypeName","src":"4010:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3958:75:6"},"src":"3938:96:6"},{"anonymous":false,"eventSelector":"64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5","id":1081,"name":"MultiSigExecuted","nameLocation":"4045:16:6","nodeType":"EventDefinition","parameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1077,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"4070:11:6","nodeType":"VariableDeclaration","scope":1081,"src":"4062:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1076,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1079,"indexed":false,"mutability":"mutable","name":"operationHash","nameLocation":"4091:13:6","nodeType":"VariableDeclaration","scope":1081,"src":"4083:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4083:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4061:44:6"},"src":"4039:67:6"},{"anonymous":false,"eventSelector":"f14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d72722719","id":1087,"name":"ModuleAdded","nameLocation":"4117:11:6","nodeType":"EventDefinition","parameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1083,"indexed":false,"mutability":"mutable","name":"moduleId","nameLocation":"4137:8:6","nodeType":"VariableDeclaration","scope":1087,"src":"4129:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4129:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1085,"indexed":false,"mutability":"mutable","name":"moduleAddress","nameLocation":"4155:13:6","nodeType":"VariableDeclaration","scope":1087,"src":"4147:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1084,"name":"address","nodeType":"ElementaryTypeName","src":"4147:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4128:41:6"},"src":"4111:59:6"},{"anonymous":false,"eventSelector":"4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba853","id":1091,"name":"ModuleRemoved","nameLocation":"4181:13:6","nodeType":"EventDefinition","parameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"indexed":false,"mutability":"mutable","name":"moduleId","nameLocation":"4203:8:6","nodeType":"VariableDeclaration","scope":1091,"src":"4195:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4195:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4194:18:6"},"src":"4175:38:6"},{"anonymous":false,"eventSelector":"42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313","id":1099,"name":"CrossChainExecutionSync","nameLocation":"4224:23:6","nodeType":"EventDefinition","parameters":{"id":1098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1093,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"4256:10:6","nodeType":"VariableDeclaration","scope":1099,"src":"4248:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1092,"name":"uint256","nodeType":"ElementaryTypeName","src":"4248:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1095,"indexed":false,"mutability":"mutable","name":"fromChainId","nameLocation":"4276:11:6","nodeType":"VariableDeclaration","scope":1099,"src":"4268:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1094,"name":"uint256","nodeType":"ElementaryTypeName","src":"4268:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1097,"indexed":false,"mutability":"mutable","name":"toChainId","nameLocation":"4297:9:6","nodeType":"VariableDeclaration","scope":1099,"src":"4289:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1096,"name":"uint256","nodeType":"ElementaryTypeName","src":"4289:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4247:60:6"},"src":"4218:90:6"},{"anonymous":false,"eventSelector":"ca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb","id":1107,"name":"CrossChainVoteSync","nameLocation":"4319:18:6","nodeType":"EventDefinition","parameters":{"id":1106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"4346:10:6","nodeType":"VariableDeclaration","scope":1107,"src":"4338:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"4338:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1103,"indexed":false,"mutability":"mutable","name":"fromChainId","nameLocation":"4366:11:6","nodeType":"VariableDeclaration","scope":1107,"src":"4358:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"4358:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1105,"indexed":false,"mutability":"mutable","name":"toChainId","nameLocation":"4387:9:6","nodeType":"VariableDeclaration","scope":1107,"src":"4379:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4337:60:6"},"src":"4313:85:6"},{"anonymous":false,"eventSelector":"e379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe5","id":1115,"name":"CrossChainMultiSigSync","nameLocation":"4409:22:6","nodeType":"EventDefinition","parameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1109,"indexed":false,"mutability":"mutable","name":"operationId","nameLocation":"4440:11:6","nodeType":"VariableDeclaration","scope":1115,"src":"4432:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1108,"name":"uint256","nodeType":"ElementaryTypeName","src":"4432:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1111,"indexed":false,"mutability":"mutable","name":"fromChainId","nameLocation":"4461:11:6","nodeType":"VariableDeclaration","scope":1115,"src":"4453:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1110,"name":"uint256","nodeType":"ElementaryTypeName","src":"4453:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1113,"indexed":false,"mutability":"mutable","name":"toChainId","nameLocation":"4482:9:6","nodeType":"VariableDeclaration","scope":1115,"src":"4474:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1112,"name":"uint256","nodeType":"ElementaryTypeName","src":"4474:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4431:61:6"},"src":"4403:90:6"},{"body":{"id":1285,"nodeType":"Block","src":"4617:1753:6","statements":[{"expression":{"id":1151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1129,"name":"dleInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"4627:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1131,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4665:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4672:4:6","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":887,"src":"4665:11:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1133,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4698:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4705:6:6","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":889,"src":"4698:13:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1135,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4735:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4742:8:6","memberName":"location","nodeType":"MemberAccess","referencedDeclaration":891,"src":"4735:15:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1137,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4777:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4784:11:6","memberName":"coordinates","nodeType":"MemberAccess","referencedDeclaration":893,"src":"4777:18:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1139,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4823:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4830:12:6","memberName":"jurisdiction","nodeType":"MemberAccess","referencedDeclaration":895,"src":"4823:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1141,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4863:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4870:5:6","memberName":"oktmo","nodeType":"MemberAccess","referencedDeclaration":897,"src":"4863:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1143,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4901:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4908:10:6","memberName":"okvedCodes","nodeType":"MemberAccess","referencedDeclaration":900,"src":"4901:17:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"expression":{"id":1145,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4937:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4944:3:6","memberName":"kpp","nodeType":"MemberAccess","referencedDeclaration":902,"src":"4937:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1147,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4980:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4986:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"4980:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5019:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1130,"name":"DLEInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4637:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DLEInfo_$885_storage_ptr_$","typeString":"type(struct DLE.DLEInfo storage pointer)"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["4659:4:6","4690:6:6","4725:8:6","4764:11:6","4809:12:6","4856:5:6","4889:10:6","4932:3:6","4961:17:6","5009:8:6"],"names":["name","symbol","location","coordinates","jurisdiction","oktmo","okvedCodes","kpp","creationTimestamp","isActive"],"nodeType":"FunctionCall","src":"4637:397:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_memory_ptr","typeString":"struct DLE.DLEInfo memory"}},"src":"4627:407:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo storage ref"}},"id":1152,"nodeType":"ExpressionStatement","src":"4627:407:6"},{"expression":{"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1153,"name":"quorumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"5053:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1154,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5072:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5079:16:6","memberName":"quorumPercentage","nodeType":"MemberAccess","referencedDeclaration":904,"src":"5072:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5053:42:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1157,"nodeType":"ExpressionStatement","src":"5053:42:6"},{"expression":{"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1158,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5105:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1159,"name":"_currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"5122:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5105:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1161,"nodeType":"ExpressionStatement","src":"5105:32:6"},{"body":{"id":1183,"nodeType":"Block","src":"5288:76:6","statements":[{"expression":{"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1174,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"5302:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1179,"indexExpression":{"baseExpression":{"expression":{"id":1175,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5318:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5325:17:6","memberName":"supportedChainIds","nodeType":"MemberAccess","referencedDeclaration":913,"src":"5318:24:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1178,"indexExpression":{"id":1177,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5343:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5318:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5302:44:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5302:51:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1182,"nodeType":"ExpressionStatement","src":"5302:51:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1166,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5246:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":1167,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5250:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5257:17:6","memberName":"supportedChainIds","nodeType":"MemberAccess","referencedDeclaration":913,"src":"5250:24:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5275:6:6","memberName":"length","nodeType":"MemberAccess","src":"5250:31:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5246:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1184,"initializationExpression":{"assignments":[1163],"declarations":[{"constant":false,"id":1163,"mutability":"mutable","name":"i","nameLocation":"5239:1:6","nodeType":"VariableDeclaration","scope":1184,"src":"5231:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"5231:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1165,"initialValue":{"hexValue":"30","id":1164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5231:13:6"},"loopExpression":{"expression":{"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5283:3:6","subExpression":{"id":1171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5283:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1173,"nodeType":"ExpressionStatement","src":"5283:3:6"},"nodeType":"ForStatement","src":"5226:138:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1186,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5469:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5476:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5469:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5492:6:6","memberName":"length","nodeType":"MemberAccess","src":"5469:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":1189,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5502:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5509:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"5502:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5524:6:6","memberName":"length","nodeType":"MemberAccess","src":"5502:28:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5469:61:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"417272617973206c656e677468206d69736d61746368","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5532:24:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_582fd48f3876d7686bfeaaaa0db0589073271dedd50d66094f02fee2a3d2e01c","typeString":"literal_string \"Arrays length mismatch\""},"value":"Arrays length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_582fd48f3876d7686bfeaaaa0db0589073271dedd50d66094f02fee2a3d2e01c","typeString":"literal_string \"Arrays length mismatch\""}],"id":1185,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5461:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5461:96:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1195,"nodeType":"ExpressionStatement","src":"5461:96:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1197,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5575:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5582:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5575:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5598:6:6","memberName":"length","nodeType":"MemberAccess","src":"5575:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5607:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5575:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20696e697469616c20706172746e657273","id":1202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5610:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_52ac33e2ca140c303c018eee17fe8221d2a3fad6b5586ebb7760b84287db7147","typeString":"literal_string \"No initial partners\""},"value":"No initial partners"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_52ac33e2ca140c303c018eee17fe8221d2a3fad6b5586ebb7760b84287db7147","typeString":"literal_string \"No initial partners\""}],"id":1196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5567:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5567:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1204,"nodeType":"ExpressionStatement","src":"5567:65:6"},{"body":{"id":1251,"nodeType":"Block","src":"5711:227:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":1218,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5733:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5740:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5733:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1221,"indexExpression":{"id":1220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5756:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5733:25:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5762:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1222,"name":"address","nodeType":"ElementaryTypeName","src":"5762:7:6","typeDescriptions":{}}},"id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5762:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5733:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f2061646472657373","id":1227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5774:14:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""},"value":"Zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""}],"id":1217,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5725:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5725:64:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1229,"nodeType":"ExpressionStatement","src":"5725:64:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":1231,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5811:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5818:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"5811:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1234,"indexExpression":{"id":1233,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5833:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5811:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5838:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5811:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f20616d6f756e74","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5841:13:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4","typeString":"literal_string \"Zero amount\""},"value":"Zero amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4","typeString":"literal_string \"Zero amount\""}],"id":1230,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5803:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5803:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1239,"nodeType":"ExpressionStatement","src":"5803:52:6"},{"expression":{"arguments":[{"baseExpression":{"expression":{"id":1241,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5875:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5882:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5875:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1244,"indexExpression":{"id":1243,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5898:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5875:25:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":1245,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5902:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5909:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"5902:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1248,"indexExpression":{"id":1247,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5924:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5902:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1240,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"5869:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5869:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1250,"nodeType":"ExpressionStatement","src":"5869:58:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1209,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5671:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":1210,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5675:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5682:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5675:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5698:6:6","memberName":"length","nodeType":"MemberAccess","src":"5675:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5671:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1252,"initializationExpression":{"assignments":[1206],"declarations":[{"constant":false,"id":1206,"mutability":"mutable","name":"i","nameLocation":"5664:1:6","nodeType":"VariableDeclaration","scope":1252,"src":"5656:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1205,"name":"uint256","nodeType":"ElementaryTypeName","src":"5656:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1208,"initialValue":{"hexValue":"30","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5668:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5656:13:6"},"loopExpression":{"expression":{"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5706:3:6","subExpression":{"id":1214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"5706:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1216,"nodeType":"ExpressionStatement","src":"5706:3:6"},"nodeType":"ForStatement","src":"5651:287:6"},{"eventCall":{"arguments":[{"expression":{"id":1254,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"5986:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5993:15:6","memberName":"initialPartners","nodeType":"MemberAccess","referencedDeclaration":907,"src":"5986:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":1256,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6010:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6017:14:6","memberName":"initialAmounts","nodeType":"MemberAccess","referencedDeclaration":910,"src":"6010:21:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":1253,"name":"InitialTokensDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"5961:24:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory,uint256[] memory)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5961:71:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1259,"nodeType":"EmitStatement","src":"5956:76:6"},{"eventCall":{"arguments":[{"expression":{"id":1261,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6075:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6082:4:6","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":887,"src":"6075:11:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1263,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6100:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6107:6:6","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":889,"src":"6100:13:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1265,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6127:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6134:8:6","memberName":"location","nodeType":"MemberAccess","referencedDeclaration":891,"src":"6127:15:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1267,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6156:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6163:11:6","memberName":"coordinates","nodeType":"MemberAccess","referencedDeclaration":893,"src":"6156:18:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1269,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6188:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6195:12:6","memberName":"jurisdiction","nodeType":"MemberAccess","referencedDeclaration":895,"src":"6188:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1271,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6221:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6228:5:6","memberName":"oktmo","nodeType":"MemberAccess","referencedDeclaration":897,"src":"6221:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1273,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6247:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6254:10:6","memberName":"okvedCodes","nodeType":"MemberAccess","referencedDeclaration":900,"src":"6247:17:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},{"expression":{"id":1275,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6278:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6285:3:6","memberName":"kpp","nodeType":"MemberAccess","referencedDeclaration":902,"src":"6278:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":1279,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6310:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_DLE_$2613","typeString":"contract DLE"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DLE_$2613","typeString":"contract DLE"}],"id":1278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6302:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1277,"name":"address","nodeType":"ElementaryTypeName","src":"6302:7:6","typeDescriptions":{}}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6302:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1281,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"6329:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6336:17:6","memberName":"supportedChainIds","nodeType":"MemberAccess","referencedDeclaration":913,"src":"6329:24:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":1260,"name":"DLEInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"6047:14:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,string memory,string memory,uint256,uint256,string memory[] memory,uint256,address,uint256[] memory)"}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6047:316:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1284,"nodeType":"EmitStatement","src":"6042:321:6"}]},"id":1286,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":1123,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4589:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4596:4:6","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":887,"src":"4589:11:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1125,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"4602:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig memory"}},"id":1126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4609:6:6","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":889,"src":"4602:13:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":1127,"kind":"baseConstructorSpecifier","modifierName":{"id":1122,"name":"ERC20","nameLocations":["4583:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"4583:5:6"},"nodeType":"ModifierInvocation","src":"4583:33:6"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1118,"mutability":"mutable","name":"config","nameLocation":"4537:6:6","nodeType":"VariableDeclaration","scope":1286,"src":"4520:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_memory_ptr","typeString":"struct DLE.DLEConfig"},"typeName":{"id":1117,"nodeType":"UserDefinedTypeName","pathNode":{"id":1116,"name":"DLEConfig","nameLocations":["4520:9:6"],"nodeType":"IdentifierPath","referencedDeclaration":914,"src":"4520:9:6"},"referencedDeclaration":914,"src":"4520:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEConfig_$914_storage_ptr","typeString":"struct DLE.DLEConfig"}},"visibility":"internal"},{"constant":false,"id":1120,"mutability":"mutable","name":"_currentChainId","nameLocation":"4561:15:6","nodeType":"VariableDeclaration","scope":1286,"src":"4553:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1119,"name":"uint256","nodeType":"ElementaryTypeName","src":"4553:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4510:72:6"},"returnParameters":{"id":1128,"nodeType":"ParameterList","parameters":[],"src":"4617:0:6"},"scope":2613,"src":"4499:1871:6","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1404,"nodeType":"Block","src":"7000:842:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1302,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7028:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7032:6:6","memberName":"sender","nodeType":"MemberAccess","src":"7028:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1301,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"7018:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7018:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7018:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f73616c","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7045:37:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a2e6c5dda7c2ec2a91237927bcea1a227aaeb0a0dcd7bb09f5f8b66e3fd42c53","typeString":"literal_string \"Must hold tokens to create proposal\""},"value":"Must hold tokens to create proposal"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2e6c5dda7c2ec2a91237927bcea1a227aaeb0a0dcd7bb09f5f8b66e3fd42c53","typeString":"literal_string \"Must hold tokens to create proposal\""}],"id":1300,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7010:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7010:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1309,"nodeType":"ExpressionStatement","src":"7010:73:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1311,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"7101:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7113:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7101:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475726174696f6e206d75737420626520706f736974697665","id":1314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7116:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""},"value":"Duration must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""}],"id":1310,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7093:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7093:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1316,"nodeType":"ExpressionStatement","src":"7093:51:6"},{"expression":{"arguments":[{"baseExpression":{"id":1318,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"7162:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1320,"indexExpression":{"id":1319,"name":"_governanceChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"7178:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7162:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7199:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":1317,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7154:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7154:67:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1323,"nodeType":"ExpressionStatement","src":"7154:67:6"},{"expression":{"arguments":[{"arguments":[{"id":1326,"name":"_governanceChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"7260:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1325,"name":"checkChainConnection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"7239:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7239:40:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420617661696c61626c65","id":1328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7281:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d761b3d00f67c3638fc7145121be7a34feb3cfe2982cb2e73645fa1389c9e513","typeString":"literal_string \"Chain not available\""},"value":"Chain not available"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d761b3d00f67c3638fc7145121be7a34feb3cfe2982cb2e73645fa1389c9e513","typeString":"literal_string \"Chain not available\""}],"id":1324,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7231:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7231:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1330,"nodeType":"ExpressionStatement","src":"7231:72:6"},{"assignments":[1332],"declarations":[{"constant":false,"id":1332,"mutability":"mutable","name":"proposalId","nameLocation":"7322:10:6","nodeType":"VariableDeclaration","scope":1404,"src":"7314:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"7314:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1335,"initialValue":{"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7335:17:6","subExpression":{"id":1333,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"7335:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7314:38:6"},{"assignments":[1338],"declarations":[{"constant":false,"id":1338,"mutability":"mutable","name":"proposal","nameLocation":"7379:8:6","nodeType":"VariableDeclaration","scope":1404,"src":"7362:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1337,"nodeType":"UserDefinedTypeName","pathNode":{"id":1336,"name":"Proposal","nameLocations":["7362:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"7362:8:6"},"referencedDeclaration":939,"src":"7362:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1342,"initialValue":{"baseExpression":{"id":1339,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7390:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1341,"indexExpression":{"id":1340,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7400:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7390:21:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7362:49:6"},{"expression":{"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1343,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7430:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7439:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"7430:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1346,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7444:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7430:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1348,"nodeType":"ExpressionStatement","src":"7430:24:6"},{"expression":{"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1349,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7464:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7473:11:6","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":918,"src":"7464:20:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1352,"name":"_description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"7487:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"7464:35:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1354,"nodeType":"ExpressionStatement","src":"7464:35:6"},{"expression":{"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1355,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7509:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7518:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"7509:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7529:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7509:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1360,"nodeType":"ExpressionStatement","src":"7509:21:6"},{"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1361,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7540:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7549:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"7540:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7564:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7540:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1366,"nodeType":"ExpressionStatement","src":"7540:25:6"},{"expression":{"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1367,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7575:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7584:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"7575:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7595:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7575:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1372,"nodeType":"ExpressionStatement","src":"7575:25:6"},{"expression":{"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1373,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7610:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7619:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":926,"src":"7610:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1376,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7630:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7636:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"7630:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1378,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"7648:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7630:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7610:47:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1381,"nodeType":"ExpressionStatement","src":"7610:47:6"},{"expression":{"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1382,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7667:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7676:9:6","memberName":"initiator","nodeType":"MemberAccess","referencedDeclaration":928,"src":"7667:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7688:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7692:6:6","memberName":"sender","nodeType":"MemberAccess","src":"7688:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7667:31:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1388,"nodeType":"ExpressionStatement","src":"7667:31:6"},{"expression":{"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1389,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"7708:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7717:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"7708:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1392,"name":"_operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"7729:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7708:31:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":1394,"nodeType":"ExpressionStatement","src":"7708:31:6"},{"eventCall":{"arguments":[{"id":1396,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7771:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1397,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7783:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7787:6:6","memberName":"sender","nodeType":"MemberAccess","src":"7783:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1399,"name":"_description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"7795:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1395,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"7755:15:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,address,string memory)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7755:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1401,"nodeType":"EmitStatement","src":"7750:58:6"},{"expression":{"id":1402,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"7825:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1299,"id":1403,"nodeType":"Return","src":"7818:17:6"}]},"documentation":{"id":1287,"nodeType":"StructuredDocumentation","src":"6376:429:6","text":" @dev Создать предложение с выбором цепочки для кворума\n @param _description Описание предложения\n @param _duration Длительность голосования в секундах\n @param _operation Операция для исполнения\n @param _governanceChainId ID цепочки для сбора голосов"},"functionSelector":"b3594510","id":1405,"implemented":true,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"6819:14:6","nodeType":"FunctionDefinition","parameters":{"id":1296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1289,"mutability":"mutable","name":"_description","nameLocation":"6857:12:6","nodeType":"VariableDeclaration","scope":1405,"src":"6843:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1288,"name":"string","nodeType":"ElementaryTypeName","src":"6843:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"_duration","nameLocation":"6888:9:6","nodeType":"VariableDeclaration","scope":1405,"src":"6880:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"6880:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1293,"mutability":"mutable","name":"_operation","nameLocation":"6920:10:6","nodeType":"VariableDeclaration","scope":1405,"src":"6907:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1292,"name":"bytes","nodeType":"ElementaryTypeName","src":"6907:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1295,"mutability":"mutable","name":"_governanceChainId","nameLocation":"6948:18:6","nodeType":"VariableDeclaration","scope":1405,"src":"6940:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1294,"name":"uint256","nodeType":"ElementaryTypeName","src":"6940:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6833:139:6"},"returnParameters":{"id":1299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1405,"src":"6991:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1297,"name":"uint256","nodeType":"ElementaryTypeName","src":"6991:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6990:9:6"},"scope":2613,"src":"6810:1032:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1506,"nodeType":"Block","src":"8114:731:6","statements":[{"assignments":[1417],"declarations":[{"constant":false,"id":1417,"mutability":"mutable","name":"proposal","nameLocation":"8141:8:6","nodeType":"VariableDeclaration","scope":1506,"src":"8124:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1416,"nodeType":"UserDefinedTypeName","pathNode":{"id":1415,"name":"Proposal","nameLocations":["8124:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"8124:8:6"},"referencedDeclaration":939,"src":"8124:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1421,"initialValue":{"baseExpression":{"id":1418,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"8152:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1420,"indexExpression":{"id":1419,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"8162:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8152:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8124:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1423,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8192:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8201:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"8192:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1425,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"8207:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8192:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8220:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1422,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8184:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8184:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"8184:62:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1431,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8264:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8270:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"8264:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1433,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8282:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8291:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":926,"src":"8282:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8264:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f74696e6720656e646564","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8301:14:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_211d0608ef50debe6357d9eaeecace048d209b7b495f49840d398b4315c37db4","typeString":"literal_string \"Voting ended\""},"value":"Voting ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211d0608ef50debe6357d9eaeecace048d209b7b495f49840d398b4315c37db4","typeString":"literal_string \"Voting ended\""}],"id":1430,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8256:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8256:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"8256:60:6"},{"expression":{"arguments":[{"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8334:18:6","subExpression":{"expression":{"id":1440,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8335:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8344:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"8335:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20616c7265616479206578656375746564","id":1443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8354:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""},"value":"Proposal already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""}],"id":1439,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8326:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8326:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1445,"nodeType":"ExpressionStatement","src":"8326:56:6"},{"expression":{"arguments":[{"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8400:30:6","subExpression":{"baseExpression":{"expression":{"id":1447,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8401:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8410:8:6","memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":934,"src":"8401:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1451,"indexExpression":{"expression":{"id":1449,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8419:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8423:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8419:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8401:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920766f746564","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8432:15:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_512fc59044d4f0722f9346c450973ffe8aac7aa1142e536739987018593c53b6","typeString":"literal_string \"Already voted\""},"value":"Already voted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_512fc59044d4f0722f9346c450973ffe8aac7aa1142e536739987018593c53b6","typeString":"literal_string \"Already voted\""}],"id":1446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8392:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8392:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1455,"nodeType":"ExpressionStatement","src":"8392:56:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1458,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8476:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8480:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8476:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1457,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"8466:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8466:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8466:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20746f6b656e7320746f20766f7465","id":1463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8493:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_824133654506f10a4f01c9f90ea8c64e0c5603376bd2f191fdab4c36e943ddd9","typeString":"literal_string \"No tokens to vote\""},"value":"No tokens to vote"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_824133654506f10a4f01c9f90ea8c64e0c5603376bd2f191fdab4c36e943ddd9","typeString":"literal_string \"No tokens to vote\""}],"id":1456,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8458:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8458:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1465,"nodeType":"ExpressionStatement","src":"8458:55:6"},{"assignments":[1467],"declarations":[{"constant":false,"id":1467,"mutability":"mutable","name":"votingPower","nameLocation":"8532:11:6","nodeType":"VariableDeclaration","scope":1506,"src":"8524:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1466,"name":"uint256","nodeType":"ElementaryTypeName","src":"8524:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1472,"initialValue":{"arguments":[{"expression":{"id":1469,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8556:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8560:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8556:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1468,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"8546:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8546:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8524:43:6"},{"expression":{"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1473,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8577:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8586:8:6","memberName":"hasVoted","nodeType":"MemberAccess","referencedDeclaration":934,"src":"8577:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1478,"indexExpression":{"expression":{"id":1475,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8595:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8599:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8595:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8577:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8609:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8577:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1481,"nodeType":"ExpressionStatement","src":"8577:36:6"},{"condition":{"id":1482,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"8628:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1496,"nodeType":"Block","src":"8701:61:6","statements":[{"expression":{"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1490,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8715:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8724:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"8715:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1493,"name":"votingPower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"8740:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8715:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1495,"nodeType":"ExpressionStatement","src":"8715:36:6"}]},"id":1497,"nodeType":"IfStatement","src":"8624:138:6","trueBody":{"id":1489,"nodeType":"Block","src":"8638:57:6","statements":[{"expression":{"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1483,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1417,"src":"8652:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8661:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"8652:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1486,"name":"votingPower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"8673:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8652:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1488,"nodeType":"ExpressionStatement","src":"8652:32:6"}]}},{"eventCall":{"arguments":[{"id":1499,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1408,"src":"8791:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8804:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8808:6:6","memberName":"sender","nodeType":"MemberAccess","src":"8804:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1502,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"8816:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1503,"name":"votingPower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"8826:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1498,"name":"ProposalVoted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"8777:13:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (uint256,address,bool,uint256)"}},"id":1504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8777:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1505,"nodeType":"EmitStatement","src":"8772:66:6"}]},"documentation":{"id":1406,"nodeType":"StructuredDocumentation","src":"7848:189:6","text":" @dev Голосовать за предложение\n @param _proposalId ID предложения\n @param _support Поддержка предложения"},"functionSelector":"c9d27afe","id":1507,"implemented":true,"kind":"function","modifiers":[{"id":1413,"kind":"modifierInvocation","modifierName":{"id":1412,"name":"nonReentrant","nameLocations":["8101:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":818,"src":"8101:12:6"},"nodeType":"ModifierInvocation","src":"8101:12:6"}],"name":"vote","nameLocation":"8051:4:6","nodeType":"FunctionDefinition","parameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1408,"mutability":"mutable","name":"_proposalId","nameLocation":"8064:11:6","nodeType":"VariableDeclaration","scope":1507,"src":"8056:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1407,"name":"uint256","nodeType":"ElementaryTypeName","src":"8056:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1410,"mutability":"mutable","name":"_support","nameLocation":"8082:8:6","nodeType":"VariableDeclaration","scope":1507,"src":"8077:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1409,"name":"bool","nodeType":"ElementaryTypeName","src":"8077:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8055:36:6"},"returnParameters":{"id":1414,"nodeType":"ParameterList","parameters":[],"src":"8114:0:6"},"scope":2613,"src":"8042:803:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1578,"nodeType":"Block","src":"9385:733:6","statements":[{"assignments":[1523],"declarations":[{"constant":false,"id":1523,"mutability":"mutable","name":"proposal","nameLocation":"9412:8:6","nodeType":"VariableDeclaration","scope":1578,"src":"9395:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1522,"nodeType":"UserDefinedTypeName","pathNode":{"id":1521,"name":"Proposal","nameLocations":["9395:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"9395:8:6"},"referencedDeclaration":939,"src":"9395:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1527,"initialValue":{"baseExpression":{"id":1524,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"9423:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1526,"indexExpression":{"id":1525,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"9433:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9423:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9395:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1529,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9463:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9472:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"9463:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1531,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"9478:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9463:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9491:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1528,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9455:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9455:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1535,"nodeType":"ExpressionStatement","src":"9455:62:6"},{"expression":{"arguments":[{"baseExpression":{"id":1537,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"9535:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1539,"indexExpression":{"id":1538,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"9551:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9535:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":1540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9566:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":1536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9527:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9527:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1542,"nodeType":"ExpressionStatement","src":"9527:61:6"},{"expression":{"arguments":[{"id":1548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9606:39:6","subExpression":{"baseExpression":{"expression":{"id":1544,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9607:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9616:15:6","memberName":"chainVoteSynced","nodeType":"MemberAccess","referencedDeclaration":938,"src":"9607:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1547,"indexExpression":{"id":1546,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"9632:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9607:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c72656164792073796e636564","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9647:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""},"value":"Already synced"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""}],"id":1543,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9598:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9598:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1551,"nodeType":"ExpressionStatement","src":"9598:66:6"},{"expression":{"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1552,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9901:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9910:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"9901:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1555,"name":"_forVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"9922:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9901:30:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1557,"nodeType":"ExpressionStatement","src":"9901:30:6"},{"expression":{"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1558,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9941:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9950:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"9941:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1561,"name":"_againstVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"9966:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9941:38:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1563,"nodeType":"ExpressionStatement","src":"9941:38:6"},{"expression":{"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1564,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"9989:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9998:15:6","memberName":"chainVoteSynced","nodeType":"MemberAccess","referencedDeclaration":938,"src":"9989:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1568,"indexExpression":{"id":1566,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"10014:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9989:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10030:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"9989:45:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1571,"nodeType":"ExpressionStatement","src":"9989:45:6"},{"eventCall":{"arguments":[{"id":1573,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"10069:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1574,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"10082:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1575,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"10096:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1572,"name":"CrossChainVoteSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"10050:18:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10050:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1577,"nodeType":"EmitStatement","src":"10045:66:6"}]},"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"8851:335:6","text":" @dev Синхронизировать голос из другой цепочки\n @param _proposalId ID предложения\n @param _fromChainId ID цепочки откуда синхронизируем\n @param _forVotes Голоса за\n @param _againstVotes Голоса против"},"functionSelector":"456d10c1","id":1579,"implemented":true,"kind":"function","modifiers":[],"name":"syncVoteFromChain","nameLocation":"9200:17:6","nodeType":"FunctionDefinition","parameters":{"id":1519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1510,"mutability":"mutable","name":"_proposalId","nameLocation":"9235:11:6","nodeType":"VariableDeclaration","scope":1579,"src":"9227:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"9227:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1512,"mutability":"mutable","name":"_fromChainId","nameLocation":"9264:12:6","nodeType":"VariableDeclaration","scope":1579,"src":"9256:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"9256:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"_forVotes","nameLocation":"9294:9:6","nodeType":"VariableDeclaration","scope":1579,"src":"9286:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"9286:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1516,"mutability":"mutable","name":"_againstVotes","nameLocation":"9321:13:6","nodeType":"VariableDeclaration","scope":1579,"src":"9313:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"9313:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1579,"src":"9344:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1517,"name":"bytes","nodeType":"ElementaryTypeName","src":"9344:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9217:158:6"},"returnParameters":{"id":1520,"nodeType":"ParameterList","parameters":[],"src":"9385:0:6"},"scope":2613,"src":"9191:927:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1642,"nodeType":"Block","src":"10498:476:6","statements":[{"assignments":[1591],"declarations":[{"constant":false,"id":1591,"mutability":"mutable","name":"proposal","nameLocation":"10525:8:6","nodeType":"VariableDeclaration","scope":1642,"src":"10508:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1590,"nodeType":"UserDefinedTypeName","pathNode":{"id":1589,"name":"Proposal","nameLocations":["10508:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"10508:8:6"},"referencedDeclaration":939,"src":"10508:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1595,"initialValue":{"baseExpression":{"id":1592,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"10536:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1594,"indexExpression":{"id":1593,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"10546:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10536:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10508:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1597,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10576:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10585:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"10576:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1599,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"10591:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10576:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10604:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1596,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10568:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10568:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1603,"nodeType":"ExpressionStatement","src":"10568:62:6"},{"assignments":[1605],"declarations":[{"constant":false,"id":1605,"mutability":"mutable","name":"totalVotes","nameLocation":"10649:10:6","nodeType":"VariableDeclaration","scope":1642,"src":"10641:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1604,"name":"uint256","nodeType":"ElementaryTypeName","src":"10641:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1611,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1606,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10662:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10671:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"10662:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":1608,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10682:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10691:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"10682:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10662:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10641:62:6"},{"assignments":[1613],"declarations":[{"constant":false,"id":1613,"mutability":"mutable","name":"quorumRequired","nameLocation":"10721:14:6","nodeType":"VariableDeclaration","scope":1642,"src":"10713:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1621,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1614,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"10739:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10739:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1616,"name":"quorumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"10755:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10739:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10738:34:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":1619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10775:3:6","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"10738:40:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10713:65:6"},{"expression":{"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1622,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"10797:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1623,"name":"totalVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"10813:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1624,"name":"quorumRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"10827:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10813:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10797:44:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"ExpressionStatement","src":"10797:44:6"},{"expression":{"id":1636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1628,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"10851:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1629,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"10860:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1630,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10877:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10886:8:6","memberName":"forVotes","nodeType":"MemberAccess","referencedDeclaration":920,"src":"10877:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":1632,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"10897:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10906:12:6","memberName":"againstVotes","nodeType":"MemberAccess","referencedDeclaration":922,"src":"10897:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10877:41:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10860:58:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10851:67:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1637,"nodeType":"ExpressionStatement","src":"10851:67:6"},{"expression":{"components":[{"id":1638,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"10945:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1639,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"10953:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1640,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10944:23:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"functionReturnParameters":1588,"id":1641,"nodeType":"Return","src":"10937:30:6"}]},"documentation":{"id":1580,"nodeType":"StructuredDocumentation","src":"10124:265:6","text":" @dev Проверить результат предложения\n @param _proposalId ID предложения\n @return passed Прошло ли предложение\n @return quorumReached Достигнут ли кворум"},"functionSelector":"7e5a9b47","id":1643,"implemented":true,"kind":"function","modifiers":[],"name":"checkProposalResult","nameLocation":"10403:19:6","nodeType":"FunctionDefinition","parameters":{"id":1583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1582,"mutability":"mutable","name":"_proposalId","nameLocation":"10431:11:6","nodeType":"VariableDeclaration","scope":1643,"src":"10423:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"10423:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10422:21:6"},"returnParameters":{"id":1588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1585,"mutability":"mutable","name":"passed","nameLocation":"10470:6:6","nodeType":"VariableDeclaration","scope":1643,"src":"10465:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1584,"name":"bool","nodeType":"ElementaryTypeName","src":"10465:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1587,"mutability":"mutable","name":"quorumReached","nameLocation":"10483:13:6","nodeType":"VariableDeclaration","scope":1643,"src":"10478:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1586,"name":"bool","nodeType":"ElementaryTypeName","src":"10478:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10464:33:6"},"scope":2613,"src":"10394:580:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":1712,"nodeType":"Block","src":"11157:635:6","statements":[{"assignments":[1651],"declarations":[{"constant":false,"id":1651,"mutability":"mutable","name":"proposal","nameLocation":"11184:8:6","nodeType":"VariableDeclaration","scope":1712,"src":"11167:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":1650,"nodeType":"UserDefinedTypeName","pathNode":{"id":1649,"name":"Proposal","nameLocations":["11167:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"11167:8:6"},"referencedDeclaration":939,"src":"11167:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":1655,"initialValue":{"baseExpression":{"id":1652,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"11195:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":1654,"indexExpression":{"id":1653,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11205:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11195:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11167:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1657,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11235:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11244:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"11235:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1659,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11250:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11235:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11263:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":1656,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11227:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11227:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1663,"nodeType":"ExpressionStatement","src":"11227:62:6"},{"expression":{"arguments":[{"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11307:18:6","subExpression":{"expression":{"id":1665,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11308:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11317:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"11308:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20616c7265616479206578656375746564","id":1668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11327:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""},"value":"Proposal already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2707e21e9aae26cb9edbd76c2d262b3de919daea0bd16a10af4500ba819ed5fd","typeString":"literal_string \"Proposal already executed\""}],"id":1664,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11299:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11299:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1670,"nodeType":"ExpressionStatement","src":"11299:56:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1672,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11373:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11379:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"11373:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":1674,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11392:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11401:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":926,"src":"11392:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11373:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f74696e67206e6f7420656e646564","id":1677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11411:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa3afa53d79e86c3f6a23b414e9eaabf98604d6fc663aa1da275377424956dc3","typeString":"literal_string \"Voting not ended\""},"value":"Voting not ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa3afa53d79e86c3f6a23b414e9eaabf98604d6fc663aa1da275377424956dc3","typeString":"literal_string \"Voting not ended\""}],"id":1671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11365:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11365:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1679,"nodeType":"ExpressionStatement","src":"11365:65:6"},{"assignments":[1681,1683],"declarations":[{"constant":false,"id":1681,"mutability":"mutable","name":"passed","nameLocation":"11447:6:6","nodeType":"VariableDeclaration","scope":1712,"src":"11442:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1680,"name":"bool","nodeType":"ElementaryTypeName","src":"11442:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1683,"mutability":"mutable","name":"quorumReached","nameLocation":"11460:13:6","nodeType":"VariableDeclaration","scope":1712,"src":"11455:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1682,"name":"bool","nodeType":"ElementaryTypeName","src":"11455:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1687,"initialValue":{"arguments":[{"id":1685,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11497:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1684,"name":"checkProposalResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"11477:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$_t_bool_$","typeString":"function (uint256) view returns (bool,bool)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11477:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"nodeType":"VariableDeclarationStatement","src":"11441:68:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1689,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"11527:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1690,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"11537:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11527:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c206e6f7420706173736564","id":1692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11552:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8789ac58780df0d349b543986ff0576f2825fbf77f8dd377739331d82041c18e","typeString":"literal_string \"Proposal not passed\""},"value":"Proposal not passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8789ac58780df0d349b543986ff0576f2825fbf77f8dd377739331d82041c18e","typeString":"literal_string \"Proposal not passed\""}],"id":1688,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11519:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11519:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1694,"nodeType":"ExpressionStatement","src":"11519:55:6"},{"expression":{"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1695,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11585:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11594:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":924,"src":"11585:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11605:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11585:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1700,"nodeType":"ExpressionStatement","src":"11585:24:6"},{"expression":{"arguments":[{"expression":{"id":1702,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11693:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1703,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11702:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"11693:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"id":1701,"name":"_executeOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"11675:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11675:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1705,"nodeType":"ExpressionStatement","src":"11675:37:6"},{"eventCall":{"arguments":[{"id":1707,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"11753:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1708,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1651,"src":"11766:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":1709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11775:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"11766:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"id":1706,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1057,"src":"11736:16:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,bytes memory)"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11736:49:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1711,"nodeType":"EmitStatement","src":"11731:54:6"}]},"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"10980:117:6","text":" @dev Исполнить предложение\n @param _proposalId ID предложения"},"functionSelector":"0d61b519","id":1713,"implemented":true,"kind":"function","modifiers":[],"name":"executeProposal","nameLocation":"11111:15:6","nodeType":"FunctionDefinition","parameters":{"id":1647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"mutability":"mutable","name":"_proposalId","nameLocation":"11135:11:6","nodeType":"VariableDeclaration","scope":1713,"src":"11127:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1645,"name":"uint256","nodeType":"ElementaryTypeName","src":"11127:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11126:21:6"},"returnParameters":{"id":1648,"nodeType":"ParameterList","parameters":[],"src":"11157:0:6"},"scope":2613,"src":"11102:690:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1801,"nodeType":"Block","src":"12140:663:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1725,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12168:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12172:6:6","memberName":"sender","nodeType":"MemberAccess","src":"12168:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1724,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"12158:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12158:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12182:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12158:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f20637265617465206f7065726174696f6e","id":1730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12185:38:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b4c6044429574409cde35868815ebf07dd07f140f75d3558ab1494a2cd4af78a","typeString":"literal_string \"Must hold tokens to create operation\""},"value":"Must hold tokens to create operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b4c6044429574409cde35868815ebf07dd07f140f75d3558ab1494a2cd4af78a","typeString":"literal_string \"Must hold tokens to create operation\""}],"id":1723,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12150:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12150:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1732,"nodeType":"ExpressionStatement","src":"12150:74:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1734,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1718,"src":"12242:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12254:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12242:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475726174696f6e206d75737420626520706f736974697665","id":1737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12257:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""},"value":"Duration must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e2db737b4f72d51e5d9739ee51f563e55d139cf69c2c66e37332edb20f949e00","typeString":"literal_string \"Duration must be positive\""}],"id":1733,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12234:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12234:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1739,"nodeType":"ExpressionStatement","src":"12234:51:6"},{"assignments":[1741],"declarations":[{"constant":false,"id":1741,"mutability":"mutable","name":"operationId","nameLocation":"12304:11:6","nodeType":"VariableDeclaration","scope":1801,"src":"12296:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1740,"name":"uint256","nodeType":"ElementaryTypeName","src":"12296:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1744,"initialValue":{"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12318:17:6","subExpression":{"id":1742,"name":"multiSigCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"12318:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12296:39:6"},{"assignments":[1747],"declarations":[{"constant":false,"id":1747,"mutability":"mutable","name":"operation","nameLocation":"12371:9:6","nodeType":"VariableDeclaration","scope":1801,"src":"12345:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1746,"nodeType":"UserDefinedTypeName","pathNode":{"id":1745,"name":"MultiSigOperation","nameLocations":["12345:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"12345:17:6"},"referencedDeclaration":960,"src":"12345:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1751,"initialValue":{"baseExpression":{"id":1748,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"12383:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1750,"indexExpression":{"id":1749,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"12402:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12383:31:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12345:69:6"},{"expression":{"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1752,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12433:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12443:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"12433:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1755,"name":"_operationHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"12459:14:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12433:40:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1757,"nodeType":"ExpressionStatement","src":"12433:40:6"},{"expression":{"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1758,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12483:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12493:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"12483:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12509:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12483:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1763,"nodeType":"ExpressionStatement","src":"12483:27:6"},{"expression":{"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1764,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12520:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12530:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"12520:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12550:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12520:31:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1769,"nodeType":"ExpressionStatement","src":"12520:31:6"},{"expression":{"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1770,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12561:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12571:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"12561:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12582:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12561:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1775,"nodeType":"ExpressionStatement","src":"12561:26:6"},{"expression":{"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1776,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12597:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12607:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":949,"src":"12597:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1779,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12618:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12624:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"12618:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1781,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1718,"src":"12636:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12618:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12597:48:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1784,"nodeType":"ExpressionStatement","src":"12597:48:6"},{"expression":{"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1785,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"12655:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12665:9:6","memberName":"initiator","nodeType":"MemberAccess","referencedDeclaration":951,"src":"12655:19:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1788,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12677:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12681:6:6","memberName":"sender","nodeType":"MemberAccess","src":"12677:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12655:32:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1791,"nodeType":"ExpressionStatement","src":"12655:32:6"},{"eventCall":{"arguments":[{"id":1793,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"12728:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12741:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12745:6:6","memberName":"sender","nodeType":"MemberAccess","src":"12741:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1796,"name":"_operationHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"12753:14:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1792,"name":"MultiSigOperationCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1065,"src":"12703:24:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (uint256,address,bytes32)"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12703:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1798,"nodeType":"EmitStatement","src":"12698:70:6"},{"expression":{"id":1799,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"12785:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1722,"id":1800,"nodeType":"Return","src":"12778:18:6"}]},"documentation":{"id":1714,"nodeType":"StructuredDocumentation","src":"11798:212:6","text":" @dev Создать мультиподпись операцию\n @param _operationHash Хеш операции\n @param _duration Длительность сбора подписей"},"functionSelector":"b00e0730","id":1802,"implemented":true,"kind":"function","modifiers":[],"name":"createMultiSigOperation","nameLocation":"12024:23:6","nodeType":"FunctionDefinition","parameters":{"id":1719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1716,"mutability":"mutable","name":"_operationHash","nameLocation":"12065:14:6","nodeType":"VariableDeclaration","scope":1802,"src":"12057:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12057:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1718,"mutability":"mutable","name":"_duration","nameLocation":"12097:9:6","nodeType":"VariableDeclaration","scope":1802,"src":"12089:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1717,"name":"uint256","nodeType":"ElementaryTypeName","src":"12089:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12047:65:6"},"returnParameters":{"id":1722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1802,"src":"12131:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"12131:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12130:9:6"},"scope":2613,"src":"12015:788:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1906,"nodeType":"Block","src":"13096:798:6","statements":[{"assignments":[1814],"declarations":[{"constant":false,"id":1814,"mutability":"mutable","name":"operation","nameLocation":"13132:9:6","nodeType":"VariableDeclaration","scope":1906,"src":"13106:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1813,"nodeType":"UserDefinedTypeName","pathNode":{"id":1812,"name":"MultiSigOperation","nameLocations":["13106:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"13106:17:6"},"referencedDeclaration":960,"src":"13106:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1818,"initialValue":{"baseExpression":{"id":1815,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"13144:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1817,"indexExpression":{"id":1816,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"13163:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13144:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13106:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1820,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13194:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13204:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"13194:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13229:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13221:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13221:7:6","typeDescriptions":{}}},"id":1825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13221:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13194:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":1827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13233:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":1819,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13186:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13186:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1829,"nodeType":"ExpressionStatement","src":"13186:74:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1831,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13278:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13284:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"13278:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1833,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13296:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13306:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":949,"src":"13296:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13278:36:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e696e6720656e646564","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13316:15:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_950f8cf6a836192653a57ac3dc657e6414282f8063b5c5cd97e12fa3582f7f0b","typeString":"literal_string \"Signing ended\""},"value":"Signing ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_950f8cf6a836192653a57ac3dc657e6414282f8063b5c5cd97e12fa3582f7f0b","typeString":"literal_string \"Signing ended\""}],"id":1830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13270:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13270:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1838,"nodeType":"ExpressionStatement","src":"13270:62:6"},{"expression":{"arguments":[{"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13350:19:6","subExpression":{"expression":{"id":1840,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13351:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13361:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"13351:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20616c7265616479206578656375746564","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13371:28:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""},"value":"Operation already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""}],"id":1839,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13342:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13342:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1845,"nodeType":"ExpressionStatement","src":"13342:58:6"},{"expression":{"arguments":[{"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13418:32:6","subExpression":{"baseExpression":{"expression":{"id":1847,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13419:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13429:9:6","memberName":"hasSigned","nodeType":"MemberAccess","referencedDeclaration":955,"src":"13419:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1851,"indexExpression":{"expression":{"id":1849,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13439:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13443:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13439:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13419:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c7265616479207369676e6564","id":1853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13452:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_988ed7cc4955768d49d35b181a2bc2b0514174494b33f90da8e2fba3c967c228","typeString":"literal_string \"Already signed\""},"value":"Already signed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_988ed7cc4955768d49d35b181a2bc2b0514174494b33f90da8e2fba3c967c228","typeString":"literal_string \"Already signed\""}],"id":1846,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13410:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13410:59:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1855,"nodeType":"ExpressionStatement","src":"13410:59:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1858,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13497:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13501:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13497:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1857,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"13487:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13487:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13511:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13487:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20746f6b656e7320746f207369676e","id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13514:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_37e2d833e560c1ccf9c683771d8d4f9f76f0218dc9c833046d68f1d43e310ed7","typeString":"literal_string \"No tokens to sign\""},"value":"No tokens to sign"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37e2d833e560c1ccf9c683771d8d4f9f76f0218dc9c833046d68f1d43e310ed7","typeString":"literal_string \"No tokens to sign\""}],"id":1856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13479:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13479:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"ExpressionStatement","src":"13479:55:6"},{"assignments":[1867],"declarations":[{"constant":false,"id":1867,"mutability":"mutable","name":"signaturePower","nameLocation":"13553:14:6","nodeType":"VariableDeclaration","scope":1906,"src":"13545:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1866,"name":"uint256","nodeType":"ElementaryTypeName","src":"13545:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1872,"initialValue":{"arguments":[{"expression":{"id":1869,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13580:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13584:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13580:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1868,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"13570:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13570:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13545:46:6"},{"expression":{"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1873,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13601:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13611:9:6","memberName":"hasSigned","nodeType":"MemberAccess","referencedDeclaration":955,"src":"13601:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1878,"indexExpression":{"expression":{"id":1875,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13621:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13625:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13621:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13601:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13635:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"13601:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1881,"nodeType":"ExpressionStatement","src":"13601:38:6"},{"condition":{"id":1882,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"13654:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1896,"nodeType":"Block","src":"13736:70:6","statements":[{"expression":{"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1890,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13750:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13760:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"13750:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1893,"name":"signaturePower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"13781:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13750:45:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1895,"nodeType":"ExpressionStatement","src":"13750:45:6"}]},"id":1897,"nodeType":"IfStatement","src":"13650:156:6","trueBody":{"id":1889,"nodeType":"Block","src":"13664:66:6","statements":[{"expression":{"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1883,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"13678:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13688:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"13678:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1886,"name":"signaturePower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"13705:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13678:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"nodeType":"ExpressionStatement","src":"13678:41:6"}]}},{"eventCall":{"arguments":[{"id":1899,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"13836:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1900,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13850:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13854:6:6","memberName":"sender","nodeType":"MemberAccess","src":"13850:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1902,"name":"_support","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"13862:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1903,"name":"signaturePower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"13872:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1898,"name":"MultiSigSigned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"13821:14:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$","typeString":"function (uint256,address,bool,uint256)"}},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13821:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1905,"nodeType":"EmitStatement","src":"13816:71:6"}]},"documentation":{"id":1803,"nodeType":"StructuredDocumentation","src":"12809:192:6","text":" @dev Подписать мультиподпись операцию\n @param _operationId ID операции\n @param _support Поддержка операции"},"functionSelector":"ccd7a490","id":1907,"implemented":true,"kind":"function","modifiers":[{"id":1810,"kind":"modifierInvocation","modifierName":{"id":1809,"name":"nonReentrant","nameLocations":["13083:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":818,"src":"13083:12:6"},"nodeType":"ModifierInvocation","src":"13083:12:6"}],"name":"signMultiSigOperation","nameLocation":"13015:21:6","nodeType":"FunctionDefinition","parameters":{"id":1808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"_operationId","nameLocation":"13045:12:6","nodeType":"VariableDeclaration","scope":1907,"src":"13037:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"13037:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1807,"mutability":"mutable","name":"_support","nameLocation":"13064:8:6","nodeType":"VariableDeclaration","scope":1907,"src":"13059:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1806,"name":"bool","nodeType":"ElementaryTypeName","src":"13059:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13036:37:6"},"returnParameters":{"id":1811,"nodeType":"ParameterList","parameters":[],"src":"13096:0:6"},"scope":2613,"src":"13006:888:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1981,"nodeType":"Block","src":"14474:747:6","statements":[{"assignments":[1923],"declarations":[{"constant":false,"id":1923,"mutability":"mutable","name":"operation","nameLocation":"14510:9:6","nodeType":"VariableDeclaration","scope":1981,"src":"14484:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1922,"nodeType":"UserDefinedTypeName","pathNode":{"id":1921,"name":"MultiSigOperation","nameLocations":["14484:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"14484:17:6"},"referencedDeclaration":960,"src":"14484:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1927,"initialValue":{"baseExpression":{"id":1924,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"14522:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1926,"indexExpression":{"id":1925,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"14541:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14522:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14484:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1929,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"14572:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14582:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"14572:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14607:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14599:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1931,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14599:7:6","typeDescriptions":{}}},"id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14599:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14572:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14611:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":1928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14564:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14564:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1938,"nodeType":"ExpressionStatement","src":"14564:74:6"},{"expression":{"arguments":[{"baseExpression":{"id":1940,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"14656:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1942,"indexExpression":{"id":1941,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"14672:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14656:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14687:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":1939,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14648:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14648:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1945,"nodeType":"ExpressionStatement","src":"14648:61:6"},{"expression":{"arguments":[{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14727:40:6","subExpression":{"baseExpression":{"expression":{"id":1947,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"14728:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14738:15:6","memberName":"chainSignSynced","nodeType":"MemberAccess","referencedDeclaration":959,"src":"14728:25:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1950,"indexExpression":{"id":1949,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"14754:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14728:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c72656164792073796e636564","id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14769:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""},"value":"Already synced"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b44f06818508537cd862b43fa1b8a2de6a736ed2a90106d9e7e0441faa96a2c5","typeString":"literal_string \"Already synced\""}],"id":1946,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14719:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14719:67:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1954,"nodeType":"ExpressionStatement","src":"14719:67:6"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1955,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"14976:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14986:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"14976:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1958,"name":"_forSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1914,"src":"15003:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14976:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1960,"nodeType":"ExpressionStatement","src":"14976:41:6"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1961,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"15027:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15037:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"15027:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1964,"name":"_againstSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"15058:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15027:49:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"15027:49:6"},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1967,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"15086:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":1970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15096:15:6","memberName":"chainSignSynced","nodeType":"MemberAccess","referencedDeclaration":959,"src":"15086:25:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":1971,"indexExpression":{"id":1969,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"15112:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15086:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15128:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15086:46:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1974,"nodeType":"ExpressionStatement","src":"15086:46:6"},{"eventCall":{"arguments":[{"id":1976,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"15171:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1977,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"15185:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1978,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"15199:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1975,"name":"CrossChainMultiSigSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"15148:22:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15148:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1980,"nodeType":"EmitStatement","src":"15143:71:6"}]},"documentation":{"id":1908,"nodeType":"StructuredDocumentation","src":"13900:360:6","text":" @dev Синхронизировать мультиподпись из другой цепочки\n @param _operationId ID операции\n @param _fromChainId ID цепочки откуда синхронизируем\n @param _forSignatures Подписи за\n @param _againstSignatures Подписи против"},"functionSelector":"2ee09598","id":1982,"implemented":true,"kind":"function","modifiers":[],"name":"syncMultiSigFromChain","nameLocation":"14274:21:6","nodeType":"FunctionDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"_operationId","nameLocation":"14313:12:6","nodeType":"VariableDeclaration","scope":1982,"src":"14305:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"14305:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1912,"mutability":"mutable","name":"_fromChainId","nameLocation":"14343:12:6","nodeType":"VariableDeclaration","scope":1982,"src":"14335:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1911,"name":"uint256","nodeType":"ElementaryTypeName","src":"14335:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1914,"mutability":"mutable","name":"_forSignatures","nameLocation":"14373:14:6","nodeType":"VariableDeclaration","scope":1982,"src":"14365:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1913,"name":"uint256","nodeType":"ElementaryTypeName","src":"14365:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1916,"mutability":"mutable","name":"_againstSignatures","nameLocation":"14405:18:6","nodeType":"VariableDeclaration","scope":1982,"src":"14397:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"14397:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1982,"src":"14433:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1917,"name":"bytes","nodeType":"ElementaryTypeName","src":"14433:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14295:169:6"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[],"src":"14474:0:6"},"scope":2613,"src":"14265:956:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2048,"nodeType":"Block","src":"15595:542:6","statements":[{"assignments":[1994],"declarations":[{"constant":false,"id":1994,"mutability":"mutable","name":"operation","nameLocation":"15631:9:6","nodeType":"VariableDeclaration","scope":2048,"src":"15605:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":1993,"nodeType":"UserDefinedTypeName","pathNode":{"id":1992,"name":"MultiSigOperation","nameLocations":["15605:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"15605:17:6"},"referencedDeclaration":960,"src":"15605:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":1998,"initialValue":{"baseExpression":{"id":1995,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"15643:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":1997,"indexExpression":{"id":1996,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"15662:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15643:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15605:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2000,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"15693:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15703:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"15693:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15728:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15720:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15720:7:6","typeDescriptions":{}}},"id":2005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15720:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15693:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15732:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":1999,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15685:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15685:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2009,"nodeType":"ExpressionStatement","src":"15685:74:6"},{"assignments":[2011],"declarations":[{"constant":false,"id":2011,"mutability":"mutable","name":"totalSignatures","nameLocation":"15778:15:6","nodeType":"VariableDeclaration","scope":2048,"src":"15770:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2010,"name":"uint256","nodeType":"ElementaryTypeName","src":"15770:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2017,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2012,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"15796:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15806:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"15796:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2014,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"15822:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15832:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"15822:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15796:53:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15770:79:6"},{"assignments":[2019],"declarations":[{"constant":false,"id":2019,"mutability":"mutable","name":"quorumRequired","nameLocation":"15867:14:6","nodeType":"VariableDeclaration","scope":2048,"src":"15859:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2018,"name":"uint256","nodeType":"ElementaryTypeName","src":"15859:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2027,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2020,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"15885:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15885:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2022,"name":"quorumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"15901:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15885:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15884:34:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":2025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15921:3:6","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"15884:40:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15859:65:6"},{"expression":{"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2028,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"15943:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2029,"name":"totalSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"15959:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2030,"name":"quorumRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"15978:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15959:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15943:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2033,"nodeType":"ExpressionStatement","src":"15943:49:6"},{"expression":{"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2034,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"16002:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2035,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"16011:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2036,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"16028:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16038:13:6","memberName":"forSignatures","nodeType":"MemberAccess","referencedDeclaration":943,"src":"16028:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":2038,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"16054:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16064:17:6","memberName":"againstSignatures","nodeType":"MemberAccess","referencedDeclaration":945,"src":"16054:27:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16028:53:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16011:70:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16002:79:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2043,"nodeType":"ExpressionStatement","src":"16002:79:6"},{"expression":{"components":[{"id":2044,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"16108:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2045,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"16116:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16107:23:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"functionReturnParameters":1991,"id":2047,"nodeType":"Return","src":"16100:30:6"}]},"documentation":{"id":1983,"nodeType":"StructuredDocumentation","src":"15227:258:6","text":" @dev Проверить результат мультиподписи\n @param _operationId ID операции\n @return passed Прошла ли операция\n @return quorumReached Достигнут ли кворум"},"functionSelector":"057b2074","id":2049,"implemented":true,"kind":"function","modifiers":[],"name":"checkMultiSigResult","nameLocation":"15499:19:6","nodeType":"FunctionDefinition","parameters":{"id":1986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1985,"mutability":"mutable","name":"_operationId","nameLocation":"15527:12:6","nodeType":"VariableDeclaration","scope":2049,"src":"15519:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1984,"name":"uint256","nodeType":"ElementaryTypeName","src":"15519:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15518:22:6"},"returnParameters":{"id":1991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1988,"mutability":"mutable","name":"passed","nameLocation":"15567:6:6","nodeType":"VariableDeclaration","scope":2049,"src":"15562:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1987,"name":"bool","nodeType":"ElementaryTypeName","src":"15562:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1990,"mutability":"mutable","name":"quorumReached","nameLocation":"15580:13:6","nodeType":"VariableDeclaration","scope":2049,"src":"15575:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1989,"name":"bool","nodeType":"ElementaryTypeName","src":"15575:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15561:33:6"},"scope":2613,"src":"15490:647:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2116,"nodeType":"Block","src":"16346:577:6","statements":[{"assignments":[2057],"declarations":[{"constant":false,"id":2057,"mutability":"mutable","name":"operation","nameLocation":"16382:9:6","nodeType":"VariableDeclaration","scope":2116,"src":"16356:35:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"},"typeName":{"id":2056,"nodeType":"UserDefinedTypeName","pathNode":{"id":2055,"name":"MultiSigOperation","nameLocations":["16356:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":960,"src":"16356:17:6"},"referencedDeclaration":960,"src":"16356:17:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation"}},"visibility":"internal"}],"id":2061,"initialValue":{"baseExpression":{"id":2058,"name":"multiSigOperations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"16394:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_MultiSigOperation_$960_storage_$","typeString":"mapping(uint256 => struct DLE.MultiSigOperation storage ref)"}},"id":2060,"indexExpression":{"id":2059,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"16413:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16394:32:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage","typeString":"struct DLE.MultiSigOperation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16356:70:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2063,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16444:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16454:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"16444:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16479:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16471:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16471:7:6","typeDescriptions":{}}},"id":2068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16471:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16444:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20646f6573206e6f74206578697374","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16483:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""},"value":"Operation does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a88bda3553b9f58fdc0f5b8cacceb40b5f33a87ef6c0aa7807be75bb72f6e6d4","typeString":"literal_string \"Operation does not exist\""}],"id":2062,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16436:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16436:74:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2072,"nodeType":"ExpressionStatement","src":"16436:74:6"},{"expression":{"arguments":[{"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16528:19:6","subExpression":{"expression":{"id":2074,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16529:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16539:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"16529:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e20616c7265616479206578656375746564","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16549:28:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""},"value":"Operation already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d5564caec237b09b54a365c80dad399a0b91f87583021f6a1ecdbdaef10f306a","typeString":"literal_string \"Operation already executed\""}],"id":2073,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16520:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16520:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2079,"nodeType":"ExpressionStatement","src":"16520:58:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2081,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16596:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16602:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"16596:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2083,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16615:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16625:8:6","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":949,"src":"16615:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16596:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5369676e696e67206e6f7420656e646564","id":2086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16635:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0c2359a9b356344627f350157767095abf42de074fcedb68d11fc108b96cd74","typeString":"literal_string \"Signing not ended\""},"value":"Signing not ended"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0c2359a9b356344627f350157767095abf42de074fcedb68d11fc108b96cd74","typeString":"literal_string \"Signing not ended\""}],"id":2080,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16588:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16588:67:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2088,"nodeType":"ExpressionStatement","src":"16588:67:6"},{"assignments":[2090,2092],"declarations":[{"constant":false,"id":2090,"mutability":"mutable","name":"passed","nameLocation":"16672:6:6","nodeType":"VariableDeclaration","scope":2116,"src":"16667:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2089,"name":"bool","nodeType":"ElementaryTypeName","src":"16667:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2092,"mutability":"mutable","name":"quorumReached","nameLocation":"16685:13:6","nodeType":"VariableDeclaration","scope":2116,"src":"16680:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2091,"name":"bool","nodeType":"ElementaryTypeName","src":"16680:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2096,"initialValue":{"arguments":[{"id":2094,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"16722:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2093,"name":"checkMultiSigResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"16702:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$_t_bool_$","typeString":"function (uint256) view returns (bool,bool)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16702:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool)"}},"nodeType":"VariableDeclarationStatement","src":"16666:69:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"passed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"16753:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2099,"name":"quorumReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"16763:13:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16753:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7065726174696f6e206e6f7420706173736564","id":2101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16778:22:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ddf475e14b5f6d3ed9adb8877fe9c76f990b431f369f905fc15026ec102ce36","typeString":"literal_string \"Operation not passed\""},"value":"Operation not passed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ddf475e14b5f6d3ed9adb8877fe9c76f990b431f369f905fc15026ec102ce36","typeString":"literal_string \"Operation not passed\""}],"id":2097,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16745:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16745:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"16745:56:6"},{"expression":{"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2104,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16812:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16822:8:6","memberName":"executed","nodeType":"MemberAccess","referencedDeclaration":947,"src":"16812:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16833:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16812:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2109,"nodeType":"ExpressionStatement","src":"16812:25:6"},{"eventCall":{"arguments":[{"id":2111,"name":"_operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"16878:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2112,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"16892:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_MultiSigOperation_$960_storage_ptr","typeString":"struct DLE.MultiSigOperation storage pointer"}},"id":2113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16902:13:6","memberName":"operationHash","nodeType":"MemberAccess","referencedDeclaration":941,"src":"16892:23:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2110,"name":"MultiSigExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"16861:16:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,bytes32)"}},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16861:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2115,"nodeType":"EmitStatement","src":"16856:60:6"}]},"documentation":{"id":2050,"nodeType":"StructuredDocumentation","src":"16143:133:6","text":" @dev Исполнить мультиподпись операцию\n @param _operationId ID операции"},"functionSelector":"893d692a","id":2117,"implemented":true,"kind":"function","modifiers":[],"name":"executeMultiSigOperation","nameLocation":"16290:24:6","nodeType":"FunctionDefinition","parameters":{"id":2053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2052,"mutability":"mutable","name":"_operationId","nameLocation":"16323:12:6","nodeType":"VariableDeclaration","scope":2117,"src":"16315:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2051,"name":"uint256","nodeType":"ElementaryTypeName","src":"16315:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16314:22:6"},"returnParameters":{"id":2054,"nodeType":"ParameterList","parameters":[],"src":"16346:0:6"},"scope":2613,"src":"16281:642:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2172,"nodeType":"Block","src":"17324:702:6","statements":[{"expression":{"arguments":[{"baseExpression":{"id":2128,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"17342:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2130,"indexExpression":{"id":2129,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"17358:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17342:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436861696e206e6f7420737570706f72746564","id":2131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17373:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""},"value":"Chain not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ad923b2e364ce1aeaf4231bbcdfbcf3913f3afdc5e95d213d4d8bc5188fdf23","typeString":"literal_string \"Chain not supported\""}],"id":2127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17334:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17334:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2133,"nodeType":"ExpressionStatement","src":"17334:61:6"},{"expression":{"arguments":[{"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17413:31:6","subExpression":{"baseExpression":{"id":2135,"name":"executedProposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"17414:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2137,"indexExpression":{"id":2136,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17432:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17414:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c7265616479206578656375746564","id":2139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17446:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_58f47ea4e737df2d9cc4764db26c111751884cf0a1856aca9f4c66cadc811e1b","typeString":"literal_string \"Already executed\""},"value":"Already executed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_58f47ea4e737df2d9cc4764db26c111751884cf0a1856aca9f4c66cadc811e1b","typeString":"literal_string \"Already executed\""}],"id":2134,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17405:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17405:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2141,"nodeType":"ExpressionStatement","src":"17405:60:6"},{"expression":{"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2142,"name":"executedProposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"17655:17:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2144,"indexExpression":{"id":2143,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17673:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17655:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17688:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17655:37:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2147,"nodeType":"ExpressionStatement","src":"17655:37:6"},{"assignments":[2150],"declarations":[{"constant":false,"id":2150,"mutability":"mutable","name":"proposal","nameLocation":"17801:8:6","nodeType":"VariableDeclaration","scope":2172,"src":"17784:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":2149,"nodeType":"UserDefinedTypeName","pathNode":{"id":2148,"name":"Proposal","nameLocations":["17784:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"17784:8:6"},"referencedDeclaration":939,"src":"17784:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":2154,"initialValue":{"baseExpression":{"id":2151,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"17812:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":2153,"indexExpression":{"id":2152,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17822:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17812:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17784:50:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2155,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"17848:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":2156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17857:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"17848:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2157,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17863:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17848:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2165,"nodeType":"IfStatement","src":"17844:94:6","trueBody":{"id":2164,"nodeType":"Block","src":"17876:62:6","statements":[{"expression":{"arguments":[{"expression":{"id":2160,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"17908:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":2161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17917:9:6","memberName":"operation","nodeType":"MemberAccess","referencedDeclaration":930,"src":"17908:18:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"id":2159,"name":"_executeOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"17890:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17890:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2163,"nodeType":"ExpressionStatement","src":"17890:37:6"}]}},{"eventCall":{"arguments":[{"id":2167,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"17977:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2168,"name":"_fromChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"17990:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2169,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"18004:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2166,"name":"CrossChainExecutionSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"17953:23:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":2170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17953:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2171,"nodeType":"EmitStatement","src":"17948:71:6"}]},"documentation":{"id":2118,"nodeType":"StructuredDocumentation","src":"16929:249:6","text":" @dev Синхронизировать исполнение из другой цепочки\n @param _proposalId ID предложения\n @param _fromChainId ID цепочки откуда синхронизируем"},"functionSelector":"044bc2bd","id":2173,"implemented":true,"kind":"function","modifiers":[],"name":"syncExecutionFromChain","nameLocation":"17192:22:6","nodeType":"FunctionDefinition","parameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2120,"mutability":"mutable","name":"_proposalId","nameLocation":"17232:11:6","nodeType":"VariableDeclaration","scope":2173,"src":"17224:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2119,"name":"uint256","nodeType":"ElementaryTypeName","src":"17224:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2122,"mutability":"mutable","name":"_fromChainId","nameLocation":"17261:12:6","nodeType":"VariableDeclaration","scope":2173,"src":"17253:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2121,"name":"uint256","nodeType":"ElementaryTypeName","src":"17253:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2173,"src":"17283:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2123,"name":"bytes","nodeType":"ElementaryTypeName","src":"17283:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17214:100:6"},"returnParameters":{"id":2126,"nodeType":"ParameterList","parameters":[],"src":"17324:0:6"},"scope":2613,"src":"17183:843:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2185,"nodeType":"Block","src":"18312:284:6","statements":[{"expression":{"baseExpression":{"id":2181,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"18564:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2183,"indexExpression":{"id":2182,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"18580:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18564:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2180,"id":2184,"nodeType":"Return","src":"18557:32:6"}]},"documentation":{"id":2174,"nodeType":"StructuredDocumentation","src":"18032:188:6","text":" @dev Проверить подключение к цепочке\n @param _chainId ID цепочки\n @return isAvailable Доступна ли цепочка"},"functionSelector":"4de184f6","id":2186,"implemented":true,"kind":"function","modifiers":[],"name":"checkChainConnection","nameLocation":"18234:20:6","nodeType":"FunctionDefinition","parameters":{"id":2177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2176,"mutability":"mutable","name":"_chainId","nameLocation":"18263:8:6","nodeType":"VariableDeclaration","scope":2186,"src":"18255:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2175,"name":"uint256","nodeType":"ElementaryTypeName","src":"18255:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18254:18:6"},"returnParameters":{"id":2180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2179,"mutability":"mutable","name":"isAvailable","nameLocation":"18299:11:6","nodeType":"VariableDeclaration","scope":2186,"src":"18294:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2178,"name":"bool","nodeType":"ElementaryTypeName","src":"18294:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18293:18:6"},"scope":2613,"src":"18225:371:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2238,"nodeType":"Block","src":"18932:482:6","statements":[{"assignments":[2196],"declarations":[{"constant":false,"id":2196,"mutability":"mutable","name":"proposal","nameLocation":"18959:8:6","nodeType":"VariableDeclaration","scope":2238,"src":"18942:25:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"},"typeName":{"id":2195,"nodeType":"UserDefinedTypeName","pathNode":{"id":2194,"name":"Proposal","nameLocations":["18942:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":939,"src":"18942:8:6"},"referencedDeclaration":939,"src":"18942:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal"}},"visibility":"internal"}],"id":2200,"initialValue":{"baseExpression":{"id":2197,"name":"proposals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"18970:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$939_storage_$","typeString":"mapping(uint256 => struct DLE.Proposal storage ref)"}},"id":2199,"indexExpression":{"id":2198,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2189,"src":"18980:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18970:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage","typeString":"struct DLE.Proposal storage ref"}},"nodeType":"VariableDeclarationStatement","src":"18942:50:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2202,"name":"proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"19010:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$939_storage_ptr","typeString":"struct DLE.Proposal storage pointer"}},"id":2203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19019:2:6","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":916,"src":"19010:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2204,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2189,"src":"19025:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19010:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f706f73616c20646f6573206e6f74206578697374","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19038:25:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""},"value":"Proposal does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e62a544e5aebc4f7865ef71973090f3036faa05a5f7be3ea3605ab15dc232bf","typeString":"literal_string \"Proposal does not exist\""}],"id":2201,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19002:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19002:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2208,"nodeType":"ExpressionStatement","src":"19002:62:6"},{"body":{"id":2234,"nodeType":"Block","src":"19219:159:6","statements":[{"assignments":[2221],"declarations":[{"constant":false,"id":2221,"mutability":"mutable","name":"chainId","nameLocation":"19241:7:6","nodeType":"VariableDeclaration","scope":2234,"src":"19233:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2220,"name":"uint256","nodeType":"ElementaryTypeName","src":"19233:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2225,"initialValue":{"arguments":[{"id":2223,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"19271:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2222,"name":"getSupportedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"19251:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19251:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19233:40:6"},{"condition":{"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19291:30:6","subExpression":{"arguments":[{"id":2227,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"19313:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2226,"name":"checkChainConnection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"19292:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19292:29:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2233,"nodeType":"IfStatement","src":"19287:81:6","trueBody":{"id":2232,"nodeType":"Block","src":"19323:45:6","statements":[{"expression":{"hexValue":"66616c7365","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19348:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2193,"id":2231,"nodeType":"Return","src":"19341:12:6"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"19184:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2214,"name":"getSupportedChainCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"19188:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19188:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19184:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2235,"initializationExpression":{"assignments":[2210],"declarations":[{"constant":false,"id":2210,"mutability":"mutable","name":"i","nameLocation":"19177:1:6","nodeType":"VariableDeclaration","scope":2235,"src":"19169:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"19169:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2212,"initialValue":{"hexValue":"30","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19181:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19169:13:6"},"loopExpression":{"expression":{"id":2218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19214:3:6","subExpression":{"id":2217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"19214:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2219,"nodeType":"ExpressionStatement","src":"19214:3:6"},"nodeType":"ForStatement","src":"19164:214:6"},{"expression":{"hexValue":"74727565","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19403:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2193,"id":2237,"nodeType":"Return","src":"19396:11:6"}]},"documentation":{"id":2187,"nodeType":"StructuredDocumentation","src":"18602:234:6","text":" @dev Проверить все подключения перед синхронизацией\n @param _proposalId ID предложения\n @return allChainsReady Готовы ли все цепочки"},"functionSelector":"e49a62e9","id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"checkSyncReadiness","nameLocation":"18850:18:6","nodeType":"FunctionDefinition","parameters":{"id":2190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2189,"mutability":"mutable","name":"_proposalId","nameLocation":"18877:11:6","nodeType":"VariableDeclaration","scope":2239,"src":"18869:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2188,"name":"uint256","nodeType":"ElementaryTypeName","src":"18869:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18868:21:6"},"returnParameters":{"id":2193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2192,"mutability":"mutable","name":"allChainsReady","nameLocation":"18916:14:6","nodeType":"VariableDeclaration","scope":2239,"src":"18911:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2191,"name":"bool","nodeType":"ElementaryTypeName","src":"18911:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18910:21:6"},"scope":2613,"src":"18841:573:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2280,"nodeType":"Block","src":"19628:400:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":2247,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"19665:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2246,"name":"checkSyncReadiness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"19646:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19646:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420616c6c20636861696e73207265616479","id":2249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19679:22:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9ac91bcc9dd94a174980f450c5e56b966ea5d9e218d96b80a76095f437f6badf","typeString":"literal_string \"Not all chains ready\""},"value":"Not all chains ready"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9ac91bcc9dd94a174980f450c5e56b966ea5d9e218d96b80a76095f437f6badf","typeString":"literal_string \"Not all chains ready\""}],"id":2245,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19638:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19638:64:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2251,"nodeType":"ExpressionStatement","src":"19638:64:6"},{"body":{"id":2274,"nodeType":"Block","src":"19860:112:6","statements":[{"assignments":[2264],"declarations":[{"constant":false,"id":2264,"mutability":"mutable","name":"chainId","nameLocation":"19882:7:6","nodeType":"VariableDeclaration","scope":2274,"src":"19874:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2263,"name":"uint256","nodeType":"ElementaryTypeName","src":"19874:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2268,"initialValue":{"arguments":[{"id":2266,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"19912:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2265,"name":"getSupportedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"19892:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19892:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19874:40:6"},{"expression":{"arguments":[{"id":2270,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"19940:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2271,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"19953:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2269,"name":"syncToChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"19928:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19928:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2273,"nodeType":"ExpressionStatement","src":"19928:33:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"19825:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2257,"name":"getSupportedChainCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"19829:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19829:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19825:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2275,"initializationExpression":{"assignments":[2253],"declarations":[{"constant":false,"id":2253,"mutability":"mutable","name":"i","nameLocation":"19818:1:6","nodeType":"VariableDeclaration","scope":2275,"src":"19810:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2252,"name":"uint256","nodeType":"ElementaryTypeName","src":"19810:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2255,"initialValue":{"hexValue":"30","id":2254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19822:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19810:13:6"},"loopExpression":{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19855:3:6","subExpression":{"id":2260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2253,"src":"19855:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"19855:3:6"},"nodeType":"ForStatement","src":"19805:167:6"},{"eventCall":{"arguments":[{"id":2277,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"20009:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2276,"name":"SyncCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"19995:13:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19995:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2279,"nodeType":"EmitStatement","src":"19990:31:6"}]},"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"19420:148:6","text":" @dev Синхронизация только при 100% готовности\n @param _proposalId ID предложения"},"functionSelector":"7ce288ea","id":2281,"implemented":true,"kind":"function","modifiers":[],"name":"syncToAllChains","nameLocation":"19582:15:6","nodeType":"FunctionDefinition","parameters":{"id":2243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2242,"mutability":"mutable","name":"_proposalId","nameLocation":"19606:11:6","nodeType":"VariableDeclaration","scope":2281,"src":"19598:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2241,"name":"uint256","nodeType":"ElementaryTypeName","src":"19598:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19597:21:6"},"returnParameters":{"id":2244,"nodeType":"ParameterList","parameters":[],"src":"19628:0:6"},"scope":2613,"src":"19573:455:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2295,"nodeType":"Block","src":"20290:262:6","statements":[{"eventCall":{"arguments":[{"id":2290,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2284,"src":"20507:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2291,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"20520:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2292,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"20536:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2289,"name":"CrossChainExecutionSync","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"20483:23:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20483:62:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2294,"nodeType":"EmitStatement","src":"20478:67:6"}]},"documentation":{"id":2282,"nodeType":"StructuredDocumentation","src":"20034:182:6","text":" @dev Синхронизация в конкретную цепочку\n @param _proposalId ID предложения\n @param _chainId ID цепочки"},"id":2296,"implemented":true,"kind":"function","modifiers":[],"name":"syncToChain","nameLocation":"20230:11:6","nodeType":"FunctionDefinition","parameters":{"id":2287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2284,"mutability":"mutable","name":"_proposalId","nameLocation":"20250:11:6","nodeType":"VariableDeclaration","scope":2296,"src":"20242:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2283,"name":"uint256","nodeType":"ElementaryTypeName","src":"20242:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2286,"mutability":"mutable","name":"_chainId","nameLocation":"20271:8:6","nodeType":"VariableDeclaration","scope":2296,"src":"20263:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2285,"name":"uint256","nodeType":"ElementaryTypeName","src":"20263:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20241:39:6"},"returnParameters":{"id":2288,"nodeType":"ParameterList","parameters":[],"src":"20290:0:6"},"scope":2613,"src":"20221:331:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2304,"nodeType":"Block","src":"20732:251:6","statements":[{"expression":{"hexValue":"34","id":2302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20975:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"functionReturnParameters":2301,"id":2303,"nodeType":"Return","src":"20968:8:6"}]},"documentation":{"id":2297,"nodeType":"StructuredDocumentation","src":"20558:105:6","text":" @dev Получить количество поддерживаемых цепочек"},"functionSelector":"eced3dfb","id":2305,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedChainCount","nameLocation":"20677:22:6","nodeType":"FunctionDefinition","parameters":{"id":2298,"nodeType":"ParameterList","parameters":[],"src":"20699:2:6"},"returnParameters":{"id":2301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2305,"src":"20723:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2299,"name":"uint256","nodeType":"ElementaryTypeName","src":"20723:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20722:9:6"},"scope":2613,"src":"20668:315:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":2341,"nodeType":"Block","src":"21225:248:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21239:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21249:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21239:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2318,"nodeType":"IfStatement","src":"21235:25:6","trueBody":{"expression":{"hexValue":"31","id":2316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21259:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":2312,"id":2317,"nodeType":"Return","src":"21252:8:6"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2319,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21291:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":2320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21301:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21291:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2324,"nodeType":"IfStatement","src":"21287:27:6","trueBody":{"expression":{"hexValue":"313337","id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21311:3:6","typeDescriptions":{"typeIdentifier":"t_rational_137_by_1","typeString":"int_const 137"},"value":"137"},"functionReturnParameters":2312,"id":2323,"nodeType":"Return","src":"21304:10:6"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2325,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21342:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":2326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21352:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21342:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2330,"nodeType":"IfStatement","src":"21338:26:6","trueBody":{"expression":{"hexValue":"3536","id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21362:2:6","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},"functionReturnParameters":2312,"id":2329,"nodeType":"Return","src":"21355:9:6"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2331,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"21389:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":2332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21399:1:6","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"21389:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2336,"nodeType":"IfStatement","src":"21385:29:6","trueBody":{"expression":{"hexValue":"3432313631","id":2334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21409:5:6","typeDescriptions":{"typeIdentifier":"t_rational_42161_by_1","typeString":"int_const 42161"},"value":"42161"},"functionReturnParameters":2312,"id":2335,"nodeType":"Return","src":"21402:12:6"}},{"expression":{"arguments":[{"hexValue":"496e76616c696420636861696e20696e646578","id":2338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21444:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51299dff4c796e1ac8ee8b9a472d4251ecba410abfcfdfff3c492d6f0f63bc13","typeString":"literal_string \"Invalid chain index\""},"value":"Invalid chain index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_51299dff4c796e1ac8ee8b9a472d4251ecba410abfcfdfff3c492d6f0f63bc13","typeString":"literal_string \"Invalid chain index\""}],"id":2337,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"21437:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21437:29:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2340,"nodeType":"ExpressionStatement","src":"21437:29:6"}]},"documentation":{"id":2306,"nodeType":"StructuredDocumentation","src":"20989:156:6","text":" @dev Получить ID поддерживаемой цепочки по индексу\n @param _index Индекс цепочки"},"functionSelector":"9a49bdde","id":2342,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedChainId","nameLocation":"21159:19:6","nodeType":"FunctionDefinition","parameters":{"id":2309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2308,"mutability":"mutable","name":"_index","nameLocation":"21187:6:6","nodeType":"VariableDeclaration","scope":2342,"src":"21179:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2307,"name":"uint256","nodeType":"ElementaryTypeName","src":"21179:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21178:16:6"},"returnParameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2342,"src":"21216:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2310,"name":"uint256","nodeType":"ElementaryTypeName","src":"21216:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21215:9:6"},"scope":2613,"src":"21150:323:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":2456,"nodeType":"Block","src":"21674:1052:6","statements":[{"assignments":[2349,2351],"declarations":[{"constant":false,"id":2349,"mutability":"mutable","name":"selector","nameLocation":"21741:8:6","nodeType":"VariableDeclaration","scope":2456,"src":"21734:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2348,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21734:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2351,"mutability":"mutable","name":"data","nameLocation":"21764:4:6","nodeType":"VariableDeclaration","scope":2456,"src":"21751:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2350,"name":"bytes","nodeType":"ElementaryTypeName","src":"21751:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2361,"initialValue":{"arguments":[{"id":2354,"name":"_operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2345,"src":"21783:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21796:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2355,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21796:6:6","typeDescriptions":{}}},{"id":2358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21804:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2357,"name":"bytes","nodeType":"ElementaryTypeName","src":"21804:5:6","typeDescriptions":{}}}],"id":2359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21795:15:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(bytes4),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(bytes4),type(bytes storage pointer))"}],"expression":{"id":2352,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21772:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21776:6:6","memberName":"decode","nodeType":"MemberAccess","src":"21772:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21772:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes4_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes4,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"21733:78:6"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2362,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"21834:8:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"7472616e7366657228616464726573732c75696e7432353629","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21863:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b","typeString":"literal_string \"transfer(address,uint256)\""},"value":"transfer(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b","typeString":"literal_string \"transfer(address,uint256)\""}],"id":2365,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"21853:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21853:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21846:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2363,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21846:6:6","typeDescriptions":{}}},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21846:46:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21834:58:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2392,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"22107:8:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"6d696e7428616464726573732c75696e7432353629","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22136:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_40c10f19c047ae7dfa66d6312b683d2ea3dfbcb4159e96b967c5f4b0a86f2842","typeString":"literal_string \"mint(address,uint256)\""},"value":"mint(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_40c10f19c047ae7dfa66d6312b683d2ea3dfbcb4159e96b967c5f4b0a86f2842","typeString":"literal_string \"mint(address,uint256)\""}],"id":2395,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"22126:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22126:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22119:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2393,"name":"bytes4","nodeType":"ElementaryTypeName","src":"22119:6:6","typeDescriptions":{}}},"id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22119:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"22107:54:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2420,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"22360:8:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"6275726e28616464726573732c75696e7432353629","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22389:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9dc29fac0ba6d4fc521c69c2b0c636d612e3343bc39ed934429b8876b0d12cba","typeString":"literal_string \"burn(address,uint256)\""},"value":"burn(address,uint256)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9dc29fac0ba6d4fc521c69c2b0c636d612e3343bc39ed934429b8876b0d12cba","typeString":"literal_string \"burn(address,uint256)\""}],"id":2423,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"22379:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22379:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22372:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2421,"name":"bytes4","nodeType":"ElementaryTypeName","src":"22372:6:6","typeDescriptions":{}}},"id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22372:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"22360:54:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2452,"nodeType":"Block","src":"22613:107:6","statements":[{"expression":{"arguments":[{"hexValue":"556e6b6e6f776e206f7065726174696f6e","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22689:19:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_a8583565d5058e599a0a507bc84ed1111529ac3c53e437281d981e6a5fe8395d","typeString":"literal_string \"Unknown operation\""},"value":"Unknown operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a8583565d5058e599a0a507bc84ed1111529ac3c53e437281d981e6a5fe8395d","typeString":"literal_string \"Unknown operation\""}],"id":2448,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"22682:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22682:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2451,"nodeType":"ExpressionStatement","src":"22682:27:6"}]},"id":2453,"nodeType":"IfStatement","src":"22356:364:6","trueBody":{"id":2447,"nodeType":"Block","src":"22416:191:6","statements":[{"assignments":[2429,2431],"declarations":[{"constant":false,"id":2429,"mutability":"mutable","name":"from","nameLocation":"22503:4:6","nodeType":"VariableDeclaration","scope":2447,"src":"22495:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2428,"name":"address","nodeType":"ElementaryTypeName","src":"22495:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"amount","nameLocation":"22517:6:6","nodeType":"VariableDeclaration","scope":2447,"src":"22509:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"22509:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2441,"initialValue":{"arguments":[{"id":2434,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"22538:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22545:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2435,"name":"address","nodeType":"ElementaryTypeName","src":"22545:7:6","typeDescriptions":{}}},{"id":2438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22554:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2437,"name":"uint256","nodeType":"ElementaryTypeName","src":"22554:7:6","typeDescriptions":{}}}],"id":2439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22544:18:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":2432,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22527:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22531:6:6","memberName":"decode","nodeType":"MemberAccess","src":"22527:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22527:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"22494:69:6"},{"expression":{"arguments":[{"id":2443,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"22583:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2444,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"22589:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2442,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"22577:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22577:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2446,"nodeType":"ExpressionStatement","src":"22577:19:6"}]}},"id":2454,"nodeType":"IfStatement","src":"22103:617:6","trueBody":{"id":2419,"nodeType":"Block","src":"22163:187:6","statements":[{"assignments":[2401,2403],"declarations":[{"constant":false,"id":2401,"mutability":"mutable","name":"to","nameLocation":"22250:2:6","nodeType":"VariableDeclaration","scope":2419,"src":"22242:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2400,"name":"address","nodeType":"ElementaryTypeName","src":"22242:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2403,"mutability":"mutable","name":"amount","nameLocation":"22262:6:6","nodeType":"VariableDeclaration","scope":2419,"src":"22254:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2402,"name":"uint256","nodeType":"ElementaryTypeName","src":"22254:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2413,"initialValue":{"arguments":[{"id":2406,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"22283:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22290:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2407,"name":"address","nodeType":"ElementaryTypeName","src":"22290:7:6","typeDescriptions":{}}},{"id":2410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22299:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2409,"name":"uint256","nodeType":"ElementaryTypeName","src":"22299:7:6","typeDescriptions":{}}}],"id":2411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22289:18:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":2404,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22272:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22276:6:6","memberName":"decode","nodeType":"MemberAccess","src":"22272:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22272:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"22241:67:6"},{"expression":{"arguments":[{"id":2415,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2401,"src":"22328:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2416,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2403,"src":"22332:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2414,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"22322:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22322:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2418,"nodeType":"ExpressionStatement","src":"22322:17:6"}]}},"id":2455,"nodeType":"IfStatement","src":"21830:890:6","trueBody":{"id":2391,"nodeType":"Block","src":"21894:203:6","statements":[{"assignments":[2371,2373],"declarations":[{"constant":false,"id":2371,"mutability":"mutable","name":"to","nameLocation":"21981:2:6","nodeType":"VariableDeclaration","scope":2391,"src":"21973:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2370,"name":"address","nodeType":"ElementaryTypeName","src":"21973:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2373,"mutability":"mutable","name":"amount","nameLocation":"21993:6:6","nodeType":"VariableDeclaration","scope":2391,"src":"21985:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2372,"name":"uint256","nodeType":"ElementaryTypeName","src":"21985:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2383,"initialValue":{"arguments":[{"id":2376,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"22014:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22021:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2377,"name":"address","nodeType":"ElementaryTypeName","src":"22021:7:6","typeDescriptions":{}}},{"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22030:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"22030:7:6","typeDescriptions":{}}}],"id":2381,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22020:18:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":2374,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22003:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22007:6:6","memberName":"decode","nodeType":"MemberAccess","src":"22003:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22003:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"21972:67:6"},{"expression":{"arguments":[{"expression":{"id":2385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22063:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22067:6:6","memberName":"sender","nodeType":"MemberAccess","src":"22063:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2387,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2371,"src":"22075:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2388,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2373,"src":"22079:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2384,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"22053:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22053:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2390,"nodeType":"ExpressionStatement","src":"22053:33:6"}]}}]},"documentation":{"id":2343,"nodeType":"StructuredDocumentation","src":"21479:129:6","text":" @dev Исполнить операцию\n @param _operation Операция для исполнения"},"id":2457,"implemented":true,"kind":"function","modifiers":[],"name":"_executeOperation","nameLocation":"21622:17:6","nodeType":"FunctionDefinition","parameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2345,"mutability":"mutable","name":"_operation","nameLocation":"21653:10:6","nodeType":"VariableDeclaration","scope":2457,"src":"21640:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2344,"name":"bytes","nodeType":"ElementaryTypeName","src":"21640:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21639:25:6"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[],"src":"21674:0:6"},"scope":2613,"src":"21613:1113:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2510,"nodeType":"Block","src":"22954:358:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2467,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22982:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22986:6:6","memberName":"sender","nodeType":"MemberAccess","src":"22982:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2466,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"22972:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22972:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22996:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22972:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c65","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22999:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_386d52cc0823e9cc706c7e0057db969b8e9f95b86428ad9df4e5e7e608f0ee74","typeString":"literal_string \"Must hold tokens to add module\""},"value":"Must hold tokens to add module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_386d52cc0823e9cc706c7e0057db969b8e9f95b86428ad9df4e5e7e608f0ee74","typeString":"literal_string \"Must hold tokens to add module\""}],"id":2465,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22964:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22964:68:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2474,"nodeType":"ExpressionStatement","src":"22964:68:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2476,"name":"_moduleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"23050:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23076:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23068:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2477,"name":"address","nodeType":"ElementaryTypeName","src":"23068:7:6","typeDescriptions":{}}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23068:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23050:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5a65726f2061646472657373","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23080:14:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""},"value":"Zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_535d7636857fb1ab3a4f159f2a66b9583ce224510b4368fa2453e15bee0bc833","typeString":"literal_string \"Zero address\""}],"id":2475,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23042:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23042:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2484,"nodeType":"ExpressionStatement","src":"23042:53:6"},{"expression":{"arguments":[{"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23113:25:6","subExpression":{"baseExpression":{"id":2486,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23114:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2488,"indexExpression":{"id":2487,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23128:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23114:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6f64756c6520616c726561647920657869737473","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23140:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_886f67ba7d9a179ad4a77f53bed0afe9305a32e844dbd6b94e697def54438978","typeString":"literal_string \"Module already exists\""},"value":"Module already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_886f67ba7d9a179ad4a77f53bed0afe9305a32e844dbd6b94e697def54438978","typeString":"literal_string \"Module already exists\""}],"id":2485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23105:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23105:59:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2492,"nodeType":"ExpressionStatement","src":"23105:59:6"},{"expression":{"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2493,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"23175:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":2495,"indexExpression":{"id":2494,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23183:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23175:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2496,"name":"_moduleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"23196:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23175:35:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2498,"nodeType":"ExpressionStatement","src":"23175:35:6"},{"expression":{"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2499,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23220:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2501,"indexExpression":{"id":2500,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23234:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23220:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23247:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"23220:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2504,"nodeType":"ExpressionStatement","src":"23220:31:6"},{"eventCall":{"arguments":[{"id":2506,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"23279:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2507,"name":"_moduleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"23290:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2505,"name":"ModuleAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"23267:11:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23267:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2509,"nodeType":"EmitStatement","src":"23262:43:6"}]},"documentation":{"id":2458,"nodeType":"StructuredDocumentation","src":"22732:146:6","text":" @dev Добавить модуль\n @param _moduleId ID модуля\n @param _moduleAddress Адрес модуля"},"functionSelector":"35324eee","id":2511,"implemented":true,"kind":"function","modifiers":[],"name":"addModule","nameLocation":"22892:9:6","nodeType":"FunctionDefinition","parameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"mutability":"mutable","name":"_moduleId","nameLocation":"22910:9:6","nodeType":"VariableDeclaration","scope":2511,"src":"22902:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22902:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"_moduleAddress","nameLocation":"22929:14:6","nodeType":"VariableDeclaration","scope":2511,"src":"22921:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2461,"name":"address","nodeType":"ElementaryTypeName","src":"22921:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22901:43:6"},"returnParameters":{"id":2464,"nodeType":"ParameterList","parameters":[],"src":"22954:0:6"},"scope":2613,"src":"22883:429:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2549,"nodeType":"Block","src":"23464:274:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2519,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23492:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23496:6:6","memberName":"sender","nodeType":"MemberAccess","src":"23492:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2518,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"23482:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23482:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23506:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23482:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c65","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23509:35:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc7fbb9ac88e81b58eadf3fb00bfe01ffe693076256b7e1212d2dec03ec2a636","typeString":"literal_string \"Must hold tokens to remove module\""},"value":"Must hold tokens to remove module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc7fbb9ac88e81b58eadf3fb00bfe01ffe693076256b7e1212d2dec03ec2a636","typeString":"literal_string \"Must hold tokens to remove module\""}],"id":2517,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23474:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23474:71:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2526,"nodeType":"ExpressionStatement","src":"23474:71:6"},{"expression":{"arguments":[{"baseExpression":{"id":2528,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23563:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2530,"indexExpression":{"id":2529,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23577:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23563:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6f64756c6520646f6573206e6f74206578697374","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23589:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_148e71891f99baebb1c86efc789ab7bd91f813832ac214a9b47559ccdff1d356","typeString":"literal_string \"Module does not exist\""},"value":"Module does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_148e71891f99baebb1c86efc789ab7bd91f813832ac214a9b47559ccdff1d356","typeString":"literal_string \"Module does not exist\""}],"id":2527,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23555:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23555:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2533,"nodeType":"ExpressionStatement","src":"23555:58:6"},{"expression":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"23624:25:6","subExpression":{"baseExpression":{"id":2534,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"23631:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":2536,"indexExpression":{"id":2535,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23639:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23631:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2538,"nodeType":"ExpressionStatement","src":"23624:25:6"},{"expression":{"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2539,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"23659:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2541,"indexExpression":{"id":2540,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23673:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23659:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23686:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"23659:32:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2544,"nodeType":"ExpressionStatement","src":"23659:32:6"},{"eventCall":{"arguments":[{"id":2546,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"23721:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2545,"name":"ModuleRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"23707:13:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23707:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2548,"nodeType":"EmitStatement","src":"23702:29:6"}]},"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"23318:91:6","text":" @dev Удалить модуль\n @param _moduleId ID модуля"},"functionSelector":"4114509b","id":2550,"implemented":true,"kind":"function","modifiers":[],"name":"removeModule","nameLocation":"23423:12:6","nodeType":"FunctionDefinition","parameters":{"id":2515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2514,"mutability":"mutable","name":"_moduleId","nameLocation":"23444:9:6","nodeType":"VariableDeclaration","scope":2550,"src":"23436:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23436:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23435:19:6"},"returnParameters":{"id":2516,"nodeType":"ParameterList","parameters":[],"src":"23464:0:6"},"scope":2613,"src":"23414:324:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2559,"nodeType":"Block","src":"23878:31:6","statements":[{"expression":{"id":2557,"name":"dleInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"23895:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage","typeString":"struct DLE.DLEInfo storage ref"}},"functionReturnParameters":2556,"id":2558,"nodeType":"Return","src":"23888:14:6"}]},"documentation":{"id":2551,"nodeType":"StructuredDocumentation","src":"23744:68:6","text":" @dev Получить информацию о DLE"},"functionSelector":"204c5d1f","id":2560,"implemented":true,"kind":"function","modifiers":[],"name":"getDLEInfo","nameLocation":"23826:10:6","nodeType":"FunctionDefinition","parameters":{"id":2552,"nodeType":"ParameterList","parameters":[],"src":"23836:2:6"},"returnParameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2555,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2560,"src":"23862:14:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_memory_ptr","typeString":"struct DLE.DLEInfo"},"typeName":{"id":2554,"nodeType":"UserDefinedTypeName","pathNode":{"id":2553,"name":"DLEInfo","nameLocations":["23862:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":885,"src":"23862:7:6"},"referencedDeclaration":885,"src":"23862:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_DLEInfo_$885_storage_ptr","typeString":"struct DLE.DLEInfo"}},"visibility":"internal"}],"src":"23861:16:6"},"scope":2613,"src":"23817:92:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2572,"nodeType":"Block","src":"24108:48:6","statements":[{"expression":{"baseExpression":{"id":2568,"name":"activeModules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"24125:13:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":2570,"indexExpression":{"id":2569,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"24139:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24125:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2567,"id":2571,"nodeType":"Return","src":"24118:31:6"}]},"documentation":{"id":2561,"nodeType":"StructuredDocumentation","src":"23915:116:6","text":" @dev Проверить, активен ли модуль\n @param _moduleId ID модуля"},"functionSelector":"4b145793","id":2573,"implemented":true,"kind":"function","modifiers":[],"name":"isModuleActive","nameLocation":"24045:14:6","nodeType":"FunctionDefinition","parameters":{"id":2564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2563,"mutability":"mutable","name":"_moduleId","nameLocation":"24068:9:6","nodeType":"VariableDeclaration","scope":2573,"src":"24060:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24060:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24059:19:6"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2573,"src":"24102:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2565,"name":"bool","nodeType":"ElementaryTypeName","src":"24102:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24101:6:6"},"scope":2613,"src":"24036:120:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2585,"nodeType":"Block","src":"24348:42:6","statements":[{"expression":{"baseExpression":{"id":2581,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"24365:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":2583,"indexExpression":{"id":2582,"name":"_moduleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2576,"src":"24373:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24365:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2580,"id":2584,"nodeType":"Return","src":"24358:25:6"}]},"documentation":{"id":2574,"nodeType":"StructuredDocumentation","src":"24162:104:6","text":" @dev Получить адрес модуля\n @param _moduleId ID модуля"},"functionSelector":"22dbefbb","id":2586,"implemented":true,"kind":"function","modifiers":[],"name":"getModuleAddress","nameLocation":"24280:16:6","nodeType":"FunctionDefinition","parameters":{"id":2577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2576,"mutability":"mutable","name":"_moduleId","nameLocation":"24305:9:6","nodeType":"VariableDeclaration","scope":2586,"src":"24297:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24297:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24296:19:6"},"returnParameters":{"id":2580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2586,"src":"24339:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"24339:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24338:9:6"},"scope":2613,"src":"24271:119:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2598,"nodeType":"Block","src":"24607:49:6","statements":[{"expression":{"baseExpression":{"id":2594,"name":"supportedChains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"24624:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2596,"indexExpression":{"id":2595,"name":"_chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"24640:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24624:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2593,"id":2597,"nodeType":"Return","src":"24617:32:6"}]},"documentation":{"id":2587,"nodeType":"StructuredDocumentation","src":"24396:133:6","text":" @dev Проверить, поддерживается ли цепочка\n @param _chainId ID цепочки"},"functionSelector":"5221c1f0","id":2599,"implemented":true,"kind":"function","modifiers":[],"name":"isChainSupported","nameLocation":"24543:16:6","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2589,"mutability":"mutable","name":"_chainId","nameLocation":"24568:8:6","nodeType":"VariableDeclaration","scope":2599,"src":"24560:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2588,"name":"uint256","nodeType":"ElementaryTypeName","src":"24560:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24559:18:6"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2599,"src":"24601:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2591,"name":"bool","nodeType":"ElementaryTypeName","src":"24601:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24600:6:6"},"scope":2613,"src":"24534:122:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2607,"nodeType":"Block","src":"24801:38:6","statements":[{"expression":{"id":2605,"name":"currentChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"24818:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2604,"id":2606,"nodeType":"Return","src":"24811:21:6"}]},"documentation":{"id":2600,"nodeType":"StructuredDocumentation","src":"24662:73:6","text":" @dev Получить текущий ID цепочки"},"functionSelector":"5cf0e8a4","id":2608,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentChainId","nameLocation":"24749:17:6","nodeType":"FunctionDefinition","parameters":{"id":2601,"nodeType":"ParameterList","parameters":[],"src":"24766:2:6"},"returnParameters":{"id":2604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2608,"src":"24792:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2602,"name":"uint256","nodeType":"ElementaryTypeName","src":"24792:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24791:9:6"},"scope":2613,"src":"24740:99:6","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910","id":2612,"name":"SyncCompleted","nameLocation":"24906:13:6","nodeType":"EventDefinition","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2610,"indexed":false,"mutability":"mutable","name":"proposalId","nameLocation":"24928:10:6","nodeType":"VariableDeclaration","scope":2612,"src":"24920:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2609,"name":"uint256","nodeType":"ElementaryTypeName","src":"24920:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24919:20:6"},"src":"24900:40:6"}],"scope":2614,"src":"750:24192:6","usedErrors":[11,16,21,30,35,40,799],"usedEvents":[663,672,1025,1033,1041,1051,1057,1065,1075,1081,1087,1091,1099,1107,1115,2612]}],"src":"423:24520:6"},"id":6}},"contracts":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}"},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}"},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6ef9389a2c07bc40d8a7ba48914724ab2c108fac391ce12314f01321813e6368\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7a5cb39b1e6df68f4dd9a5e76e853d745a74ffb3dfd7df4ae4d2ace6992a171\",\"dweb:/ipfs/QmPbzKR19rdM8X3PLQjsmHRepUKhvoZnedSR63XyGtXZib\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]}},\"version\":1}"}},"contracts/DLE.sol":{"DLE":{"abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"location","type":"string"},{"internalType":"string","name":"coordinates","type":"string"},{"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"internalType":"uint256","name":"oktmo","type":"uint256"},{"internalType":"string[]","name":"okvedCodes","type":"string[]"},{"internalType":"uint256","name":"kpp","type":"uint256"},{"internalType":"uint256","name":"quorumPercentage","type":"uint256"},{"internalType":"address[]","name":"initialPartners","type":"address[]"},{"internalType":"uint256[]","name":"initialAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"supportedChainIds","type":"uint256[]"}],"internalType":"struct DLE.DLEConfig","name":"config","type":"tuple"},{"internalType":"uint256","name":"_currentChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainId","type":"uint256"}],"name":"CrossChainExecutionSync","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainId","type":"uint256"}],"name":"CrossChainMultiSigSync","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainId","type":"uint256"}],"name":"CrossChainVoteSync","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"string","name":"location","type":"string"},{"indexed":false,"internalType":"string","name":"coordinates","type":"string"},{"indexed":false,"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oktmo","type":"uint256"},{"indexed":false,"internalType":"string[]","name":"okvedCodes","type":"string[]"},{"indexed":false,"internalType":"uint256","name":"kpp","type":"uint256"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"supportedChainIds","type":"uint256[]"}],"name":"DLEInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"partners","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"InitialTokensDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"moduleId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"moduleAddress","type":"address"}],"name":"ModuleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"moduleId","type":"bytes32"}],"name":"ModuleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"operationHash","type":"bytes32"}],"name":"MultiSigExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"bytes32","name":"operationHash","type":"bytes32"}],"name":"MultiSigOperationCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"operationId","type":"uint256"},{"indexed":false,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"signaturePower","type":"uint256"}],"name":"MultiSigSigned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"operation","type":"bytes"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votingPower","type":"uint256"}],"name":"ProposalVoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"SyncCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"activeModules","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"},{"internalType":"address","name":"_moduleAddress","type":"address"}],"name":"addModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"name":"checkChainConnection","outputs":[{"internalType":"bool","name":"isAvailable","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"}],"name":"checkMultiSigResult","outputs":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"bool","name":"quorumReached","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"checkProposalResult","outputs":[{"internalType":"bool","name":"passed","type":"bool"},{"internalType":"bool","name":"quorumReached","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"checkSyncReadiness","outputs":[{"internalType":"bool","name":"allChainsReady","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_operationHash","type":"bytes32"},{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"createMultiSigOperation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_description","type":"string"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"bytes","name":"_operation","type":"bytes"},{"internalType":"uint256","name":"_governanceChainId","type":"uint256"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dleInfo","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"location","type":"string"},{"internalType":"string","name":"coordinates","type":"string"},{"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"internalType":"uint256","name":"oktmo","type":"uint256"},{"internalType":"uint256","name":"kpp","type":"uint256"},{"internalType":"uint256","name":"creationTimestamp","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"}],"name":"executeMultiSigOperation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"executeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"executedMultiSig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"executedProposals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDLEInfo","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"location","type":"string"},{"internalType":"string","name":"coordinates","type":"string"},{"internalType":"uint256","name":"jurisdiction","type":"uint256"},{"internalType":"uint256","name":"oktmo","type":"uint256"},{"internalType":"string[]","name":"okvedCodes","type":"string[]"},{"internalType":"uint256","name":"kpp","type":"uint256"},{"internalType":"uint256","name":"creationTimestamp","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"internalType":"struct DLE.DLEInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"}],"name":"getModuleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSupportedChainCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getSupportedChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"name":"isChainSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"}],"name":"isModuleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"modules","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiSigCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"multiSigOperations","outputs":[{"internalType":"bytes32","name":"operationHash","type":"bytes32"},{"internalType":"uint256","name":"forSignatures","type":"uint256"},{"internalType":"uint256","name":"againstSignatures","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"initiator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"address","name":"initiator","type":"address"},{"internalType":"bytes","name":"operation","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_moduleId","type":"bytes32"}],"name":"removeModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"name":"signMultiSigOperation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"supportedChains","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_fromChainId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"syncExecutionFromChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationId","type":"uint256"},{"internalType":"uint256","name":"_fromChainId","type":"uint256"},{"internalType":"uint256","name":"_forSignatures","type":"uint256"},{"internalType":"uint256","name":"_againstSignatures","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"syncMultiSigFromChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"syncToAllChains","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_fromChainId","type":"uint256"},{"internalType":"uint256","name":"_forVotes","type":"uint256"},{"internalType":"uint256","name":"_againstVotes","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"syncVoteFromChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":4642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":4531,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4880,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4934,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":4456,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_string_dyn":{"entryPoint":4618,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":4796,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":4494,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4735,"id":null,"parameterSlots":1,"returnSlots":1},"increment_uint256":{"entryPoint":4821,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":4837,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"608060405234620011075762003e8380380390816200001e8162001168565b918239604081838101031262001107578051906001600160401b03821162001107576101809283838301828401031262001107576040519384016001600160401b0381118582101762000b7b57604052818301516001600160401b038111620011075762000094908284019085850101620011b3565b8452818301602001516001600160401b0381116200110757620000bf908284019085850101620011b3565b6020850152818301604001516001600160401b0381116200110757620000ed908284019085850101620011b3565b6040850152818301606001516001600160401b03811162001107576200011b908284019085850101620011b3565b60608501528183016080818101519086015260a0808201519086015260c001516001600160401b038111620011075783830101818301601f8201121562001107578051620001736200016d826200120a565b62001168565b9160208084848152019260051b820101918486018311620011075760208201905b83821062001134575050505060c085015281830160e08181015190860152610100808201519086015261012001516001600160401b0381116200110757818301601f8286860101011215620011075780848401015190620001f96200016d836200120a565b91602083828152019184860160208360051b838a8a01010101116200110757916020838888010101925b60208360051b828a8a0101010184106200110c575050505061012085015281830161014001516001600160401b03811162001107576200026b90828401908585010162001222565b6101408501528183016101600151926001600160401b03841162001107576020936200029d9284019184010162001222565b610160840152015181516020830151815191939092916001600160401b03811162000b7b57620002cf6003546200127f565b601f8111620010b4575b506020601f82116001146200104457819293949560009262001038575b50508160011b916000199060031b1c1916176003555b82516001600160401b03811162000b7b576200032a6004546200127f565b601f811162000fe5575b506020601f821160011462000f76578192939460009262000f6a575b50508160011b916000199060031b1c1916176004555b6001600555805191602082015160408301516060840151608085015160a08601519060c08701519260e088015194604051968761014081011060018060401b036101408a01111762000b7b5761014088016040528a8852602088015260408701526060860152608085015260a084015260c083015260e0820152426101008201526001610120820152835160018060401b03811162000b7b576200040c6006546200127f565b601f811162000f17575b506020601f821160011462000ea757819293949560009262000e9b575b50508160011b916000199060031b1c1916176006555b602081015180519093906001600160401b03811162000b7b576200046f6007546200127f565b601f811162000e48575b506020601f821160011462000dd857819293949560009262000dcc575b50508160011b916000199060031b1c1916176007555b604082015180519093906001600160401b03811162000b7b57620004d26008546200127f565b601f811162000d79575b506020601f821160011462000d0957819293949560009262000cfd575b50508160011b916000199060031b1c1916176008555b606083015180519093906001600160401b03811162000b7b57620005356009546200127f565b601f811162000caa575b506020601f821160011462000c3a57819293949560009262000c2e575b50508160011b916000199060031b1c1916176009555b6080810151600a5560a0810151600b5560c081015180519068010000000000000000821162000b7b57600c5482600c5580831062000b91575b50600c60009081527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c792916020015b82821062000a495786866101208760e0810151600d55610100810151600e550151151560ff8019600f5416911617600f5561010082015160105560135560005b61016082015190815181101562000660576200063b816200065a93620012e5565b5160005260186020526040600020600160ff19825416179055620012d5565b6200061a565b8261012081015151610140820151510362000a04576101208101515115620009bf5760005b6101208201518051821015620007f1576001600160a01b03908190620006ad908490620012e5565b511615620007bd57620006c682610140850151620012e5565b51156200078a57620006de82610120850151620012e5565b511690620006f281610140850151620012e5565b51918015620007715760025483810181116200075b577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208562000755966000940160025584845283825260408420818154019055604051908152a3620012d5565b62000685565b634e487b7160e01b600052601160045260246000fd5b60405163ec442f0560e01b815260006004820152602490fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b8261012081015161014082015190604051916040830160408452825180915260206060850193019060005b8181106200099f57867ff9e7aa11bcdcbb8ac33b5dba92fca799ef091e54c29270822065501d8edea1a587806200085c8989838203602085015262001310565b0390a1805160208201516040830151926060810151608082015190620008e160a084015191620008d260c086015198620008c361016060e089015198015198620008b46040519b6101408d526101408d019062001346565b908b820360208d015262001346565b9089820360408b015262001346565b90878203606089015262001346565b91608086015260a085015283810360c0850152845180825260208201916020808360051b8301019701926000915b8383106200096f577f11b248463a1620b36a975da8f250009f56fb5dd0e9d5027a90a834d0ee84d6f688806200095c8c8b8b60e08501523061010085015283820361012085015262001310565b0390a1604051612b1590816200136e8239f35b90919293976020806200098f600193601f198682030187528c5162001346565b9a0193019301919392906200090f565b82516001600160a01b03168552602094850194909201916001016200081c565b60405162461bcd60e51b815260206004820152601360248201527f4e6f20696e697469616c20706172746e657273000000000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527f417272617973206c656e677468206d69736d61746368000000000000000000006044820152606490fd5b80518051906001600160401b03821162000b7b5762000a6986546200127f565b601f811162000b39575b50602090601f831160011462000ac457928260019493602093869560009262000ab8575b5050600019600383901b1c191690841b1787555b01940191019092620005da565b01519050388062000a97565b908660005260206000209160005b601f198516811062000b20575083602093600196938796938794601f1981161062000b06575b505050811b01875562000aab565b015160001960f88460031b161c1916905538808062000af8565b9192602060018192868501518155019401920162000ad2565b62000b6990876000526020600020601f850160051c8101916020861062000b70575b601f0160051c0190620012bc565b3862000a73565b909150819062000b5b565b634e487b7160e01b600052604160045260246000fd5b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7908382015b818301811062000bce575050620005ab565b8062000bdd600192546200127f565b8062000bec575b500162000bbc565b601f8111831462000c045750600081555b3862000be4565b60009082825262000c24601f60208420920160051c8201858301620012bc565b8183555562000bfd565b0151905038806200055c565b600960005260206000209060005b601f198416811062000c91575060019394959683601f1981161062000c77575b505050811b0160095562000572565b015160001960f88460031b161c1916905538808062000c68565b9091602060018192858b01518155019301910162000c48565b600960005262000cf6907f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b386200053f565b015190503880620004f9565b600860005260206000209060005b601f198416811062000d60575060019394959683601f1981161062000d46575b505050811b016008556200050f565b015160001960f88460031b161c1916905538808062000d37565b9091602060018192858b01518155019301910162000d17565b600860005262000dc5907ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b38620004dc565b01519050388062000496565b600760005260206000209060005b601f198416811062000e2f575060019394959683601f1981161062000e15575b505050811b01600755620004ac565b015160001960f88460031b161c1916905538808062000e06565b9091602060018192858b01518155019301910162000de6565b600760005262000e94907fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000479565b01519050388062000433565b600660005260206000209060005b601f198416811062000efe575060019394959683601f1981161062000ee4575b505050811b0160065562000449565b015160001960f88460031b161c1916905538808062000ed5565b9091602060018192858b01518155019301910162000eb5565b600660005262000f63907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000416565b01519050388062000350565b600460005260206000209060005b601f198416811062000fcc5750600193949583601f1981161062000fb2575b505050811b0160045562000366565b015160001960f88460031b161c1916905538808062000fa3565b9091602060018192858a01518155019301910162000f84565b600460005262001031907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000334565b015190503880620002f6565b600360005260206000209060005b601f19841681106200109b575060019394959683601f1981161062001081575b505050811b016003556200030c565b015160001960f88460031b161c1916905538808062001072565b9091602060018192858b01518155019301910162001052565b600360005262001100907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b38620002d9565b600080fd5b8351916001600160a01b03831683036200110757602081819482935201940193915062000223565b81516001600160401b03811162001107576020916200115c8392838a8c0191880101620011b3565b81520191019062000194565b6040519190601f01601f191682016001600160401b0381118382101762000b7b57604052565b60005b838110620011a25750506000910152565b818101518382015260200162001191565b81601f82011215620011075780516001600160401b03811162000b7b57620011e5601f8201601f191660200162001168565b928184526020828401011162001107576200120791602080850191016200118e565b90565b6001600160401b03811162000b7b5760051b60200190565b9080601f830112156200110757815190620012416200016d836200120a565b9182938184526020808095019260051b82010192831162001107578301905b8282106200126f575050505090565b8151815290830190830162001260565b90600182811c92168015620012b1575b60208310146200129b57565b634e487b7160e01b600052602260045260246000fd5b91607f16916200128f565b818110620012c8575050565b60008155600101620012bc565b60001981146200075b5760010190565b8051821015620012fa5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815180825260208080930193019160005b82811062001331575050505090565b83518552938101939281019260010162001322565b9060209162001361815180928185528580860191016200118e565b601f01601f191601019056fe60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14611dda57508163044bc2bd14611cab578163057b207414611c9057816306fdde0314611bc2578163095ea7b314611b235781630c0512e914611b055781630d61b519146118ff57816318160ddd146118e1578163204c5d1f1461164e57816322dbefbb14610b3c57816323b872dd146115565781632ee09598146114bc578163313ce567146114a057816335324eee146113385781633b60288a146113095781634114509b146111ef578163456d10c1146111095781634b145793146107455781634de184f6146110e65781634fa76ec9146110eb5781635221c1f0146110e6578163548d496f146110b75781635cf0e8a4146110995781636cbadbfa1461109957816370a082311461105f5781637ce288ea14610f6b5781637e5a9b4714610f3c578163893d692a14610e205781638c7b04c914610e0257816395d89b4114610d175781639a49bdde14610cf2578163a9059cbb14610cc1578163af89d2c414610c92578163b00e073014610b6e578163b0b6cc1a14610b3c578163b359451014610774578163b3fe8bcb14610745578163c51cab3a146106d5578163c9d27afe1461054e578163ccd7a49014610388578163dd62ed3e14610337578163e49a62e914610310578163eced3dfb146102f4575063f2c26a471461020557600080fd5b346102ef5760003660031901126102ef576102a46040516102308161022981611edb565b03826121dd565b6040516102408161022981611f7f565b604051906102588261025181612006565b03836121dd565b60405191610270836102698161208d565b03846121dd565b600a5492600b546102ce600d54926102c0600e54956102b260ff600f5416986040519c8d9c8d610120908181520190612222565b8c810360208e015290612222565b908a820360408c0152612222565b9088820360608a0152612222565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b346102ef5760003660031901126102ef57602090604051908152f35b346102ef5760203660031901126102ef5761032d6020913561278c565b6040519015158152f35b346102ef5760403660031901126102ef576103506122b8565b6103586122ce565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346102ef576103963661234c565b9061039f6125f5565b80600052602092601784526040600020906103bc825415156126c5565b8082015442101561051a576103d860ff60038401541615612711565b60068201903360005281865260ff604060002054166104e5573360005260008652604060002054156104ad57509361048e917f78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc95336000526000835260406000205492526040600020600160ff198254161790558460001461049857600101610462828254612449565b90555b604080519384523360208501529315159383019390935260608201929092529081906080820190565b0390a16001600555005b6002016104a6828254612449565b9055610465565b60405162461bcd60e51b815290810186905260116024820152702737903a37b5b2b739903a379039b4b3b760791b6044820152606490fd5b60405162461bcd60e51b8152908101869052600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b60405162461bcd60e51b8152908101859052600d60248201526c14da59db9a5b99c8195b991959609a1b6044820152606490fd5b346102ef5761055c3661234c565b906105656125f5565b80600052602092601684526040600020906105828383541461255d565b60058201544210156106a25761059e60ff8284015416156125a9565b60088201903360005281865260ff6040600020541661066e5733600052600086526040600020541561063657509361048e917f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a995336000526000835260406000205492526040600020600160ff198254161790558460001461062857600201610462828254612449565b6003016104a6828254612449565b60405162461bcd60e51b815290810186905260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b60405162461bcd60e51b8152908101869052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b60405162461bcd60e51b8152908101859052600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b346102ef5760203660031901126102ef578060c091356000526017602052604060002090815491600181015491600282015460ff6003840154169183015492600560018060a01b0391015416936040519586526020860152604085015215156060840152608083015260a0820152f35b346102ef5760203660031901126102ef57356000526015602052602060ff604060002054166040519015158152f35b346102ef5760803660031901126102ef57803567ffffffffffffffff918282116102ef57366023830112156102ef576107b7602492369084818501359101612263565b908235936044358181116102ef576107d2903690840161229a565b9460643595336000526020966000885260406000205415610aed576107f883151561246c565b806000526018885261081160ff604060002054166124b8565b6000526018875260ff6040600020541615610ab45760115495610833876124fa565b601155866000526016885260406000208781556001938482018851878111610aa057610869816108638454611ea1565b84612509565b8b8c601f8311600114610a2b5750918160079594926108bc94600091610a20575b50600019600383901b1c191690891b1790555b600060028401556000600384015588830160ff19815416905542612449565b600582015560068101336001600160601b0360a01b82541617905501948251948511610a0d5750506108f8836108f28654611ea1565b86612509565b8690601f841160011461098057928061096a959381937f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639896600094610975575b50501b916000199060031b1c19161790555b6040519182918583523387840152606060408401526060830190612222565b0390a1604051908152f35b015192508a80610939565b90601f9392931983169185600052886000209260005b8a8282106109f9575050917f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63979593918561096a989694106109e0575b505050811b01905561094b565b015160001960f88460031b161c191690558880806109d3565b838501518655948701949384019301610996565b604190634e487b7160e01b600052526000fd5b90508c01518f61088a565b8892918c601f1984168660005283600020936000905b828210610a855750509160079897959391856108bc98969410610a6c575b505050811b01905561089d565b015160001960f88460031b161c191690558f808e610a5f565b9284015185558c9690940193928201928f9290810190610a41565b8460418a634e487b7160e01b600052526000fd5b60405162461bcd60e51b815280850188905260138188015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60405162461bcd60e51b81528086018990526023818901527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b346102ef5760203660031901126102ef57356000526014602052602060018060a01b0360406000205416604051908152f35b346102ef5760403660031901126102ef5780359060243533600052600060205260406000205415610c42576060602093600583610bcd7f8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f095151561246c565b60125495610bda876124fa565b6012558660005260178852610c1160406000209285845560006001850155600060028501556003840160ff19815416905542612449565b9082015501336001600160601b0360a01b8254161790556040519084825233868301526040820152a1604051908152f35b60405162461bcd60e51b81526020818401526024808201527f4d75737420686f6c6420746f6b656e7320746f20637265617465206f706572616044820152633a34b7b760e11b6064820152608490fd5b346102ef5760203660031901126102ef5735600052601a602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef57610ce7610cdd6122b8565b602435903361236b565b602060405160018152f35b346102ef5760203660031901126102ef57610d0f602091356127ed565b604051908152f35b346102ef5760003660031901126102ef57604051906000908054610d3a81611ea1565b80855291600191808316908115610dd85750600114610d7c575b610d7885610d64818703826121dd565b604051918291602083526020830190612222565b0390f35b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610dc0575050508101602001610d6482610d78610d54565b80546020858701810191909152909301928101610da5565b869550610d7896935060209250610d6494915060ff191682840152151560051b8201019293610d54565b346102ef5760003660031901126102ef576020601254604051908152f35b346102ef5760203660031901126102ef57803590816000526017602052604060002090815491610e518315156126c5565b600381019180835492610e6760ff851615612711565b01544210610f0457610e788561275d565b81610efc575b5015610ec1577f64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5604086868660018760ff191617905582519182526020820152a1005b60649060206040519162461bcd60e51b8352820152601460248201527313dc195c985d1a5bdb881b9bdd081c185cdcd95960621b6044820152fd5b905086610e7e565b60649060206040519162461bcd60e51b8352820152601160248201527014da59db9a5b99c81b9bdd08195b991959607a1b6044820152fd5b346102ef5760203660031901126102ef57610f579035612668565b604080519215158352901515602083015290f35b346102ef5760203660031901126102ef57803590610f888261278c565b156110245760135460005b828110610fc7577f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910602085604051908152a1005b807f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313611017610ff861101f946127ed565b604051918291878a846040919493926060820195825260208201520152565b0390a16124fa565b610f93565b60649060206040519162461bcd60e51b835282015260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152fd5b346102ef5760203660031901126102ef576001600160a01b036110806122b8565b1660005260006020526020604060002054604051908152f35b346102ef5760003660031901126102ef576020601354604051908152f35b346102ef5760203660031901126102ef57356000526018602052602060ff604060002054166040519015158152f35b61231f565b346102ef5760003660031901126102ef576020601054604051908152f35b346102ef577fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb611138366122e4565b508360009493945260166020526111ae6003604060002061115b8682541461255d565b86600052601860205261117560ff604060002054166124b8565b6009810194876000528560205261119460ff6040600020541615612618565b6111a360028301918254612449565b905501918254612449565b9055826000526020526040600020600160ff198254161790556111ea601354604051938493846040919493926060820195825260208201520152565b0390a1005b346102ef576020806003193601126102ef578135913360005260008252604060002054156112bd57826000526015825260ff60406000205416156112835750600082815260148252604080822080546001600160a01b03191690556015835290819020805460ff19169055519182527f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba85391a1005b6064916040519162461bcd60e51b83528201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152fd5b6084916040519162461bcd60e51b8352820152602160248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c6044820152606560f81b6064820152fd5b346102ef5760203660031901126102ef57356000526019602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef578035906113546122ce565b33600052602090600082526040600020541561145c576001600160a01b031691821561142b57836000526015825260ff604060002054166113f1577ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d727227196040858585826000526014815283600020826001600160601b0360a01b8254161790556015815283600020600160ff198254161790558351928352820152a1005b6064916040519162461bcd60e51b835282015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152fd5b6064916040519162461bcd60e51b8352820152600c60248201526b5a65726f206164647265737360a01b6044820152fd5b60405162461bcd60e51b8152808401839052601e60248201527f4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c6500006044820152606490fd5b346102ef5760003660031901126102ef57602060405160128152f35b346102ef577fe379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe56114eb366122e4565b508360009493945260176020526111ae6002604060002061150e815415156126c5565b86600052601860205261152860ff604060002054166124b8565b6007810194876000528560205261154760ff6040600020541615612618565b6111a360018301918254612449565b346102ef5760603660031901126102ef5761156f6122b8565b6115776122ce565b6044359160018060a01b0381168060005260016020526040600020336000526020526040600020549460001986106115b6575b5050610ce7935061236b565b84861061162257811561160a5733156115f25750610ce794849160005260016020526040600020336000526020520360406000205584806115aa565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b346102ef5760003660031901126102ef576000610120604051611670816121aa565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051906116b7826121aa565b6040516116c78161022981611edb565b82526040516116d98161022981611f7f565b60208301526040516116ee8161022981612006565b6040830152604051611703816102298161208d565b6060830152600a546080830152600b5460a0830152600c549067ffffffffffffffff82116118cc57506040519061174060208260051b01836121dd565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b8383106118a757858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526118086117f26117dc6117c685516101406020870152610160860190612222565b6020860151858203601f19016040870152612222565b6040850151848203601f19016060860152612222565b6060840151838203601f19016080850152612222565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061187a578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080611898600193601f198682030187528951612222565b97019301930191939290611849565b6001602081926040516118be816102298189612114565b815201920192019190611771565b604190634e487b7160e01b6000525260246000fd5b346102ef5760003660031901126102ef576020600254604051908152f35b346102ef576020806003193601126102ef57813591826000526016825260406000209161192e8484541461255d565b8183019283549261194260ff8516156125a9565b60058201544210611ace5761195686612668565b81611ac6575b5015611a8c57506007906001948560ff19809616179055019261198e604051611989816102298189612114565b612884565b60405194855260408286015260009380546119a881611ea1565b948560408901528382169182600014611a465750506001146119ed575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b838510611a3257505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d284806119c5565b8054868601606001529382019381016119f9565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b820101919284806119c5565b60405162461bcd60e51b81529081018390526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b90508761195c565b60405162461bcd60e51b8152908101839052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346102ef5760003660031901126102ef576020601154604051908152f35b346102ef5760403660031901126102ef57611b3c6122b8565b602435903315611baa576001600160a01b03169182156115f25750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b346102ef5760003660031901126102ef576040516000600354611be481611ea1565b80845290600190818116908115611c695750600114611c0e575b610d7884610d64818603826121dd565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611c51575050508101602001610d6482611bfe565b80546020858701810191909152909301928101611c39565b60ff191660208087019190915292151560051b85019092019250610d649150839050611bfe565b346102ef5760203660031901126102ef57610f57903561275d565b346102ef5760603660031901126102ef57602435813560443567ffffffffffffffff81116102ef57611ce0903690850161229a565b50816000526018602052611cfb60ff604060002054166124b8565b80600052601960205260ff60406000205416611da3577f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e8331392508060005260196020526040600020600160ff198254161790556016602052604060002081815414611d84575b506111ea601354604051938493846040919493926060820195825260208201520152565b6007611989611d9d926102296040518094819301612114565b83611d60565b60405162461bcd60e51b8152602081850152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b90346102ef5760203660031901126102ef5780356000526016602052610d786040600020916007835493611e1c86611e158160018501612114565b03876121dd565b60028101549260ff60038301549183015416600583015491611e5c60018060a01b0360068601541694611e556040518098819301612114565b03866121dd565b611e78604051998a998a526101008060208c01528a0190612222565b95604089015260608801521515608087015260a086015260c085015283820360e0850152612222565b90600182811c92168015611ed1575b6020831014611ebb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611eb0565b60065460009291611eeb82611ea1565b80825291600190818116908115611f625750600114611f0957505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410611f4a57505060209250010190565b80546020858501810191909152909301928101611f38565b915050602093945060ff929192191683830152151560051b010190565b60075460009291611f8f82611ea1565b80825291600190818116908115611f625750600114611fad57505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410611fee57505060209250010190565b80546020858501810191909152909301928101611fdc565b6008546000929161201682611ea1565b80825291600190818116908115611f62575060011461203457505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b84841061207557505060209250010190565b80546020858501810191909152909301928101612063565b6009546000929161209d82611ea1565b80825291600190818116908115611f6257506001146120bb57505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b8484106120fc57505060209250010190565b805460208585018101919091529093019281016120ea565b906000929180549161212583611ea1565b9182825260019384811690816000146121875750600114612147575b50505050565b90919394506000526020928360002092846000945b838610612173575050505001019038808080612141565b80548587018301529401938590820161215c565b9294505050602093945060ff191683830152151560051b01019038808080612141565b610140810190811067ffffffffffffffff8211176121c757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176121c757604052565b60005b8381106122125750506000910152565b8181015183820152602001612202565b9060209161223b815180928185528580860191016121ff565b601f01601f1916010190565b67ffffffffffffffff81116121c757601f01601f191660200190565b92919261226f82612247565b9161227d60405193846121dd565b8294818452818301116102ef578281602093846000960137010152565b9080601f830112156102ef578160206122b593359101612263565b90565b600435906001600160a01b03821682036102ef57565b602435906001600160a01b03821682036102ef57565b60a06003198201126102ef57600435916024359160443591606435916084359067ffffffffffffffff82116102ef576122b59160040161229a565b346102ef5760203660031901126102ef57602061032d600435600052601860205260ff6040600020541690565b60409060031901126102ef576004359060243580151581036102ef5790565b916001600160a01b03808416928315612430571692831561241757600090838252816020526040822054908382106123e5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161245657565b634e487b7160e01b600052601160045260246000fd5b1561247357565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b156124bf57565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b60001981146124565760010190565b90601f811161251757505050565b600091825260208220906020601f850160051c83019410612553575b601f0160051c01915b82811061254857505050565b81815560010161253c565b9092508290612533565b1561256457565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b156125b057565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b600260055414612606576002600555565b604051633ee5aeb560e01b8152600490fd5b1561261f57565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b8181029291811591840414171561245657565b9081600052601660205261268360406000209283541461255d565b60036002830154920154916126988382612449565b60646126a960025460105490612655565b041115928391826126bb575b50509190565b11905038806126b5565b156126cc57565b60405162461bcd60e51b815260206004820152601860248201527f4f7065726174696f6e20646f6573206e6f7420657869737400000000000000006044820152606490fd5b1561271857565b60405162461bcd60e51b815260206004820152601a60248201527f4f7065726174696f6e20616c72656164792065786563757465640000000000006044820152606490fd5b6000526017602052604060002090612777825415156126c5565b60026001830154920154916126988382612449565b6127a5600091808352601660205260408320541461255d565b805b600481106127b6575050600190565b6127d66127c2826127ed565b600052601860205260ff6040600020541690565b156127e9576127e4906124fa565b6127a7565b5090565b80156128575760018114612851576002811461284b576003146128455760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b61a4b190565b50603890565b50608990565b50600190565b91908260409103126102ef5781516001600160a01b03811681036102ef5760209092015190565b80518101906020908082840193604091829103126102ef57818301516001600160e01b0319811692908390036102ef57818101519067ffffffffffffffff82116102ef57019184603f840112156102ef5783830151926128e384612247565b936128f0845195866121dd565b808552858501968482840101116102ef57868461290d93016121ff565b63a9059cbb60e01b8103612942575050916129309183612940945101019061285d565b906001600160a01b03163361236b565b565b909391906340c10f1960e01b81036129d95750908282612965935101019061285d565b6001600160a01b039091169283156129c25791816000936129a97fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600254612449565b60025585855284835280852082815401905551908152a3565b5163ec442f0560e01b815260006004820152602490fd5b939493632770a7eb60e21b03612aa7579082826129f9935101019061285d565b916001600160a01b03909116908115612a8f576000928284528382528584205495818710612a615781859697857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9697528785520381872055816002540360025551908152a3565b5163391434e360e21b81526001600160a01b0384166004820152602481018790526044810191909152606490fd5b8451634b637e8f60e11b815260006004820152602490fd5b845162461bcd60e51b81526004810184905260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fdfea26469706673582212200e003730d00266375259274b7ce87a5cf38ca28d407c876977216eb1d0bff04464736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH3 0x1107 JUMPI PUSH3 0x3E83 DUP1 CODESIZE SUB SWAP1 DUP2 PUSH3 0x1E DUP2 PUSH3 0x1168 JUMP JUMPDEST SWAP2 DUP3 CODECOPY PUSH1 0x40 DUP2 DUP4 DUP2 ADD SUB SLT PUSH3 0x1107 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH3 0x1107 JUMPI PUSH2 0x180 SWAP3 DUP4 DUP4 DUP4 ADD DUP3 DUP5 ADD SUB SLT PUSH3 0x1107 JUMPI PUSH1 0x40 MLOAD SWAP4 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP6 DUP3 LT OR PUSH3 0xB7B JUMPI PUSH1 0x40 MSTORE DUP2 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0x94 SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST DUP5 MSTORE DUP2 DUP4 ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0xBF SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0xED SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0x11B SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0x80 DUP2 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI DUP4 DUP4 ADD ADD DUP2 DUP4 ADD PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP1 MLOAD PUSH3 0x173 PUSH3 0x16D DUP3 PUSH3 0x120A JUMP JUMPDEST PUSH3 0x1168 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP1 DUP5 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 DUP5 DUP7 ADD DUP4 GT PUSH3 0x1107 JUMPI PUSH1 0x20 DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH3 0x1134 JUMPI POP POP POP POP PUSH1 0xC0 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH1 0xE0 DUP2 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI DUP2 DUP4 ADD PUSH1 0x1F DUP3 DUP7 DUP7 ADD ADD ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP1 DUP5 DUP5 ADD ADD MLOAD SWAP1 PUSH3 0x1F9 PUSH3 0x16D DUP4 PUSH3 0x120A JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD SWAP2 DUP5 DUP7 ADD PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP4 DUP11 DUP11 ADD ADD ADD ADD GT PUSH3 0x1107 JUMPI SWAP2 PUSH1 0x20 DUP4 DUP9 DUP9 ADD ADD ADD SWAP3 JUMPDEST PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP3 DUP11 DUP11 ADD ADD ADD ADD DUP5 LT PUSH3 0x110C JUMPI POP POP POP POP PUSH2 0x120 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH3 0x26B SWAP1 DUP3 DUP5 ADD SWAP1 DUP6 DUP6 ADD ADD PUSH3 0x1222 JUMP JUMPDEST PUSH2 0x140 DUP6 ADD MSTORE DUP2 DUP4 ADD PUSH2 0x160 ADD MLOAD SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH3 0x1107 JUMPI PUSH1 0x20 SWAP4 PUSH3 0x29D SWAP3 DUP5 ADD SWAP2 DUP5 ADD ADD PUSH3 0x1222 JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE ADD MLOAD DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD DUP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x2CF PUSH1 0x3 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0x10B4 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0x1044 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0x1038 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x32A PUSH1 0x4 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xFE5 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xF76 JUMPI DUP2 SWAP3 SWAP4 SWAP5 PUSH1 0x0 SWAP3 PUSH3 0xF6A JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x5 SSTORE DUP1 MLOAD SWAP2 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD SWAP1 PUSH1 0xC0 DUP8 ADD MLOAD SWAP3 PUSH1 0xE0 DUP9 ADD MLOAD SWAP5 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x140 DUP2 ADD LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB PUSH2 0x140 DUP11 ADD GT OR PUSH3 0xB7B JUMPI PUSH2 0x140 DUP9 ADD PUSH1 0x40 MSTORE DUP11 DUP9 MSTORE PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP3 ADD MSTORE TIMESTAMP PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH2 0x120 DUP3 ADD MSTORE DUP4 MLOAD PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x40C PUSH1 0x6 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xF17 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xEA7 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xE9B JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x6 SSTORE JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x46F PUSH1 0x7 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xE48 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xDD8 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xDCC JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x4D2 PUSH1 0x8 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xD79 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xD09 JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xCFD JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x8 SSTORE JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x535 PUSH1 0x9 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xCAA JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH3 0xC3A JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xC2E JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x9 SSTORE JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xB SSTORE PUSH1 0xC0 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 GT PUSH3 0xB7B JUMPI PUSH1 0xC SLOAD DUP3 PUSH1 0xC SSTORE DUP1 DUP4 LT PUSH3 0xB91 JUMPI JUMPDEST POP PUSH1 0xC PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 SWAP3 SWAP2 PUSH1 0x20 ADD JUMPDEST DUP3 DUP3 LT PUSH3 0xA49 JUMPI DUP7 DUP7 PUSH2 0x120 DUP8 PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0xD SSTORE PUSH2 0x100 DUP2 ADD MLOAD PUSH1 0xE SSTORE ADD MLOAD ISZERO ISZERO PUSH1 0xFF DUP1 NOT PUSH1 0xF SLOAD AND SWAP2 AND OR PUSH1 0xF SSTORE PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x10 SSTORE PUSH1 0x13 SSTORE PUSH1 0x0 JUMPDEST PUSH2 0x160 DUP3 ADD MLOAD SWAP1 DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x660 JUMPI PUSH3 0x63B DUP2 PUSH3 0x65A SWAP4 PUSH3 0x12E5 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH3 0x12D5 JUMP JUMPDEST PUSH3 0x61A JUMP JUMPDEST DUP3 PUSH2 0x120 DUP2 ADD MLOAD MLOAD PUSH2 0x140 DUP3 ADD MLOAD MLOAD SUB PUSH3 0xA04 JUMPI PUSH2 0x120 DUP2 ADD MLOAD MLOAD ISZERO PUSH3 0x9BF JUMPI PUSH1 0x0 JUMPDEST PUSH2 0x120 DUP3 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH3 0x7F1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 SWAP1 PUSH3 0x6AD SWAP1 DUP5 SWAP1 PUSH3 0x12E5 JUMP JUMPDEST MLOAD AND ISZERO PUSH3 0x7BD JUMPI PUSH3 0x6C6 DUP3 PUSH2 0x140 DUP6 ADD MLOAD PUSH3 0x12E5 JUMP JUMPDEST MLOAD ISZERO PUSH3 0x78A JUMPI PUSH3 0x6DE DUP3 PUSH2 0x120 DUP6 ADD MLOAD PUSH3 0x12E5 JUMP JUMPDEST MLOAD AND SWAP1 PUSH3 0x6F2 DUP2 PUSH2 0x140 DUP6 ADD MLOAD PUSH3 0x12E5 JUMP JUMPDEST MLOAD SWAP2 DUP1 ISZERO PUSH3 0x771 JUMPI PUSH1 0x2 SLOAD DUP4 DUP2 ADD DUP2 GT PUSH3 0x75B JUMPI PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x20 DUP6 PUSH3 0x755 SWAP7 PUSH1 0x0 SWAP5 ADD PUSH1 0x2 SSTORE DUP5 DUP5 MSTORE DUP4 DUP3 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 PUSH3 0x12D5 JUMP JUMPDEST PUSH3 0x685 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x16995C9BC8185B5BDD5B9D PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A65726F2061646472657373 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x140 DUP3 ADD MLOAD SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD PUSH1 0x40 DUP5 MSTORE DUP3 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH1 0x60 DUP6 ADD SWAP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH3 0x99F JUMPI DUP7 PUSH32 0xF9E7AA11BCDCBB8AC33B5DBA92FCA799EF091E54C29270822065501D8EDEA1A5 DUP8 DUP1 PUSH3 0x85C DUP10 DUP10 DUP4 DUP3 SUB PUSH1 0x20 DUP6 ADD MSTORE PUSH3 0x1310 JUMP JUMPDEST SUB SWAP1 LOG1 DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD SWAP1 PUSH3 0x8E1 PUSH1 0xA0 DUP5 ADD MLOAD SWAP2 PUSH3 0x8D2 PUSH1 0xC0 DUP7 ADD MLOAD SWAP9 PUSH3 0x8C3 PUSH2 0x160 PUSH1 0xE0 DUP10 ADD MLOAD SWAP9 ADD MLOAD SWAP9 PUSH3 0x8B4 PUSH1 0x40 MLOAD SWAP12 PUSH2 0x140 DUP14 MSTORE PUSH2 0x140 DUP14 ADD SWAP1 PUSH3 0x1346 JUMP JUMPDEST SWAP1 DUP12 DUP3 SUB PUSH1 0x20 DUP14 ADD MSTORE PUSH3 0x1346 JUMP JUMPDEST SWAP1 DUP10 DUP3 SUB PUSH1 0x40 DUP12 ADD MSTORE PUSH3 0x1346 JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x60 DUP10 ADD MSTORE PUSH3 0x1346 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 PUSH1 0x20 DUP1 DUP4 PUSH1 0x5 SHL DUP4 ADD ADD SWAP8 ADD SWAP3 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH3 0x96F JUMPI PUSH32 0x11B248463A1620B36A975DA8F250009F56FB5DD0E9D5027A90A834D0EE84D6F6 DUP9 DUP1 PUSH3 0x95C DUP13 DUP12 DUP12 PUSH1 0xE0 DUP6 ADD MSTORE ADDRESS PUSH2 0x100 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH2 0x120 DUP6 ADD MSTORE PUSH3 0x1310 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH2 0x2B15 SWAP1 DUP2 PUSH3 0x136E DUP3 CODECOPY RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP8 PUSH1 0x20 DUP1 PUSH3 0x98F PUSH1 0x1 SWAP4 PUSH1 0x1F NOT DUP7 DUP3 SUB ADD DUP8 MSTORE DUP13 MLOAD PUSH3 0x1346 JUMP JUMPDEST SWAP11 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH3 0x90F JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x81C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F20696E697469616C20706172746E65727300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x417272617973206C656E677468206D69736D6174636800000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH3 0xB7B JUMPI PUSH3 0xA69 DUP7 SLOAD PUSH3 0x127F JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH3 0xB39 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH3 0xAC4 JUMPI SWAP3 DUP3 PUSH1 0x1 SWAP5 SWAP4 PUSH1 0x20 SWAP4 DUP7 SWAP6 PUSH1 0x0 SWAP3 PUSH3 0xAB8 JUMPI JUMPDEST POP POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP5 SHL OR DUP8 SSTORE JUMPDEST ADD SWAP5 ADD SWAP2 ADD SWAP1 SWAP3 PUSH3 0x5DA JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0xA97 JUMP JUMPDEST SWAP1 DUP7 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH3 0xB20 JUMPI POP DUP4 PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP7 SWAP4 DUP8 SWAP7 SWAP4 DUP8 SWAP5 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xB06 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP8 SSTORE PUSH3 0xAAB JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xAF8 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH3 0xAD2 JUMP JUMPDEST PUSH3 0xB69 SWAP1 DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP7 LT PUSH3 0xB70 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0xA73 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH3 0xB5B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xC PUSH1 0x0 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 SWAP1 DUP4 DUP3 ADD JUMPDEST DUP2 DUP4 ADD DUP2 LT PUSH3 0xBCE JUMPI POP POP PUSH3 0x5AB JUMP JUMPDEST DUP1 PUSH3 0xBDD PUSH1 0x1 SWAP3 SLOAD PUSH3 0x127F JUMP JUMPDEST DUP1 PUSH3 0xBEC JUMPI JUMPDEST POP ADD PUSH3 0xBBC JUMP JUMPDEST PUSH1 0x1F DUP2 GT DUP4 EQ PUSH3 0xC04 JUMPI POP PUSH1 0x0 DUP2 SSTORE JUMPDEST CODESIZE PUSH3 0xBE4 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP3 DUP3 MSTORE PUSH3 0xC24 PUSH1 0x1F PUSH1 0x20 DUP5 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD DUP6 DUP4 ADD PUSH3 0x12BC JUMP JUMPDEST DUP2 DUP4 SSTORE SSTORE PUSH3 0xBFD JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x55C JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xC91 JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xC77 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x9 SSTORE PUSH3 0x572 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xC68 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xC48 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 MSTORE PUSH3 0xCF6 SWAP1 PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x53F JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x4F9 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xD60 JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xD46 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x8 SSTORE PUSH3 0x50F JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xD37 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xD17 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 MSTORE PUSH3 0xDC5 SWAP1 PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x4DC JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x496 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xE2F JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xE15 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x7 SSTORE PUSH3 0x4AC JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xE06 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xDE6 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 MSTORE PUSH3 0xE94 SWAP1 PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x479 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x433 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xEFE JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xEE4 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x6 SSTORE PUSH3 0x449 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xED5 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xEB5 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 MSTORE PUSH3 0xF63 SWAP1 PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x416 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x350 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0xFCC JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0xFB2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH3 0x366 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0xFA3 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0xF84 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 MSTORE PUSH3 0x1031 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x334 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH3 0x2F6 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH3 0x109B JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH3 0x1081 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH3 0x30C JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH3 0x1072 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH3 0x1052 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 MSTORE PUSH3 0x1100 SWAP1 PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH3 0xB70 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH3 0x12BC JUMP JUMPDEST CODESIZE PUSH3 0x2D9 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP4 SUB PUSH3 0x1107 JUMPI PUSH1 0x20 DUP2 DUP2 SWAP5 DUP3 SWAP4 MSTORE ADD SWAP5 ADD SWAP4 SWAP2 POP PUSH3 0x223 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0x1107 JUMPI PUSH1 0x20 SWAP2 PUSH3 0x115C DUP4 SWAP3 DUP4 DUP11 DUP13 ADD SWAP2 DUP9 ADD ADD PUSH3 0x11B3 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH3 0x194 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH3 0xB7B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH3 0x11A2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1191 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH3 0x11E5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH3 0x1168 JUMP JUMPDEST SWAP3 DUP2 DUP5 MSTORE PUSH1 0x20 DUP3 DUP5 ADD ADD GT PUSH3 0x1107 JUMPI PUSH3 0x1207 SWAP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 ADD PUSH3 0x118E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH3 0xB7B JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH3 0x1107 JUMPI DUP2 MLOAD SWAP1 PUSH3 0x1241 PUSH3 0x16D DUP4 PUSH3 0x120A JUMP JUMPDEST SWAP2 DUP3 SWAP4 DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP6 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH3 0x1107 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH3 0x126F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH3 0x1260 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH3 0x12B1 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH3 0x129B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH3 0x128F JUMP JUMPDEST DUP2 DUP2 LT PUSH3 0x12C8 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x12BC JUMP JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH3 0x75B JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH3 0x12FA JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH3 0x1331 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH3 0x1322 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH3 0x1361 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH3 0x118E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP2 DUP3 PUSH4 0x13CF08B EQ PUSH2 0x1DDA JUMPI POP DUP2 PUSH4 0x44BC2BD EQ PUSH2 0x1CAB JUMPI DUP2 PUSH4 0x57B2074 EQ PUSH2 0x1C90 JUMPI DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1BC2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1B23 JUMPI DUP2 PUSH4 0xC0512E9 EQ PUSH2 0x1B05 JUMPI DUP2 PUSH4 0xD61B519 EQ PUSH2 0x18FF JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x18E1 JUMPI DUP2 PUSH4 0x204C5D1F EQ PUSH2 0x164E JUMPI DUP2 PUSH4 0x22DBEFBB EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x1556 JUMPI DUP2 PUSH4 0x2EE09598 EQ PUSH2 0x14BC JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x14A0 JUMPI DUP2 PUSH4 0x35324EEE EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x3B60288A EQ PUSH2 0x1309 JUMPI DUP2 PUSH4 0x4114509B EQ PUSH2 0x11EF JUMPI DUP2 PUSH4 0x456D10C1 EQ PUSH2 0x1109 JUMPI DUP2 PUSH4 0x4B145793 EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0x4DE184F6 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x4FA76EC9 EQ PUSH2 0x10EB JUMPI DUP2 PUSH4 0x5221C1F0 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x548D496F EQ PUSH2 0x10B7 JUMPI DUP2 PUSH4 0x5CF0E8A4 EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x6CBADBFA EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x105F JUMPI DUP2 PUSH4 0x7CE288EA EQ PUSH2 0xF6B JUMPI DUP2 PUSH4 0x7E5A9B47 EQ PUSH2 0xF3C JUMPI DUP2 PUSH4 0x893D692A EQ PUSH2 0xE20 JUMPI DUP2 PUSH4 0x8C7B04C9 EQ PUSH2 0xE02 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xD17 JUMPI DUP2 PUSH4 0x9A49BDDE EQ PUSH2 0xCF2 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCC1 JUMPI DUP2 PUSH4 0xAF89D2C4 EQ PUSH2 0xC92 JUMPI DUP2 PUSH4 0xB00E0730 EQ PUSH2 0xB6E JUMPI DUP2 PUSH4 0xB0B6CC1A EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0xB3594510 EQ PUSH2 0x774 JUMPI DUP2 PUSH4 0xB3FE8BCB EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0xC51CAB3A EQ PUSH2 0x6D5 JUMPI DUP2 PUSH4 0xC9D27AFE EQ PUSH2 0x54E JUMPI DUP2 PUSH4 0xCCD7A490 EQ PUSH2 0x388 JUMPI DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x337 JUMPI DUP2 PUSH4 0xE49A62E9 EQ PUSH2 0x310 JUMPI DUP2 PUSH4 0xECED3DFB EQ PUSH2 0x2F4 JUMPI POP PUSH4 0xF2C26A47 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x2A4 PUSH1 0x40 MLOAD PUSH2 0x230 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x240 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x258 DUP3 PUSH2 0x251 DUP2 PUSH2 0x2006 JUMP JUMPDEST SUB DUP4 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH2 0x270 DUP4 PUSH2 0x269 DUP2 PUSH2 0x208D JUMP JUMPDEST SUB DUP5 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0xA SLOAD SWAP3 PUSH1 0xB SLOAD PUSH2 0x2CE PUSH1 0xD SLOAD SWAP3 PUSH2 0x2C0 PUSH1 0xE SLOAD SWAP6 PUSH2 0x2B2 PUSH1 0xFF PUSH1 0xF SLOAD AND SWAP9 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP13 DUP14 PUSH2 0x120 SWAP1 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST DUP13 DUP2 SUB PUSH1 0x20 DUP15 ADD MSTORE SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x40 DUP13 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x32D PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x278C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x350 PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x22CE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x396 CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x39F PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x17 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x3BC DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP1 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x51A JUMPI PUSH2 0x3D8 PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x2711 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x4E5 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x4AD JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78B8E65C466DF05EA5DDF0593B44648ECA1F35C039F180E31257A6F1BDD005DC SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x498 JUMPI PUSH1 0x1 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE CALLER PUSH1 0x20 DUP6 ADD MSTORE SWAP4 ISZERO ISZERO SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x80 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x5 SSTORE STOP JUMPDEST PUSH1 0x2 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2737903A37B5B2B739903A379039B4B3B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDA59DB9959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x14DA59DB9A5B99C8195B991959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x55C CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x565 PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x16 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x582 DUP4 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x59E PUSH1 0xFF DUP3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x8 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x66E JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x636 JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78975AAF742630489BADD22949B88AC50EAAEA576339EE05440B671A33BFB6A9 SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x628 JUMPI PUSH1 0x2 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x3 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4E6F20746F6B656E7320746F20766F7465 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x105B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x159BDD1A5B99C8195B991959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 PUSH1 0xC0 SWAP2 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND SWAP2 DUP4 ADD SLOAD SWAP3 PUSH1 0x5 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 ADD SLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0x2EF JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI PUSH2 0x7B7 PUSH1 0x24 SWAP3 CALLDATASIZE SWAP1 DUP5 DUP2 DUP6 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 DUP3 CALLDATALOAD SWAP4 PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x7D2 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x229A JUMP JUMPDEST SWAP5 PUSH1 0x64 CALLDATALOAD SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP7 PUSH1 0x0 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xAED JUMPI PUSH2 0x7F8 DUP4 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x18 DUP9 MSTORE PUSH2 0x811 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 DUP8 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x11 SLOAD SWAP6 PUSH2 0x833 DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x11 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x16 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP8 DUP2 SSTORE PUSH1 0x1 SWAP4 DUP5 DUP3 ADD DUP9 MLOAD DUP8 DUP2 GT PUSH2 0xAA0 JUMPI PUSH2 0x869 DUP2 PUSH2 0x863 DUP5 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP5 PUSH2 0x2509 JUMP JUMPDEST DUP12 DUP13 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xA2B JUMPI POP SWAP2 DUP2 PUSH1 0x7 SWAP6 SWAP5 SWAP3 PUSH2 0x8BC SWAP5 PUSH1 0x0 SWAP2 PUSH2 0xA20 JUMPI JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP10 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP5 ADD SSTORE PUSH1 0x0 PUSH1 0x3 DUP5 ADD SSTORE DUP9 DUP4 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SSTORE PUSH1 0x6 DUP2 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE ADD SWAP5 DUP3 MLOAD SWAP5 DUP6 GT PUSH2 0xA0D JUMPI POP POP PUSH2 0x8F8 DUP4 PUSH2 0x8F2 DUP7 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP7 PUSH2 0x2509 JUMP JUMPDEST DUP7 SWAP1 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x980 JUMPI SWAP3 DUP1 PUSH2 0x96A SWAP6 SWAP4 DUP2 SWAP4 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP9 SWAP7 PUSH1 0x0 SWAP5 PUSH2 0x975 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP6 DUP4 MSTORE CALLER DUP8 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP DUP11 DUP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 PUSH1 0x1F SWAP4 SWAP3 SWAP4 NOT DUP4 AND SWAP2 DUP6 PUSH1 0x0 MSTORE DUP9 PUSH1 0x0 KECCAK256 SWAP3 PUSH1 0x0 JUMPDEST DUP11 DUP3 DUP3 LT PUSH2 0x9F9 JUMPI POP POP SWAP2 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x96A SWAP9 SWAP7 SWAP5 LT PUSH2 0x9E0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x94B JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP9 DUP1 DUP1 PUSH2 0x9D3 JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE SWAP5 DUP8 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x996 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP13 ADD MLOAD DUP16 PUSH2 0x88A JUMP JUMPDEST DUP9 SWAP3 SWAP2 DUP13 PUSH1 0x1F NOT DUP5 AND DUP7 PUSH1 0x0 MSTORE DUP4 PUSH1 0x0 KECCAK256 SWAP4 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xA85 JUMPI POP POP SWAP2 PUSH1 0x7 SWAP9 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x8BC SWAP9 SWAP7 SWAP5 LT PUSH2 0xA6C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x89D JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP16 DUP1 DUP15 PUSH2 0xA5F JUMP JUMPDEST SWAP3 DUP5 ADD MLOAD DUP6 SSTORE DUP13 SWAP7 SWAP1 SWAP5 ADD SWAP4 SWAP3 DUP3 ADD SWAP3 DUP16 SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0xA41 JUMP JUMPDEST DUP5 PUSH1 0x41 DUP11 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP6 ADD DUP9 SWAP1 MSTORE PUSH1 0x13 DUP2 DUP9 ADD MSTORE PUSH19 0x436861696E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP7 ADD DUP10 SWAP1 MSTORE PUSH1 0x23 DUP2 DUP10 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F206372656174652070726F706F PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x1CD85B PUSH1 0xEA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xC42 JUMPI PUSH1 0x60 PUSH1 0x20 SWAP4 PUSH1 0x5 DUP4 PUSH2 0xBCD PUSH32 0x8D5C76B09B9C1F4D0453D21436DCB0B568A50E9C0AE059E4D0AE8C95C71D07F0 SWAP6 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST PUSH1 0x12 SLOAD SWAP6 PUSH2 0xBDA DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x12 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x17 DUP9 MSTORE PUSH2 0xC11 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP6 DUP5 SSTORE PUSH1 0x0 PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0x0 PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x3 DUP5 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST SWAP1 DUP3 ADD SSTORE ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP5 DUP3 MSTORE CALLER DUP7 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP5 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20637265617465206F70657261 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x3A34B7B7 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xCE7 PUSH2 0xCDD PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0x236B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xD0F PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x0 SWAP1 DUP1 SLOAD PUSH2 0xD3A DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0xDD8 JUMPI POP PUSH1 0x1 EQ PUSH2 0xD7C JUMPI JUMPDEST PUSH2 0xD78 DUP6 PUSH2 0xD64 DUP2 DUP8 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xDC0 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0xD78 PUSH2 0xD54 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xDA5 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0xD78 SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0xD64 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0xD54 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x12 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH2 0xE51 DUP4 ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SWAP2 DUP1 DUP4 SLOAD SWAP3 PUSH2 0xE67 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x2711 JUMP JUMPDEST ADD SLOAD TIMESTAMP LT PUSH2 0xF04 JUMPI PUSH2 0xE78 DUP6 PUSH2 0x275D JUMP JUMPDEST DUP2 PUSH2 0xEFC JUMPI JUMPDEST POP ISZERO PUSH2 0xEC1 JUMPI PUSH32 0x64CEE5A70D662A7EEF5B2A171DAA51DC624F3D64A35D0855B385262B893DC5A5 PUSH1 0x40 DUP7 DUP7 DUP7 PUSH1 0x1 DUP8 PUSH1 0xFF NOT AND OR SWAP1 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x13DC195C985D1A5BDB881B9BDD081C185CDCD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP DUP7 PUSH2 0xE7E JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x14DA59DB9A5B99C81B9BDD08195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x2668 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xF88 DUP3 PUSH2 0x278C JUMP JUMPDEST ISZERO PUSH2 0x1024 JUMPI PUSH1 0x13 SLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFC7 JUMPI PUSH32 0x57DF5A6A467271F04B10F7FE9E66D21DCD8AE7EAF079099D48959F24A53B6910 PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST DUP1 PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 PUSH2 0x1017 PUSH2 0xFF8 PUSH2 0x101F SWAP5 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP8 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x4E6F7420616C6C20636861696E73207265616479 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1080 PUSH2 0x22B8 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH2 0x231F JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x10 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xCA1838D50CA3156F1ACE7CDE39A081CC9C9A333AF6FCA55DB71817F8717E1DCB PUSH2 0x1138 CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x3 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x115B DUP7 DUP3 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1175 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x9 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1194 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x2 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x12BD JUMPI DUP3 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x1283 JUMPI POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x14 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x15 DUP4 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C7C76ABE482A2C36EA52F1B999474C69F8B4AFEEAC5635F8AEA2526864BA853 SWAP2 LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x135BD91D5B1948191BD95CC81B9BDD08195E1A5CDD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F2072656D6F7665206D6F64756C PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x65 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1354 PUSH2 0x22CE JUMP JUMPDEST CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x145C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x142B JUMPI DUP4 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x13F1 JUMPI PUSH32 0xF14475B19484BF096265507CC0C41CD3BF1994992088806830686E2D72722719 PUSH1 0x40 DUP6 DUP6 DUP6 DUP3 PUSH1 0x0 MSTORE PUSH1 0x14 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x15 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4D6F64756C6520616C726561647920657869737473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A65726F2061646472657373 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20616464206D6F64756C650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xE379B3DEB66DDFA7962A2BDF35E9A08B5BED672C9DA3ECF7CC6174D253C6DFE5 PUSH2 0x14EB CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x2 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x150E DUP2 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1528 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x7 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1547 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x1 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x156F PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x1577 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP5 PUSH1 0x0 NOT DUP7 LT PUSH2 0x15B6 JUMPI JUMPDEST POP POP PUSH2 0xCE7 SWAP4 POP PUSH2 0x236B JUMP JUMPDEST DUP5 DUP7 LT PUSH2 0x1622 JUMPI DUP2 ISZERO PUSH2 0x160A JUMPI CALLER ISZERO PUSH2 0x15F2 JUMPI POP PUSH2 0xCE7 SWAP5 DUP5 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE DUP5 DUP1 PUSH2 0x15AA JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD DUP9 SWAP1 MSTORE SWAP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1670 DUP2 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x16B7 DUP3 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16C7 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST DUP3 MSTORE PUSH1 0x40 MLOAD PUSH2 0x16D9 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x16EE DUP2 PUSH2 0x229 DUP2 PUSH2 0x2006 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x1703 DUP2 PUSH2 0x229 DUP2 PUSH2 0x208D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xB SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x18CC JUMPI POP PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1740 PUSH1 0x20 DUP3 PUSH1 0x5 SHL ADD DUP4 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0xC PUSH1 0x0 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x18A7 JUMPI DUP6 DUP6 PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0xF SLOAD AND ISZERO ISZERO PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 MSTORE PUSH2 0x1808 PUSH2 0x17F2 PUSH2 0x17DC PUSH2 0x17C6 DUP6 MLOAD PUSH2 0x140 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x160 DUP7 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP4 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD SWAP1 PUSH1 0x1F NOT DUP4 DUP3 SUB ADD PUSH1 0xE0 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 PUSH1 0x20 DUP1 DUP4 PUSH1 0x5 SHL DUP4 ADD ADD SWAP5 ADD SWAP3 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x187A JUMPI DUP7 DUP1 DUP8 PUSH2 0x120 DUP12 PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x1898 PUSH1 0x1 SWAP4 PUSH1 0x1F NOT DUP7 DUP3 SUB ADD DUP8 MSTORE DUP10 MLOAD PUSH2 0x2222 JUMP JUMPDEST SWAP8 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH2 0x1849 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x40 MLOAD PUSH2 0x18BE DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x1771 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 DUP3 PUSH1 0x0 MSTORE PUSH1 0x16 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH2 0x192E DUP5 DUP5 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP2 DUP4 ADD SWAP3 DUP4 SLOAD SWAP3 PUSH2 0x1942 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT PUSH2 0x1ACE JUMPI PUSH2 0x1956 DUP7 PUSH2 0x2668 JUMP JUMPDEST DUP2 PUSH2 0x1AC6 JUMPI JUMPDEST POP ISZERO PUSH2 0x1A8C JUMPI POP PUSH1 0x7 SWAP1 PUSH1 0x1 SWAP5 DUP6 PUSH1 0xFF NOT DUP1 SWAP7 AND OR SWAP1 SSTORE ADD SWAP3 PUSH2 0x198E PUSH1 0x40 MLOAD PUSH2 0x1989 DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x2884 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x40 DUP3 DUP7 ADD MSTORE PUSH1 0x0 SWAP4 DUP1 SLOAD PUSH2 0x19A8 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST SWAP5 DUP6 PUSH1 0x40 DUP10 ADD MSTORE DUP4 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x1A46 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x19ED JUMPI JUMPDEST PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP7 DUP7 SUB DUP8 LOG1 STOP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP1 SWAP5 POP JUMPDEST DUP4 DUP6 LT PUSH2 0x1A32 JUMPI POP POP POP POP DUP2 ADD PUSH1 0x60 ADD DUP2 PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST DUP1 SLOAD DUP7 DUP7 ADD PUSH1 0x60 ADD MSTORE SWAP4 DUP3 ADD SWAP4 DUP2 ADD PUSH2 0x19F9 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 SWAP6 POP PUSH1 0x60 SWAP4 POP PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 SWAP7 SWAP5 SWAP3 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 SWAP3 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x141C9BDC1BDCD85B081B9BDD081C185CDCD959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 POP DUP8 PUSH2 0x195C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x159BDD1A5B99C81B9BDD08195B991959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x1B3C PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER ISZERO PUSH2 0x1BAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x15F2 JUMPI POP CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x20 CALLER SWAP3 LOG3 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 DUP2 DUP6 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x3 SLOAD PUSH2 0x1BE4 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1C69 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1C0E JUMPI JUMPDEST PUSH2 0xD78 DUP5 PUSH2 0xD64 DUP2 DUP7 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B JUMPDEST DUP3 DUP5 LT PUSH2 0x1C51 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0x1BFE JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1C39 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP PUSH2 0xD64 SWAP2 POP DUP4 SWAP1 POP PUSH2 0x1BFE JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x275D JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x24 CALLDATALOAD DUP2 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x1CE0 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x229A JUMP JUMPDEST POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1CFB PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x1DA3 JUMPI PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 SWAP3 POP DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD EQ PUSH2 0x1D84 JUMPI JUMPDEST POP PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x7 PUSH2 0x1989 PUSH2 0x1D9D SWAP3 PUSH2 0x229 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST DUP4 PUSH2 0x1D60 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP6 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x105B1C9958591E48195E1958DD5D1959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0xD78 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x7 DUP4 SLOAD SWAP4 PUSH2 0x1E1C DUP7 PUSH2 0x1E15 DUP2 PUSH1 0x1 DUP6 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP8 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP3 PUSH1 0xFF PUSH1 0x3 DUP4 ADD SLOAD SWAP2 DUP4 ADD SLOAD AND PUSH1 0x5 DUP4 ADD SLOAD SWAP2 PUSH2 0x1E5C PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x6 DUP7 ADD SLOAD AND SWAP5 PUSH2 0x1E55 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP7 PUSH2 0x21DD JUMP JUMPDEST PUSH2 0x1E78 PUSH1 0x40 MLOAD SWAP10 DUP11 SWAP10 DUP11 MSTORE PUSH2 0x100 DUP1 PUSH1 0x20 DUP13 ADD MSTORE DUP11 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x60 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1ED1 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1EBB JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1EB0 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1EEB DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1F09 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x6 PUSH1 0x0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1F4A JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1F38 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1F8F DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1FAD JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x7 PUSH1 0x0 MSTORE PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1FEE JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1FDC JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x2016 DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2034 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x8 PUSH1 0x0 MSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x2075 JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x209D DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x20BB JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x9 PUSH1 0x0 MSTORE PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x20FC JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x20EA JUMP JUMPDEST SWAP1 PUSH1 0x0 SWAP3 SWAP2 DUP1 SLOAD SWAP2 PUSH2 0x2125 DUP4 PUSH2 0x1EA1 JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x1 SWAP4 DUP5 DUP2 AND SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x2187 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2147 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP5 POP PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 DUP4 PUSH1 0x0 KECCAK256 SWAP3 DUP5 PUSH1 0x0 SWAP5 JUMPDEST DUP4 DUP7 LT PUSH2 0x2173 JUMPI POP POP POP POP ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST DUP1 SLOAD DUP6 DUP8 ADD DUP4 ADD MSTORE SWAP5 ADD SWAP4 DUP6 SWAP1 DUP3 ADD PUSH2 0x215C JUMP JUMPDEST SWAP3 SWAP5 POP POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2212 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2202 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x223B DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x21C7 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x226F DUP3 PUSH2 0x2247 JUMP JUMPDEST SWAP2 PUSH2 0x227D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x21DD JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2EF JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP2 PUSH1 0x20 PUSH2 0x22B5 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI PUSH2 0x22B5 SWAP2 PUSH1 0x4 ADD PUSH2 0x229A JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH2 0x32D PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2EF JUMPI SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x2430 JUMPI AND SWAP3 DUP4 ISZERO PUSH2 0x2417 JUMPI PUSH1 0x0 SWAP1 DUP4 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 DUP4 DUP3 LT PUSH2 0x23E5 JUMPI POP SWAP2 PUSH1 0x40 DUP3 DUP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP6 DUP8 PUSH1 0x20 SWAP7 MSTORE DUP3 DUP7 MSTORE SUB DUP3 DUP3 KECCAK256 SSTORE DUP7 DUP2 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2456 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x2473 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E206D75737420626520706F73697469766500000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x24BF JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10DA185A5B881B9BDD081CDD5C1C1BDC9D1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2456 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x2517 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x2553 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2548 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x253C JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x2533 JUMP JUMPDEST ISZERO PUSH2 0x2564 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20646F6573206E6F74206578697374000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x25B0 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20616C726561647920657865637574656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x2606 JUMPI PUSH1 0x2 PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x261F JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDE5B98D959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2456 JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x2683 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x26A9 PUSH1 0x2 SLOAD PUSH1 0x10 SLOAD SWAP1 PUSH2 0x2655 JUMP JUMPDEST DIV GT ISZERO SWAP3 DUP4 SWAP2 DUP3 PUSH2 0x26BB JUMPI JUMPDEST POP POP SWAP2 SWAP1 JUMP JUMPDEST GT SWAP1 POP CODESIZE DUP1 PUSH2 0x26B5 JUMP JUMPDEST ISZERO PUSH2 0x26CC JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20646F6573206E6F742065786973740000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x2718 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20616C7265616479206578656375746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x2777 DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x27A5 PUSH1 0x0 SWAP2 DUP1 DUP4 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x27B6 JUMPI POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x27D6 PUSH2 0x27C2 DUP3 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x27E9 JUMPI PUSH2 0x27E4 SWAP1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0x27A7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2857 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2851 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x284B JUMPI PUSH1 0x3 EQ PUSH2 0x2845 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x92DCECC2D8D2C840C6D0C2D2DC40D2DCC8CAF PUSH1 0x6B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0xA4B1 SWAP1 JUMP JUMPDEST POP PUSH1 0x38 SWAP1 JUMP JUMPDEST POP PUSH1 0x89 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP2 ADD SWAP1 PUSH1 0x20 SWAP1 DUP1 DUP3 DUP5 ADD SWAP4 PUSH1 0x40 SWAP2 DUP3 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP1 DUP4 SWAP1 SUB PUSH2 0x2EF JUMPI DUP2 DUP2 ADD MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI ADD SWAP2 DUP5 PUSH1 0x3F DUP5 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP4 DUP4 ADD MLOAD SWAP3 PUSH2 0x28E3 DUP5 PUSH2 0x2247 JUMP JUMPDEST SWAP4 PUSH2 0x28F0 DUP5 MLOAD SWAP6 DUP7 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP6 MSTORE DUP6 DUP6 ADD SWAP7 DUP5 DUP3 DUP5 ADD ADD GT PUSH2 0x2EF JUMPI DUP7 DUP5 PUSH2 0x290D SWAP4 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x2942 JUMPI POP POP SWAP2 PUSH2 0x2930 SWAP2 DUP4 PUSH2 0x2940 SWAP5 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x236B JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP1 PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x29D9 JUMPI POP SWAP1 DUP3 DUP3 PUSH2 0x2965 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x29C2 JUMPI SWAP2 DUP2 PUSH1 0x0 SWAP4 PUSH2 0x29A9 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP5 PUSH1 0x2 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x2 SSTORE DUP6 DUP6 MSTORE DUP5 DUP4 MSTORE DUP1 DUP6 KECCAK256 DUP3 DUP2 SLOAD ADD SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP4 SWAP5 SWAP4 PUSH4 0x2770A7EB PUSH1 0xE2 SHL SUB PUSH2 0x2AA7 JUMPI SWAP1 DUP3 DUP3 PUSH2 0x29F9 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2A8F JUMPI PUSH1 0x0 SWAP3 DUP3 DUP5 MSTORE DUP4 DUP3 MSTORE DUP6 DUP5 KECCAK256 SLOAD SWAP6 DUP2 DUP8 LT PUSH2 0x2A61 JUMPI DUP2 DUP6 SWAP7 SWAP8 DUP6 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP7 SWAP8 MSTORE DUP8 DUP6 MSTORE SUB DUP2 DUP8 KECCAK256 SSTORE DUP2 PUSH1 0x2 SLOAD SUB PUSH1 0x2 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2AB735B737BBB71037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE STOP CALLDATACOPY ADDRESS 0xD0 MUL PUSH7 0x375259274B7CE8 PUSH27 0x5CF38CA28D407C876977216EB1D0BFF04464736F6C634300081400 CALLER ","sourceMap":"750:24192:6:-:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;:::i;:::-;;;;;;;4589:11;;750:24192;;;4602:13;750:24192;;4589:11;;4602:13;;750:24192;-1:-1:-1;;;;;750:24192:6;;;;;1667:13:1;750:24192:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;1667:13:1;750:24192:6;;;;-1:-1:-1;;;;;750:24192:6;;;;;1690:17:1;750:24192:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;1690:17:1;750:24192:6;;;;;4665:11;;750:24192;;;;4698:13;750:24192;;;4735:15;750:24192;;;4777:18;750:24192;;;;;;;;;;;;4901:17;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;;4637:397;;750:24192;4980:15;750:24192;4637:397;;750:24192;;;4637:397;;750:24192;;;;;;;;;;;;;4627:407;750:24192;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;4627:407;750:24192;;;4637:397;;750:24192;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;4637:397;;750:24192;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;4637:397;;750:24192;;;;;4637:397;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;4637:397;;750:24192;;;;4637:397;;750:24192;;;;4637:397;;750:24192;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;4637:397;;750:24192;4637:397;750:24192;4637:397;;750:24192;;;;4637:397;;750:24192;;;4637:397;750:24192;;;;;;;;;;;;;;;;;;5053:42;750:24192;5105:32;750:24192;-1:-1:-1;5283:3:6;750:24192;;;5250:24;750:24192;;;5246:35;;;;;5318:27;;5283:3;5318:27;;:::i;:::-;750:24192;-1:-1:-1;750:24192:6;5302:15;750:24192;;;-1:-1:-1;750:24192:6;;;;;;;;;;5283:3;:::i;:::-;5231:13;;5246:35;;750:24192;;;5469:22;750:24192;;;;5502:21;750:24192;5469:61;750:24192;;;;;5575:22;750:24192;5575:33;750:24192;;-1:-1:-1;5706:3:6;750:24192;;;5675:22;750:24192;;5671:33;;;;;-1:-1:-1;;;;;750:24192:6;;;5733:25;;750:24192;;5733:25;:::i;:::-;750:24192;;5733:39;750:24192;;5811:24;750:24192;;;;5811:21;:24;:::i;:::-;750:24192;5811:28;750:24192;;5875:25;750:24192;;;;5875:22;:25;:::i;:::-;750:24192;;;5902:24;750:24192;;;;5902:21;:24;:::i;:::-;750:24192;7528:21:1;;;7524:91;;750:24192:6;;;;;;;;;7083:25:1;750:24192:6;;5706:3;750:24192;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;7083:25:1;5706:3:6;:::i;:::-;5656:13;;750:24192;;;;-1:-1:-1;750:24192:6;;1690:17:1;750:24192:6;;-1:-1:-1;750:24192:6;7524:91:1;750:24192:6;;-1:-1:-1;;;7572:32:1;;-1:-1:-1;1690:17:1;7572:32;;750:24192:6;;;7572:32:1;750:24192:6;;;-1:-1:-1;;;750:24192:6;;;1690:17:1;750:24192:6;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;1690:17:1;750:24192:6;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;5671:33;;750:24192;;;5986:22;750:24192;;;6010:21;750:24192;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;5961:71;750:24192;;;;;;;;;;;;;:::i;:::-;5961:71;;;6075:11;;750:24192;;;6100:13;750:24192;;;6127:15;750:24192;;;;6156:18;750:24192;;;;;;;;;;;;;;;6247:17;750:24192;;;;;;;;;6329:24;750:24192;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;6047:316;750:24192;;;;;;;;;;6310:4;750:24192;;;;;;;;;;;;:::i;:::-;6047:316;;;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;1690:17:1;750:24192:6;;;5105:32;750:24192;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;1690:17:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;-1:-1:-1;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;-1:-1:-1;750:24192:6;;1690:17:1;750:24192:6;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;4627:407;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;4627:407;750:24192;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4627:407;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;1690:17:1;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;1690:17:1;750:24192:6;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:17:1;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;750:24192:6;;;;;1667:13:1;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;1667:13:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:13:1;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;-1:-1:-1;;;;;750:24192:6;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;750:24192:6;;;;:::o"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":8910,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_28165":{"entryPoint":8888,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_payablet_uint256_fromMemory":{"entryPoint":10333,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":8803,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":8858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_bool":{"entryPoint":9036,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_uint256t_uint256t_uint256t_uint256t_bytes":{"entryPoint":8932,"id":null,"parameterSlots":1,"returnSlots":5},"abi_encode_address_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool_bool":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_string":{"entryPoint":8738,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":8468,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage_28169":{"entryPoint":7899,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_storage_28170":{"entryPoint":8063,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_storage_28171":{"entryPoint":8198,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string_storage_28172":{"entryPoint":8333,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256_address_bool_uint256":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_uint256_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":8775,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":9289,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":9813,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":9481,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":8703,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_checkChainConnection":{"entryPoint":8991,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":7841,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":8669,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_28167":{"entryPoint":8618,"id":null,"parameterSlots":1,"returnSlots":0},"fun_checkChainConnection":{"entryPoint":null,"id":2186,"parameterSlots":1,"returnSlots":1},"fun_checkMultiSigResult":{"entryPoint":10077,"id":2049,"parameterSlots":1,"returnSlots":2},"fun_checkProposalResult":{"entryPoint":9832,"id":1643,"parameterSlots":1,"returnSlots":2},"fun_checkSyncReadiness":{"entryPoint":10124,"id":2239,"parameterSlots":1,"returnSlots":1},"fun_executeOperation":{"entryPoint":10372,"id":2457,"parameterSlots":1,"returnSlots":0},"fun_getSupportedChainId":{"entryPoint":10221,"id":2342,"parameterSlots":1,"returnSlots":1},"fun_nonReentrantBefore":{"entryPoint":9717,"id":834,"parameterSlots":0,"returnSlots":0},"fun_transfer":{"entryPoint":9067,"id":381,"parameterSlots":3,"returnSlots":0},"increment_uint256":{"entryPoint":9466,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":9641,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8ad9":{"entryPoint":9400,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8e62":{"entryPoint":9565,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_a88b":{"entryPoint":9925,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b44f":{"entryPoint":9752,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d556":{"entryPoint":10001,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e2db":{"entryPoint":9324,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14611dda57508163044bc2bd14611cab578163057b207414611c9057816306fdde0314611bc2578163095ea7b314611b235781630c0512e914611b055781630d61b519146118ff57816318160ddd146118e1578163204c5d1f1461164e57816322dbefbb14610b3c57816323b872dd146115565781632ee09598146114bc578163313ce567146114a057816335324eee146113385781633b60288a146113095781634114509b146111ef578163456d10c1146111095781634b145793146107455781634de184f6146110e65781634fa76ec9146110eb5781635221c1f0146110e6578163548d496f146110b75781635cf0e8a4146110995781636cbadbfa1461109957816370a082311461105f5781637ce288ea14610f6b5781637e5a9b4714610f3c578163893d692a14610e205781638c7b04c914610e0257816395d89b4114610d175781639a49bdde14610cf2578163a9059cbb14610cc1578163af89d2c414610c92578163b00e073014610b6e578163b0b6cc1a14610b3c578163b359451014610774578163b3fe8bcb14610745578163c51cab3a146106d5578163c9d27afe1461054e578163ccd7a49014610388578163dd62ed3e14610337578163e49a62e914610310578163eced3dfb146102f4575063f2c26a471461020557600080fd5b346102ef5760003660031901126102ef576102a46040516102308161022981611edb565b03826121dd565b6040516102408161022981611f7f565b604051906102588261025181612006565b03836121dd565b60405191610270836102698161208d565b03846121dd565b600a5492600b546102ce600d54926102c0600e54956102b260ff600f5416986040519c8d9c8d610120908181520190612222565b8c810360208e015290612222565b908a820360408c0152612222565b9088820360608a0152612222565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b346102ef5760003660031901126102ef57602090604051908152f35b346102ef5760203660031901126102ef5761032d6020913561278c565b6040519015158152f35b346102ef5760403660031901126102ef576103506122b8565b6103586122ce565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346102ef576103963661234c565b9061039f6125f5565b80600052602092601784526040600020906103bc825415156126c5565b8082015442101561051a576103d860ff60038401541615612711565b60068201903360005281865260ff604060002054166104e5573360005260008652604060002054156104ad57509361048e917f78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc95336000526000835260406000205492526040600020600160ff198254161790558460001461049857600101610462828254612449565b90555b604080519384523360208501529315159383019390935260608201929092529081906080820190565b0390a16001600555005b6002016104a6828254612449565b9055610465565b60405162461bcd60e51b815290810186905260116024820152702737903a37b5b2b739903a379039b4b3b760791b6044820152606490fd5b60405162461bcd60e51b8152908101869052600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b60405162461bcd60e51b8152908101859052600d60248201526c14da59db9a5b99c8195b991959609a1b6044820152606490fd5b346102ef5761055c3661234c565b906105656125f5565b80600052602092601684526040600020906105828383541461255d565b60058201544210156106a25761059e60ff8284015416156125a9565b60088201903360005281865260ff6040600020541661066e5733600052600086526040600020541561063657509361048e917f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a995336000526000835260406000205492526040600020600160ff198254161790558460001461062857600201610462828254612449565b6003016104a6828254612449565b60405162461bcd60e51b815290810186905260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b60405162461bcd60e51b8152908101869052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b60405162461bcd60e51b8152908101859052600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b346102ef5760203660031901126102ef578060c091356000526017602052604060002090815491600181015491600282015460ff6003840154169183015492600560018060a01b0391015416936040519586526020860152604085015215156060840152608083015260a0820152f35b346102ef5760203660031901126102ef57356000526015602052602060ff604060002054166040519015158152f35b346102ef5760803660031901126102ef57803567ffffffffffffffff918282116102ef57366023830112156102ef576107b7602492369084818501359101612263565b908235936044358181116102ef576107d2903690840161229a565b9460643595336000526020966000885260406000205415610aed576107f883151561246c565b806000526018885261081160ff604060002054166124b8565b6000526018875260ff6040600020541615610ab45760115495610833876124fa565b601155866000526016885260406000208781556001938482018851878111610aa057610869816108638454611ea1565b84612509565b8b8c601f8311600114610a2b5750918160079594926108bc94600091610a20575b50600019600383901b1c191690891b1790555b600060028401556000600384015588830160ff19815416905542612449565b600582015560068101336001600160601b0360a01b82541617905501948251948511610a0d5750506108f8836108f28654611ea1565b86612509565b8690601f841160011461098057928061096a959381937f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639896600094610975575b50501b916000199060031b1c19161790555b6040519182918583523387840152606060408401526060830190612222565b0390a1604051908152f35b015192508a80610939565b90601f9392931983169185600052886000209260005b8a8282106109f9575050917f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63979593918561096a989694106109e0575b505050811b01905561094b565b015160001960f88460031b161c191690558880806109d3565b838501518655948701949384019301610996565b604190634e487b7160e01b600052526000fd5b90508c01518f61088a565b8892918c601f1984168660005283600020936000905b828210610a855750509160079897959391856108bc98969410610a6c575b505050811b01905561089d565b015160001960f88460031b161c191690558f808e610a5f565b9284015185558c9690940193928201928f9290810190610a41565b8460418a634e487b7160e01b600052526000fd5b60405162461bcd60e51b815280850188905260138188015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60405162461bcd60e51b81528086018990526023818901527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b346102ef5760203660031901126102ef57356000526014602052602060018060a01b0360406000205416604051908152f35b346102ef5760403660031901126102ef5780359060243533600052600060205260406000205415610c42576060602093600583610bcd7f8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f095151561246c565b60125495610bda876124fa565b6012558660005260178852610c1160406000209285845560006001850155600060028501556003840160ff19815416905542612449565b9082015501336001600160601b0360a01b8254161790556040519084825233868301526040820152a1604051908152f35b60405162461bcd60e51b81526020818401526024808201527f4d75737420686f6c6420746f6b656e7320746f20637265617465206f706572616044820152633a34b7b760e11b6064820152608490fd5b346102ef5760203660031901126102ef5735600052601a602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef57610ce7610cdd6122b8565b602435903361236b565b602060405160018152f35b346102ef5760203660031901126102ef57610d0f602091356127ed565b604051908152f35b346102ef5760003660031901126102ef57604051906000908054610d3a81611ea1565b80855291600191808316908115610dd85750600114610d7c575b610d7885610d64818703826121dd565b604051918291602083526020830190612222565b0390f35b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610dc0575050508101602001610d6482610d78610d54565b80546020858701810191909152909301928101610da5565b869550610d7896935060209250610d6494915060ff191682840152151560051b8201019293610d54565b346102ef5760003660031901126102ef576020601254604051908152f35b346102ef5760203660031901126102ef57803590816000526017602052604060002090815491610e518315156126c5565b600381019180835492610e6760ff851615612711565b01544210610f0457610e788561275d565b81610efc575b5015610ec1577f64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5604086868660018760ff191617905582519182526020820152a1005b60649060206040519162461bcd60e51b8352820152601460248201527313dc195c985d1a5bdb881b9bdd081c185cdcd95960621b6044820152fd5b905086610e7e565b60649060206040519162461bcd60e51b8352820152601160248201527014da59db9a5b99c81b9bdd08195b991959607a1b6044820152fd5b346102ef5760203660031901126102ef57610f579035612668565b604080519215158352901515602083015290f35b346102ef5760203660031901126102ef57803590610f888261278c565b156110245760135460005b828110610fc7577f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910602085604051908152a1005b807f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313611017610ff861101f946127ed565b604051918291878a846040919493926060820195825260208201520152565b0390a16124fa565b610f93565b60649060206040519162461bcd60e51b835282015260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152fd5b346102ef5760203660031901126102ef576001600160a01b036110806122b8565b1660005260006020526020604060002054604051908152f35b346102ef5760003660031901126102ef576020601354604051908152f35b346102ef5760203660031901126102ef57356000526018602052602060ff604060002054166040519015158152f35b61231f565b346102ef5760003660031901126102ef576020601054604051908152f35b346102ef577fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb611138366122e4565b508360009493945260166020526111ae6003604060002061115b8682541461255d565b86600052601860205261117560ff604060002054166124b8565b6009810194876000528560205261119460ff6040600020541615612618565b6111a360028301918254612449565b905501918254612449565b9055826000526020526040600020600160ff198254161790556111ea601354604051938493846040919493926060820195825260208201520152565b0390a1005b346102ef576020806003193601126102ef578135913360005260008252604060002054156112bd57826000526015825260ff60406000205416156112835750600082815260148252604080822080546001600160a01b03191690556015835290819020805460ff19169055519182527f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba85391a1005b6064916040519162461bcd60e51b83528201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152fd5b6084916040519162461bcd60e51b8352820152602160248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c6044820152606560f81b6064820152fd5b346102ef5760203660031901126102ef57356000526019602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef578035906113546122ce565b33600052602090600082526040600020541561145c576001600160a01b031691821561142b57836000526015825260ff604060002054166113f1577ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d727227196040858585826000526014815283600020826001600160601b0360a01b8254161790556015815283600020600160ff198254161790558351928352820152a1005b6064916040519162461bcd60e51b835282015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152fd5b6064916040519162461bcd60e51b8352820152600c60248201526b5a65726f206164647265737360a01b6044820152fd5b60405162461bcd60e51b8152808401839052601e60248201527f4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c6500006044820152606490fd5b346102ef5760003660031901126102ef57602060405160128152f35b346102ef577fe379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe56114eb366122e4565b508360009493945260176020526111ae6002604060002061150e815415156126c5565b86600052601860205261152860ff604060002054166124b8565b6007810194876000528560205261154760ff6040600020541615612618565b6111a360018301918254612449565b346102ef5760603660031901126102ef5761156f6122b8565b6115776122ce565b6044359160018060a01b0381168060005260016020526040600020336000526020526040600020549460001986106115b6575b5050610ce7935061236b565b84861061162257811561160a5733156115f25750610ce794849160005260016020526040600020336000526020520360406000205584806115aa565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b346102ef5760003660031901126102ef576000610120604051611670816121aa565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051906116b7826121aa565b6040516116c78161022981611edb565b82526040516116d98161022981611f7f565b60208301526040516116ee8161022981612006565b6040830152604051611703816102298161208d565b6060830152600a546080830152600b5460a0830152600c549067ffffffffffffffff82116118cc57506040519061174060208260051b01836121dd565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b8383106118a757858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526118086117f26117dc6117c685516101406020870152610160860190612222565b6020860151858203601f19016040870152612222565b6040850151848203601f19016060860152612222565b6060840151838203601f19016080850152612222565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061187a578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080611898600193601f198682030187528951612222565b97019301930191939290611849565b6001602081926040516118be816102298189612114565b815201920192019190611771565b604190634e487b7160e01b6000525260246000fd5b346102ef5760003660031901126102ef576020600254604051908152f35b346102ef576020806003193601126102ef57813591826000526016825260406000209161192e8484541461255d565b8183019283549261194260ff8516156125a9565b60058201544210611ace5761195686612668565b81611ac6575b5015611a8c57506007906001948560ff19809616179055019261198e604051611989816102298189612114565b612884565b60405194855260408286015260009380546119a881611ea1565b948560408901528382169182600014611a465750506001146119ed575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b838510611a3257505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d284806119c5565b8054868601606001529382019381016119f9565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b820101919284806119c5565b60405162461bcd60e51b81529081018390526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b90508761195c565b60405162461bcd60e51b8152908101839052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346102ef5760003660031901126102ef576020601154604051908152f35b346102ef5760403660031901126102ef57611b3c6122b8565b602435903315611baa576001600160a01b03169182156115f25750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b346102ef5760003660031901126102ef576040516000600354611be481611ea1565b80845290600190818116908115611c695750600114611c0e575b610d7884610d64818603826121dd565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611c51575050508101602001610d6482611bfe565b80546020858701810191909152909301928101611c39565b60ff191660208087019190915292151560051b85019092019250610d649150839050611bfe565b346102ef5760203660031901126102ef57610f57903561275d565b346102ef5760603660031901126102ef57602435813560443567ffffffffffffffff81116102ef57611ce0903690850161229a565b50816000526018602052611cfb60ff604060002054166124b8565b80600052601960205260ff60406000205416611da3577f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e8331392508060005260196020526040600020600160ff198254161790556016602052604060002081815414611d84575b506111ea601354604051938493846040919493926060820195825260208201520152565b6007611989611d9d926102296040518094819301612114565b83611d60565b60405162461bcd60e51b8152602081850152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b90346102ef5760203660031901126102ef5780356000526016602052610d786040600020916007835493611e1c86611e158160018501612114565b03876121dd565b60028101549260ff60038301549183015416600583015491611e5c60018060a01b0360068601541694611e556040518098819301612114565b03866121dd565b611e78604051998a998a526101008060208c01528a0190612222565b95604089015260608801521515608087015260a086015260c085015283820360e0850152612222565b90600182811c92168015611ed1575b6020831014611ebb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611eb0565b60065460009291611eeb82611ea1565b80825291600190818116908115611f625750600114611f0957505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410611f4a57505060209250010190565b80546020858501810191909152909301928101611f38565b915050602093945060ff929192191683830152151560051b010190565b60075460009291611f8f82611ea1565b80825291600190818116908115611f625750600114611fad57505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410611fee57505060209250010190565b80546020858501810191909152909301928101611fdc565b6008546000929161201682611ea1565b80825291600190818116908115611f62575060011461203457505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b84841061207557505060209250010190565b80546020858501810191909152909301928101612063565b6009546000929161209d82611ea1565b80825291600190818116908115611f6257506001146120bb57505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b8484106120fc57505060209250010190565b805460208585018101919091529093019281016120ea565b906000929180549161212583611ea1565b9182825260019384811690816000146121875750600114612147575b50505050565b90919394506000526020928360002092846000945b838610612173575050505001019038808080612141565b80548587018301529401938590820161215c565b9294505050602093945060ff191683830152151560051b01019038808080612141565b610140810190811067ffffffffffffffff8211176121c757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176121c757604052565b60005b8381106122125750506000910152565b8181015183820152602001612202565b9060209161223b815180928185528580860191016121ff565b601f01601f1916010190565b67ffffffffffffffff81116121c757601f01601f191660200190565b92919261226f82612247565b9161227d60405193846121dd565b8294818452818301116102ef578281602093846000960137010152565b9080601f830112156102ef578160206122b593359101612263565b90565b600435906001600160a01b03821682036102ef57565b602435906001600160a01b03821682036102ef57565b60a06003198201126102ef57600435916024359160443591606435916084359067ffffffffffffffff82116102ef576122b59160040161229a565b346102ef5760203660031901126102ef57602061032d600435600052601860205260ff6040600020541690565b60409060031901126102ef576004359060243580151581036102ef5790565b916001600160a01b03808416928315612430571692831561241757600090838252816020526040822054908382106123e5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161245657565b634e487b7160e01b600052601160045260246000fd5b1561247357565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b156124bf57565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b60001981146124565760010190565b90601f811161251757505050565b600091825260208220906020601f850160051c83019410612553575b601f0160051c01915b82811061254857505050565b81815560010161253c565b9092508290612533565b1561256457565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b156125b057565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b600260055414612606576002600555565b604051633ee5aeb560e01b8152600490fd5b1561261f57565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b8181029291811591840414171561245657565b9081600052601660205261268360406000209283541461255d565b60036002830154920154916126988382612449565b60646126a960025460105490612655565b041115928391826126bb575b50509190565b11905038806126b5565b156126cc57565b60405162461bcd60e51b815260206004820152601860248201527f4f7065726174696f6e20646f6573206e6f7420657869737400000000000000006044820152606490fd5b1561271857565b60405162461bcd60e51b815260206004820152601a60248201527f4f7065726174696f6e20616c72656164792065786563757465640000000000006044820152606490fd5b6000526017602052604060002090612777825415156126c5565b60026001830154920154916126988382612449565b6127a5600091808352601660205260408320541461255d565b805b600481106127b6575050600190565b6127d66127c2826127ed565b600052601860205260ff6040600020541690565b156127e9576127e4906124fa565b6127a7565b5090565b80156128575760018114612851576002811461284b576003146128455760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b61a4b190565b50603890565b50608990565b50600190565b91908260409103126102ef5781516001600160a01b03811681036102ef5760209092015190565b80518101906020908082840193604091829103126102ef57818301516001600160e01b0319811692908390036102ef57818101519067ffffffffffffffff82116102ef57019184603f840112156102ef5783830151926128e384612247565b936128f0845195866121dd565b808552858501968482840101116102ef57868461290d93016121ff565b63a9059cbb60e01b8103612942575050916129309183612940945101019061285d565b906001600160a01b03163361236b565b565b909391906340c10f1960e01b81036129d95750908282612965935101019061285d565b6001600160a01b039091169283156129c25791816000936129a97fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600254612449565b60025585855284835280852082815401905551908152a3565b5163ec442f0560e01b815260006004820152602490fd5b939493632770a7eb60e21b03612aa7579082826129f9935101019061285d565b916001600160a01b03909116908115612a8f576000928284528382528584205495818710612a615781859697857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9697528785520381872055816002540360025551908152a3565b5163391434e360e21b81526001600160a01b0384166004820152602481018790526044810191909152606490fd5b8451634b637e8f60e11b815260006004820152602490fd5b845162461bcd60e51b81526004810184905260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fdfea26469706673582212200e003730d00266375259274b7ce87a5cf38ca28d407c876977216eb1d0bff04464736f6c63430008140033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP2 DUP3 PUSH4 0x13CF08B EQ PUSH2 0x1DDA JUMPI POP DUP2 PUSH4 0x44BC2BD EQ PUSH2 0x1CAB JUMPI DUP2 PUSH4 0x57B2074 EQ PUSH2 0x1C90 JUMPI DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1BC2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1B23 JUMPI DUP2 PUSH4 0xC0512E9 EQ PUSH2 0x1B05 JUMPI DUP2 PUSH4 0xD61B519 EQ PUSH2 0x18FF JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x18E1 JUMPI DUP2 PUSH4 0x204C5D1F EQ PUSH2 0x164E JUMPI DUP2 PUSH4 0x22DBEFBB EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x1556 JUMPI DUP2 PUSH4 0x2EE09598 EQ PUSH2 0x14BC JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x14A0 JUMPI DUP2 PUSH4 0x35324EEE EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x3B60288A EQ PUSH2 0x1309 JUMPI DUP2 PUSH4 0x4114509B EQ PUSH2 0x11EF JUMPI DUP2 PUSH4 0x456D10C1 EQ PUSH2 0x1109 JUMPI DUP2 PUSH4 0x4B145793 EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0x4DE184F6 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x4FA76EC9 EQ PUSH2 0x10EB JUMPI DUP2 PUSH4 0x5221C1F0 EQ PUSH2 0x10E6 JUMPI DUP2 PUSH4 0x548D496F EQ PUSH2 0x10B7 JUMPI DUP2 PUSH4 0x5CF0E8A4 EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x6CBADBFA EQ PUSH2 0x1099 JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x105F JUMPI DUP2 PUSH4 0x7CE288EA EQ PUSH2 0xF6B JUMPI DUP2 PUSH4 0x7E5A9B47 EQ PUSH2 0xF3C JUMPI DUP2 PUSH4 0x893D692A EQ PUSH2 0xE20 JUMPI DUP2 PUSH4 0x8C7B04C9 EQ PUSH2 0xE02 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xD17 JUMPI DUP2 PUSH4 0x9A49BDDE EQ PUSH2 0xCF2 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCC1 JUMPI DUP2 PUSH4 0xAF89D2C4 EQ PUSH2 0xC92 JUMPI DUP2 PUSH4 0xB00E0730 EQ PUSH2 0xB6E JUMPI DUP2 PUSH4 0xB0B6CC1A EQ PUSH2 0xB3C JUMPI DUP2 PUSH4 0xB3594510 EQ PUSH2 0x774 JUMPI DUP2 PUSH4 0xB3FE8BCB EQ PUSH2 0x745 JUMPI DUP2 PUSH4 0xC51CAB3A EQ PUSH2 0x6D5 JUMPI DUP2 PUSH4 0xC9D27AFE EQ PUSH2 0x54E JUMPI DUP2 PUSH4 0xCCD7A490 EQ PUSH2 0x388 JUMPI DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x337 JUMPI DUP2 PUSH4 0xE49A62E9 EQ PUSH2 0x310 JUMPI DUP2 PUSH4 0xECED3DFB EQ PUSH2 0x2F4 JUMPI POP PUSH4 0xF2C26A47 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x2A4 PUSH1 0x40 MLOAD PUSH2 0x230 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x240 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x258 DUP3 PUSH2 0x251 DUP2 PUSH2 0x2006 JUMP JUMPDEST SUB DUP4 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH2 0x270 DUP4 PUSH2 0x269 DUP2 PUSH2 0x208D JUMP JUMPDEST SUB DUP5 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0xA SLOAD SWAP3 PUSH1 0xB SLOAD PUSH2 0x2CE PUSH1 0xD SLOAD SWAP3 PUSH2 0x2C0 PUSH1 0xE SLOAD SWAP6 PUSH2 0x2B2 PUSH1 0xFF PUSH1 0xF SLOAD AND SWAP9 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP13 DUP14 PUSH2 0x120 SWAP1 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST DUP13 DUP2 SUB PUSH1 0x20 DUP15 ADD MSTORE SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x40 DUP13 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x32D PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x278C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x350 PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x22CE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x396 CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x39F PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x17 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x3BC DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP1 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x51A JUMPI PUSH2 0x3D8 PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x2711 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x4E5 JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x4AD JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78B8E65C466DF05EA5DDF0593B44648ECA1F35C039F180E31257A6F1BDD005DC SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x498 JUMPI PUSH1 0x1 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE CALLER PUSH1 0x20 DUP6 ADD MSTORE SWAP4 ISZERO ISZERO SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x80 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x5 SSTORE STOP JUMPDEST PUSH1 0x2 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2737903A37B5B2B739903A379039B4B3B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDA59DB9959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x14DA59DB9A5B99C8195B991959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH2 0x55C CALLDATASIZE PUSH2 0x234C JUMP JUMPDEST SWAP1 PUSH2 0x565 PUSH2 0x25F5 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x16 DUP5 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x582 DUP4 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x59E PUSH1 0xFF DUP3 DUP5 ADD SLOAD AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x8 DUP3 ADD SWAP1 CALLER PUSH1 0x0 MSTORE DUP2 DUP7 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x66E JUMPI CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP7 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x636 JUMPI POP SWAP4 PUSH2 0x48E SWAP2 PUSH32 0x78975AAF742630489BADD22949B88AC50EAAEA576339EE05440B671A33BFB6A9 SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP5 PUSH1 0x0 EQ PUSH2 0x628 JUMPI PUSH1 0x2 ADD PUSH2 0x462 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x3 ADD PUSH2 0x4A6 DUP3 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x4E6F20746F6B656E7320746F20766F7465 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x105B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x159BDD1A5B99C8195B991959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 PUSH1 0xC0 SWAP2 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xFF PUSH1 0x3 DUP5 ADD SLOAD AND SWAP2 DUP4 ADD SLOAD SWAP3 PUSH1 0x5 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 ADD SLOAD AND SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x15 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0x2EF JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI PUSH2 0x7B7 PUSH1 0x24 SWAP3 CALLDATASIZE SWAP1 DUP5 DUP2 DUP6 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 DUP3 CALLDATALOAD SWAP4 PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x7D2 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x229A JUMP JUMPDEST SWAP5 PUSH1 0x64 CALLDATALOAD SWAP6 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP7 PUSH1 0x0 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xAED JUMPI PUSH2 0x7F8 DUP4 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x18 DUP9 MSTORE PUSH2 0x811 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 DUP8 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x11 SLOAD SWAP6 PUSH2 0x833 DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x11 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x16 DUP9 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP8 DUP2 SSTORE PUSH1 0x1 SWAP4 DUP5 DUP3 ADD DUP9 MLOAD DUP8 DUP2 GT PUSH2 0xAA0 JUMPI PUSH2 0x869 DUP2 PUSH2 0x863 DUP5 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP5 PUSH2 0x2509 JUMP JUMPDEST DUP12 DUP13 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xA2B JUMPI POP SWAP2 DUP2 PUSH1 0x7 SWAP6 SWAP5 SWAP3 PUSH2 0x8BC SWAP5 PUSH1 0x0 SWAP2 PUSH2 0xA20 JUMPI JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP10 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP5 ADD SSTORE PUSH1 0x0 PUSH1 0x3 DUP5 ADD SSTORE DUP9 DUP4 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SSTORE PUSH1 0x6 DUP2 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE ADD SWAP5 DUP3 MLOAD SWAP5 DUP6 GT PUSH2 0xA0D JUMPI POP POP PUSH2 0x8F8 DUP4 PUSH2 0x8F2 DUP7 SLOAD PUSH2 0x1EA1 JUMP JUMPDEST DUP7 PUSH2 0x2509 JUMP JUMPDEST DUP7 SWAP1 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x980 JUMPI SWAP3 DUP1 PUSH2 0x96A SWAP6 SWAP4 DUP2 SWAP4 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP9 SWAP7 PUSH1 0x0 SWAP5 PUSH2 0x975 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP6 DUP4 MSTORE CALLER DUP8 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP DUP11 DUP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 PUSH1 0x1F SWAP4 SWAP3 SWAP4 NOT DUP4 AND SWAP2 DUP6 PUSH1 0x0 MSTORE DUP9 PUSH1 0x0 KECCAK256 SWAP3 PUSH1 0x0 JUMPDEST DUP11 DUP3 DUP3 LT PUSH2 0x9F9 JUMPI POP POP SWAP2 PUSH32 0x7585F467599D0F008985F231AF99293BE388626AC16CA59505C2F8F88969CD63 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x96A SWAP9 SWAP7 SWAP5 LT PUSH2 0x9E0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x94B JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP9 DUP1 DUP1 PUSH2 0x9D3 JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE SWAP5 DUP8 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x996 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP13 ADD MLOAD DUP16 PUSH2 0x88A JUMP JUMPDEST DUP9 SWAP3 SWAP2 DUP13 PUSH1 0x1F NOT DUP5 AND DUP7 PUSH1 0x0 MSTORE DUP4 PUSH1 0x0 KECCAK256 SWAP4 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xA85 JUMPI POP POP SWAP2 PUSH1 0x7 SWAP9 SWAP8 SWAP6 SWAP4 SWAP2 DUP6 PUSH2 0x8BC SWAP9 SWAP7 SWAP5 LT PUSH2 0xA6C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x89D JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP16 DUP1 DUP15 PUSH2 0xA5F JUMP JUMPDEST SWAP3 DUP5 ADD MLOAD DUP6 SSTORE DUP13 SWAP7 SWAP1 SWAP5 ADD SWAP4 SWAP3 DUP3 ADD SWAP3 DUP16 SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0xA41 JUMP JUMPDEST DUP5 PUSH1 0x41 DUP11 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP6 ADD DUP9 SWAP1 MSTORE PUSH1 0x13 DUP2 DUP9 ADD MSTORE PUSH19 0x436861696E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP7 ADD DUP10 SWAP1 MSTORE PUSH1 0x23 DUP2 DUP10 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F206372656174652070726F706F PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x1CD85B PUSH1 0xEA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0xC42 JUMPI PUSH1 0x60 PUSH1 0x20 SWAP4 PUSH1 0x5 DUP4 PUSH2 0xBCD PUSH32 0x8D5C76B09B9C1F4D0453D21436DCB0B568A50E9C0AE059E4D0AE8C95C71D07F0 SWAP6 ISZERO ISZERO PUSH2 0x246C JUMP JUMPDEST PUSH1 0x12 SLOAD SWAP6 PUSH2 0xBDA DUP8 PUSH2 0x24FA JUMP JUMPDEST PUSH1 0x12 SSTORE DUP7 PUSH1 0x0 MSTORE PUSH1 0x17 DUP9 MSTORE PUSH2 0xC11 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP6 DUP5 SSTORE PUSH1 0x0 PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0x0 PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x3 DUP5 ADD PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE TIMESTAMP PUSH2 0x2449 JUMP JUMPDEST SWAP1 DUP3 ADD SSTORE ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP5 DUP3 MSTORE CALLER DUP7 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP5 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20637265617465206F70657261 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x3A34B7B7 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xCE7 PUSH2 0xCDD PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0x236B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xD0F PUSH1 0x20 SWAP2 CALLDATALOAD PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x0 SWAP1 DUP1 SLOAD PUSH2 0xD3A DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0xDD8 JUMPI POP PUSH1 0x1 EQ PUSH2 0xD7C JUMPI JUMPDEST PUSH2 0xD78 DUP6 PUSH2 0xD64 DUP2 DUP8 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xDC0 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0xD78 PUSH2 0xD54 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xDA5 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0xD78 SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0xD64 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0xD54 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x12 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH2 0xE51 DUP4 ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SWAP2 DUP1 DUP4 SLOAD SWAP3 PUSH2 0xE67 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x2711 JUMP JUMPDEST ADD SLOAD TIMESTAMP LT PUSH2 0xF04 JUMPI PUSH2 0xE78 DUP6 PUSH2 0x275D JUMP JUMPDEST DUP2 PUSH2 0xEFC JUMPI JUMPDEST POP ISZERO PUSH2 0xEC1 JUMPI PUSH32 0x64CEE5A70D662A7EEF5B2A171DAA51DC624F3D64A35D0855B385262B893DC5A5 PUSH1 0x40 DUP7 DUP7 DUP7 PUSH1 0x1 DUP8 PUSH1 0xFF NOT AND OR SWAP1 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x13DC195C985D1A5BDB881B9BDD081C185CDCD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP DUP7 PUSH2 0xE7E JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x14DA59DB9A5B99C81B9BDD08195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x2668 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 ISZERO ISZERO DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xF88 DUP3 PUSH2 0x278C JUMP JUMPDEST ISZERO PUSH2 0x1024 JUMPI PUSH1 0x13 SLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFC7 JUMPI PUSH32 0x57DF5A6A467271F04B10F7FE9E66D21DCD8AE7EAF079099D48959F24A53B6910 PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST DUP1 PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 PUSH2 0x1017 PUSH2 0xFF8 PUSH2 0x101F SWAP5 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP8 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x64 SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x4E6F7420616C6C20636861696E73207265616479 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1080 PUSH2 0x22B8 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH2 0x231F JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x10 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xCA1838D50CA3156F1ACE7CDE39A081CC9C9A333AF6FCA55DB71817F8717E1DCB PUSH2 0x1138 CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x3 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x115B DUP7 DUP3 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1175 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x9 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1194 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x2 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST SWAP1 SSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 CALLER PUSH1 0x0 MSTORE PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x12BD JUMPI DUP3 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x1283 JUMPI POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x14 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x15 DUP4 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0x4C7C76ABE482A2C36EA52F1B999474C69F8B4AFEEAC5635F8AEA2526864BA853 SWAP2 LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x135BD91D5B1948191BD95CC81B9BDD08195E1A5CDD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x84 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F2072656D6F7665206D6F64756C PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x65 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1354 PUSH2 0x22CE JUMP JUMPDEST CALLER PUSH1 0x0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x0 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO PUSH2 0x145C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x142B JUMPI DUP4 PUSH1 0x0 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x13F1 JUMPI PUSH32 0xF14475B19484BF096265507CC0C41CD3BF1994992088806830686E2D72722719 PUSH1 0x40 DUP6 DUP6 DUP6 DUP3 PUSH1 0x0 MSTORE PUSH1 0x14 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0xA0 SHL DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x15 DUP2 MSTORE DUP4 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4D6F64756C6520616C726561647920657869737473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A65726F2061646472657373 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE DUP1 DUP5 ADD DUP4 SWAP1 MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D75737420686F6C6420746F6B656E7320746F20616464206D6F64756C650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH32 0xE379B3DEB66DDFA7962A2BDF35E9A08B5BED672C9DA3ECF7CC6174D253C6DFE5 PUSH2 0x14EB CALLDATASIZE PUSH2 0x22E4 JUMP JUMPDEST POP DUP4 PUSH1 0x0 SWAP5 SWAP4 SWAP5 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH2 0x11AE PUSH1 0x2 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x150E DUP2 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1528 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST PUSH1 0x7 DUP2 ADD SWAP5 DUP8 PUSH1 0x0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x1547 PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x11A3 PUSH1 0x1 DUP4 ADD SWAP2 DUP3 SLOAD PUSH2 0x2449 JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x156F PUSH2 0x22B8 JUMP JUMPDEST PUSH2 0x1577 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP5 PUSH1 0x0 NOT DUP7 LT PUSH2 0x15B6 JUMPI JUMPDEST POP POP PUSH2 0xCE7 SWAP4 POP PUSH2 0x236B JUMP JUMPDEST DUP5 DUP7 LT PUSH2 0x1622 JUMPI DUP2 ISZERO PUSH2 0x160A JUMPI CALLER ISZERO PUSH2 0x15F2 JUMPI POP PUSH2 0xCE7 SWAP5 DUP5 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 CALLER PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE DUP5 DUP1 PUSH2 0x15AA JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x24 SWAP1 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP2 PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP4 MSTORE DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD DUP9 SWAP1 MSTORE SWAP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1670 DUP2 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x16B7 DUP3 PUSH2 0x21AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16C7 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1EDB JUMP JUMPDEST DUP3 MSTORE PUSH1 0x40 MLOAD PUSH2 0x16D9 DUP2 PUSH2 0x229 DUP2 PUSH2 0x1F7F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x16EE DUP2 PUSH2 0x229 DUP2 PUSH2 0x2006 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH2 0x1703 DUP2 PUSH2 0x229 DUP2 PUSH2 0x208D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xB SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x18CC JUMPI POP PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1740 PUSH1 0x20 DUP3 PUSH1 0x5 SHL ADD DUP4 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0xC PUSH1 0x0 MSTORE PUSH32 0xDF6966C971051C3D54EC59162606531493A51404A002842F56009D7E5CF4A8C7 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x18A7 JUMPI DUP6 DUP6 PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0xF SLOAD AND ISZERO ISZERO PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 MSTORE PUSH2 0x1808 PUSH2 0x17F2 PUSH2 0x17DC PUSH2 0x17C6 DUP6 MLOAD PUSH2 0x140 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x160 DUP7 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP4 DUP3 SUB PUSH1 0x1F NOT ADD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD SWAP1 PUSH1 0x1F NOT DUP4 DUP3 SUB ADD PUSH1 0xE0 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 PUSH1 0x20 DUP1 DUP4 PUSH1 0x5 SHL DUP4 ADD ADD SWAP5 ADD SWAP3 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x187A JUMPI DUP7 DUP1 DUP8 PUSH2 0x120 DUP12 PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x1898 PUSH1 0x1 SWAP4 PUSH1 0x1F NOT DUP7 DUP3 SUB ADD DUP8 MSTORE DUP10 MLOAD PUSH2 0x2222 JUMP JUMPDEST SWAP8 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH2 0x1849 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x40 MLOAD PUSH2 0x18BE DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x1771 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2EF JUMPI DUP2 CALLDATALOAD SWAP2 DUP3 PUSH1 0x0 MSTORE PUSH1 0x16 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH2 0x192E DUP5 DUP5 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP2 DUP4 ADD SWAP3 DUP4 SLOAD SWAP3 PUSH2 0x1942 PUSH1 0xFF DUP6 AND ISZERO PUSH2 0x25A9 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD TIMESTAMP LT PUSH2 0x1ACE JUMPI PUSH2 0x1956 DUP7 PUSH2 0x2668 JUMP JUMPDEST DUP2 PUSH2 0x1AC6 JUMPI JUMPDEST POP ISZERO PUSH2 0x1A8C JUMPI POP PUSH1 0x7 SWAP1 PUSH1 0x1 SWAP5 DUP6 PUSH1 0xFF NOT DUP1 SWAP7 AND OR SWAP1 SSTORE ADD SWAP3 PUSH2 0x198E PUSH1 0x40 MLOAD PUSH2 0x1989 DUP2 PUSH2 0x229 DUP2 DUP10 PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x2884 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x40 DUP3 DUP7 ADD MSTORE PUSH1 0x0 SWAP4 DUP1 SLOAD PUSH2 0x19A8 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST SWAP5 DUP6 PUSH1 0x40 DUP10 ADD MSTORE DUP4 DUP3 AND SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x1A46 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x19ED JUMPI JUMPDEST PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP7 DUP7 SUB DUP8 LOG1 STOP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP1 SWAP5 POP JUMPDEST DUP4 DUP6 LT PUSH2 0x1A32 JUMPI POP POP POP POP DUP2 ADD PUSH1 0x60 ADD DUP2 PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST DUP1 SLOAD DUP7 DUP7 ADD PUSH1 0x60 ADD MSTORE SWAP4 DUP3 ADD SWAP4 DUP2 ADD PUSH2 0x19F9 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 SWAP6 POP PUSH1 0x60 SWAP4 POP PUSH32 0xBADBD87941BB6424ED4AA4719BF01A3319B64480E49F89018C718603239553D2 SWAP7 SWAP5 SWAP3 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 SWAP3 DUP5 DUP1 PUSH2 0x19C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x141C9BDC1BDCD85B081B9BDD081C185CDCD959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 POP DUP8 PUSH2 0x195C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x159BDD1A5B99C81B9BDD08195B991959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0x1B3C PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER ISZERO PUSH2 0x1BAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x15F2 JUMPI POP CALLER PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x20 CALLER SWAP3 LOG3 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 DUP2 DUP6 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x3 SLOAD PUSH2 0x1BE4 DUP2 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1C69 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1C0E JUMPI JUMPDEST PUSH2 0xD78 DUP5 PUSH2 0xD64 DUP2 DUP7 SUB DUP3 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B JUMPDEST DUP3 DUP5 LT PUSH2 0x1C51 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0xD64 DUP3 PUSH2 0x1BFE JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1C39 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP PUSH2 0xD64 SWAP2 POP DUP4 SWAP1 POP PUSH2 0x1BFE JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH2 0xF57 SWAP1 CALLDATALOAD PUSH2 0x275D JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x24 CALLDATALOAD DUP2 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2EF JUMPI PUSH2 0x1CE0 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x229A JUMP JUMPDEST POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH2 0x1CFB PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x24B8 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x1DA3 JUMPI PUSH32 0x42E60114B8BC5803B43A4BCD35572ECE9A5E2CABB79A838A02D56A4C53E83313 SWAP3 POP DUP1 PUSH1 0x0 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD EQ PUSH2 0x1D84 JUMPI JUMPDEST POP PUSH2 0x11EA PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x7 PUSH2 0x1989 PUSH2 0x1D9D SWAP3 PUSH2 0x229 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST DUP4 PUSH2 0x1D60 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP2 DUP6 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x105B1C9958591E48195E1958DD5D1959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST SWAP1 CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI DUP1 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0xD78 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x7 DUP4 SLOAD SWAP4 PUSH2 0x1E1C DUP7 PUSH2 0x1E15 DUP2 PUSH1 0x1 DUP6 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP8 PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP3 PUSH1 0xFF PUSH1 0x3 DUP4 ADD SLOAD SWAP2 DUP4 ADD SLOAD AND PUSH1 0x5 DUP4 ADD SLOAD SWAP2 PUSH2 0x1E5C PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x6 DUP7 ADD SLOAD AND SWAP5 PUSH2 0x1E55 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP4 ADD PUSH2 0x2114 JUMP JUMPDEST SUB DUP7 PUSH2 0x21DD JUMP JUMPDEST PUSH2 0x1E78 PUSH1 0x40 MLOAD SWAP10 DUP11 SWAP10 DUP11 MSTORE PUSH2 0x100 DUP1 PUSH1 0x20 DUP13 ADD MSTORE DUP11 ADD SWAP1 PUSH2 0x2222 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x60 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x2222 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1ED1 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1EBB JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1EB0 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1EEB DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1F09 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x6 PUSH1 0x0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1F4A JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1F38 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x1F8F DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1FAD JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x7 PUSH1 0x0 MSTORE PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x1FEE JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1FDC JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x2016 DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2034 JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x8 PUSH1 0x0 MSTORE PUSH32 0xF3F7A9FE364FAAB93B216DA50A3214154F22A0A2B415B23A84C8169E8B636EE3 SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x2075 JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x209D DUP3 PUSH2 0x1EA1 JUMP JUMPDEST DUP1 DUP3 MSTORE SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1F62 JUMPI POP PUSH1 0x1 EQ PUSH2 0x20BB JUMPI POP POP POP JUMP JUMPDEST SWAP2 SWAP3 SWAP4 POP PUSH1 0x9 PUSH1 0x0 MSTORE PUSH32 0x6E1540171B6C0C960B71A7020D9F60077F6AF931A8BBF590DA0223DACF75C7AF SWAP2 PUSH1 0x0 SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x20FC JUMPI POP POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP6 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x20EA JUMP JUMPDEST SWAP1 PUSH1 0x0 SWAP3 SWAP2 DUP1 SLOAD SWAP2 PUSH2 0x2125 DUP4 PUSH2 0x1EA1 JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x1 SWAP4 DUP5 DUP2 AND SWAP1 DUP2 PUSH1 0x0 EQ PUSH2 0x2187 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2147 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP5 POP PUSH1 0x0 MSTORE PUSH1 0x20 SWAP3 DUP4 PUSH1 0x0 KECCAK256 SWAP3 DUP5 PUSH1 0x0 SWAP5 JUMPDEST DUP4 DUP7 LT PUSH2 0x2173 JUMPI POP POP POP POP ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST DUP1 SLOAD DUP6 DUP8 ADD DUP4 ADD MSTORE SWAP5 ADD SWAP4 DUP6 SWAP1 DUP3 ADD PUSH2 0x215C JUMP JUMPDEST SWAP3 SWAP5 POP POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 CODESIZE DUP1 DUP1 DUP1 PUSH2 0x2141 JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x21C7 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2212 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2202 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x223B DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x21C7 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x226F DUP3 PUSH2 0x2247 JUMP JUMPDEST SWAP2 PUSH2 0x227D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x21DD JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2EF JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP2 PUSH1 0x20 PUSH2 0x22B5 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x2263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2EF JUMPI JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI PUSH2 0x22B5 SWAP2 PUSH1 0x4 ADD PUSH2 0x229A JUMP JUMPDEST CALLVALUE PUSH2 0x2EF JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x20 PUSH2 0x32D PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0x2EF JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2EF JUMPI SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x2430 JUMPI AND SWAP3 DUP4 ISZERO PUSH2 0x2417 JUMPI PUSH1 0x0 SWAP1 DUP4 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 DUP4 DUP3 LT PUSH2 0x23E5 JUMPI POP SWAP2 PUSH1 0x40 DUP3 DUP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP6 DUP8 PUSH1 0x20 SWAP7 MSTORE DUP3 DUP7 MSTORE SUB DUP3 DUP3 KECCAK256 SSTORE DUP7 DUP2 MSTORE KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2456 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x2473 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E206D75737420626520706F73697469766500000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x24BF JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10DA185A5B881B9BDD081CDD5C1C1BDC9D1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2456 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x2517 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x2553 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2548 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x253C JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x2533 JUMP JUMPDEST ISZERO PUSH2 0x2564 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20646F6573206E6F74206578697374000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x25B0 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20616C726561647920657865637574656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x2606 JUMPI PUSH1 0x2 PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x261F JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105B1C9958591E481CDE5B98D959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2456 JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x0 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH2 0x2683 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 DUP4 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x26A9 PUSH1 0x2 SLOAD PUSH1 0x10 SLOAD SWAP1 PUSH2 0x2655 JUMP JUMPDEST DIV GT ISZERO SWAP3 DUP4 SWAP2 DUP3 PUSH2 0x26BB JUMPI JUMPDEST POP POP SWAP2 SWAP1 JUMP JUMPDEST GT SWAP1 POP CODESIZE DUP1 PUSH2 0x26B5 JUMP JUMPDEST ISZERO PUSH2 0x26CC JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20646F6573206E6F742065786973740000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST ISZERO PUSH2 0x2718 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F7065726174696F6E20616C7265616479206578656375746564000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x2777 DUP3 SLOAD ISZERO ISZERO PUSH2 0x26C5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 ADD SLOAD SWAP3 ADD SLOAD SWAP2 PUSH2 0x2698 DUP4 DUP3 PUSH2 0x2449 JUMP JUMPDEST PUSH2 0x27A5 PUSH1 0x0 SWAP2 DUP1 DUP4 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD EQ PUSH2 0x255D JUMP JUMPDEST DUP1 JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x27B6 JUMPI POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x27D6 PUSH2 0x27C2 DUP3 PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x27E9 JUMPI PUSH2 0x27E4 SWAP1 PUSH2 0x24FA JUMP JUMPDEST PUSH2 0x27A7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2857 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2851 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x284B JUMPI PUSH1 0x3 EQ PUSH2 0x2845 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x92DCECC2D8D2C840C6D0C2D2DC40D2DCC8CAF PUSH1 0x6B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0xA4B1 SWAP1 JUMP JUMPDEST POP PUSH1 0x38 SWAP1 JUMP JUMPDEST POP PUSH1 0x89 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2EF JUMPI PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP2 ADD SWAP1 PUSH1 0x20 SWAP1 DUP1 DUP3 DUP5 ADD SWAP4 PUSH1 0x40 SWAP2 DUP3 SWAP2 SUB SLT PUSH2 0x2EF JUMPI DUP2 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP1 DUP4 SWAP1 SUB PUSH2 0x2EF JUMPI DUP2 DUP2 ADD MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2EF JUMPI ADD SWAP2 DUP5 PUSH1 0x3F DUP5 ADD SLT ISZERO PUSH2 0x2EF JUMPI DUP4 DUP4 ADD MLOAD SWAP3 PUSH2 0x28E3 DUP5 PUSH2 0x2247 JUMP JUMPDEST SWAP4 PUSH2 0x28F0 DUP5 MLOAD SWAP6 DUP7 PUSH2 0x21DD JUMP JUMPDEST DUP1 DUP6 MSTORE DUP6 DUP6 ADD SWAP7 DUP5 DUP3 DUP5 ADD ADD GT PUSH2 0x2EF JUMPI DUP7 DUP5 PUSH2 0x290D SWAP4 ADD PUSH2 0x21FF JUMP JUMPDEST PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x2942 JUMPI POP POP SWAP2 PUSH2 0x2930 SWAP2 DUP4 PUSH2 0x2940 SWAP5 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x236B JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP1 PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 SUB PUSH2 0x29D9 JUMPI POP SWAP1 DUP3 DUP3 PUSH2 0x2965 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x29C2 JUMPI SWAP2 DUP2 PUSH1 0x0 SWAP4 PUSH2 0x29A9 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP5 PUSH1 0x2 SLOAD PUSH2 0x2449 JUMP JUMPDEST PUSH1 0x2 SSTORE DUP6 DUP6 MSTORE DUP5 DUP4 MSTORE DUP1 DUP6 KECCAK256 DUP3 DUP2 SLOAD ADD SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST SWAP4 SWAP5 SWAP4 PUSH4 0x2770A7EB PUSH1 0xE2 SHL SUB PUSH2 0x2AA7 JUMPI SWAP1 DUP3 DUP3 PUSH2 0x29F9 SWAP4 MLOAD ADD ADD SWAP1 PUSH2 0x285D JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2A8F JUMPI PUSH1 0x0 SWAP3 DUP3 DUP5 MSTORE DUP4 DUP3 MSTORE DUP6 DUP5 KECCAK256 SLOAD SWAP6 DUP2 DUP8 LT PUSH2 0x2A61 JUMPI DUP2 DUP6 SWAP7 SWAP8 DUP6 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP7 SWAP8 MSTORE DUP8 DUP6 MSTORE SUB DUP2 DUP8 KECCAK256 SSTORE DUP2 PUSH1 0x2 SLOAD SUB PUSH1 0x2 SSTORE MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x2AB735B737BBB71037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE STOP CALLDATACOPY ADDRESS 0xD0 MUL PUSH7 0x375259274B7CE8 PUSH27 0x5CF38CA28D407C876977216EB1D0BFF04464736F6C634300081400 CALLER ","sourceMap":"750:24192:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;2373:22;750:24192;;2373:22;750:24192;;2373:22;750:24192;;;2373:22;750:24192;;;;2373:22;750:24192;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2466:103:5;;;:::i;:::-;750:24192:6;;;;;13144:18;750:24192;;;;;;13186:74;750:24192;;13194:37;;13186:74;:::i;:::-;13296:18;;;750:24192;13278:15;:36;750:24192;;;13342:58;750:24192;13351:18;;;750:24192;;13350:19;13342:58;:::i;:::-;13419:19;;;13439:10;;750:24192;;;;;;;;;;;;;13439:10;750:24192;;;;;;;;;13487:25;750:24192;;13439:10;;13821:66;13439:10;13821:66;13439:10;;750:24192;;;;;;;;;;;;;;13635:4;750:24192;;;;;;;;13650:156;;;;;13635:4;13678:23;:41;750:24192;;;13678:41;:::i;:::-;750:24192;;13650:156;750:24192;;;;;;13439:10;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13821:66;;;;13635:4;3068:21:5;750:24192:6;;13650:156;13750:27;;:45;750:24192;;;13750:45;:::i;:::-;750:24192;;13650:156;;750:24192;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;:::i;:::-;2466:103:5;;;:::i;:::-;750:24192:6;;;;;8152:9;750:24192;;;;;;8184:62;750:24192;;;8192:26;8184:62;:::i;:::-;8282:17;;;750:24192;8264:15;:35;750:24192;;;8326:56;750:24192;8335:17;;;750:24192;;8334:18;8326:56;:::i;:::-;8401:17;;;8419:10;;750:24192;;;;;;;;;;;;;8419:10;750:24192;;;;;;;;;8466:25;750:24192;;8419:10;;8777:61;8419:10;8777:61;8419:10;;750:24192;;;;;;;;;;;;;;8609:4;750:24192;;;;;;;;8624:138;;;;;8652:17;;:32;750:24192;;;8652:32;:::i;8624:138::-;8715:21;;:36;750:24192;;;8715:36;:::i;750:24192::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;2777:63;750:24192;;;;;;;;2777:63;750:24192;2777:63;;750:24192;2777:63;;;;750:24192;;;2777:63;;750:24192;;2777:63;;;750:24192;;2777:63;750:24192;;;;;2777:63;;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2614:45;750:24192;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7028:10;;750:24192;;;;;;;;;;;7018:25;750:24192;;7093:51;7101:13;;;7093:51;:::i;:::-;750:24192;;;7162:15;750:24192;;7154:67;750:24192;;;;;;7154:67;:::i;:::-;750:24192;;7162:15;750:24192;;;;;;;;;;;7335:17;750:24192;7335:17;;;;:::i;:::-;;750:24192;;;;7390:9;750:24192;;;;;;;;;7464:20;;;;750:24192;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;7708:18;750:24192;;;7630:27;750:24192;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;7509:17;;;750:24192;;;7540:21;;750:24192;7575:17;;;750:24192;;;;;;;7630:15;:27;:::i;:::-;7610:17;;;750:24192;7667:18;;;7028:10;-1:-1:-1;;;;;750:24192:6;;;;;;;;7708:18;750:24192;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;7755:53;750:24192;;;;;;;;;;10599:17:1;;;750:24192:6;;;;;;;;;;;;;;;;;;7028:10;750:24192;;;;;;;;;;;;;;:::i;:::-;7755:53;;;750:24192;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7755:53;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;10599:17:1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7708:18;750:24192;;;;;;7630:27;750:24192;;;;;;;;;;;;;;;;;;;;10599:17:1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2566:42;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;12168:10;750:24192;;;;;;;;;12158:25;750:24192;;;;12242:13;12655:19;12242:13;12234:51;12703:65;12242:13;;;12234:51;:::i;:::-;12318:17;750:24192;12318:17;;;;:::i;:::-;;750:24192;;;;12383:18;750:24192;;12618:27;750:24192;;;;;;;;;12483:23;;750:24192;;12520:27;;;750:24192;;12561:18;;750:24192;;;;;;;12618:15;:27;:::i;:::-;12597:18;;;750:24192;12655:19;12168:10;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;;;12168:10;750:24192;;;;;;;;12703:65;750:24192;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;3060:48;750:24192;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;3459:5:1;750:24192:6;;:::i;:::-;;;735:10:4;;3459:5:1;:::i;:::-;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2474:30;750:24192;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;16394:18;750:24192;;;;;;;;16444:37;16436:74;16444:37;;;16436:74;:::i;:::-;750:24192;16529:18;;750:24192;;;;;16520:58;750:24192;;;16528:19;16520:58;:::i;:::-;16615:18;750:24192;16596:15;:37;750:24192;;16702:33;;;:::i;:::-;16753:23;;;750:24192;;;;;16861:55;750:24192;;;;;;;;;;;;;;;;;;;;;16861:55;750:24192;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;16753:23;;;;;;750:24192;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;19646:31;;;;:::i;:::-;750:24192;;;20520:14;750:24192;;19825:28;;;;;;19995:26;750:24192;;;;;;;19995:26;750:24192;19855:3;19892:22;20483:62;;19892:22;19855:3;19892:22;;:::i;:::-;750:24192;;20483:62;;;;;;750:24192;;;;;;;;;;;;;;;;;;20483:62;;;;19855:3;:::i;:::-;19810:13;;750:24192;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;-1:-1:-1;;;;;750:24192:6;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2510:29;750:24192;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2876:47;750:24192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;750:24192:6;;;;;2401:31;750:24192;;;;;;;;;;;10050:61;750:24192;;;:::i;:::-;;;;;;;;9423:9;750:24192;;9941:38;:21;750:24192;;;9455:62;750:24192;;;9463:26;9455:62;:::i;:::-;750:24192;;;9535:15;750:24192;;9527:61;750:24192;;;;;;9527:61;:::i;:::-;9607:24;;;750:24192;;;;;;;9598:66;750:24192;;;;;;9606:39;9598:66;:::i;:::-;9901:30;:17;;;750:24192;;;9901:30;:::i;:::-;750:24192;;9941:21;750:24192;;;9941:38;:::i;:::-;750:24192;;;;;;;;;;10030:4;750:24192;;;;;;;;10050:61;10096:14;750:24192;;;10050:61;;;;750:24192;;;;;;;;;;;;;;;;;;10050:61;;;;750:24192;;;;;;;;;;;;;;;;23492:10;;750:24192;;;;;;;;;23482:25;750:24192;;;;;23563:13;750:24192;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;23631:7;750:24192;;;;;;;;-1:-1:-1;;;;;;750:24192:6;;;23563:13;750:24192;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;23707:24;;;750:24192;;;;;;;;;;;;;;;23563:13;750:24192;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2929:49;750:24192;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;:::i;:::-;22982:10;750:24192;;;;;;;;;;;22972:25;750:24192;;-1:-1:-1;;;;;750:24192:6;;23050:28;;750:24192;;;;;23114:13;750:24192;;;;;;;;;;23267:38;750:24192;;;;;;;23175:7;750:24192;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;23114:13;750:24192;;;;;;;;;;;;;;;;;;;;;;23267:38;750:24192;;;;;;;;;;;;;;;23114:13;750:24192;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;2780:2:1;750:24192:6;;;;;;;15148:66;750:24192;;;:::i;:::-;;;;;;;;14522:18;750:24192;;15027:49;:27;750:24192;;;14564:74;750:24192;;14572:37;;14564:74;:::i;:::-;750:24192;;;14656:15;750:24192;;14648:61;750:24192;;;;;;14648:61;:::i;:::-;14728:25;;;750:24192;;;;;;;14719:67;750:24192;;;;;;14727:40;14719:67;:::i;:::-;14976:41;:23;;;750:24192;;;14976:41;:::i;750:24192::-;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;735:10:4;750:24192:6;;;;;;;;10599:17:1;;;10580:36;;10576:309;;750:24192:6;4986:5:1;;;;;;:::i;10576:309::-;10636:24;;;10632:130;;9813:19;;9809:89;;735:10:4;9911:21:1;9907:90;;750:24192:6;4986:5:1;750:24192:6;;;;;;;;;;;735:10:4;750:24192:6;;;;;;;;;10576:309:1;;;;9907:90;750:24192:6;;;;;9955:31:1;;;;;;;;750:24192:6;9955:31:1;9809:89;750:24192:6;;;;;9855:32:1;;;;;;;;750:24192:6;9855:32:1;10632:130;750:24192:6;;;-1:-1:-1;;;10687:60:1;;735:10:4;10687:60:1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;10687:60:1;;;750:24192:6;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2927:12:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;11195:9;750:24192;;;;;;11227:62;750:24192;;;11235:26;11227:62;:::i;:::-;11308:17;;;750:24192;;;;11299:56;750:24192;;;11307:18;11299:56;:::i;:::-;11392:17;;;750:24192;11373:15;:36;750:24192;;11477:32;;;:::i;:::-;11527:23;;;750:24192;;;;;;11693:18;750:24192;;;;;;;;;;;;11693:18;750:24192;11675:37;750:24192;;;;;;;;:::i;:::-;11675:37;:::i;:::-;750:24192;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11736:49;;;;;;750:24192;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;-1:-1:-1;;;;750:24192:6;;;;;11736:49;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11736:49;750:24192;;;;;;;;;;;11392:17;750:24192;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;11527:23;;;;;;750:24192;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;2438:30;750:24192;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;:::i;:::-;;;735:10:4;;9813:19:1;9809:89;;-1:-1:-1;;;;;750:24192:6;;9911:21:1;;9907:90;;735:10:4;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;10085:31:1;750:24192:6;735:10:4;10085:31:1;;750:24192:6;;;;;;;9809:89:1;750:24192:6;;-1:-1:-1;;;9855:32:1;;750:24192:6;9855:32:1;;;750:24192:6;;;9855:32:1;750:24192:6;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;750:24192:6;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;-1:-1:-1;750:24192:6;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;17342:15;750:24192;;17334:61;750:24192;;;;;;17334:61;:::i;:::-;750:24192;;;17414:17;750:24192;;;;;;;;;;17953:66;750:24192;;;;;17414:17;750:24192;;;;;;;;;;;;;;17812:9;750:24192;;;;;;;;17848:26;17844:94;;750:24192;;17953:66;18004:14;750:24192;;;17953:66;;;;750:24192;;;;;;;;;;;;;;;;;;17844:94;17908:18;750:24192;17890:37;750:24192;;;;17908:18;;;;;750:24192;:::i;17890:37::-;17844:94;;;750:24192;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;2726:45;750:24192;;;;;;;2726:45;750:24192;;2726:45;750:24192;2726:45;750:24192;2726:45;750:24192;2726:45;;750:24192;:::i;:::-;;;;:::i;:::-;2726:45;;;750:24192;2726:45;750:24192;;2726:45;;750:24192;2726:45;;;750:24192;;2726:45;;;750:24192;;;;;;;;2726:45;;;750:24192;;;;;;2726:45;;;;;750:24192;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;23895:7;750:24192;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;23895:7;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;750:24192:6;;;;-1:-1:-1;750:24192:6;;;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;;-1:-1:-1;;750:24192:6;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;750:24192:6;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;750:24192:6;;;;;;:::o;:::-;;-1:-1:-1;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;750:24192:6;;;;;;;;-1:-1:-1;750:24192:6;18564:15;750:24192;;;;-1:-1:-1;750:24192:6;;;18225:371;;750:24192;;;;;;;;;;;;;;;;;;;;;;:::o;5393:300:1:-;;-1:-1:-1;;;;;750:24192:6;;;;5476:18:1;;5472:86;;750:24192:6;5571:16:1;;;5567:86;;6093:540;750:24192:6;;;;;;;;;;;6340:19:1;;;;6336:115;;750:24192:6;;;;;7083:25:1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;7083:25:1;5393:300::o;6336:115::-;750:24192:6;;-1:-1:-1;;;6386:50:1;;-1:-1:-1;;;;;750:24192:6;;;;6386:50:1;;;750:24192:6;;;;;;;;;;;;;;;;10687:60:1;5567:86;750:24192:6;;-1:-1:-1;;;5610:32:1;;5492:1;5610:32;;;750:24192:6;;;5610:32:1;5472:86;750:24192:6;;-1:-1:-1;;;5517:30:1;;5492:1;5517:30;;;750:24192:6;;;5517:30:1;750:24192:6;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;-1:-1:-1;;750:24192:6;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;750:24192:6;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;2575:307:5;1899:1;2702:7;750:24192:6;2702:18:5;2698:86;;1899:1;2702:7;750:24192:6;2575:307:5:o;2698:86::-;750:24192:6;;-1:-1:-1;;;2743:30:5;;;;;750:24192:6;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;:::o;10394:580::-;;750:24192;-1:-1:-1;750:24192:6;10536:9;750:24192;;10568:62;750:24192;-1:-1:-1;750:24192:6;;;;10576:26;10568:62;:::i;:::-;10682:21;10662:17;;;750:24192;10682:21;;750:24192;10662:41;;;;;:::i;:::-;10775:3;10739:32;10662:17;750:24192;10755:16;750:24192;10739:32;;:::i;:::-;750:24192;-1:-1:-1;10813:28:6;;;;;10860:58;;10394:580;10937:30;;;10394:580;:::o;10860:58::-;10877:41;;-1:-1:-1;10860:58:6;;;;750:24192;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;750:24192:6;;;;;;;;;;;;;;;;;;;;15490:647;-1:-1:-1;750:24192:6;15643:18;750:24192;;;-1:-1:-1;750:24192:6;;15685:74;750:24192;;15693:37;;15685:74;:::i;:::-;15822:27;15796:23;;;750:24192;15822:27;;750:24192;15796:53;;;;;:::i;18841:573::-;19002:62;-1:-1:-1;750:24192:6;;;;18970:9;750:24192;;;;;;19010:26;19002:62;:::i;:::-;19169:13;19184:28;20975:1;19184:28;;;;19396:11;;19403:4;18841:573;:::o;19214:3::-;19292:29;19251:22;;;:::i;:::-;-1:-1:-1;750:24192:6;18564:15;750:24192;;;;-1:-1:-1;750:24192:6;;;18225:371;;19292:29;19291:30;19287:81;;19214:3;;;:::i;:::-;19169:13;;19287:81;19341:12;;:::o;21150:323::-;21239:11;;21235:25;;21301:1;21291:11;;21287:27;;21352:1;21342:11;;21338:26;;21399:1;21389:11;21385:29;;750:24192;;-1:-1:-1;;;21437:29:6;;750:24192;21437:29;;;750:24192;;;;;;-1:-1:-1;;;750:24192:6;;;;;;21437:29;21385;21409:5;21402:12;:::o;21338:26::-;21355:9;21362:2;21355:9;:::o;21287:27::-;21304:10;21311:3;21304:10;:::o;21235:25::-;21252:8;21259:1;21252:8;:::o;750:24192::-;;;;;;;;;;;;-1:-1:-1;;;;;750:24192:6;;;;;;;;;;;;:::o;21613:1113::-;750:24192;;21772:39;;;;;;;;;750:24192;;;;;;;;;21772:39;;;750:24192;-1:-1:-1;;;;;;750:24192:6;;;21772:39;750:24192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;21834:58:6;;750:24192;;;;;22003:36;750:24192;;22079:6;750:24192;;22003:36;;;;:::i;:::-;750:24192;-1:-1:-1;;;;;750:24192:6;22063:10;22079:6;:::i;:::-;21613:1113::o;21830:890::-;750:24192;;;;-1:-1:-1;;;22107:54:6;;750:24192;;;;;;22272:36;750:24192;;22272:36;;;;:::i;:::-;-1:-1:-1;;;;;750:24192:6;;;;7528:21:1;;7524:91;;750:24192:6;;6643:425:1;750:24192:6;6233:21:1;7083:25;750:24192:6;6233:21:1;750:24192:6;6233:21:1;:::i;:::-;;750:24192:6;;;;;;;;;;;;;;;;;;;;7083:25:1;21613:1113:6:o;7524:91:1:-;750:24192:6;-1:-1:-1;;;7572:32:1;;-1:-1:-1;7572:32:1;;;750:24192:6;;;7572:32:1;22103:617:6;750:24192;;;-1:-1:-1;;;22360:54:6;750:24192;;;;;22527:36;750:24192;;22527:36;;;;:::i;:::-;750:24192;-1:-1:-1;;;;;750:24192:6;;;;8054:21:1;;8050:89;;6093:540;750:24192:6;;;;;;;;;;;6340:19:1;;;;6336:115;;750:24192:6;;;;;7083:25:1;750:24192:6;;;;;;;;;;;;6810:21:1;750:24192:6;;6810:21:1;750:24192:6;;;;;7083:25:1;21613:1113:6:o;6336:115:1:-;750:24192:6;-1:-1:-1;;;6386:50:1;;-1:-1:-1;;;;;750:24192:6;;6386:50:1;;;750:24192:6;;;;;;;;;;;;;;;;10687:60:1;8050:89;750:24192:6;;-1:-1:-1;;;8098:30:1;;-1:-1:-1;8098:30:1;;;750:24192:6;;;8098:30:1;22356:364:6;750:24192;;-1:-1:-1;;;22682:27:6;;;;;750:24192;;;;;;;;-1:-1:-1;;;750:24192:6;;;;;;22682:27"},"methodIdentifiers":{"activeModules(bytes32)":"b3fe8bcb","addModule(bytes32,address)":"35324eee","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","checkChainConnection(uint256)":"4de184f6","checkMultiSigResult(uint256)":"057b2074","checkProposalResult(uint256)":"7e5a9b47","checkSyncReadiness(uint256)":"e49a62e9","createMultiSigOperation(bytes32,uint256)":"b00e0730","createProposal(string,uint256,bytes,uint256)":"b3594510","currentChainId()":"6cbadbfa","decimals()":"313ce567","dleInfo()":"f2c26a47","executeMultiSigOperation(uint256)":"893d692a","executeProposal(uint256)":"0d61b519","executedMultiSig(uint256)":"af89d2c4","executedProposals(uint256)":"3b60288a","getCurrentChainId()":"5cf0e8a4","getDLEInfo()":"204c5d1f","getModuleAddress(bytes32)":"22dbefbb","getSupportedChainCount()":"eced3dfb","getSupportedChainId(uint256)":"9a49bdde","isChainSupported(uint256)":"5221c1f0","isModuleActive(bytes32)":"4b145793","modules(bytes32)":"b0b6cc1a","multiSigCounter()":"8c7b04c9","multiSigOperations(uint256)":"c51cab3a","name()":"06fdde03","proposalCounter()":"0c0512e9","proposals(uint256)":"013cf08b","quorumPercentage()":"4fa76ec9","removeModule(bytes32)":"4114509b","signMultiSigOperation(uint256,bool)":"ccd7a490","supportedChains(uint256)":"548d496f","symbol()":"95d89b41","syncExecutionFromChain(uint256,uint256,bytes)":"044bc2bd","syncMultiSigFromChain(uint256,uint256,uint256,uint256,bytes)":"2ee09598","syncToAllChains(uint256)":"7ce288ea","syncVoteFromChain(uint256,uint256,uint256,uint256,bytes)":"456d10c1","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","vote(uint256,bool)":"c9d27afe"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"okvedCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorumPercentage\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"initialPartners\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"initialAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"supportedChainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct DLE.DLEConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_currentChainId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toChainId\",\"type\":\"uint256\"}],\"name\":\"CrossChainExecutionSync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toChainId\",\"type\":\"uint256\"}],\"name\":\"CrossChainMultiSigSync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toChainId\",\"type\":\"uint256\"}],\"name\":\"CrossChainVoteSync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"okvedCodes\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"supportedChainIds\",\"type\":\"uint256[]\"}],\"name\":\"DLEInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"partners\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"InitialTokensDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"moduleId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"moduleId\",\"type\":\"bytes32\"}],\"name\":\"ModuleRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"operationHash\",\"type\":\"bytes32\"}],\"name\":\"MultiSigExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"operationHash\",\"type\":\"bytes32\"}],\"name\":\"MultiSigOperationCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"signaturePower\",\"type\":\"uint256\"}],\"name\":\"MultiSigSigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operation\",\"type\":\"bytes\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votingPower\",\"type\":\"uint256\"}],\"name\":\"ProposalVoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"SyncCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"activeModules\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_moduleAddress\",\"type\":\"address\"}],\"name\":\"addModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"checkChainConnection\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAvailable\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"}],\"name\":\"checkMultiSigResult\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"quorumReached\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"checkProposalResult\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"quorumReached\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"checkSyncReadiness\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allChainsReady\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_operationHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"createMultiSigOperation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_description\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_operation\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_governanceChainId\",\"type\":\"uint256\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dleInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"}],\"name\":\"executeMultiSigOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executedMultiSig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executedProposals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDLEInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"coordinates\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"jurisdiction\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oktmo\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"okvedCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256\",\"name\":\"kpp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"internalType\":\"struct DLE.DLEInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"}],\"name\":\"getModuleAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedChainCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSupportedChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"isChainSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"}],\"name\":\"isModuleActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"modules\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiSigCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"multiSigOperations\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"operationHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"forSignatures\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstSignatures\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"operation\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_moduleId\",\"type\":\"bytes32\"}],\"name\":\"removeModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"signMultiSigOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"supportedChains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fromChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"syncExecutionFromChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_operationId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fromChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_forSignatures\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_againstSignatures\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"syncMultiSigFromChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"syncToAllChains\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fromChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"syncVoteFromChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"\\u041e\\u0441\\u043d\\u043e\\u0432\\u043d\\u043e\\u0439 \\u043a\\u043e\\u043d\\u0442\\u0440\\u0430\\u043a\\u0442 DLE \\u0441 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\\u043d\\u043e\\u0439 \\u0430\\u0440\\u0445\\u0438\\u0442\\u0435\\u043a\\u0442\\u0443\\u0440\\u043e\\u0439 \\u0438 \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438-\\u0447\\u0435\\u0439\\u043d \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u043e\\u0439\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"addModule(bytes32,address)\":{\"details\":\"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\",\"params\":{\"_moduleAddress\":\"\\u0410\\u0434\\u0440\\u0435\\u0441 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\",\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"checkChainConnection(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u043f\\u043e\\u0434\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u0435 \\u043a \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0435\",\"params\":{\"_chainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"},\"returns\":{\"isAvailable\":\"\\u0414\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0430 \\u043b\\u0438 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0430\"}},\"checkMultiSigResult(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u0440\\u0435\\u0437\\u0443\\u043b\\u044c\\u0442\\u0430\\u0442 \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0438\",\"params\":{\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"},\"returns\":{\"passed\":\"\\u041f\\u0440\\u043e\\u0448\\u043b\\u0430 \\u043b\\u0438 \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044f\",\"quorumReached\":\"\\u0414\\u043e\\u0441\\u0442\\u0438\\u0433\\u043d\\u0443\\u0442 \\u043b\\u0438 \\u043a\\u0432\\u043e\\u0440\\u0443\\u043c\"}},\"checkProposalResult(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u0440\\u0435\\u0437\\u0443\\u043b\\u044c\\u0442\\u0430\\u0442 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"},\"returns\":{\"passed\":\"\\u041f\\u0440\\u043e\\u0448\\u043b\\u043e \\u043b\\u0438 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\",\"quorumReached\":\"\\u0414\\u043e\\u0441\\u0442\\u0438\\u0433\\u043d\\u0443\\u0442 \\u043b\\u0438 \\u043a\\u0432\\u043e\\u0440\\u0443\\u043c\"}},\"checkSyncReadiness(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u0432\\u0441\\u0435 \\u043f\\u043e\\u0434\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u044f \\u043f\\u0435\\u0440\\u0435\\u0434 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0430\\u0446\\u0438\\u0435\\u0439\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"},\"returns\":{\"allChainsReady\":\"\\u0413\\u043e\\u0442\\u043e\\u0432\\u044b \\u043b\\u0438 \\u0432\\u0441\\u0435 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"}},\"createMultiSigOperation(bytes32,uint256)\":{\"details\":\"\\u0421\\u043e\\u0437\\u0434\\u0430\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044e\",\"params\":{\"_duration\":\"\\u0414\\u043b\\u0438\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0441\\u0442\\u044c \\u0441\\u0431\\u043e\\u0440\\u0430 \\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0435\\u0439\",\"_operationHash\":\"\\u0425\\u0435\\u0448 \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"createProposal(string,uint256,bytes,uint256)\":{\"details\":\"\\u0421\\u043e\\u0437\\u0434\\u0430\\u0442\\u044c \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435 \\u0441 \\u0432\\u044b\\u0431\\u043e\\u0440\\u043e\\u043c \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u0434\\u043b\\u044f \\u043a\\u0432\\u043e\\u0440\\u0443\\u043c\\u0430\",\"params\":{\"_description\":\"\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\",\"_duration\":\"\\u0414\\u043b\\u0438\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0441\\u0442\\u044c \\u0433\\u043e\\u043b\\u043e\\u0441\\u043e\\u0432\\u0430\\u043d\\u0438\\u044f \\u0432 \\u0441\\u0435\\u043a\\u0443\\u043d\\u0434\\u0430\\u0445\",\"_governanceChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u0434\\u043b\\u044f \\u0441\\u0431\\u043e\\u0440\\u0430 \\u0433\\u043e\\u043b\\u043e\\u0441\\u043e\\u0432\",\"_operation\":\"\\u041e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044f \\u0434\\u043b\\u044f \\u0438\\u0441\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u044f\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"executeMultiSigOperation(uint256)\":{\"details\":\"\\u0418\\u0441\\u043f\\u043e\\u043b\\u043d\\u0438\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044e\",\"params\":{\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"executeProposal(uint256)\":{\"details\":\"\\u0418\\u0441\\u043f\\u043e\\u043b\\u043d\\u0438\\u0442\\u044c \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"getCurrentChainId()\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u0442\\u0435\\u043a\\u0443\\u0449\\u0438\\u0439 ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"},\"getDLEInfo()\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u0438\\u043d\\u0444\\u043e\\u0440\\u043c\\u0430\\u0446\\u0438\\u044e \\u043e DLE\"},\"getModuleAddress(bytes32)\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u0430\\u0434\\u0440\\u0435\\u0441 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\",\"params\":{\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"getSupportedChainCount()\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c \\u043a\\u043e\\u043b\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043e \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u043c\\u044b\\u0445 \\u0446\\u0435\\u043f\\u043e\\u0447\\u0435\\u043a\"},\"getSupportedChainId(uint256)\":{\"details\":\"\\u041f\\u043e\\u043b\\u0443\\u0447\\u0438\\u0442\\u044c ID \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u043c\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043f\\u043e \\u0438\\u043d\\u0434\\u0435\\u043a\\u0441\\u0443\",\"params\":{\"_index\":\"\\u0418\\u043d\\u0434\\u0435\\u043a\\u0441 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"}},\"isChainSupported(uint256)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c, \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044f \\u043b\\u0438 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0430\",\"params\":{\"_chainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\"}},\"isModuleActive(bytes32)\":{\"details\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c, \\u0430\\u043a\\u0442\\u0438\\u0432\\u0435\\u043d \\u043b\\u0438 \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\",\"params\":{\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"removeModule(bytes32)\":{\"details\":\"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\",\"params\":{\"_moduleId\":\"ID \\u043c\\u043e\\u0434\\u0443\\u043b\\u044f\"}},\"signMultiSigOperation(uint256,bool)\":{\"details\":\"\\u041f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0430\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u044e\",\"params\":{\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\",\"_support\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430 \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"syncExecutionFromChain(uint256,uint256,bytes)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0438\\u0441\\u043f\\u043e\\u043b\\u043d\\u0435\\u043d\\u0438\\u0435 \\u0438\\u0437 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\",\"params\":{\"_fromChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043e\\u0442\\u043a\\u0443\\u0434\\u0430 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u0443\\u0435\\u043c\",\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"syncMultiSigFromChain(uint256,uint256,uint256,uint256,bytes)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c \\u0438\\u0437 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\",\"params\":{\"_againstSignatures\":\"\\u041f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0438 \\u043f\\u0440\\u043e\\u0442\\u0438\\u0432\",\"_forSignatures\":\"\\u041f\\u043e\\u0434\\u043f\\u0438\\u0441\\u0438 \\u0437\\u0430\",\"_fromChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043e\\u0442\\u043a\\u0443\\u0434\\u0430 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u0443\\u0435\\u043c\",\"_operationId\":\"ID \\u043e\\u043f\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"}},\"syncToAllChains(uint256)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0430\\u0446\\u0438\\u044f \\u0442\\u043e\\u043b\\u044c\\u043a\\u043e \\u043f\\u0440\\u0438 100% \\u0433\\u043e\\u0442\\u043e\\u0432\\u043d\\u043e\\u0441\\u0442\\u0438\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"syncVoteFromChain(uint256,uint256,uint256,uint256,bytes)\":{\"details\":\"\\u0421\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0433\\u043e\\u043b\\u043e\\u0441 \\u0438\\u0437 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438\",\"params\":{\"_againstVotes\":\"\\u0413\\u043e\\u043b\\u043e\\u0441\\u0430 \\u043f\\u0440\\u043e\\u0442\\u0438\\u0432\",\"_forVotes\":\"\\u0413\\u043e\\u043b\\u043e\\u0441\\u0430 \\u0437\\u0430\",\"_fromChainId\":\"ID \\u0446\\u0435\\u043f\\u043e\\u0447\\u043a\\u0438 \\u043e\\u0442\\u043a\\u0443\\u0434\\u0430 \\u0441\\u0438\\u043d\\u0445\\u0440\\u043e\\u043d\\u0438\\u0437\\u0438\\u0440\\u0443\\u0435\\u043c\",\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"vote(uint256,bool)\":{\"details\":\"\\u0413\\u043e\\u043b\\u043e\\u0441\\u043e\\u0432\\u0430\\u0442\\u044c \\u0437\\u0430 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\",\"params\":{\"_proposalId\":\"ID \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\",\"_support\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\"}}},\"title\":\"DLE (Digital Legal Entity)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DLE.sol\":\"DLE\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6ef9389a2c07bc40d8a7ba48914724ab2c108fac391ce12314f01321813e6368\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7a5cb39b1e6df68f4dd9a5e76e853d745a74ffb3dfd7df4ae4d2ace6992a171\",\"dweb:/ipfs/QmPbzKR19rdM8X3PLQjsmHRepUKhvoZnedSR63XyGtXZib\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"contracts/DLE.sol\":{\"keccak256\":\"0xfe624e844a95cf86f74c5f7b27898dab0b51dfd7f245a1796b03993e95c56db1\",\"license\":\"PROPRIETARY AND MIT\",\"urls\":[\"bzz-raw://8008399d9582266b053a21a1b76b72309b53b6670adca2208c69129cb1debd96\",\"dweb:/ipfs/QmZa9YXkdNyexgEaJWkJSsrZfDigV8QXB7e54vumPTdf5Q\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/backend/artifacts/contracts/DLE.sol/DLE.dbg.json b/backend/artifacts/contracts/DLE.sol/DLE.dbg.json index 0cd1250..8649709 100644 --- a/backend/artifacts/contracts/DLE.sol/DLE.dbg.json +++ b/backend/artifacts/contracts/DLE.sol/DLE.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/ca6cf114dd2b9a54ebfddbb4ba9a86a9.json" + "buildInfo": "../../build-info/362ff3981c938c72363f6427a454b84b.json" } diff --git a/backend/artifacts/contracts/DLE.sol/DLE.json b/backend/artifacts/contracts/DLE.sol/DLE.json index 3316a5d..7e15e73 100644 --- a/backend/artifacts/contracts/DLE.sol/DLE.json +++ b/backend/artifacts/contracts/DLE.sol/DLE.json @@ -197,6 +197,51 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + } + ], + "name": "ChainAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "merkleRoot", + "type": "bytes32" + } + ], + "name": "ChainMerkleRootSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + } + ], + "name": "ChainRemoved", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -222,31 +267,6 @@ "name": "CrossChainExecutionSync", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "operationId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fromChainId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "toChainId", - "type": "uint256" - } - ], - "name": "CrossChainMultiSigSync", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -272,6 +292,99 @@ "name": "CrossChainVoteSync", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newChainId", + "type": "uint256" + } + ], + "name": "CurrentChainIdUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "deactivatedBy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "DLEDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "location", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "coordinates", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "jurisdiction", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oktmo", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "okvedCodes", + "type": "string[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "kpp", + "type": "uint256" + } + ], + "name": "DLEInfoUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -339,6 +452,81 @@ "name": "DLEInitialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "DeactivationProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "executedBy", + "type": "address" + } + ], + "name": "DeactivationProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "voter", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "support", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "votingPower", + "type": "uint256" + } + ], + "name": "DeactivationProposalVoted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -390,81 +578,6 @@ "name": "ModuleRemoved", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "operationId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "operationHash", - "type": "bytes32" - } - ], - "name": "MultiSigExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "operationId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "operationHash", - "type": "bytes32" - } - ], - "name": "MultiSigOperationCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "operationId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "support", - "type": "bool" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "signaturePower", - "type": "uint256" - } - ], - "name": "MultiSigSigned", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -540,6 +653,25 @@ "name": "ProposalVoted", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldQuorumPercentage", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newQuorumPercentage", + "type": "uint256" + } + ], + "name": "QuorumPercentageUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -600,17 +732,12 @@ { "inputs": [ { - "internalType": "bytes32", - "name": "_moduleId", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_moduleAddress", - "type": "address" + "internalType": "uint256", + "name": "_chainId", + "type": "uint256" } ], - "name": "addModule", + "name": "addSupportedChain", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -682,6 +809,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "chainMerkleRoots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -705,11 +851,11 @@ "inputs": [ { "internalType": "uint256", - "name": "_operationId", + "name": "_proposalId", "type": "uint256" } ], - "name": "checkMultiSigResult", + "name": "checkDeactivationProposalResult", "outputs": [ { "internalType": "bool", @@ -771,17 +917,61 @@ { "inputs": [ { - "internalType": "bytes32", - "name": "_operationHash", - "type": "bytes32" + "internalType": "string", + "name": "_description", + "type": "string" }, { "internalType": "uint256", "name": "_duration", "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_moduleId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_moduleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_chainId", + "type": "uint256" } ], - "name": "createMultiSigOperation", + "name": "createAddModuleProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_description", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_chainId", + "type": "uint256" + } + ], + "name": "createDeactivationProposal", "outputs": [ { "internalType": "uint256", @@ -826,6 +1016,40 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "string", + "name": "_description", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_moduleId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_chainId", + "type": "uint256" + } + ], + "name": "createRemoveModuleProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "currentChainId", @@ -839,6 +1063,80 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "deactivate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deactivationProposalCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "deactivationProposals", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "uint256", + "name": "forVotes", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "againstVotes", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "executed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "decimals", @@ -909,11 +1207,11 @@ "inputs": [ { "internalType": "uint256", - "name": "_operationId", + "name": "_proposalId", "type": "uint256" } ], - "name": "executeMultiSigOperation", + "name": "executeDeactivationProposal", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -939,7 +1237,7 @@ "type": "uint256" } ], - "name": "executedMultiSig", + "name": "executedProposals", "outputs": [ { "internalType": "bool", @@ -954,16 +1252,16 @@ "inputs": [ { "internalType": "uint256", - "name": "", + "name": "_chainId", "type": "uint256" } ], - "name": "executedProposals", + "name": "getChainMerkleRoot", "outputs": [ { - "internalType": "bool", + "internalType": "bytes32", "name": "", - "type": "bool" + "type": "bytes32" } ], "stateMutability": "view", @@ -1047,6 +1345,60 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_proposalId", + "type": "uint256" + } + ], + "name": "getDeactivationProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "uint256", + "name": "forVotes", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "againstVotes", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "executed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1076,7 +1428,7 @@ "type": "uint256" } ], - "stateMutability": "pure", + "stateMutability": "view", "type": "function" }, { @@ -1095,7 +1447,20 @@ "type": "uint256" } ], - "stateMutability": "pure", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", "type": "function" }, { @@ -1117,6 +1482,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "isDeactivated", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1157,12 +1535,12 @@ }, { "inputs": [], - "name": "multiSigCounter", + "name": "name", "outputs": [ { - "internalType": "uint256", + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "stateMutability": "view", @@ -1170,56 +1548,23 @@ }, { "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, { "internalType": "uint256", "name": "", "type": "uint256" } ], - "name": "multiSigOperations", + "name": "processedProofs", "outputs": [ - { - "internalType": "bytes32", - "name": "operationHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "forSignatures", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "againstSignatures", - "type": "uint256" - }, { "internalType": "bool", - "name": "executed", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "address", - "name": "initiator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", "name": "", - "type": "string" + "type": "bool" } ], "stateMutability": "view", @@ -1308,12 +1653,12 @@ { "inputs": [ { - "internalType": "bytes32", - "name": "_moduleId", - "type": "bytes32" + "internalType": "uint256", + "name": "_chainId", + "type": "uint256" } ], - "name": "removeModule", + "name": "removeSupportedChain", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1322,20 +1667,39 @@ "inputs": [ { "internalType": "uint256", - "name": "_operationId", + "name": "_chainId", "type": "uint256" }, { - "internalType": "bool", - "name": "_support", - "type": "bool" + "internalType": "bytes32", + "name": "_merkleRoot", + "type": "bytes32" } ], - "name": "signMultiSigOperation", + "name": "setChainMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "supportedChainIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1382,7 +1746,7 @@ }, { "internalType": "bytes", - "name": "", + "name": "_proof", "type": "bytes" } ], @@ -1391,39 +1755,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_operationId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_fromChainId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_forSignatures", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_againstSignatures", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "syncMultiSigFromChain", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1461,7 +1792,7 @@ }, { "internalType": "bytes", - "name": "", + "name": "_proof", "type": "bytes" } ], @@ -1553,10 +1884,28 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_proposalId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_support", + "type": "bool" + } + ], + "name": "voteDeactivation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "bytecode": "0x608060405234620011075762003e8380380390816200001e8162001168565b918239604081838101031262001107578051906001600160401b03821162001107576101809283838301828401031262001107576040519384016001600160401b0381118582101762000b7b57604052818301516001600160401b038111620011075762000094908284019085850101620011b3565b8452818301602001516001600160401b0381116200110757620000bf908284019085850101620011b3565b6020850152818301604001516001600160401b0381116200110757620000ed908284019085850101620011b3565b6040850152818301606001516001600160401b03811162001107576200011b908284019085850101620011b3565b60608501528183016080818101519086015260a0808201519086015260c001516001600160401b038111620011075783830101818301601f8201121562001107578051620001736200016d826200120a565b62001168565b9160208084848152019260051b820101918486018311620011075760208201905b83821062001134575050505060c085015281830160e08181015190860152610100808201519086015261012001516001600160401b0381116200110757818301601f8286860101011215620011075780848401015190620001f96200016d836200120a565b91602083828152019184860160208360051b838a8a01010101116200110757916020838888010101925b60208360051b828a8a0101010184106200110c575050505061012085015281830161014001516001600160401b03811162001107576200026b90828401908585010162001222565b6101408501528183016101600151926001600160401b03841162001107576020936200029d9284019184010162001222565b610160840152015181516020830151815191939092916001600160401b03811162000b7b57620002cf6003546200127f565b601f8111620010b4575b506020601f82116001146200104457819293949560009262001038575b50508160011b916000199060031b1c1916176003555b82516001600160401b03811162000b7b576200032a6004546200127f565b601f811162000fe5575b506020601f821160011462000f76578192939460009262000f6a575b50508160011b916000199060031b1c1916176004555b6001600555805191602082015160408301516060840151608085015160a08601519060c08701519260e088015194604051968761014081011060018060401b036101408a01111762000b7b5761014088016040528a8852602088015260408701526060860152608085015260a084015260c083015260e0820152426101008201526001610120820152835160018060401b03811162000b7b576200040c6006546200127f565b601f811162000f17575b506020601f821160011462000ea757819293949560009262000e9b575b50508160011b916000199060031b1c1916176006555b602081015180519093906001600160401b03811162000b7b576200046f6007546200127f565b601f811162000e48575b506020601f821160011462000dd857819293949560009262000dcc575b50508160011b916000199060031b1c1916176007555b604082015180519093906001600160401b03811162000b7b57620004d26008546200127f565b601f811162000d79575b506020601f821160011462000d0957819293949560009262000cfd575b50508160011b916000199060031b1c1916176008555b606083015180519093906001600160401b03811162000b7b57620005356009546200127f565b601f811162000caa575b506020601f821160011462000c3a57819293949560009262000c2e575b50508160011b916000199060031b1c1916176009555b6080810151600a5560a0810151600b5560c081015180519068010000000000000000821162000b7b57600c5482600c5580831062000b91575b50600c60009081527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c792916020015b82821062000a495786866101208760e0810151600d55610100810151600e550151151560ff8019600f5416911617600f5561010082015160105560135560005b61016082015190815181101562000660576200063b816200065a93620012e5565b5160005260186020526040600020600160ff19825416179055620012d5565b6200061a565b8261012081015151610140820151510362000a04576101208101515115620009bf5760005b6101208201518051821015620007f1576001600160a01b03908190620006ad908490620012e5565b511615620007bd57620006c682610140850151620012e5565b51156200078a57620006de82610120850151620012e5565b511690620006f281610140850151620012e5565b51918015620007715760025483810181116200075b577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208562000755966000940160025584845283825260408420818154019055604051908152a3620012d5565b62000685565b634e487b7160e01b600052601160045260246000fd5b60405163ec442f0560e01b815260006004820152602490fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b8261012081015161014082015190604051916040830160408452825180915260206060850193019060005b8181106200099f57867ff9e7aa11bcdcbb8ac33b5dba92fca799ef091e54c29270822065501d8edea1a587806200085c8989838203602085015262001310565b0390a1805160208201516040830151926060810151608082015190620008e160a084015191620008d260c086015198620008c361016060e089015198015198620008b46040519b6101408d526101408d019062001346565b908b820360208d015262001346565b9089820360408b015262001346565b90878203606089015262001346565b91608086015260a085015283810360c0850152845180825260208201916020808360051b8301019701926000915b8383106200096f577f11b248463a1620b36a975da8f250009f56fb5dd0e9d5027a90a834d0ee84d6f688806200095c8c8b8b60e08501523061010085015283820361012085015262001310565b0390a1604051612b1590816200136e8239f35b90919293976020806200098f600193601f198682030187528c5162001346565b9a0193019301919392906200090f565b82516001600160a01b03168552602094850194909201916001016200081c565b60405162461bcd60e51b815260206004820152601360248201527f4e6f20696e697469616c20706172746e657273000000000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527f417272617973206c656e677468206d69736d61746368000000000000000000006044820152606490fd5b80518051906001600160401b03821162000b7b5762000a6986546200127f565b601f811162000b39575b50602090601f831160011462000ac457928260019493602093869560009262000ab8575b5050600019600383901b1c191690841b1787555b01940191019092620005da565b01519050388062000a97565b908660005260206000209160005b601f198516811062000b20575083602093600196938796938794601f1981161062000b06575b505050811b01875562000aab565b015160001960f88460031b161c1916905538808062000af8565b9192602060018192868501518155019401920162000ad2565b62000b6990876000526020600020601f850160051c8101916020861062000b70575b601f0160051c0190620012bc565b3862000a73565b909150819062000b5b565b634e487b7160e01b600052604160045260246000fd5b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7908382015b818301811062000bce575050620005ab565b8062000bdd600192546200127f565b8062000bec575b500162000bbc565b601f8111831462000c045750600081555b3862000be4565b60009082825262000c24601f60208420920160051c8201858301620012bc565b8183555562000bfd565b0151905038806200055c565b600960005260206000209060005b601f198416811062000c91575060019394959683601f1981161062000c77575b505050811b0160095562000572565b015160001960f88460031b161c1916905538808062000c68565b9091602060018192858b01518155019301910162000c48565b600960005262000cf6907f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b386200053f565b015190503880620004f9565b600860005260206000209060005b601f198416811062000d60575060019394959683601f1981161062000d46575b505050811b016008556200050f565b015160001960f88460031b161c1916905538808062000d37565b9091602060018192858b01518155019301910162000d17565b600860005262000dc5907ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b38620004dc565b01519050388062000496565b600760005260206000209060005b601f198416811062000e2f575060019394959683601f1981161062000e15575b505050811b01600755620004ac565b015160001960f88460031b161c1916905538808062000e06565b9091602060018192858b01518155019301910162000de6565b600760005262000e94907fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000479565b01519050388062000433565b600660005260206000209060005b601f198416811062000efe575060019394959683601f1981161062000ee4575b505050811b0160065562000449565b015160001960f88460031b161c1916905538808062000ed5565b9091602060018192858b01518155019301910162000eb5565b600660005262000f63907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000416565b01519050388062000350565b600460005260206000209060005b601f198416811062000fcc5750600193949583601f1981161062000fb2575b505050811b0160045562000366565b015160001960f88460031b161c1916905538808062000fa3565b9091602060018192858a01518155019301910162000f84565b600460005262001031907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b3862000334565b015190503880620002f6565b600360005260206000209060005b601f19841681106200109b575060019394959683601f1981161062001081575b505050811b016003556200030c565b015160001960f88460031b161c1916905538808062001072565b9091602060018192858b01518155019301910162001052565b600360005262001100907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000b7057601f0160051c0190620012bc565b38620002d9565b600080fd5b8351916001600160a01b03831683036200110757602081819482935201940193915062000223565b81516001600160401b03811162001107576020916200115c8392838a8c0191880101620011b3565b81520191019062000194565b6040519190601f01601f191682016001600160401b0381118382101762000b7b57604052565b60005b838110620011a25750506000910152565b818101518382015260200162001191565b81601f82011215620011075780516001600160401b03811162000b7b57620011e5601f8201601f191660200162001168565b928184526020828401011162001107576200120791602080850191016200118e565b90565b6001600160401b03811162000b7b5760051b60200190565b9080601f830112156200110757815190620012416200016d836200120a565b9182938184526020808095019260051b82010192831162001107578301905b8282106200126f575050505090565b8151815290830190830162001260565b90600182811c92168015620012b1575b60208310146200129b57565b634e487b7160e01b600052602260045260246000fd5b91607f16916200128f565b818110620012c8575050565b60008155600101620012bc565b60001981146200075b5760010190565b8051821015620012fa5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815180825260208080930193019160005b82811062001331575050505090565b83518552938101939281019260010162001322565b9060209162001361815180928185528580860191016200118e565b601f01601f191601019056fe60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14611dda57508163044bc2bd14611cab578163057b207414611c9057816306fdde0314611bc2578163095ea7b314611b235781630c0512e914611b055781630d61b519146118ff57816318160ddd146118e1578163204c5d1f1461164e57816322dbefbb14610b3c57816323b872dd146115565781632ee09598146114bc578163313ce567146114a057816335324eee146113385781633b60288a146113095781634114509b146111ef578163456d10c1146111095781634b145793146107455781634de184f6146110e65781634fa76ec9146110eb5781635221c1f0146110e6578163548d496f146110b75781635cf0e8a4146110995781636cbadbfa1461109957816370a082311461105f5781637ce288ea14610f6b5781637e5a9b4714610f3c578163893d692a14610e205781638c7b04c914610e0257816395d89b4114610d175781639a49bdde14610cf2578163a9059cbb14610cc1578163af89d2c414610c92578163b00e073014610b6e578163b0b6cc1a14610b3c578163b359451014610774578163b3fe8bcb14610745578163c51cab3a146106d5578163c9d27afe1461054e578163ccd7a49014610388578163dd62ed3e14610337578163e49a62e914610310578163eced3dfb146102f4575063f2c26a471461020557600080fd5b346102ef5760003660031901126102ef576102a46040516102308161022981611edb565b03826121dd565b6040516102408161022981611f7f565b604051906102588261025181612006565b03836121dd565b60405191610270836102698161208d565b03846121dd565b600a5492600b546102ce600d54926102c0600e54956102b260ff600f5416986040519c8d9c8d610120908181520190612222565b8c810360208e015290612222565b908a820360408c0152612222565b9088820360608a0152612222565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b346102ef5760003660031901126102ef57602090604051908152f35b346102ef5760203660031901126102ef5761032d6020913561278c565b6040519015158152f35b346102ef5760403660031901126102ef576103506122b8565b6103586122ce565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346102ef576103963661234c565b9061039f6125f5565b80600052602092601784526040600020906103bc825415156126c5565b8082015442101561051a576103d860ff60038401541615612711565b60068201903360005281865260ff604060002054166104e5573360005260008652604060002054156104ad57509361048e917f78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc95336000526000835260406000205492526040600020600160ff198254161790558460001461049857600101610462828254612449565b90555b604080519384523360208501529315159383019390935260608201929092529081906080820190565b0390a16001600555005b6002016104a6828254612449565b9055610465565b60405162461bcd60e51b815290810186905260116024820152702737903a37b5b2b739903a379039b4b3b760791b6044820152606490fd5b60405162461bcd60e51b8152908101869052600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b60405162461bcd60e51b8152908101859052600d60248201526c14da59db9a5b99c8195b991959609a1b6044820152606490fd5b346102ef5761055c3661234c565b906105656125f5565b80600052602092601684526040600020906105828383541461255d565b60058201544210156106a25761059e60ff8284015416156125a9565b60088201903360005281865260ff6040600020541661066e5733600052600086526040600020541561063657509361048e917f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a995336000526000835260406000205492526040600020600160ff198254161790558460001461062857600201610462828254612449565b6003016104a6828254612449565b60405162461bcd60e51b815290810186905260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b60405162461bcd60e51b8152908101869052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b60405162461bcd60e51b8152908101859052600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b346102ef5760203660031901126102ef578060c091356000526017602052604060002090815491600181015491600282015460ff6003840154169183015492600560018060a01b0391015416936040519586526020860152604085015215156060840152608083015260a0820152f35b346102ef5760203660031901126102ef57356000526015602052602060ff604060002054166040519015158152f35b346102ef5760803660031901126102ef57803567ffffffffffffffff918282116102ef57366023830112156102ef576107b7602492369084818501359101612263565b908235936044358181116102ef576107d2903690840161229a565b9460643595336000526020966000885260406000205415610aed576107f883151561246c565b806000526018885261081160ff604060002054166124b8565b6000526018875260ff6040600020541615610ab45760115495610833876124fa565b601155866000526016885260406000208781556001938482018851878111610aa057610869816108638454611ea1565b84612509565b8b8c601f8311600114610a2b5750918160079594926108bc94600091610a20575b50600019600383901b1c191690891b1790555b600060028401556000600384015588830160ff19815416905542612449565b600582015560068101336001600160601b0360a01b82541617905501948251948511610a0d5750506108f8836108f28654611ea1565b86612509565b8690601f841160011461098057928061096a959381937f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639896600094610975575b50501b916000199060031b1c19161790555b6040519182918583523387840152606060408401526060830190612222565b0390a1604051908152f35b015192508a80610939565b90601f9392931983169185600052886000209260005b8a8282106109f9575050917f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63979593918561096a989694106109e0575b505050811b01905561094b565b015160001960f88460031b161c191690558880806109d3565b838501518655948701949384019301610996565b604190634e487b7160e01b600052526000fd5b90508c01518f61088a565b8892918c601f1984168660005283600020936000905b828210610a855750509160079897959391856108bc98969410610a6c575b505050811b01905561089d565b015160001960f88460031b161c191690558f808e610a5f565b9284015185558c9690940193928201928f9290810190610a41565b8460418a634e487b7160e01b600052526000fd5b60405162461bcd60e51b815280850188905260138188015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60405162461bcd60e51b81528086018990526023818901527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b346102ef5760203660031901126102ef57356000526014602052602060018060a01b0360406000205416604051908152f35b346102ef5760403660031901126102ef5780359060243533600052600060205260406000205415610c42576060602093600583610bcd7f8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f095151561246c565b60125495610bda876124fa565b6012558660005260178852610c1160406000209285845560006001850155600060028501556003840160ff19815416905542612449565b9082015501336001600160601b0360a01b8254161790556040519084825233868301526040820152a1604051908152f35b60405162461bcd60e51b81526020818401526024808201527f4d75737420686f6c6420746f6b656e7320746f20637265617465206f706572616044820152633a34b7b760e11b6064820152608490fd5b346102ef5760203660031901126102ef5735600052601a602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef57610ce7610cdd6122b8565b602435903361236b565b602060405160018152f35b346102ef5760203660031901126102ef57610d0f602091356127ed565b604051908152f35b346102ef5760003660031901126102ef57604051906000908054610d3a81611ea1565b80855291600191808316908115610dd85750600114610d7c575b610d7885610d64818703826121dd565b604051918291602083526020830190612222565b0390f35b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610dc0575050508101602001610d6482610d78610d54565b80546020858701810191909152909301928101610da5565b869550610d7896935060209250610d6494915060ff191682840152151560051b8201019293610d54565b346102ef5760003660031901126102ef576020601254604051908152f35b346102ef5760203660031901126102ef57803590816000526017602052604060002090815491610e518315156126c5565b600381019180835492610e6760ff851615612711565b01544210610f0457610e788561275d565b81610efc575b5015610ec1577f64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5604086868660018760ff191617905582519182526020820152a1005b60649060206040519162461bcd60e51b8352820152601460248201527313dc195c985d1a5bdb881b9bdd081c185cdcd95960621b6044820152fd5b905086610e7e565b60649060206040519162461bcd60e51b8352820152601160248201527014da59db9a5b99c81b9bdd08195b991959607a1b6044820152fd5b346102ef5760203660031901126102ef57610f579035612668565b604080519215158352901515602083015290f35b346102ef5760203660031901126102ef57803590610f888261278c565b156110245760135460005b828110610fc7577f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910602085604051908152a1005b807f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313611017610ff861101f946127ed565b604051918291878a846040919493926060820195825260208201520152565b0390a16124fa565b610f93565b60649060206040519162461bcd60e51b835282015260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152fd5b346102ef5760203660031901126102ef576001600160a01b036110806122b8565b1660005260006020526020604060002054604051908152f35b346102ef5760003660031901126102ef576020601354604051908152f35b346102ef5760203660031901126102ef57356000526018602052602060ff604060002054166040519015158152f35b61231f565b346102ef5760003660031901126102ef576020601054604051908152f35b346102ef577fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb611138366122e4565b508360009493945260166020526111ae6003604060002061115b8682541461255d565b86600052601860205261117560ff604060002054166124b8565b6009810194876000528560205261119460ff6040600020541615612618565b6111a360028301918254612449565b905501918254612449565b9055826000526020526040600020600160ff198254161790556111ea601354604051938493846040919493926060820195825260208201520152565b0390a1005b346102ef576020806003193601126102ef578135913360005260008252604060002054156112bd57826000526015825260ff60406000205416156112835750600082815260148252604080822080546001600160a01b03191690556015835290819020805460ff19169055519182527f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba85391a1005b6064916040519162461bcd60e51b83528201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152fd5b6084916040519162461bcd60e51b8352820152602160248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c6044820152606560f81b6064820152fd5b346102ef5760203660031901126102ef57356000526019602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef578035906113546122ce565b33600052602090600082526040600020541561145c576001600160a01b031691821561142b57836000526015825260ff604060002054166113f1577ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d727227196040858585826000526014815283600020826001600160601b0360a01b8254161790556015815283600020600160ff198254161790558351928352820152a1005b6064916040519162461bcd60e51b835282015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152fd5b6064916040519162461bcd60e51b8352820152600c60248201526b5a65726f206164647265737360a01b6044820152fd5b60405162461bcd60e51b8152808401839052601e60248201527f4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c6500006044820152606490fd5b346102ef5760003660031901126102ef57602060405160128152f35b346102ef577fe379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe56114eb366122e4565b508360009493945260176020526111ae6002604060002061150e815415156126c5565b86600052601860205261152860ff604060002054166124b8565b6007810194876000528560205261154760ff6040600020541615612618565b6111a360018301918254612449565b346102ef5760603660031901126102ef5761156f6122b8565b6115776122ce565b6044359160018060a01b0381168060005260016020526040600020336000526020526040600020549460001986106115b6575b5050610ce7935061236b565b84861061162257811561160a5733156115f25750610ce794849160005260016020526040600020336000526020520360406000205584806115aa565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b346102ef5760003660031901126102ef576000610120604051611670816121aa565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051906116b7826121aa565b6040516116c78161022981611edb565b82526040516116d98161022981611f7f565b60208301526040516116ee8161022981612006565b6040830152604051611703816102298161208d565b6060830152600a546080830152600b5460a0830152600c549067ffffffffffffffff82116118cc57506040519061174060208260051b01836121dd565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b8383106118a757858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526118086117f26117dc6117c685516101406020870152610160860190612222565b6020860151858203601f19016040870152612222565b6040850151848203601f19016060860152612222565b6060840151838203601f19016080850152612222565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061187a578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080611898600193601f198682030187528951612222565b97019301930191939290611849565b6001602081926040516118be816102298189612114565b815201920192019190611771565b604190634e487b7160e01b6000525260246000fd5b346102ef5760003660031901126102ef576020600254604051908152f35b346102ef576020806003193601126102ef57813591826000526016825260406000209161192e8484541461255d565b8183019283549261194260ff8516156125a9565b60058201544210611ace5761195686612668565b81611ac6575b5015611a8c57506007906001948560ff19809616179055019261198e604051611989816102298189612114565b612884565b60405194855260408286015260009380546119a881611ea1565b948560408901528382169182600014611a465750506001146119ed575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b838510611a3257505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d284806119c5565b8054868601606001529382019381016119f9565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b820101919284806119c5565b60405162461bcd60e51b81529081018390526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b90508761195c565b60405162461bcd60e51b8152908101839052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346102ef5760003660031901126102ef576020601154604051908152f35b346102ef5760403660031901126102ef57611b3c6122b8565b602435903315611baa576001600160a01b03169182156115f25750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b346102ef5760003660031901126102ef576040516000600354611be481611ea1565b80845290600190818116908115611c695750600114611c0e575b610d7884610d64818603826121dd565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611c51575050508101602001610d6482611bfe565b80546020858701810191909152909301928101611c39565b60ff191660208087019190915292151560051b85019092019250610d649150839050611bfe565b346102ef5760203660031901126102ef57610f57903561275d565b346102ef5760603660031901126102ef57602435813560443567ffffffffffffffff81116102ef57611ce0903690850161229a565b50816000526018602052611cfb60ff604060002054166124b8565b80600052601960205260ff60406000205416611da3577f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e8331392508060005260196020526040600020600160ff198254161790556016602052604060002081815414611d84575b506111ea601354604051938493846040919493926060820195825260208201520152565b6007611989611d9d926102296040518094819301612114565b83611d60565b60405162461bcd60e51b8152602081850152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b90346102ef5760203660031901126102ef5780356000526016602052610d786040600020916007835493611e1c86611e158160018501612114565b03876121dd565b60028101549260ff60038301549183015416600583015491611e5c60018060a01b0360068601541694611e556040518098819301612114565b03866121dd565b611e78604051998a998a526101008060208c01528a0190612222565b95604089015260608801521515608087015260a086015260c085015283820360e0850152612222565b90600182811c92168015611ed1575b6020831014611ebb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611eb0565b60065460009291611eeb82611ea1565b80825291600190818116908115611f625750600114611f0957505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410611f4a57505060209250010190565b80546020858501810191909152909301928101611f38565b915050602093945060ff929192191683830152151560051b010190565b60075460009291611f8f82611ea1565b80825291600190818116908115611f625750600114611fad57505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410611fee57505060209250010190565b80546020858501810191909152909301928101611fdc565b6008546000929161201682611ea1565b80825291600190818116908115611f62575060011461203457505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b84841061207557505060209250010190565b80546020858501810191909152909301928101612063565b6009546000929161209d82611ea1565b80825291600190818116908115611f6257506001146120bb57505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b8484106120fc57505060209250010190565b805460208585018101919091529093019281016120ea565b906000929180549161212583611ea1565b9182825260019384811690816000146121875750600114612147575b50505050565b90919394506000526020928360002092846000945b838610612173575050505001019038808080612141565b80548587018301529401938590820161215c565b9294505050602093945060ff191683830152151560051b01019038808080612141565b610140810190811067ffffffffffffffff8211176121c757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176121c757604052565b60005b8381106122125750506000910152565b8181015183820152602001612202565b9060209161223b815180928185528580860191016121ff565b601f01601f1916010190565b67ffffffffffffffff81116121c757601f01601f191660200190565b92919261226f82612247565b9161227d60405193846121dd565b8294818452818301116102ef578281602093846000960137010152565b9080601f830112156102ef578160206122b593359101612263565b90565b600435906001600160a01b03821682036102ef57565b602435906001600160a01b03821682036102ef57565b60a06003198201126102ef57600435916024359160443591606435916084359067ffffffffffffffff82116102ef576122b59160040161229a565b346102ef5760203660031901126102ef57602061032d600435600052601860205260ff6040600020541690565b60409060031901126102ef576004359060243580151581036102ef5790565b916001600160a01b03808416928315612430571692831561241757600090838252816020526040822054908382106123e5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161245657565b634e487b7160e01b600052601160045260246000fd5b1561247357565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b156124bf57565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b60001981146124565760010190565b90601f811161251757505050565b600091825260208220906020601f850160051c83019410612553575b601f0160051c01915b82811061254857505050565b81815560010161253c565b9092508290612533565b1561256457565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b156125b057565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b600260055414612606576002600555565b604051633ee5aeb560e01b8152600490fd5b1561261f57565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b8181029291811591840414171561245657565b9081600052601660205261268360406000209283541461255d565b60036002830154920154916126988382612449565b60646126a960025460105490612655565b041115928391826126bb575b50509190565b11905038806126b5565b156126cc57565b60405162461bcd60e51b815260206004820152601860248201527f4f7065726174696f6e20646f6573206e6f7420657869737400000000000000006044820152606490fd5b1561271857565b60405162461bcd60e51b815260206004820152601a60248201527f4f7065726174696f6e20616c72656164792065786563757465640000000000006044820152606490fd5b6000526017602052604060002090612777825415156126c5565b60026001830154920154916126988382612449565b6127a5600091808352601660205260408320541461255d565b805b600481106127b6575050600190565b6127d66127c2826127ed565b600052601860205260ff6040600020541690565b156127e9576127e4906124fa565b6127a7565b5090565b80156128575760018114612851576002811461284b576003146128455760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b61a4b190565b50603890565b50608990565b50600190565b91908260409103126102ef5781516001600160a01b03811681036102ef5760209092015190565b80518101906020908082840193604091829103126102ef57818301516001600160e01b0319811692908390036102ef57818101519067ffffffffffffffff82116102ef57019184603f840112156102ef5783830151926128e384612247565b936128f0845195866121dd565b808552858501968482840101116102ef57868461290d93016121ff565b63a9059cbb60e01b8103612942575050916129309183612940945101019061285d565b906001600160a01b03163361236b565b565b909391906340c10f1960e01b81036129d95750908282612965935101019061285d565b6001600160a01b039091169283156129c25791816000936129a97fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600254612449565b60025585855284835280852082815401905551908152a3565b5163ec442f0560e01b815260006004820152602490fd5b939493632770a7eb60e21b03612aa7579082826129f9935101019061285d565b916001600160a01b03909116908115612a8f576000928284528382528584205495818710612a615781859697857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9697528785520381872055816002540360025551908152a3565b5163391434e360e21b81526001600160a01b0384166004820152602481018790526044810191909152606490fd5b8451634b637e8f60e11b815260006004820152602490fd5b845162461bcd60e51b81526004810184905260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fdfea26469706673582212200e003730d00266375259274b7ce87a5cf38ca28d407c876977216eb1d0bff04464736f6c63430008140033", - "deployedBytecode": "0x60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14611dda57508163044bc2bd14611cab578163057b207414611c9057816306fdde0314611bc2578163095ea7b314611b235781630c0512e914611b055781630d61b519146118ff57816318160ddd146118e1578163204c5d1f1461164e57816322dbefbb14610b3c57816323b872dd146115565781632ee09598146114bc578163313ce567146114a057816335324eee146113385781633b60288a146113095781634114509b146111ef578163456d10c1146111095781634b145793146107455781634de184f6146110e65781634fa76ec9146110eb5781635221c1f0146110e6578163548d496f146110b75781635cf0e8a4146110995781636cbadbfa1461109957816370a082311461105f5781637ce288ea14610f6b5781637e5a9b4714610f3c578163893d692a14610e205781638c7b04c914610e0257816395d89b4114610d175781639a49bdde14610cf2578163a9059cbb14610cc1578163af89d2c414610c92578163b00e073014610b6e578163b0b6cc1a14610b3c578163b359451014610774578163b3fe8bcb14610745578163c51cab3a146106d5578163c9d27afe1461054e578163ccd7a49014610388578163dd62ed3e14610337578163e49a62e914610310578163eced3dfb146102f4575063f2c26a471461020557600080fd5b346102ef5760003660031901126102ef576102a46040516102308161022981611edb565b03826121dd565b6040516102408161022981611f7f565b604051906102588261025181612006565b03836121dd565b60405191610270836102698161208d565b03846121dd565b600a5492600b546102ce600d54926102c0600e54956102b260ff600f5416986040519c8d9c8d610120908181520190612222565b8c810360208e015290612222565b908a820360408c0152612222565b9088820360608a0152612222565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b346102ef5760003660031901126102ef57602090604051908152f35b346102ef5760203660031901126102ef5761032d6020913561278c565b6040519015158152f35b346102ef5760403660031901126102ef576103506122b8565b6103586122ce565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346102ef576103963661234c565b9061039f6125f5565b80600052602092601784526040600020906103bc825415156126c5565b8082015442101561051a576103d860ff60038401541615612711565b60068201903360005281865260ff604060002054166104e5573360005260008652604060002054156104ad57509361048e917f78b8e65c466df05ea5ddf0593b44648eca1f35c039f180e31257a6f1bdd005dc95336000526000835260406000205492526040600020600160ff198254161790558460001461049857600101610462828254612449565b90555b604080519384523360208501529315159383019390935260608201929092529081906080820190565b0390a16001600555005b6002016104a6828254612449565b9055610465565b60405162461bcd60e51b815290810186905260116024820152702737903a37b5b2b739903a379039b4b3b760791b6044820152606490fd5b60405162461bcd60e51b8152908101869052600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b60405162461bcd60e51b8152908101859052600d60248201526c14da59db9a5b99c8195b991959609a1b6044820152606490fd5b346102ef5761055c3661234c565b906105656125f5565b80600052602092601684526040600020906105828383541461255d565b60058201544210156106a25761059e60ff8284015416156125a9565b60088201903360005281865260ff6040600020541661066e5733600052600086526040600020541561063657509361048e917f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a995336000526000835260406000205492526040600020600160ff198254161790558460001461062857600201610462828254612449565b6003016104a6828254612449565b60405162461bcd60e51b815290810186905260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b60405162461bcd60e51b8152908101869052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b60405162461bcd60e51b8152908101859052600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b346102ef5760203660031901126102ef578060c091356000526017602052604060002090815491600181015491600282015460ff6003840154169183015492600560018060a01b0391015416936040519586526020860152604085015215156060840152608083015260a0820152f35b346102ef5760203660031901126102ef57356000526015602052602060ff604060002054166040519015158152f35b346102ef5760803660031901126102ef57803567ffffffffffffffff918282116102ef57366023830112156102ef576107b7602492369084818501359101612263565b908235936044358181116102ef576107d2903690840161229a565b9460643595336000526020966000885260406000205415610aed576107f883151561246c565b806000526018885261081160ff604060002054166124b8565b6000526018875260ff6040600020541615610ab45760115495610833876124fa565b601155866000526016885260406000208781556001938482018851878111610aa057610869816108638454611ea1565b84612509565b8b8c601f8311600114610a2b5750918160079594926108bc94600091610a20575b50600019600383901b1c191690891b1790555b600060028401556000600384015588830160ff19815416905542612449565b600582015560068101336001600160601b0360a01b82541617905501948251948511610a0d5750506108f8836108f28654611ea1565b86612509565b8690601f841160011461098057928061096a959381937f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639896600094610975575b50501b916000199060031b1c19161790555b6040519182918583523387840152606060408401526060830190612222565b0390a1604051908152f35b015192508a80610939565b90601f9392931983169185600052886000209260005b8a8282106109f9575050917f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63979593918561096a989694106109e0575b505050811b01905561094b565b015160001960f88460031b161c191690558880806109d3565b838501518655948701949384019301610996565b604190634e487b7160e01b600052526000fd5b90508c01518f61088a565b8892918c601f1984168660005283600020936000905b828210610a855750509160079897959391856108bc98969410610a6c575b505050811b01905561089d565b015160001960f88460031b161c191690558f808e610a5f565b9284015185558c9690940193928201928f9290810190610a41565b8460418a634e487b7160e01b600052526000fd5b60405162461bcd60e51b815280850188905260138188015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60405162461bcd60e51b81528086018990526023818901527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b346102ef5760203660031901126102ef57356000526014602052602060018060a01b0360406000205416604051908152f35b346102ef5760403660031901126102ef5780359060243533600052600060205260406000205415610c42576060602093600583610bcd7f8d5c76b09b9c1f4d0453d21436dcb0b568a50e9c0ae059e4d0ae8c95c71d07f095151561246c565b60125495610bda876124fa565b6012558660005260178852610c1160406000209285845560006001850155600060028501556003840160ff19815416905542612449565b9082015501336001600160601b0360a01b8254161790556040519084825233868301526040820152a1604051908152f35b60405162461bcd60e51b81526020818401526024808201527f4d75737420686f6c6420746f6b656e7320746f20637265617465206f706572616044820152633a34b7b760e11b6064820152608490fd5b346102ef5760203660031901126102ef5735600052601a602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef57610ce7610cdd6122b8565b602435903361236b565b602060405160018152f35b346102ef5760203660031901126102ef57610d0f602091356127ed565b604051908152f35b346102ef5760003660031901126102ef57604051906000908054610d3a81611ea1565b80855291600191808316908115610dd85750600114610d7c575b610d7885610d64818703826121dd565b604051918291602083526020830190612222565b0390f35b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610dc0575050508101602001610d6482610d78610d54565b80546020858701810191909152909301928101610da5565b869550610d7896935060209250610d6494915060ff191682840152151560051b8201019293610d54565b346102ef5760003660031901126102ef576020601254604051908152f35b346102ef5760203660031901126102ef57803590816000526017602052604060002090815491610e518315156126c5565b600381019180835492610e6760ff851615612711565b01544210610f0457610e788561275d565b81610efc575b5015610ec1577f64cee5a70d662a7eef5b2a171daa51dc624f3d64a35d0855b385262b893dc5a5604086868660018760ff191617905582519182526020820152a1005b60649060206040519162461bcd60e51b8352820152601460248201527313dc195c985d1a5bdb881b9bdd081c185cdcd95960621b6044820152fd5b905086610e7e565b60649060206040519162461bcd60e51b8352820152601160248201527014da59db9a5b99c81b9bdd08195b991959607a1b6044820152fd5b346102ef5760203660031901126102ef57610f579035612668565b604080519215158352901515602083015290f35b346102ef5760203660031901126102ef57803590610f888261278c565b156110245760135460005b828110610fc7577f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b6910602085604051908152a1005b807f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e83313611017610ff861101f946127ed565b604051918291878a846040919493926060820195825260208201520152565b0390a16124fa565b610f93565b60649060206040519162461bcd60e51b835282015260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152fd5b346102ef5760203660031901126102ef576001600160a01b036110806122b8565b1660005260006020526020604060002054604051908152f35b346102ef5760003660031901126102ef576020601354604051908152f35b346102ef5760203660031901126102ef57356000526018602052602060ff604060002054166040519015158152f35b61231f565b346102ef5760003660031901126102ef576020601054604051908152f35b346102ef577fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb611138366122e4565b508360009493945260166020526111ae6003604060002061115b8682541461255d565b86600052601860205261117560ff604060002054166124b8565b6009810194876000528560205261119460ff6040600020541615612618565b6111a360028301918254612449565b905501918254612449565b9055826000526020526040600020600160ff198254161790556111ea601354604051938493846040919493926060820195825260208201520152565b0390a1005b346102ef576020806003193601126102ef578135913360005260008252604060002054156112bd57826000526015825260ff60406000205416156112835750600082815260148252604080822080546001600160a01b03191690556015835290819020805460ff19169055519182527f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba85391a1005b6064916040519162461bcd60e51b83528201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152fd5b6084916040519162461bcd60e51b8352820152602160248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f7665206d6f64756c6044820152606560f81b6064820152fd5b346102ef5760203660031901126102ef57356000526019602052602060ff604060002054166040519015158152f35b346102ef5760403660031901126102ef578035906113546122ce565b33600052602090600082526040600020541561145c576001600160a01b031691821561142b57836000526015825260ff604060002054166113f1577ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d727227196040858585826000526014815283600020826001600160601b0360a01b8254161790556015815283600020600160ff198254161790558351928352820152a1005b6064916040519162461bcd60e51b835282015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152fd5b6064916040519162461bcd60e51b8352820152600c60248201526b5a65726f206164647265737360a01b6044820152fd5b60405162461bcd60e51b8152808401839052601e60248201527f4d75737420686f6c6420746f6b656e7320746f20616464206d6f64756c6500006044820152606490fd5b346102ef5760003660031901126102ef57602060405160128152f35b346102ef577fe379b3deb66ddfa7962a2bdf35e9a08b5bed672c9da3ecf7cc6174d253c6dfe56114eb366122e4565b508360009493945260176020526111ae6002604060002061150e815415156126c5565b86600052601860205261152860ff604060002054166124b8565b6007810194876000528560205261154760ff6040600020541615612618565b6111a360018301918254612449565b346102ef5760603660031901126102ef5761156f6122b8565b6115776122ce565b6044359160018060a01b0381168060005260016020526040600020336000526020526040600020549460001986106115b6575b5050610ce7935061236b565b84861061162257811561160a5733156115f25750610ce794849160005260016020526040600020336000526020520360406000205584806115aa565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b346102ef5760003660031901126102ef576000610120604051611670816121aa565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051906116b7826121aa565b6040516116c78161022981611edb565b82526040516116d98161022981611f7f565b60208301526040516116ee8161022981612006565b6040830152604051611703816102298161208d565b6060830152600a546080830152600b5460a0830152600c549067ffffffffffffffff82116118cc57506040519061174060208260051b01836121dd565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b8383106118a757858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526118086117f26117dc6117c685516101406020870152610160860190612222565b6020860151858203601f19016040870152612222565b6040850151848203601f19016060860152612222565b6060840151838203601f19016080850152612222565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061187a578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080611898600193601f198682030187528951612222565b97019301930191939290611849565b6001602081926040516118be816102298189612114565b815201920192019190611771565b604190634e487b7160e01b6000525260246000fd5b346102ef5760003660031901126102ef576020600254604051908152f35b346102ef576020806003193601126102ef57813591826000526016825260406000209161192e8484541461255d565b8183019283549261194260ff8516156125a9565b60058201544210611ace5761195686612668565b81611ac6575b5015611a8c57506007906001948560ff19809616179055019261198e604051611989816102298189612114565b612884565b60405194855260408286015260009380546119a881611ea1565b948560408901528382169182600014611a465750506001146119ed575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b838510611a3257505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d284806119c5565b8054868601606001529382019381016119f9565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b820101919284806119c5565b60405162461bcd60e51b81529081018390526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b90508761195c565b60405162461bcd60e51b8152908101839052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346102ef5760003660031901126102ef576020601154604051908152f35b346102ef5760403660031901126102ef57611b3c6122b8565b602435903315611baa576001600160a01b03169182156115f25750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b346102ef5760003660031901126102ef576040516000600354611be481611ea1565b80845290600190818116908115611c695750600114611c0e575b610d7884610d64818603826121dd565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611c51575050508101602001610d6482611bfe565b80546020858701810191909152909301928101611c39565b60ff191660208087019190915292151560051b85019092019250610d649150839050611bfe565b346102ef5760203660031901126102ef57610f57903561275d565b346102ef5760603660031901126102ef57602435813560443567ffffffffffffffff81116102ef57611ce0903690850161229a565b50816000526018602052611cfb60ff604060002054166124b8565b80600052601960205260ff60406000205416611da3577f42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e8331392508060005260196020526040600020600160ff198254161790556016602052604060002081815414611d84575b506111ea601354604051938493846040919493926060820195825260208201520152565b6007611989611d9d926102296040518094819301612114565b83611d60565b60405162461bcd60e51b8152602081850152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b90346102ef5760203660031901126102ef5780356000526016602052610d786040600020916007835493611e1c86611e158160018501612114565b03876121dd565b60028101549260ff60038301549183015416600583015491611e5c60018060a01b0360068601541694611e556040518098819301612114565b03866121dd565b611e78604051998a998a526101008060208c01528a0190612222565b95604089015260608801521515608087015260a086015260c085015283820360e0850152612222565b90600182811c92168015611ed1575b6020831014611ebb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611eb0565b60065460009291611eeb82611ea1565b80825291600190818116908115611f625750600114611f0957505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410611f4a57505060209250010190565b80546020858501810191909152909301928101611f38565b915050602093945060ff929192191683830152151560051b010190565b60075460009291611f8f82611ea1565b80825291600190818116908115611f625750600114611fad57505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410611fee57505060209250010190565b80546020858501810191909152909301928101611fdc565b6008546000929161201682611ea1565b80825291600190818116908115611f62575060011461203457505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b84841061207557505060209250010190565b80546020858501810191909152909301928101612063565b6009546000929161209d82611ea1565b80825291600190818116908115611f6257506001146120bb57505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b8484106120fc57505060209250010190565b805460208585018101919091529093019281016120ea565b906000929180549161212583611ea1565b9182825260019384811690816000146121875750600114612147575b50505050565b90919394506000526020928360002092846000945b838610612173575050505001019038808080612141565b80548587018301529401938590820161215c565b9294505050602093945060ff191683830152151560051b01019038808080612141565b610140810190811067ffffffffffffffff8211176121c757604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176121c757604052565b60005b8381106122125750506000910152565b8181015183820152602001612202565b9060209161223b815180928185528580860191016121ff565b601f01601f1916010190565b67ffffffffffffffff81116121c757601f01601f191660200190565b92919261226f82612247565b9161227d60405193846121dd565b8294818452818301116102ef578281602093846000960137010152565b9080601f830112156102ef578160206122b593359101612263565b90565b600435906001600160a01b03821682036102ef57565b602435906001600160a01b03821682036102ef57565b60a06003198201126102ef57600435916024359160443591606435916084359067ffffffffffffffff82116102ef576122b59160040161229a565b346102ef5760203660031901126102ef57602061032d600435600052601860205260ff6040600020541690565b60409060031901126102ef576004359060243580151581036102ef5790565b916001600160a01b03808416928315612430571692831561241757600090838252816020526040822054908382106123e5575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161245657565b634e487b7160e01b600052601160045260246000fd5b1561247357565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b156124bf57565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b60001981146124565760010190565b90601f811161251757505050565b600091825260208220906020601f850160051c83019410612553575b601f0160051c01915b82811061254857505050565b81815560010161253c565b9092508290612533565b1561256457565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b156125b057565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b600260055414612606576002600555565b604051633ee5aeb560e01b8152600490fd5b1561261f57565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b8181029291811591840414171561245657565b9081600052601660205261268360406000209283541461255d565b60036002830154920154916126988382612449565b60646126a960025460105490612655565b041115928391826126bb575b50509190565b11905038806126b5565b156126cc57565b60405162461bcd60e51b815260206004820152601860248201527f4f7065726174696f6e20646f6573206e6f7420657869737400000000000000006044820152606490fd5b1561271857565b60405162461bcd60e51b815260206004820152601a60248201527f4f7065726174696f6e20616c72656164792065786563757465640000000000006044820152606490fd5b6000526017602052604060002090612777825415156126c5565b60026001830154920154916126988382612449565b6127a5600091808352601660205260408320541461255d565b805b600481106127b6575050600190565b6127d66127c2826127ed565b600052601860205260ff6040600020541690565b156127e9576127e4906124fa565b6127a7565b5090565b80156128575760018114612851576002811461284b576003146128455760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b61a4b190565b50603890565b50608990565b50600190565b91908260409103126102ef5781516001600160a01b03811681036102ef5760209092015190565b80518101906020908082840193604091829103126102ef57818301516001600160e01b0319811692908390036102ef57818101519067ffffffffffffffff82116102ef57019184603f840112156102ef5783830151926128e384612247565b936128f0845195866121dd565b808552858501968482840101116102ef57868461290d93016121ff565b63a9059cbb60e01b8103612942575050916129309183612940945101019061285d565b906001600160a01b03163361236b565b565b909391906340c10f1960e01b81036129d95750908282612965935101019061285d565b6001600160a01b039091169283156129c25791816000936129a97fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600254612449565b60025585855284835280852082815401905551908152a3565b5163ec442f0560e01b815260006004820152602490fd5b939493632770a7eb60e21b03612aa7579082826129f9935101019061285d565b916001600160a01b03909116908115612a8f576000928284528382528584205495818710612a615781859697857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9697528785520381872055816002540360025551908152a3565b5163391434e360e21b81526001600160a01b0384166004820152602481018790526044810191909152606490fd5b8451634b637e8f60e11b815260006004820152602490fd5b845162461bcd60e51b81526004810184905260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fdfea26469706673582212200e003730d00266375259274b7ce87a5cf38ca28d407c876977216eb1d0bff04464736f6c63430008140033", + "bytecode": "0x608060405234620011625762005e4e80380390816200001e81620011c3565b918239604081838101031262001162578051906001600160401b03821162001162576101809283838301828401031262001162576040519384016001600160401b03811185821017620006bb57604052818301516001600160401b0381116200116257620000949082840190858501016200120e565b8452818301602001516001600160401b0381116200116257620000bf9082840190858501016200120e565b6020850152818301604001516001600160401b0381116200116257620000ed9082840190858501016200120e565b6040850152818301606001516001600160401b03811162001162576200011b9082840190858501016200120e565b60608501528183016080818101519086015260a0808201519086015260c001516001600160401b038111620011625783830101818301601f8201121562001162578051620001736200016d8262001265565b620011c3565b9160208084848152019260051b820101918486018311620011625760208201905b8382106200118f575050505060c085015281830160e08181015190860152610100808201519086015261012001516001600160401b0381116200116257818301601f8286860101011215620011625780848401015190620001f96200016d8362001265565b91602083828152019184860160208360051b838a8a01010101116200116257916020838888010101925b60208360051b828a8a01010101841062001167575050505061012085015281830161014001516001600160401b03811162001162576200026b9082840190858501016200127d565b6101408501528183016101600151926001600160401b03841162001162576020936200029d928401918401016200127d565b610160840152015181516020830151815191939092916001600160401b038111620006bb57620002cf600354620012da565b601f81116200110f575b506020601f82116001146200109f57819293949560009262001093575b50508160011b916000199060031b1c1916176003555b82516001600160401b038111620006bb576200032a600454620012da565b601f811162001040575b506020601f821160011462000fd1578192939460009262000fc5575b50508160011b916000199060031b1c1916176004555b6001600555805191602082015160408301516060840151608085015160a08601519060c08701519260e088015194604051968761014081011060018060401b036101408a011117620006bb5761014088016040528a8852602088015260408701526060860152608085015260a084015260c083015260e0820152426101008201526001610120820152835160018060401b038111620006bb576200040c600654620012da565b601f811162000f72575b506020601f821160011462000f0257819293949560009262000ef6575b50508160011b916000199060031b1c1916176006555b602081015180519093906001600160401b038111620006bb576200046f600754620012da565b601f811162000ea3575b506020601f821160011462000e3357819293949560009262000e27575b50508160011b916000199060031b1c1916176007555b604082015180519093906001600160401b038111620006bb57620004d2600854620012da565b601f811162000dd4575b506020601f821160011462000d6457819293949560009262000d58575b50508160011b916000199060031b1c1916176008555b606083015180519093906001600160401b038111620006bb5762000535600954620012da565b601f811162000d05575b506020601f821160011462000c9557819293949560009262000c89575b50508160011b916000199060031b1c1916176009555b6080810151600a5560a0810151600b5560c0810151805190680100000000000000008211620006bb57600c5482600c5580831062000bec575b50600c60009081527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c792916020015b82821062000aba5786866101208760e0810151600d55610100810151600e550151151560ff8019600f5416911617600f5561010082015160105560125560005b6101608201518051821015620006d15781620006369162001340565b5160005260166020526040600020600160ff19825416179055620006608161016084015162001340565b51906017549168010000000000000000831015620006bb576001830180601755831015620006a5576200069f9260176000526020600020015562001330565b6200061a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8261012081015151610140820151510362000a7557610120810151511562000a305760005b610120820151805182101562000862576001600160a01b039081906200071e90849062001340565b5116156200082e57620007378261014085015162001340565b5115620007fb576200074f8261012085015162001340565b511690620007638161014085015162001340565b51918015620007e2576002548381018111620007cc577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602085620007c6966000940160025584845283825260408420818154019055604051908152a362001330565b620006f6565b634e487b7160e01b600052601160045260246000fd5b60405163ec442f0560e01b815260006004820152602490fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b8261012081015161014082015190604051916040830160408452825180915260206060850193019060005b81811062000a1057867ff9e7aa11bcdcbb8ac33b5dba92fca799ef091e54c29270822065501d8edea1a58780620008cd8989838203602085015262001355565b0390a18051602082015160408301519260608101516080820151906200095260a0840151916200094360c0860151986200093461016060e089015198015198620009256040519b6101408d526101408d01906200138b565b908b820360208d01526200138b565b9089820360408b01526200138b565b9087820360608901526200138b565b91608086015260a085015283810360c0850152845180825260208201916020808360051b8301019701926000915b838310620009e0577f11b248463a1620b36a975da8f250009f56fb5dd0e9d5027a90a834d0ee84d6f68880620009cd8c8b8b60e08501523061010085015283820361012085015262001355565b0390a1604051614a9b9081620013b38239f35b909192939760208062000a00600193601f198682030187528c516200138b565b9a01930193019193929062000980565b82516001600160a01b03168552602094850194909201916001016200088d565b60405162461bcd60e51b815260206004820152601360248201527f4e6f20696e697469616c20706172746e657273000000000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527f417272617973206c656e677468206d69736d61746368000000000000000000006044820152606490fd5b80518051906001600160401b038211620006bb5762000ada8654620012da565b601f811162000baa575b50602090601f831160011462000b3557928260019493602093869560009262000b29575b5050600019600383901b1c191690841b1787555b01940191019092620005da565b01519050388062000b08565b908660005260206000209160005b601f198516811062000b91575083602093600196938796938794601f1981161062000b77575b505050811b01875562000b1c565b015160001960f88460031b161c1916905538808062000b69565b9192602060018192868501518155019401920162000b43565b62000bda90876000526020600020601f850160051c8101916020861062000be1575b601f0160051c019062001317565b3862000ae4565b909150819062000bcc565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7908382015b818301811062000c29575050620005ab565b8062000c3860019254620012da565b8062000c47575b500162000c17565b601f8111831462000c5f5750600081555b3862000c3f565b60009082825262000c7f601f60208420920160051c820185830162001317565b8183555562000c58565b0151905038806200055c565b600960005260206000209060005b601f198416811062000cec575060019394959683601f1981161062000cd2575b505050811b0160095562000572565b015160001960f88460031b161c1916905538808062000cc3565b9091602060018192858b01518155019301910162000ca3565b600960005262000d51907f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c8101916020851062000be157601f0160051c019062001317565b386200053f565b015190503880620004f9565b600860005260206000209060005b601f198416811062000dbb575060019394959683601f1981161062000da1575b505050811b016008556200050f565b015160001960f88460031b161c1916905538808062000d92565b9091602060018192858b01518155019301910162000d72565b600860005262000e20907ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c8101916020851062000be157601f0160051c019062001317565b38620004dc565b01519050388062000496565b600760005260206000209060005b601f198416811062000e8a575060019394959683601f1981161062000e70575b505050811b01600755620004ac565b015160001960f88460031b161c1916905538808062000e61565b9091602060018192858b01518155019301910162000e41565b600760005262000eef907fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c8101916020851062000be157601f0160051c019062001317565b3862000479565b01519050388062000433565b600660005260206000209060005b601f198416811062000f59575060019394959683601f1981161062000f3f575b505050811b0160065562000449565b015160001960f88460031b161c1916905538808062000f30565b9091602060018192858b01518155019301910162000f10565b600660005262000fbe907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851062000be157601f0160051c019062001317565b3862000416565b01519050388062000350565b600460005260206000209060005b601f1984168110620010275750600193949583601f198116106200100d575b505050811b0160045562000366565b015160001960f88460031b161c1916905538808062000ffe565b9091602060018192858a01518155019301910162000fdf565b60046000526200108c907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101916020851062000be157601f0160051c019062001317565b3862000334565b015190503880620002f6565b600360005260206000209060005b601f1984168110620010f6575060019394959683601f19811610620010dc575b505050811b016003556200030c565b015160001960f88460031b161c19169055388080620010cd565b9091602060018192858b015181550193019101620010ad565b60036000526200115b907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000be157601f0160051c019062001317565b38620002d9565b600080fd5b8351916001600160a01b03831683036200116257602081819482935201940193915062000223565b81516001600160401b0381116200116257602091620011b78392838a8c01918801016200120e565b81520191019062000194565b6040519190601f01601f191682016001600160401b03811183821017620006bb57604052565b60005b838110620011fd5750506000910152565b8181015183820152602001620011ec565b81601f82011215620011625780516001600160401b038111620006bb5762001240601f8201601f1916602001620011c3565b92818452602082840101116200116257620012629160208085019101620011e9565b90565b6001600160401b038111620006bb5760051b60200190565b9080601f8301121562001162578151906200129c6200016d8362001265565b9182938184526020808095019260051b82010192831162001162578301905b828210620012ca575050505090565b81518152908301908301620012bb565b90600182811c921680156200130c575b6020831014620012f657565b634e487b7160e01b600052602260045260246000fd5b91607f1691620012ea565b81811062001323575050565b6000815560010162001317565b6000198114620007cc5760010190565b8051821015620006a55760209160051b010190565b90815180825260208080930193019160005b82811062001376575050505090565b83518552938101939281019260010162001367565b90602091620013a681518092818552858086019101620011e9565b601f01601f191601019056fe60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14612bdc57508163044bc2bd1461297557816306fdde03146128a75781630933fad414612759578163095ea7b3146126ba5781630c0512e91461269c5781630c4844aa1461249c5781630d61b5191461229c5781631552d75c1461219b57816318160ddd1461217d578163204c5d1f14611f0e57816322dbefbb14610da057816322f3e2d414611ed75781632388b53114611eb957816323b872dd14611dc15781632441d76f14611d845781632519ae5c14611acb578163313ce56714611aaf5781633b60288a14611a80578163456d10c1146117ba5781634b14579314610ad45781634cf2ab32146117855781634de184f6146117685781634fa76ec91461174a57816351b42b001461159c5781635221c1f01461156d578163548d496f1461156d578163553b527a146114f3578163560cada51461141d5781635cf0e8a4146113785781635d57d260146113965781636cbadbfa146113785781636dcf811d1461135557816370a082311461131b5781637481c8e91461039c5781637ce288ea146110bb5781637e5a9b47146110a057816387188a0014610f0f57816395d89b4114610e285781639a49bdde14610e03578163a9059cbb14610dd2578163b0b6cc1a14610da0578163b359451014610b03578163b3fe8bcb14610ad4578163b5b353be14610868578163bc62f34e14610835578163c9a3c0c714610532578163c9d27afe14610417578163dd62ed3e146103c6578163e1605aa21461039c578163e49a62e91461037557508063eced3dfb146103575763f2c26a471461026857600080fd5b34610352576000366003190112610352576103076040516102938161028c81612cd6565b0382612fd7565b6040516102a38161028c81612d7a565b604051906102bb826102b481612e01565b0383612fd7565b604051916102d3836102cc81612e88565b0384612fd7565b600a5492600b54610331600d5492610323600e549561031560ff600f5416986040519c8d9c8d61012090818152019061301b565b8c810360208e01529061301b565b908a820360408c015261301b565b9088820360608a015261301b565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b34610352576000366003190112610352576020601754604051908152f35b346103525760203660031901126103525761039260209135613861565b6040519015158152f35b34610352576020366003190112610352573560005260196020526020604060002054604051908152f35b34610352576040366003190112610352576103df6130a2565b6103e76130b8565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346103525760807f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a991610449366130ce565b610454929192613597565b8260005260206015815261048e60ff60406000209461047587875414613448565b61048460058701544210613494565b85015416156134cf565b6008830192336000528382526104ac60ff604060002054161561351b565b33600052600082526104c46040600020541515613557565b33600052600082526040600020549382526040600020600160ff198254161790558260001461051d576002016104fb848254613265565b90555b6040519384523390840152151560408301526060820152a16001600555005b60030161052b848254613265565b90556104fe565b34610352576080366003190112610352576001600160401b0390803582811161035257610562903690830161305b565b6044359160643593846000526105966105916020966016885261058c60ff6040600020541661332c565b613831565b61336e565b83600052601485526105af60ff60406000205416614922565b33600052600085526105c76040600020541515613288565b601154936105d4856133b0565b601155846000526015865260406000209085825560019182810186518581116108205761060b816106058454612c9c565b846133d6565b808a601f82116001146107be576000916107b3575b50600019600383901b1c191690851b1790555b61063f60243542613265565b60058201556006810180546001600160a01b03191633179055604051633972e9fb60e21b89820152602480820193909352918252606082018481118382101761079e57906007916040520193815193841161078957506106a9836106a38654612c9c565b866133d6565b8690601f841160011461070e5792806106f895938193600080516020614a468339815191529896600094610703575b50501b916000199060031b1c19161790555b60405191829133868461341d565b0390a1604051908152f35b015192508a806106d8565b90601f9392931983169185600052886000209260005b8a82821061077557505091600080516020614a4683398151915297959391856106f89896941061075c575b505050811b0190556106ea565b015160001960f88460031b161c1916905588808061074f565b838501518655948701949384019301610724565b604190634e487b7160e01b6000525260246000fd5b604186634e487b7160e01b6000525260246000fd5b90508801518b610620565b60008481528c81208894509190601f198416908e5b8d83831061080a5750505083116107f1575b5050811b019055610633565b8a015160001960f88460031b161c191690558b806107e5565b84015185558a969094019392830192018e6107d3565b604187634e487b7160e01b6000525260246000fd5b34610352576020366003190112610352576108509035614a0a565b604080519215158352901515602083015290f35b0390f35b34610352576060366003190112610352576001600160401b0390803582811161035257610898903690830161305b565b60243592604435906108af60ff601d541615614966565b336000526020946000865260406000205415610a77576108d08115156132e0565b82600052601686526108e960ff6040600020541661332c565b601c54946108f6866133b0565b601c5585600052601b8752604060002092868455600190818501918751918211610a625761092e826109288554612c9c565b856133d6565b89601f83116001146109f45791808060079897959361097f97956000936109e9575b501b916000199060031b1c19161790555b6000600285015560006003850155830160ff19815416905542613265565b600582015560068101336bffffffffffffffffffffffff60a01b82541617905501557f88aa9f9d4bbeda6aaf596730c5108c1ea969ee4fe549c51a579330a3e73777ca604051838152604085820152806109de3394604083019061301b565b0390a2604051908152f35b8c015192508e610950565b601f92919219821690846000528b6000209160005b8d8c838310610a4f5750505091839160079998969461097f98969410610a36575b5050811b019055610961565b8b015160001960f88460031b161c191690558c80610a2a565b8401518555938601939283019201610a09565b604184634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152808601879052603060248201527f4d75737420686f6c6420746f6b656e7320746f2063726561746520646561637460448201526f1a5d985d1a5bdb881c1c9bdc1bdcd85b60821b6064820152608490fd5b3461035257602036600319011261035257356000526014602052602060ff604060002054166040519015158152f35b34610352576080366003190112610352576001600160401b03813581811161035257610b32903690840161305b565b6024359260443583811161035257610b4d903690830161305b565b926064359433600052610b9761059160209760008952610b736040600020541515613288565b610b7e8415156132e0565b806000526016895261058c60ff6040600020541661332c565b60115494610ba4866133b0565b601155856000526015875260406000208681556001928382018751868111610d8b57610bd4816106058454612c9c565b8a601f8211600114610d185791816007959492610c2594600091610d0d575b50600019600383901b1c191690881b1790555b600060028401556000600384015587830160ff19815416905542613265565b600582015560068101336bffffffffffffffffffffffff60a01b825416179055019381519384116107895750610c5f836106a38654612c9c565b8690601f8411600114610cac5792806106f895938193600080516020614a4683398151915298966000946107035750501b916000199060031b1c191617905560405191829133868461341d565b90601f9392931983169185600052886000209260005b8a828210610cf957505091600080516020614a4683398151915297959391856106f89896941061075c57505050811b0190556106ea565b838501518655948701949384019301610cc2565b90508b01518e610bf3565b908b8792601f198316856000528c83600020936000915b838310610d7257505050918391610c25969460079998969410610d59575b5050811b019055610c06565b8d015160001960f88460031b161c191690558e80610d4d565b84015185558b969094019392830192908101908e610d2f565b604188634e487b7160e01b6000525260246000fd5b3461035257602036600319011261035257356000526013602052602060018060a01b0360406000205416604051908152f35b3461035257604036600319011261035257610df8610dee6130a2565b6024359033613187565b602060405160018152f35b3461035257602036600319011261035257610e20602091356138b4565b604051908152f35b3461035257600036600319011261035257604051906000908054610e4b81612c9c565b80855291600191808316908115610ee55750600114610e89575b61086485610e7581870382612fd7565b60405191829160208352602083019061301b565b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ecd575050508101602001610e7582610864610e65565b80546020858701810191909152909301928101610eb2565b86955061086496935060209250610e7594915060ff191682840152151560051b8201019293610e65565b346103525760208060031936011261035257813533600052600082526040600020541561105c57806000526016825260ff60406000205416611018576012548114610fd45780600052601682526040600020600160ff1982541617905560175492600160401b841015610789575080610fc9610fb28560017fbba9d55e9fd1a441b1617724e2fdb76777d15ec77ab2b72ac15952cbe97085db97016017556130ed565b819391549060031b91821b91600019901b19161790565b9055604051908152a1005b60405162461bcd60e51b8152808401839052601860248201527f43616e6e6f74206164642063757272656e7420636861696e00000000000000006044820152606490fd5b60405162461bcd60e51b8152808401839052601760248201527f436861696e20616c726561647920737570706f727465640000000000000000006044820152606490fd5b60405162461bcd60e51b8152808401839052601d60248201527f4d75737420686f6c6420746f6b656e7320746f2061646420636861696e0000006044820152606490fd5b34610352576020366003190112610352576108509035613792565b346103525760209081600319360112610352578035906110da82613861565b156112e057906000915b6017548310156112b4576110f7836138b4565b92836000526016855261111160ff6040600020541661332c565b826000526015855260406000209361112b84865414613448565b61113481613831565b156112705760126007815496019560405188810191878352604082015260009780549061116082612c9c565b90600192838116908160001461123857506001146111e9575b50505090816111a7600080516020614a268339815191529594936111e298999a03601f198101835282612fd7565b5190208260005260198952604060002055546111da60405192839289846040919493926060820195825260208201520152565b0390a16133b0565b91906110e4565b9091995060005289600020988a60009a5b838c106112235750505081016060019750806111a7600080516020614a26833981519152611179565b8054858d01606001529a01998b9082016111fa565b60ff191660608087019190915283151590930285019092019a508392506111a79150600080516020614a268339815191529050611179565b60405162461bcd60e51b8152808401879052601860248201527f436861696e206e6f7420726561647920666f722073796e6300000000000000006044820152606490fd5b7f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b69108483604051908152a1005b60405162461bcd60e51b815290810183905260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152606490fd5b34610352576020366003190112610352576001600160a01b0361133c6130a2565b1660005260006020526020604060002054604051908152f35b3461035257600036600319011261035257602060ff601d54166040519015158152f35b34610352576000366003190112610352576020601254604051908152f35b346103525760203660031901126103525780610864600192359182600052601b6020526040600020906113cc82549485146149b2565b60028201549060ff60038401549184015416600584015491878060a01b036006860154169361141160078701549661140a604051809c819301612f0f565b038a612fd7565b6040519889988961313a565b346103525760403660031901126103525780359060243590336000526000602052604060002054156114a3577fd9f45b58f4c478517007ecbe71ec54f51403161f9b9e1d3c619204480321825a6040848481600052601660205261148760ff84600020541661332c565b81600052601960205280836000205582519182526020820152a1005b60849060206040519162461bcd60e51b8352820152602360248201527f4d75737420686f6c6420746f6b656e7320746f20736574206d65726b6c6520726044820152621bdbdd60ea1b6064820152fd5b34610352576020366003190112610352578035600052601b602052604060002090610864825491604051936115368561152f8160018501612f0f565b0386612fd7565b60028101549160ff60038301549183015416600583015491600760018060a01b03600686015416940154946040519889988961313a565b3461035257602036600319011261035257356000526016602052602060ff604060002054166040519015158152f35b346103525760003660031901126103525760ff6115bd81601d541615614966565b3360005260209160008352604060002054156116fb5760009160005b601c548110156116f35780600052601b855260406000208381018054918483161590816116e4575b50611617575b5050611612906133b0565b6115d9565b61162083614a0a565b90816116dc575b5015611607579250929350506001809260ff19161790555b15611687575060ff19600181601d541617601d55600f5416600f557f061e8db5c904686a2824142c80b23cd6cf492a0e068aa54080617ff53f2160ca604051914283523392a2005b6084916040519162461bcd60e51b8352820152602a60248201527f4e6f2076616c696420646561637469766174696f6e2070726f706f73616c20776044820152696974682071756f72756d60b01b6064820152fd5b905088611627565b60059150015442101588611601565b50509061163f565b60405162461bcd60e51b8152908101839052602260248201527f4d75737420686f6c6420746f6b656e7320746f206465616374697661746520446044820152614c4560f01b6064820152608490fd5b34610352576000366003190112610352576020601054604051908152f35b346103525760203660031901126103525761039260209135613831565b346103525760203660031901126103525735601754811015610352576117ac6020916130ed565b90546040519160031b1c8152f35b346103525760a03660031901126103525760643590602435908035906001600160401b03604435608435828111610352576117f8903690850161305b565b958460005260209160158352604060002097611816878a5414613448565b876000526016845261182f60ff6040600020541661332c565b60098901948860005285855260ff60406000205416611a4b578151156119fb57604051858101918983528a60408301528460608301528560808301526080825260a0820190828210908211176119e657916118e5916118ea9360405251902080938a600052601a885260406000208260005288526118b560ff60406000205416156135ba565b8b600052601988526118e0604060002054916118d2831515613606565b898082518301019101613669565b613725565b6136e2565b86600052601a8452604060002090600052835260406000209460ff199560018782541617905561191a8383613265565b600254106119a257506003886119659261195a60027fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb9c01918254613265565b905501918254613265565b90558460005252600160406000209182541617905561199d601254604051938493846040919493926060820195825260208201520152565b0390a1005b60405162461bcd60e51b8152908101849052601960248201527f566f7465732065786365656420746f74616c20737570706c79000000000000006044820152606490fd5b604189634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152808801869052602360248201527f50726f6f6620726571756972656420666f722063726f73732d636861696e2073604482015262796e6360e81b6064820152608490fd5b60405162461bcd60e51b8152808801869052600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b3461035257602036600319011261035257356000526018602052602060ff604060002054166040519015158152f35b3461035257600036600319011261035257602060405160128152f35b346103525760a0366003190112610352576001600160401b0390803582811161035257611afb903690830161305b565b6064356001600160a01b03811693604435939192919085840361035257611b486084359687600052611b4161059160209960168b5261058c60ff6040600020541661332c565b15156148a3565b8460005260148652611b6260ff60406000205416156148de565b3360005260008652611b7a6040600020541515613288565b60115494611b87866133b0565b60115585600052601587526040600020868155600191828201865185811161082057611bb7816106058454612c9c565b8a601f8211600114611d195790806007949392600091611d0e575b50600019600383901b1c191690861b1790555b611bf160243542613265565b60058401556006830180546001600160a01b031916331790556040516304fa45bf60e31b8b82015260248101919091526001600160a01b03979097166044808901919091528752601f1991611c47606489612fd7565b019386519384116107895750611c61836106a38654612c9c565b8790601f8411600114611caf5750918080926106f8969594600080516020614a46833981519152986000946107035750501b916000199060031b1c191617905560405191829133868461341d565b839692949596169185600052886000209260005b8a828210611cfa57505091600080516020614a4683398151915297959391856106f89896941061075c57505050811b0190556106ea565b838501518655948701949384019301611cc3565b90508901518d611bd2565b92919085908c601f1982168460005281600020916000905b8d838310611d6c57505050958260079710611d53575b5050811b019055611be5565b8b015160001960f88460031b161c191690558d80611d47565b8901518455978801978a959093019290810190611d31565b346103525760403660031901126103525735600052601a6020526040600020602435600052602052602060ff604060002054166040519015158152f35b3461035257606036600319011261035257611dda6130a2565b611de26130b8565b6044359160018060a01b038116806000526001602052604060002033600052602052604060002054946000198610611e21575b5050610df89350613187565b848610611e8d578115611e75573315611e5d5750610df89484916000526001602052604060002033600052602052036040600020558480611e15565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b34610352576000366003190112610352576020601c54604051908152f35b346103525760003660031901126103525760ff601d54161580611f02575b6020906040519015158152f35b50600f5460ff16611ef5565b34610352576000366003190112610352576000610120604051611f3081612fa5565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051611f7681612fa5565b604051611f868161028c81612cd6565b8152604051611f988161028c81612d7a565b6020820152604051611fad8161028c81612e01565b6040820152604051611fc28161028c81612e88565b6060820152600a546080820152600b5460a0820152600c54611fe381613652565b90611ff16040519283612fd7565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b83831061215857858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526120b96120a361208d6120778551610140602087015261016086019061301b565b6020860151858203601f1901604087015261301b565b6040850151848203601f1901606086015261301b565b6060840151838203601f1901608085015261301b565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061212b578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080612149600193601f19868203018752895161301b565b970193019301919392906120fa565b60016020819260405161216f8161028c8189612f0f565b815201920192019190612022565b34610352576000366003190112610352576020600254604051908152f35b34610352576121a9366130ce565b6121b4929192613597565b82600052602090601b82526121d660ff604060002094610475878754146149b2565b60088301336000528083526121f360ff604060002054161561351b565b336000526000835261220b6040600020541515613557565b3360005260008352604060002054938260001461228757600201612230858254613265565b90555b3360005282526040600020600160ff1982541617905560405193845215159083015260408201527f90491c8ec6b93a0758ed2378c77e075515ecf22f312e5cca5160d1720ef3ff7760603392a26001600555005b600301612295858254613265565b9055612233565b34610352576020806003193601126103525781359182600052601582526040600020916122cb84845414613448565b818301928354926122df60ff8516156134cf565b6122e886613792565b909160058401544210801590612495575b156124415750600792916123139181612439575b506137ef565b6001948560ff19809616179055019261233b6040516123368161028c8189612f0f565b61398c565b604051948552604082860152600093805461235581612c9c565b9485604089015283821691826000146123f357505060011461239a575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b8385106123df57505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d28480612372565b8054868601606001529382019381016123a6565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b82010191928480612372565b90508861230d565b60405162461bcd60e51b8152908101859052602760248201527f566f74696e67206e6f7420656e64656420616e642071756f72756d206e6f74206044820152661c995858da195960ca1b6064820152608490fd5b50816122f9565b34610352576020806003193601126103525781359033600052600081526040600020541561265a5781600052601681526124dd60ff6040600020541661332c565b60125482146126175760008281526016825260408120805460ff191690555b60178054808310156125eb57908491612514846130ed565b939054600394851b1c146125335750505061252e906133b0565b6124fc565b909192600095949519918281019081116125d657610fb2612556612562926130ed565b905490871b1c926130ed565b905581549586156125c15750807f11a9d1a77f76361ed131c19b1dc5758504c51dbde2e49fc973a0ef9577ad13d596019261259c846130ed565b81939154921b1b19169055555b806000526019825260006040812055604051908152a1005b603190634e487b7160e01b6000525260246000fd5b601188634e487b7160e01b6000525260246000fd5b505050907f11a9d1a77f76361ed131c19b1dc5758504c51dbde2e49fc973a0ef9577ad13d592506125a9565b826064916040519162461bcd60e51b8352820152601b60248201527f43616e6e6f742072656d6f76652063757272656e7420636861696e00000000006044820152fd5b82816064926040519262461bcd60e51b845283015260248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f766520636861696e6044820152fd5b34610352576000366003190112610352576020601154604051908152f35b34610352576040366003190112610352576126d36130a2565b602435903315612741576001600160a01b0316918215611e5d5750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b3461035257602090816003193601126103525780359081600052601b8352604060002090612789838354146149b2565b80820190600582549361279f60ff8616156134cf565b01544210612870576127b084614a0a565b9190911561283757506127c2906137ef565b600160ff19809316179055600181601d541617601d55600f5416600f556040519081527fbd3ad027952950b28e27d2636c5535e03d64579c825a2890793333c2aec22474823392a27f061e8db5c904686a2824142c80b23cd6cf492a0e068aa54080617ff53f2160ca604051914283523392a2005b60405162461bcd60e51b81529081018690526012602482015271145d5bdc9d5b481b9bdd081c995858da195960721b6044820152606490fd5b60405162461bcd60e51b8152908101859052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346103525760003660031901126103525760405160006003546128c981612c9c565b8084529060019081811690811561294e57506001146128f3575b61086484610e7581860382612fd7565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410612936575050508101602001610e75826128e3565b8054602085870181019190915290930192810161291e565b60ff191660208087019190915292151560051b85019092019250610e7591508390506128e3565b3461035257606036600319011261035257803560243590604435926001600160401b0393848111610352576129ad903690830161305b565b83600052602090601682526129c960ff6040600020541661332c565b836000526018825260ff60406000205416612ba557805115612b5057604051828101968588528660408301526822ac22a1aaaa24a7a760b91b606083015260498252608082019082821090821117612b3b57600080516020614a2683398151915297612a8b926118e592604052519020809387600052601a86526040600020826000528652612a6060ff60406000205416156135ba565b88600052601986526118e060406000205491612a7d831515613606565b878082518301019101613669565b83600052601a82526040600020906000528152601860406000209160ff19926001848254161790558460005260158152612adc60ff604060002095612ad288885414613448565b86015416156134cf565b8460005252600160406000209182541617905581815414612b1c575b5061199d601254604051938493846040919493926060820195825260208201520152565b6007612336612b359261028c6040518094819301612f0f565b83612af8565b604185634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152808401839052602860248201527f50726f6f6620726571756972656420666f722063726f73732d636861696e20656044820152673c32b1baba34b7b760c11b6064820152608490fd5b60405162461bcd60e51b8152808401839052601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b903461035257602036600319011261035257803560005260156020526108646040600020916007835493612c1e86612c178160018501612f0f565b0387612fd7565b60028101549260ff60038301549183015416600583015491612c5760018060a01b036006860154169461152f6040518098819301612f0f565b612c73604051998a998a526101008060208c01528a019061301b565b95604089015260608801521515608087015260a086015260c085015283820360e085015261301b565b90600182811c92168015612ccc575b6020831014612cb657565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cab565b60065460009291612ce682612c9c565b80825291600190818116908115612d5d5750600114612d0457505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410612d4557505060209250010190565b80546020858501810191909152909301928101612d33565b915050602093945060ff929192191683830152151560051b010190565b60075460009291612d8a82612c9c565b80825291600190818116908115612d5d5750600114612da857505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410612de957505060209250010190565b80546020858501810191909152909301928101612dd7565b60085460009291612e1182612c9c565b80825291600190818116908115612d5d5750600114612e2f57505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b848410612e7057505060209250010190565b80546020858501810191909152909301928101612e5e565b60095460009291612e9882612c9c565b80825291600190818116908115612d5d5750600114612eb657505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b848410612ef757505060209250010190565b80546020858501810191909152909301928101612ee5565b9060009291805491612f2083612c9c565b918282526001938481169081600014612f825750600114612f42575b50505050565b90919394506000526020928360002092846000945b838610612f6e575050505001019038808080612f3c565b805485870183015294019385908201612f57565b9294505050602093945060ff191683830152151560051b01019038808080612f3c565b61014081019081106001600160401b03821117612fc157604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b03821117612fc157604052565b60005b83811061300b5750506000910152565b8181015183820152602001612ffb565b9060209161303481518092818552858086019101612ff8565b601f01601f1916010190565b6001600160401b038111612fc157601f01601f191660200190565b81601f820112156103525780359061307282613040565b926130806040519485612fd7565b8284526020838301011161035257816000926020809301838601378301015290565b600435906001600160a01b038216820361035257565b602435906001600160a01b038216820361035257565b6040906003190112610352576004359060243580151581036103525790565b6017548110156131245760176000527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150190600090565b634e487b7160e01b600052603260045260246000fd5b949161315c9060e097949a99989592875261010080602089015287019061301b565b604086019990995260608501521515608084015260a08301526001600160a01b031660c08201520152565b916001600160a01b0380841692831561324c57169283156132335760009083825281602052604082205490838210613201575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161327257565b634e487b7160e01b600052601160045260246000fd5b1561328f57565b60405162461bcd60e51b815260206004820152602360248201527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b156132e757565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b1561333357565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b1561337557565b60405162461bcd60e51b8152602060048201526013602482015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60001981146132725760010190565b8181106133ca575050565b600081556001016133bf565b9190601f81116133e557505050565b613411926000526020600020906020601f840160051c83019310613413575b601f0160051c01906133bf565b565b9091508190613404565b9081526001600160a01b0390911660208201526060604082018190526134459291019061301b565b90565b1561344f57565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b1561349b57565b60405162461bcd60e51b815260206004820152600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b156134d657565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b1561352257565b60405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b1561355e57565b60405162461bcd60e51b81526020600482015260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b6002600554146135a8576002600555565b604051633ee5aeb560e01b8152600490fd5b156135c157565b60405162461bcd60e51b815260206004820152601760248201527f50726f6f6620616c72656164792070726f6365737365640000000000000000006044820152606490fd5b1561360d57565b60405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c6520726f6f74206e6f742073657420666f7220636861696e0000006044820152606490fd5b6001600160401b038111612fc15760051b60200190565b6020908181840312610352578051906001600160401b03821161035257019180601f8401121561035257825161369e81613652565b936136ac6040519586612fd7565b818552838086019260051b820101928311610352578301905b8282106136d3575050505090565b815181529083019083016136c5565b156136e957565b60405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21026b2b935b63290383937b7b360611b6044820152606490fd5b9091906000915b8151831015613778576020808460051b8401015191600083821060001461376757506000525261376160406000205b926133b0565b9161372c565b90604092613761948352522061375b565b9150501490565b8181029291811591840414171561327257565b908160005260156020526137ad604060002092835414613448565b60036002830154920154916137c28382613265565b60646137d36002546010549061377f565b041115928391826137e5575b50509190565b11905038806137df565b156137f657565b60405162461bcd60e51b8152602060048201526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b600052601660205260ff604060002054161561385c5760196020526040600020541561385c57600190565b600090565b61387a6000918083526015602052604083205414613448565b80601754915b82811061388f57505050600190565b61389b61058c826138b4565b156138ae576138a9906133b0565b613880565b50905090565b6017548110156138d1576138c7906130ed565b90549060031b1c90565b60405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b9092919261391981613040565b916139276040519384612fd7565b829482845282820111610352576020613411930190612ff8565b51906001600160a01b038216820361035257565b9080601f830112156103525781516134459260200161390c565b919082604091031261035257602061398683613941565b92015190565b80518101604082602083019203126103525760208201516001600160e01b031981169290839003610352576040810151906001600160401b03821161035257019080603f830112156103525760208201516139e99260400161390c565b9063a9059cbb60e01b8103613a1f5750613a0f816020806134119451830101910161396f565b906001600160a01b031633613187565b6340c10f1960e01b8103613aa1575080602080613a419351830101910161396f565b6001600160a01b03909116908115613233577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082613a85600094600254613265565b60025584845283825260408420818154019055604051908152a3565b632770a7eb60e21b8103613b5c575080602080613ac39351830101910161396f565b906001600160a01b0316801561324c57600091818352826020526040832054818110613b2c57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b0384166004820152602481019190915260448101829052606490fd5b630236fce560e51b81036145a85750908151820191610100818403126103525760208101516001600160401b03811161035257613ba190602080860191840101613955565b60408201516001600160401b03811161035257613bc690602080870191850101613955565b9360608301516001600160401b03811161035257613bec90602080840191860101613955565b9060808401516001600160401b03811161035257613c1290602080840191870101613955565b9560a08501519260c08601519160e0870151966001600160401b0388116103525760208501603f898301011215610352576020888201015194613c5486613652565b95613c626040519788612fd7565b80875260208701809a6020840160408460051b83880101011161035257604081860101915b60408460051b83880101018310614571575050505050610100015195805115614535578151156144f7578251156144b257851561447657831561444157861561440e5780516001600160401b038111612fc157613ce5600654612c9c565b601f81116143bf575b50806020601f821160011461433b57600091614330575b508160011b916000199060031b1c1916176006555b81516001600160401b038111612fc157613d35600754612c9c565b601f81116142e1575b50806020601f821160011461425d57600091614252575b508160011b916000199060031b1c1916176007555b82516001600160401b038111612fc157613d85600854612c9c565b601f8111614203575b50806020601f821160011461417f57600091614174575b508160011b916000199060031b1c1916176008555b89516001600160401b038111612fc157613dd5600954612c9c565b601f8111614125575b50806020601f821160011461409e57600091614093575b508160011b916000199060031b1c1916176009555b85600a5583600b558451600160401b8111612fc157600c5481600c55808210614001575b508890600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7916000905b828210613f215750505050613e8e926103156101009a9b93610307610323948b600d556040519d8e818152019061301b565b92608087015260a086015284820360c086015251808252602082019160208260051b82010194926000915b838310613ef45750505050509180917f62d6efdb8dbca656ac38d327c1d66a4ccaeabc91c464fe5e7352b604858f5f469360e08301520390a1565b9091929395602080613f12600193601f198682030187528a5161301b565b98019301930191939290613eb9565b80518051906001600160401b038211612fc157613f4882613f428854612c9c565b886133d6565b602090601f8311600114613f94579282600194936020938695600092613f89575b5050600019600383901b1c191690841b1787555b01940191019092613e5c565b015190503880613f69565b90601f198316918760005260206000209260005b818110613fe9575092600195928592879660209610613fd0575b505050831b83018755613f7d565b015160001960f88460031b161c19169055388080613fc2565b92936020600181928786015181550195019301613fa8565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7908282015b818301811061403c575050613e2e565b8061404960019254612c9c565b80614056575b500161402c565b601f8111831461406c5750600081555b3861404f565b60009082825261408a601f60208420920160051c82018583016133bf565b81835555614066565b90508b015138613df5565b600960009081527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9250601f198416908e5b82821061410c57505090836001949392106140f3575b5050811b01600955613e0a565b8d015160001960f88460031b161c1916905538806140e6565b600184956020939584930151815501940192018e6140d0565b61416e9060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c8101916020851061341357601f0160051c01906133bf565b38613dde565b905084015138613da5565b600860009081527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39250601f198416905b8181106141eb575090836001949392106141d2575b5050811b01600855613dba565b86015160001960f88460031b161c1916905538806141c5565b9192602060018192868b0151815501940192016141b0565b61424c9060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c8101916020851061341357601f0160051c01906133bf565b38613d8e565b905083015138613d55565b600760009081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889250601f198416905b8181106142c9575090836001949392106142b0575b5050811b01600755613d6a565b85015160001960f88460031b161c1916905538806142a3565b9192602060018192868a01518155019401920161428e565b61432a9060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c8101916020851061341357601f0160051c01906133bf565b38613d3e565b905082015138613d05565b600660009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9250601f198416905b8181106143a75750908360019493921061438e575b5050811b01600655613d1a565b84015160001960f88460031b161c191690553880614381565b9192602060018192868901518155019401920161436c565b6144089060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851061341357601f0160051c01906133bf565b38613cee565b60405162461bcd60e51b815260206004820152600b60248201526a0496e76616c6964204b50560ac1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964204f4b544d4f60981b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527324b73b30b634b210353ab934b9b234b1ba34b7b760611b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4c6f636174696f6e2063616e6e6f7420626520656d70747900000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527553796d626f6c2063616e6e6f7420626520656d70747960501b6044820152606490fd5b60405162461bcd60e51b81526020600482015260146024820152734e616d652063616e6e6f7420626520656d70747960601b6044820152606490fd5b8251906001600160401b038211610352576020809161459b60409485848b0191888d010101613955565b8152019301929050613c87565b63f0f9e6b760e01b810361465f5750602081805181010312610352576020015180151580614654575b1561460f5760407fd0198ea88bf9c4ad5317b68e697944e524541fcb494d854f095b1cd88a097ab691601054908060105582519182526020820152a1565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c69642071756f72756d2070657263656e74616765000000000000006044820152606490fd5b5060648111156145d1565b632ab43f7f60e11b810361470f5750602081805181010312610352576020015180600052601660205261469960ff6040600020541661332c565b601254908181146146da577f979103c7afbf0138fe781172504ceb318ff78f9a420de8cabac8141f0121b521918160409260125582519182526020820152a1565b60405162461bcd60e51b815260206004820152600d60248201526c14d85b594818da185a5b881251609a1b6044820152606490fd5b6304fa45bf60e31b81036147dd57506040818051810103126103525760208101517ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d72722719916001600160a01b039061476790604001613941565b16906147748215156148a3565b80600052601460205261478f60ff60406000205416156148de565b600081815260136020908152604080832080546001600160a01b031916861790556014825291829020805460ff1916600117905581519283526001600160a01b0390931692820192909252a1565b633972e9fb60e21b0361486a57602081805181010312610352576020807f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba853920151806000526014825261483760ff60406000205416614922565b600081815260138352604080822080546001600160a01b03191690556014845290819020805460ff1916905551908152a1565b60405162461bcd60e51b81526020600482015260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fd5b156148aa57565b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b156148e557565b60405162461bcd60e51b81526020600482015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152606490fd5b1561492957565b60405162461bcd60e51b8152602060048201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152606490fd5b1561496d57565b60405162461bcd60e51b815260206004820152601760248201527f444c4520616c72656164792064656163746976617465640000000000000000006044820152606490fd5b156149b957565b60405162461bcd60e51b8152602060048201526024808201527f446561637469766174696f6e2070726f706f73616c20646f6573206e6f7420656044820152631e1a5cdd60e21b6064820152608490fd5b9081600052601b6020526137ad6040600020928354146149b256fe42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e833137585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63a2646970667358221220c6e394d53611307294b6f8aac07316f9cb25a290fe9ad141368264da25827d2064736f6c63430008140033", + "deployedBytecode": "0x60808060405260048036101561001457600080fd5b60003560e01c918263013cf08b14612bdc57508163044bc2bd1461297557816306fdde03146128a75781630933fad414612759578163095ea7b3146126ba5781630c0512e91461269c5781630c4844aa1461249c5781630d61b5191461229c5781631552d75c1461219b57816318160ddd1461217d578163204c5d1f14611f0e57816322dbefbb14610da057816322f3e2d414611ed75781632388b53114611eb957816323b872dd14611dc15781632441d76f14611d845781632519ae5c14611acb578163313ce56714611aaf5781633b60288a14611a80578163456d10c1146117ba5781634b14579314610ad45781634cf2ab32146117855781634de184f6146117685781634fa76ec91461174a57816351b42b001461159c5781635221c1f01461156d578163548d496f1461156d578163553b527a146114f3578163560cada51461141d5781635cf0e8a4146113785781635d57d260146113965781636cbadbfa146113785781636dcf811d1461135557816370a082311461131b5781637481c8e91461039c5781637ce288ea146110bb5781637e5a9b47146110a057816387188a0014610f0f57816395d89b4114610e285781639a49bdde14610e03578163a9059cbb14610dd2578163b0b6cc1a14610da0578163b359451014610b03578163b3fe8bcb14610ad4578163b5b353be14610868578163bc62f34e14610835578163c9a3c0c714610532578163c9d27afe14610417578163dd62ed3e146103c6578163e1605aa21461039c578163e49a62e91461037557508063eced3dfb146103575763f2c26a471461026857600080fd5b34610352576000366003190112610352576103076040516102938161028c81612cd6565b0382612fd7565b6040516102a38161028c81612d7a565b604051906102bb826102b481612e01565b0383612fd7565b604051916102d3836102cc81612e88565b0384612fd7565b600a5492600b54610331600d5492610323600e549561031560ff600f5416986040519c8d9c8d61012090818152019061301b565b8c810360208e01529061301b565b908a820360408c015261301b565b9088820360608a015261301b565b94608087015260a086015260c085015260e084015215156101008301520390f35b600080fd5b34610352576000366003190112610352576020601754604051908152f35b346103525760203660031901126103525761039260209135613861565b6040519015158152f35b34610352576020366003190112610352573560005260196020526020604060002054604051908152f35b34610352576040366003190112610352576103df6130a2565b6103e76130b8565b9060018060a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b346103525760807f78975aaf742630489badd22949b88ac50eaaea576339ee05440b671a33bfb6a991610449366130ce565b610454929192613597565b8260005260206015815261048e60ff60406000209461047587875414613448565b61048460058701544210613494565b85015416156134cf565b6008830192336000528382526104ac60ff604060002054161561351b565b33600052600082526104c46040600020541515613557565b33600052600082526040600020549382526040600020600160ff198254161790558260001461051d576002016104fb848254613265565b90555b6040519384523390840152151560408301526060820152a16001600555005b60030161052b848254613265565b90556104fe565b34610352576080366003190112610352576001600160401b0390803582811161035257610562903690830161305b565b6044359160643593846000526105966105916020966016885261058c60ff6040600020541661332c565b613831565b61336e565b83600052601485526105af60ff60406000205416614922565b33600052600085526105c76040600020541515613288565b601154936105d4856133b0565b601155846000526015865260406000209085825560019182810186518581116108205761060b816106058454612c9c565b846133d6565b808a601f82116001146107be576000916107b3575b50600019600383901b1c191690851b1790555b61063f60243542613265565b60058201556006810180546001600160a01b03191633179055604051633972e9fb60e21b89820152602480820193909352918252606082018481118382101761079e57906007916040520193815193841161078957506106a9836106a38654612c9c565b866133d6565b8690601f841160011461070e5792806106f895938193600080516020614a468339815191529896600094610703575b50501b916000199060031b1c19161790555b60405191829133868461341d565b0390a1604051908152f35b015192508a806106d8565b90601f9392931983169185600052886000209260005b8a82821061077557505091600080516020614a4683398151915297959391856106f89896941061075c575b505050811b0190556106ea565b015160001960f88460031b161c1916905588808061074f565b838501518655948701949384019301610724565b604190634e487b7160e01b6000525260246000fd5b604186634e487b7160e01b6000525260246000fd5b90508801518b610620565b60008481528c81208894509190601f198416908e5b8d83831061080a5750505083116107f1575b5050811b019055610633565b8a015160001960f88460031b161c191690558b806107e5565b84015185558a969094019392830192018e6107d3565b604187634e487b7160e01b6000525260246000fd5b34610352576020366003190112610352576108509035614a0a565b604080519215158352901515602083015290f35b0390f35b34610352576060366003190112610352576001600160401b0390803582811161035257610898903690830161305b565b60243592604435906108af60ff601d541615614966565b336000526020946000865260406000205415610a77576108d08115156132e0565b82600052601686526108e960ff6040600020541661332c565b601c54946108f6866133b0565b601c5585600052601b8752604060002092868455600190818501918751918211610a625761092e826109288554612c9c565b856133d6565b89601f83116001146109f45791808060079897959361097f97956000936109e9575b501b916000199060031b1c19161790555b6000600285015560006003850155830160ff19815416905542613265565b600582015560068101336bffffffffffffffffffffffff60a01b82541617905501557f88aa9f9d4bbeda6aaf596730c5108c1ea969ee4fe549c51a579330a3e73777ca604051838152604085820152806109de3394604083019061301b565b0390a2604051908152f35b8c015192508e610950565b601f92919219821690846000528b6000209160005b8d8c838310610a4f5750505091839160079998969461097f98969410610a36575b5050811b019055610961565b8b015160001960f88460031b161c191690558c80610a2a565b8401518555938601939283019201610a09565b604184634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152808601879052603060248201527f4d75737420686f6c6420746f6b656e7320746f2063726561746520646561637460448201526f1a5d985d1a5bdb881c1c9bdc1bdcd85b60821b6064820152608490fd5b3461035257602036600319011261035257356000526014602052602060ff604060002054166040519015158152f35b34610352576080366003190112610352576001600160401b03813581811161035257610b32903690840161305b565b6024359260443583811161035257610b4d903690830161305b565b926064359433600052610b9761059160209760008952610b736040600020541515613288565b610b7e8415156132e0565b806000526016895261058c60ff6040600020541661332c565b60115494610ba4866133b0565b601155856000526015875260406000208681556001928382018751868111610d8b57610bd4816106058454612c9c565b8a601f8211600114610d185791816007959492610c2594600091610d0d575b50600019600383901b1c191690881b1790555b600060028401556000600384015587830160ff19815416905542613265565b600582015560068101336bffffffffffffffffffffffff60a01b825416179055019381519384116107895750610c5f836106a38654612c9c565b8690601f8411600114610cac5792806106f895938193600080516020614a4683398151915298966000946107035750501b916000199060031b1c191617905560405191829133868461341d565b90601f9392931983169185600052886000209260005b8a828210610cf957505091600080516020614a4683398151915297959391856106f89896941061075c57505050811b0190556106ea565b838501518655948701949384019301610cc2565b90508b01518e610bf3565b908b8792601f198316856000528c83600020936000915b838310610d7257505050918391610c25969460079998969410610d59575b5050811b019055610c06565b8d015160001960f88460031b161c191690558e80610d4d565b84015185558b969094019392830192908101908e610d2f565b604188634e487b7160e01b6000525260246000fd5b3461035257602036600319011261035257356000526013602052602060018060a01b0360406000205416604051908152f35b3461035257604036600319011261035257610df8610dee6130a2565b6024359033613187565b602060405160018152f35b3461035257602036600319011261035257610e20602091356138b4565b604051908152f35b3461035257600036600319011261035257604051906000908054610e4b81612c9c565b80855291600191808316908115610ee55750600114610e89575b61086485610e7581870382612fd7565b60405191829160208352602083019061301b565b600090815292507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ecd575050508101602001610e7582610864610e65565b80546020858701810191909152909301928101610eb2565b86955061086496935060209250610e7594915060ff191682840152151560051b8201019293610e65565b346103525760208060031936011261035257813533600052600082526040600020541561105c57806000526016825260ff60406000205416611018576012548114610fd45780600052601682526040600020600160ff1982541617905560175492600160401b841015610789575080610fc9610fb28560017fbba9d55e9fd1a441b1617724e2fdb76777d15ec77ab2b72ac15952cbe97085db97016017556130ed565b819391549060031b91821b91600019901b19161790565b9055604051908152a1005b60405162461bcd60e51b8152808401839052601860248201527f43616e6e6f74206164642063757272656e7420636861696e00000000000000006044820152606490fd5b60405162461bcd60e51b8152808401839052601760248201527f436861696e20616c726561647920737570706f727465640000000000000000006044820152606490fd5b60405162461bcd60e51b8152808401839052601d60248201527f4d75737420686f6c6420746f6b656e7320746f2061646420636861696e0000006044820152606490fd5b34610352576020366003190112610352576108509035613792565b346103525760209081600319360112610352578035906110da82613861565b156112e057906000915b6017548310156112b4576110f7836138b4565b92836000526016855261111160ff6040600020541661332c565b826000526015855260406000209361112b84865414613448565b61113481613831565b156112705760126007815496019560405188810191878352604082015260009780549061116082612c9c565b90600192838116908160001461123857506001146111e9575b50505090816111a7600080516020614a268339815191529594936111e298999a03601f198101835282612fd7565b5190208260005260198952604060002055546111da60405192839289846040919493926060820195825260208201520152565b0390a16133b0565b91906110e4565b9091995060005289600020988a60009a5b838c106112235750505081016060019750806111a7600080516020614a26833981519152611179565b8054858d01606001529a01998b9082016111fa565b60ff191660608087019190915283151590930285019092019a508392506111a79150600080516020614a268339815191529050611179565b60405162461bcd60e51b8152808401879052601860248201527f436861696e206e6f7420726561647920666f722073796e6300000000000000006044820152606490fd5b7f57df5a6a467271f04b10f7fe9e66d21dcd8ae7eaf079099d48959f24a53b69108483604051908152a1005b60405162461bcd60e51b815290810183905260146024820152734e6f7420616c6c20636861696e7320726561647960601b6044820152606490fd5b34610352576020366003190112610352576001600160a01b0361133c6130a2565b1660005260006020526020604060002054604051908152f35b3461035257600036600319011261035257602060ff601d54166040519015158152f35b34610352576000366003190112610352576020601254604051908152f35b346103525760203660031901126103525780610864600192359182600052601b6020526040600020906113cc82549485146149b2565b60028201549060ff60038401549184015416600584015491878060a01b036006860154169361141160078701549661140a604051809c819301612f0f565b038a612fd7565b6040519889988961313a565b346103525760403660031901126103525780359060243590336000526000602052604060002054156114a3577fd9f45b58f4c478517007ecbe71ec54f51403161f9b9e1d3c619204480321825a6040848481600052601660205261148760ff84600020541661332c565b81600052601960205280836000205582519182526020820152a1005b60849060206040519162461bcd60e51b8352820152602360248201527f4d75737420686f6c6420746f6b656e7320746f20736574206d65726b6c6520726044820152621bdbdd60ea1b6064820152fd5b34610352576020366003190112610352578035600052601b602052604060002090610864825491604051936115368561152f8160018501612f0f565b0386612fd7565b60028101549160ff60038301549183015416600583015491600760018060a01b03600686015416940154946040519889988961313a565b3461035257602036600319011261035257356000526016602052602060ff604060002054166040519015158152f35b346103525760003660031901126103525760ff6115bd81601d541615614966565b3360005260209160008352604060002054156116fb5760009160005b601c548110156116f35780600052601b855260406000208381018054918483161590816116e4575b50611617575b5050611612906133b0565b6115d9565b61162083614a0a565b90816116dc575b5015611607579250929350506001809260ff19161790555b15611687575060ff19600181601d541617601d55600f5416600f557f061e8db5c904686a2824142c80b23cd6cf492a0e068aa54080617ff53f2160ca604051914283523392a2005b6084916040519162461bcd60e51b8352820152602a60248201527f4e6f2076616c696420646561637469766174696f6e2070726f706f73616c20776044820152696974682071756f72756d60b01b6064820152fd5b905088611627565b60059150015442101588611601565b50509061163f565b60405162461bcd60e51b8152908101839052602260248201527f4d75737420686f6c6420746f6b656e7320746f206465616374697661746520446044820152614c4560f01b6064820152608490fd5b34610352576000366003190112610352576020601054604051908152f35b346103525760203660031901126103525761039260209135613831565b346103525760203660031901126103525735601754811015610352576117ac6020916130ed565b90546040519160031b1c8152f35b346103525760a03660031901126103525760643590602435908035906001600160401b03604435608435828111610352576117f8903690850161305b565b958460005260209160158352604060002097611816878a5414613448565b876000526016845261182f60ff6040600020541661332c565b60098901948860005285855260ff60406000205416611a4b578151156119fb57604051858101918983528a60408301528460608301528560808301526080825260a0820190828210908211176119e657916118e5916118ea9360405251902080938a600052601a885260406000208260005288526118b560ff60406000205416156135ba565b8b600052601988526118e0604060002054916118d2831515613606565b898082518301019101613669565b613725565b6136e2565b86600052601a8452604060002090600052835260406000209460ff199560018782541617905561191a8383613265565b600254106119a257506003886119659261195a60027fca1838d50ca3156f1ace7cde39a081cc9c9a333af6fca55db71817f8717e1dcb9c01918254613265565b905501918254613265565b90558460005252600160406000209182541617905561199d601254604051938493846040919493926060820195825260208201520152565b0390a1005b60405162461bcd60e51b8152908101849052601960248201527f566f7465732065786365656420746f74616c20737570706c79000000000000006044820152606490fd5b604189634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152808801869052602360248201527f50726f6f6620726571756972656420666f722063726f73732d636861696e2073604482015262796e6360e81b6064820152608490fd5b60405162461bcd60e51b8152808801869052600e60248201526d105b1c9958591e481cde5b98d95960921b6044820152606490fd5b3461035257602036600319011261035257356000526018602052602060ff604060002054166040519015158152f35b3461035257600036600319011261035257602060405160128152f35b346103525760a0366003190112610352576001600160401b0390803582811161035257611afb903690830161305b565b6064356001600160a01b03811693604435939192919085840361035257611b486084359687600052611b4161059160209960168b5261058c60ff6040600020541661332c565b15156148a3565b8460005260148652611b6260ff60406000205416156148de565b3360005260008652611b7a6040600020541515613288565b60115494611b87866133b0565b60115585600052601587526040600020868155600191828201865185811161082057611bb7816106058454612c9c565b8a601f8211600114611d195790806007949392600091611d0e575b50600019600383901b1c191690861b1790555b611bf160243542613265565b60058401556006830180546001600160a01b031916331790556040516304fa45bf60e31b8b82015260248101919091526001600160a01b03979097166044808901919091528752601f1991611c47606489612fd7565b019386519384116107895750611c61836106a38654612c9c565b8790601f8411600114611caf5750918080926106f8969594600080516020614a46833981519152986000946107035750501b916000199060031b1c191617905560405191829133868461341d565b839692949596169185600052886000209260005b8a828210611cfa57505091600080516020614a4683398151915297959391856106f89896941061075c57505050811b0190556106ea565b838501518655948701949384019301611cc3565b90508901518d611bd2565b92919085908c601f1982168460005281600020916000905b8d838310611d6c57505050958260079710611d53575b5050811b019055611be5565b8b015160001960f88460031b161c191690558d80611d47565b8901518455978801978a959093019290810190611d31565b346103525760403660031901126103525735600052601a6020526040600020602435600052602052602060ff604060002054166040519015158152f35b3461035257606036600319011261035257611dda6130a2565b611de26130b8565b6044359160018060a01b038116806000526001602052604060002033600052602052604060002054946000198610611e21575b5050610df89350613187565b848610611e8d578115611e75573315611e5d5750610df89484916000526001602052604060002033600052602052036040600020558480611e15565b602490600060405191634a1406b160e11b8352820152fd5b60249060006040519163e602df0560e01b8352820152fd5b60408051637dc7a0d960e11b815233928101928352602083018890529082018690529081906060010390fd5b34610352576000366003190112610352576020601c54604051908152f35b346103525760003660031901126103525760ff601d54161580611f02575b6020906040519015158152f35b50600f5460ff16611ef5565b34610352576000366003190112610352576000610120604051611f3081612fa5565b6060815260606020820152606060408201526060808201528260808201528260a0820152606060c08201528260e0820152826101008201520152604051611f7681612fa5565b604051611f868161028c81612cd6565b8152604051611f988161028c81612d7a565b6020820152604051611fad8161028c81612e01565b6040820152604051611fc28161028c81612e88565b6060820152600a546080820152600b5460a0820152600c54611fe381613652565b90611ff16040519283612fd7565b80825260208201600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b83831061215857858560c0820152600d5460e0820152600e5461010082015260ff600f54161515610120820152604051602081526120b96120a361208d6120778551610140602087015261016086019061301b565b6020860151858203601f1901604087015261301b565b6040850151848203601f1901606086015261301b565b6060840151838203601f1901608085015261301b565b608083015160a083015260a083015160c083015260c083015190601f198382030160e0840152815180825260208201916020808360051b8301019401926000915b83831061212b578680876101208b60e081015161010085015261010081015182850152015115156101408301520390f35b9091929394602080612149600193601f19868203018752895161301b565b970193019301919392906120fa565b60016020819260405161216f8161028c8189612f0f565b815201920192019190612022565b34610352576000366003190112610352576020600254604051908152f35b34610352576121a9366130ce565b6121b4929192613597565b82600052602090601b82526121d660ff604060002094610475878754146149b2565b60088301336000528083526121f360ff604060002054161561351b565b336000526000835261220b6040600020541515613557565b3360005260008352604060002054938260001461228757600201612230858254613265565b90555b3360005282526040600020600160ff1982541617905560405193845215159083015260408201527f90491c8ec6b93a0758ed2378c77e075515ecf22f312e5cca5160d1720ef3ff7760603392a26001600555005b600301612295858254613265565b9055612233565b34610352576020806003193601126103525781359182600052601582526040600020916122cb84845414613448565b818301928354926122df60ff8516156134cf565b6122e886613792565b909160058401544210801590612495575b156124415750600792916123139181612439575b506137ef565b6001948560ff19809616179055019261233b6040516123368161028c8189612f0f565b61398c565b604051948552604082860152600093805461235581612c9c565b9485604089015283821691826000146123f357505060011461239a575b7fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d286860387a1005b60009081528281209094505b8385106123df57505050508101606001817fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d28480612372565b8054868601606001529382019381016123a6565b91509150869550606093507fbadbd87941bb6424ed4aa4719bf01a3319b64480e49f89018c718603239553d2969492501682840152151560051b82010191928480612372565b90508861230d565b60405162461bcd60e51b8152908101859052602760248201527f566f74696e67206e6f7420656e64656420616e642071756f72756d206e6f74206044820152661c995858da195960ca1b6064820152608490fd5b50816122f9565b34610352576020806003193601126103525781359033600052600081526040600020541561265a5781600052601681526124dd60ff6040600020541661332c565b60125482146126175760008281526016825260408120805460ff191690555b60178054808310156125eb57908491612514846130ed565b939054600394851b1c146125335750505061252e906133b0565b6124fc565b909192600095949519918281019081116125d657610fb2612556612562926130ed565b905490871b1c926130ed565b905581549586156125c15750807f11a9d1a77f76361ed131c19b1dc5758504c51dbde2e49fc973a0ef9577ad13d596019261259c846130ed565b81939154921b1b19169055555b806000526019825260006040812055604051908152a1005b603190634e487b7160e01b6000525260246000fd5b601188634e487b7160e01b6000525260246000fd5b505050907f11a9d1a77f76361ed131c19b1dc5758504c51dbde2e49fc973a0ef9577ad13d592506125a9565b826064916040519162461bcd60e51b8352820152601b60248201527f43616e6e6f742072656d6f76652063757272656e7420636861696e00000000006044820152fd5b82816064926040519262461bcd60e51b845283015260248201527f4d75737420686f6c6420746f6b656e7320746f2072656d6f766520636861696e6044820152fd5b34610352576000366003190112610352576020601154604051908152f35b34610352576040366003190112610352576126d36130a2565b602435903315612741576001600160a01b0316918215611e5d5750336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60405163e602df0560e01b8152600081850152602490fd5b3461035257602090816003193601126103525780359081600052601b8352604060002090612789838354146149b2565b80820190600582549361279f60ff8616156134cf565b01544210612870576127b084614a0a565b9190911561283757506127c2906137ef565b600160ff19809316179055600181601d541617601d55600f5416600f556040519081527fbd3ad027952950b28e27d2636c5535e03d64579c825a2890793333c2aec22474823392a27f061e8db5c904686a2824142c80b23cd6cf492a0e068aa54080617ff53f2160ca604051914283523392a2005b60405162461bcd60e51b81529081018690526012602482015271145d5bdc9d5b481b9bdd081c995858da195960721b6044820152606490fd5b60405162461bcd60e51b8152908101859052601060248201526f159bdd1a5b99c81b9bdd08195b99195960821b6044820152606490fd5b346103525760003660031901126103525760405160006003546128c981612c9c565b8084529060019081811690811561294e57506001146128f3575b61086484610e7581860382612fd7565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410612936575050508101602001610e75826128e3565b8054602085870181019190915290930192810161291e565b60ff191660208087019190915292151560051b85019092019250610e7591508390506128e3565b3461035257606036600319011261035257803560243590604435926001600160401b0393848111610352576129ad903690830161305b565b83600052602090601682526129c960ff6040600020541661332c565b836000526018825260ff60406000205416612ba557805115612b5057604051828101968588528660408301526822ac22a1aaaa24a7a760b91b606083015260498252608082019082821090821117612b3b57600080516020614a2683398151915297612a8b926118e592604052519020809387600052601a86526040600020826000528652612a6060ff60406000205416156135ba565b88600052601986526118e060406000205491612a7d831515613606565b878082518301019101613669565b83600052601a82526040600020906000528152601860406000209160ff19926001848254161790558460005260158152612adc60ff604060002095612ad288885414613448565b86015416156134cf565b8460005252600160406000209182541617905581815414612b1c575b5061199d601254604051938493846040919493926060820195825260208201520152565b6007612336612b359261028c6040518094819301612f0f565b83612af8565b604185634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152808401839052602860248201527f50726f6f6620726571756972656420666f722063726f73732d636861696e20656044820152673c32b1baba34b7b760c11b6064820152608490fd5b60405162461bcd60e51b8152808401839052601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b903461035257602036600319011261035257803560005260156020526108646040600020916007835493612c1e86612c178160018501612f0f565b0387612fd7565b60028101549260ff60038301549183015416600583015491612c5760018060a01b036006860154169461152f6040518098819301612f0f565b612c73604051998a998a526101008060208c01528a019061301b565b95604089015260608801521515608087015260a086015260c085015283820360e085015261301b565b90600182811c92168015612ccc575b6020831014612cb657565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cab565b60065460009291612ce682612c9c565b80825291600190818116908115612d5d5750600114612d0457505050565b9192935060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f916000925b848410612d4557505060209250010190565b80546020858501810191909152909301928101612d33565b915050602093945060ff929192191683830152151560051b010190565b60075460009291612d8a82612c9c565b80825291600190818116908115612d5d5750600114612da857505050565b9192935060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688916000925b848410612de957505060209250010190565b80546020858501810191909152909301928101612dd7565b60085460009291612e1182612c9c565b80825291600190818116908115612d5d5750600114612e2f57505050565b9192935060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3916000925b848410612e7057505060209250010190565b80546020858501810191909152909301928101612e5e565b60095460009291612e9882612c9c565b80825291600190818116908115612d5d5750600114612eb657505050565b9192935060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af916000925b848410612ef757505060209250010190565b80546020858501810191909152909301928101612ee5565b9060009291805491612f2083612c9c565b918282526001938481169081600014612f825750600114612f42575b50505050565b90919394506000526020928360002092846000945b838610612f6e575050505001019038808080612f3c565b805485870183015294019385908201612f57565b9294505050602093945060ff191683830152151560051b01019038808080612f3c565b61014081019081106001600160401b03821117612fc157604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b03821117612fc157604052565b60005b83811061300b5750506000910152565b8181015183820152602001612ffb565b9060209161303481518092818552858086019101612ff8565b601f01601f1916010190565b6001600160401b038111612fc157601f01601f191660200190565b81601f820112156103525780359061307282613040565b926130806040519485612fd7565b8284526020838301011161035257816000926020809301838601378301015290565b600435906001600160a01b038216820361035257565b602435906001600160a01b038216820361035257565b6040906003190112610352576004359060243580151581036103525790565b6017548110156131245760176000527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150190600090565b634e487b7160e01b600052603260045260246000fd5b949161315c9060e097949a99989592875261010080602089015287019061301b565b604086019990995260608501521515608084015260a08301526001600160a01b031660c08201520152565b916001600160a01b0380841692831561324c57169283156132335760009083825281602052604082205490838210613201575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b9190820180921161327257565b634e487b7160e01b600052601160045260246000fd5b1561328f57565b60405162461bcd60e51b815260206004820152602360248201527f4d75737420686f6c6420746f6b656e7320746f206372656174652070726f706f6044820152621cd85b60ea1b6064820152608490fd5b156132e757565b60405162461bcd60e51b815260206004820152601960248201527f4475726174696f6e206d75737420626520706f736974697665000000000000006044820152606490fd5b1561333357565b60405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606490fd5b1561337557565b60405162461bcd60e51b8152602060048201526013602482015272436861696e206e6f7420617661696c61626c6560681b6044820152606490fd5b60001981146132725760010190565b8181106133ca575050565b600081556001016133bf565b9190601f81116133e557505050565b613411926000526020600020906020601f840160051c83019310613413575b601f0160051c01906133bf565b565b9091508190613404565b9081526001600160a01b0390911660208201526060604082018190526134459291019061301b565b90565b1561344f57565b60405162461bcd60e51b815260206004820152601760248201527f50726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606490fd5b1561349b57565b60405162461bcd60e51b815260206004820152600c60248201526b159bdd1a5b99c8195b99195960a21b6044820152606490fd5b156134d657565b60405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c20616c7265616479206578656375746564000000000000006044820152606490fd5b1561352257565b60405162461bcd60e51b815260206004820152600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b1561355e57565b60405162461bcd60e51b81526020600482015260116024820152704e6f20746f6b656e7320746f20766f746560781b6044820152606490fd5b6002600554146135a8576002600555565b604051633ee5aeb560e01b8152600490fd5b156135c157565b60405162461bcd60e51b815260206004820152601760248201527f50726f6f6620616c72656164792070726f6365737365640000000000000000006044820152606490fd5b1561360d57565b60405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c6520726f6f74206e6f742073657420666f7220636861696e0000006044820152606490fd5b6001600160401b038111612fc15760051b60200190565b6020908181840312610352578051906001600160401b03821161035257019180601f8401121561035257825161369e81613652565b936136ac6040519586612fd7565b818552838086019260051b820101928311610352578301905b8282106136d3575050505090565b815181529083019083016136c5565b156136e957565b60405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21026b2b935b63290383937b7b360611b6044820152606490fd5b9091906000915b8151831015613778576020808460051b8401015191600083821060001461376757506000525261376160406000205b926133b0565b9161372c565b90604092613761948352522061375b565b9150501490565b8181029291811591840414171561327257565b908160005260156020526137ad604060002092835414613448565b60036002830154920154916137c28382613265565b60646137d36002546010549061377f565b041115928391826137e5575b50509190565b11905038806137df565b156137f657565b60405162461bcd60e51b8152602060048201526013602482015272141c9bdc1bdcd85b081b9bdd081c185cdcd959606a1b6044820152606490fd5b600052601660205260ff604060002054161561385c5760196020526040600020541561385c57600190565b600090565b61387a6000918083526015602052604083205414613448565b80601754915b82811061388f57505050600190565b61389b61058c826138b4565b156138ae576138a9906133b0565b613880565b50905090565b6017548110156138d1576138c7906130ed565b90549060031b1c90565b60405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c6d0c2d2dc40d2dcc8caf606b1b6044820152606490fd5b9092919261391981613040565b916139276040519384612fd7565b829482845282820111610352576020613411930190612ff8565b51906001600160a01b038216820361035257565b9080601f830112156103525781516134459260200161390c565b919082604091031261035257602061398683613941565b92015190565b80518101604082602083019203126103525760208201516001600160e01b031981169290839003610352576040810151906001600160401b03821161035257019080603f830112156103525760208201516139e99260400161390c565b9063a9059cbb60e01b8103613a1f5750613a0f816020806134119451830101910161396f565b906001600160a01b031633613187565b6340c10f1960e01b8103613aa1575080602080613a419351830101910161396f565b6001600160a01b03909116908115613233577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082613a85600094600254613265565b60025584845283825260408420818154019055604051908152a3565b632770a7eb60e21b8103613b5c575080602080613ac39351830101910161396f565b906001600160a01b0316801561324c57600091818352826020526040832054818110613b2c57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b0384166004820152602481019190915260448101829052606490fd5b630236fce560e51b81036145a85750908151820191610100818403126103525760208101516001600160401b03811161035257613ba190602080860191840101613955565b60408201516001600160401b03811161035257613bc690602080870191850101613955565b9360608301516001600160401b03811161035257613bec90602080840191860101613955565b9060808401516001600160401b03811161035257613c1290602080840191870101613955565b9560a08501519260c08601519160e0870151966001600160401b0388116103525760208501603f898301011215610352576020888201015194613c5486613652565b95613c626040519788612fd7565b80875260208701809a6020840160408460051b83880101011161035257604081860101915b60408460051b83880101018310614571575050505050610100015195805115614535578151156144f7578251156144b257851561447657831561444157861561440e5780516001600160401b038111612fc157613ce5600654612c9c565b601f81116143bf575b50806020601f821160011461433b57600091614330575b508160011b916000199060031b1c1916176006555b81516001600160401b038111612fc157613d35600754612c9c565b601f81116142e1575b50806020601f821160011461425d57600091614252575b508160011b916000199060031b1c1916176007555b82516001600160401b038111612fc157613d85600854612c9c565b601f8111614203575b50806020601f821160011461417f57600091614174575b508160011b916000199060031b1c1916176008555b89516001600160401b038111612fc157613dd5600954612c9c565b601f8111614125575b50806020601f821160011461409e57600091614093575b508160011b916000199060031b1c1916176009555b85600a5583600b558451600160401b8111612fc157600c5481600c55808210614001575b508890600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7916000905b828210613f215750505050613e8e926103156101009a9b93610307610323948b600d556040519d8e818152019061301b565b92608087015260a086015284820360c086015251808252602082019160208260051b82010194926000915b838310613ef45750505050509180917f62d6efdb8dbca656ac38d327c1d66a4ccaeabc91c464fe5e7352b604858f5f469360e08301520390a1565b9091929395602080613f12600193601f198682030187528a5161301b565b98019301930191939290613eb9565b80518051906001600160401b038211612fc157613f4882613f428854612c9c565b886133d6565b602090601f8311600114613f94579282600194936020938695600092613f89575b5050600019600383901b1c191690841b1787555b01940191019092613e5c565b015190503880613f69565b90601f198316918760005260206000209260005b818110613fe9575092600195928592879660209610613fd0575b505050831b83018755613f7d565b015160001960f88460031b161c19169055388080613fc2565b92936020600181928786015181550195019301613fa8565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7908282015b818301811061403c575050613e2e565b8061404960019254612c9c565b80614056575b500161402c565b601f8111831461406c5750600081555b3861404f565b60009082825261408a601f60208420920160051c82018583016133bf565b81835555614066565b90508b015138613df5565b600960009081527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9250601f198416908e5b82821061410c57505090836001949392106140f3575b5050811b01600955613e0a565b8d015160001960f88460031b161c1916905538806140e6565b600184956020939584930151815501940192018e6140d0565b61416e9060096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c8101916020851061341357601f0160051c01906133bf565b38613dde565b905084015138613da5565b600860009081527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39250601f198416905b8181106141eb575090836001949392106141d2575b5050811b01600855613dba565b86015160001960f88460031b161c1916905538806141c5565b9192602060018192868b0151815501940192016141b0565b61424c9060086000527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c8101916020851061341357601f0160051c01906133bf565b38613d8e565b905083015138613d55565b600760009081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889250601f198416905b8181106142c9575090836001949392106142b0575b5050811b01600755613d6a565b85015160001960f88460031b161c1916905538806142a3565b9192602060018192868a01518155019401920161428e565b61432a9060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c8101916020851061341357601f0160051c01906133bf565b38613d3e565b905082015138613d05565b600660009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9250601f198416905b8181106143a75750908360019493921061438e575b5050811b01600655613d1a565b84015160001960f88460031b161c191690553880614381565b9192602060018192868901518155019401920161436c565b6144089060066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851061341357601f0160051c01906133bf565b38613cee565b60405162461bcd60e51b815260206004820152600b60248201526a0496e76616c6964204b50560ac1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964204f4b544d4f60981b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527324b73b30b634b210353ab934b9b234b1ba34b7b760611b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4c6f636174696f6e2063616e6e6f7420626520656d70747900000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527553796d626f6c2063616e6e6f7420626520656d70747960501b6044820152606490fd5b60405162461bcd60e51b81526020600482015260146024820152734e616d652063616e6e6f7420626520656d70747960601b6044820152606490fd5b8251906001600160401b038211610352576020809161459b60409485848b0191888d010101613955565b8152019301929050613c87565b63f0f9e6b760e01b810361465f5750602081805181010312610352576020015180151580614654575b1561460f5760407fd0198ea88bf9c4ad5317b68e697944e524541fcb494d854f095b1cd88a097ab691601054908060105582519182526020820152a1565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c69642071756f72756d2070657263656e74616765000000000000006044820152606490fd5b5060648111156145d1565b632ab43f7f60e11b810361470f5750602081805181010312610352576020015180600052601660205261469960ff6040600020541661332c565b601254908181146146da577f979103c7afbf0138fe781172504ceb318ff78f9a420de8cabac8141f0121b521918160409260125582519182526020820152a1565b60405162461bcd60e51b815260206004820152600d60248201526c14d85b594818da185a5b881251609a1b6044820152606490fd5b6304fa45bf60e31b81036147dd57506040818051810103126103525760208101517ff14475b19484bf096265507cc0c41cd3bf1994992088806830686e2d72722719916001600160a01b039061476790604001613941565b16906147748215156148a3565b80600052601460205261478f60ff60406000205416156148de565b600081815260136020908152604080832080546001600160a01b031916861790556014825291829020805460ff1916600117905581519283526001600160a01b0390931692820192909252a1565b633972e9fb60e21b0361486a57602081805181010312610352576020807f4c7c76abe482a2c36ea52f1b999474c69f8b4afeeac5635f8aea2526864ba853920151806000526014825261483760ff60406000205416614922565b600081815260138352604080822080546001600160a01b03191690556014845290819020805460ff1916905551908152a1565b60405162461bcd60e51b81526020600482015260116024820152702ab735b737bbb71037b832b930ba34b7b760791b6044820152606490fd5b156148aa57565b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b156148e557565b60405162461bcd60e51b81526020600482015260156024820152744d6f64756c6520616c72656164792065786973747360581b6044820152606490fd5b1561492957565b60405162461bcd60e51b8152602060048201526015602482015274135bd91d5b1948191bd95cc81b9bdd08195e1a5cdd605a1b6044820152606490fd5b1561496d57565b60405162461bcd60e51b815260206004820152601760248201527f444c4520616c72656164792064656163746976617465640000000000000000006044820152606490fd5b156149b957565b60405162461bcd60e51b8152602060048201526024808201527f446561637469766174696f6e2070726f706f73616c20646f6573206e6f7420656044820152631e1a5cdd60e21b6064820152608490fd5b9081600052601b6020526137ad6040600020928354146149b256fe42e60114b8bc5803b43a4bcd35572ece9a5e2cabb79a838a02d56a4c53e833137585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63a2646970667358221220c6e394d53611307294b6f8aac07316f9cb25a290fe9ad141368264da25827d2064736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/cache/solidity-files-cache.json b/backend/cache/solidity-files-cache.json index aaab683..cfde2dc 100644 --- a/backend/cache/solidity-files-cache.json +++ b/backend/cache/solidity-files-cache.json @@ -1,9 +1,9 @@ { "_format": "hh-sol-cache-2", "files": { - "/app/contracts/DLE.sol": { - "lastModificationDate": 1753802664167, - "contentHash": "de19ae5d6875c4b57e17312ebe37ae43", + "/home/alex/Digital_Legal_Entity(DLE)/backend/contracts/DLE.sol": { + "lastModificationDate": 1754485037554, + "contentHash": "f121cb518877db715ab5cd2e3ee5ff3a", "sourceName": "contracts/DLE.sol", "solcConfig": { "version": "0.8.20", @@ -32,7 +32,8 @@ }, "imports": [ "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "@openzeppelin/contracts/utils/ReentrancyGuard.sol" + "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol" ], "versionPragmas": [ "^0.8.20" @@ -41,44 +42,7 @@ "DLE" ] }, - "/app/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": { - "lastModificationDate": 1753876422645, - "contentHash": "190613e556d509d9e9a0ea43dc5d891d", - "sourceName": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "solcConfig": { - "version": "0.8.20", - "settings": { - "optimizer": { - "enabled": true, - "runs": 200 - }, - "viaIR": true, - "evmVersion": "paris", - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.20" - ], - "artifacts": [ - "ReentrancyGuard" - ] - }, - "/app/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { "lastModificationDate": 1754306764456, "contentHash": "227a6eb2225701c12d9c959b758b6333", "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", @@ -120,8 +84,45 @@ "ERC20" ] }, - "/app/node_modules/@openzeppelin/contracts/utils/Context.sol": { - "lastModificationDate": 1753876422645, + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": { + "lastModificationDate": 1754306760451, + "contentHash": "190613e556d509d9e9a0ea43dc5d891d", + "sourceName": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "viaIR": true, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ReentrancyGuard" + ] + }, + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/Context.sol": { + "lastModificationDate": 1754306760451, "contentHash": "67bfbc07588eb8683b3fd8f6f909563e", "sourceName": "@openzeppelin/contracts/utils/Context.sol", "solcConfig": { @@ -157,7 +158,7 @@ "Context" ] }, - "/app/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { "lastModificationDate": 1754306760460, "contentHash": "267d92fe4de67b1bdb3302c08f387dbf", "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", @@ -196,7 +197,7 @@ "IERC721Errors" ] }, - "/app/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { "lastModificationDate": 1754306764456, "contentHash": "8f19f64d2adadf448840908bbaf431c8", "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", @@ -233,7 +234,7 @@ "IERC20" ] }, - "/app/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "lastModificationDate": 1754306768254, "contentHash": "794db3115001aa372c79326fcfd44b1f", "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", @@ -271,6 +272,82 @@ "artifacts": [ "IERC20Metadata" ] + }, + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol": { + "lastModificationDate": 1754306764465, + "contentHash": "d57b0dba03e8cc7942bf797fc9fe1d29", + "sourceName": "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "viaIR": true, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./Hashes.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "MerkleProof" + ] + }, + "/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/cryptography/Hashes.sol": { + "lastModificationDate": 1754306764456, + "contentHash": "34f1345e1a955860b49b83bf791500a6", + "sourceName": "@openzeppelin/contracts/utils/cryptography/Hashes.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "viaIR": true, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Hashes" + ] } } } diff --git a/backend/contracts/DLE.sol b/backend/contracts/DLE.sol index 20b6923..e8e1daa 100644 --- a/backend/contracts/DLE.sol +++ b/backend/contracts/DLE.sol @@ -12,6 +12,7 @@ pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; /** * @title DLE (Digital Legal Entity) @@ -59,36 +60,29 @@ contract DLE is ERC20, ReentrancyGuard { mapping(uint256 => bool) chainVoteSynced; // Синхронизация голосов между цепочками } - struct MultiSigOperation { - bytes32 operationHash; - uint256 forSignatures; - uint256 againstSignatures; - bool executed; - uint256 deadline; - address initiator; - mapping(address => bool) hasSigned; - mapping(uint256 => bool) chainSignSynced; // Синхронизация подписей между цепочками - } + // Основные настройки DLEInfo public dleInfo; uint256 public quorumPercentage; uint256 public proposalCounter; - uint256 public multiSigCounter; uint256 public currentChainId; // Модули mapping(bytes32 => address) public modules; mapping(bytes32 => bool) public activeModules; - // Предложения и мультиподписи + // Предложения mapping(uint256 => Proposal) public proposals; - mapping(uint256 => MultiSigOperation) public multiSigOperations; // Мульти-чейн mapping(uint256 => bool) public supportedChains; + uint256[] public supportedChainIds; mapping(uint256 => bool) public executedProposals; // Синхронизация исполненных предложений - mapping(uint256 => bool) public executedMultiSig; // Синхронизация исполненных мультиподписей + + // Merkle proofs для cross-chain синхронизации + mapping(uint256 => bytes32) public chainMerkleRoots; // chainId => merkleRoot + mapping(uint256 => mapping(uint256 => bool)) public processedProofs; // proposalId => proofHash => processed // События event DLEInitialized( @@ -107,14 +101,16 @@ contract DLE is ERC20, ReentrancyGuard { event ProposalCreated(uint256 proposalId, address initiator, string description); event ProposalVoted(uint256 proposalId, address voter, bool support, uint256 votingPower); event ProposalExecuted(uint256 proposalId, bytes operation); - event MultiSigOperationCreated(uint256 operationId, address initiator, bytes32 operationHash); - event MultiSigSigned(uint256 operationId, address signer, bool support, uint256 signaturePower); - event MultiSigExecuted(uint256 operationId, bytes32 operationHash); event ModuleAdded(bytes32 moduleId, address moduleAddress); event ModuleRemoved(bytes32 moduleId); event CrossChainExecutionSync(uint256 proposalId, uint256 fromChainId, uint256 toChainId); event CrossChainVoteSync(uint256 proposalId, uint256 fromChainId, uint256 toChainId); - event CrossChainMultiSigSync(uint256 operationId, uint256 fromChainId, uint256 toChainId); + event ChainAdded(uint256 chainId); + event ChainRemoved(uint256 chainId); + event ChainMerkleRootSet(uint256 chainId, bytes32 merkleRoot); + event DLEInfoUpdated(string name, string symbol, string location, string coordinates, uint256 jurisdiction, uint256 oktmo, string[] okvedCodes, uint256 kpp); + event QuorumPercentageUpdated(uint256 oldQuorumPercentage, uint256 newQuorumPercentage); + event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId); constructor( DLEConfig memory config, @@ -139,6 +135,7 @@ contract DLE is ERC20, ReentrancyGuard { // Настраиваем поддерживаемые цепочки for (uint256 i = 0; i < config.supportedChainIds.length; i++) { supportedChains[config.supportedChainIds[i]] = true; + supportedChainIds.push(config.supportedChainIds[i]); } // Распределяем начальные токены партнерам @@ -237,15 +234,34 @@ contract DLE is ERC20, ReentrancyGuard { uint256 _fromChainId, uint256 _forVotes, uint256 _againstVotes, - bytes memory /* _proof */ + bytes memory _proof ) external { Proposal storage proposal = proposals[_proposalId]; require(proposal.id == _proposalId, "Proposal does not exist"); require(supportedChains[_fromChainId], "Chain not supported"); require(!proposal.chainVoteSynced[_fromChainId], "Already synced"); - // Здесь должна быть проверка proof (для простоты пропускаем) - // В реальной реализации нужно проверять доказательство + // Проверяем доказательство cross-chain синхронизации + require(_proof.length > 0, "Proof required for cross-chain sync"); + + // Проверяем Merkle proof для cross-chain синхронизации + bytes32 proofHash = keccak256(abi.encodePacked(_proposalId, _fromChainId, _forVotes, _againstVotes)); + require(!processedProofs[_proposalId][uint256(proofHash)], "Proof already processed"); + + // Проверяем, что Merkle root для цепочки установлен + bytes32 merkleRoot = chainMerkleRoots[_fromChainId]; + require(merkleRoot != bytes32(0), "Merkle root not set for chain"); + + // Проверяем Merkle proof + bytes32[] memory proof = abi.decode(_proof, (bytes32[])); + require(MerkleProof.verify(proof, merkleRoot, proofHash), "Invalid Merkle proof"); + + // Отмечаем proof как обработанный + processedProofs[_proposalId][uint256(proofHash)] = true; + + // Проверяем, что голоса не превышают общее количество токенов + uint256 totalVotes = _forVotes + _againstVotes; + require(totalVotes <= totalSupply(), "Votes exceed total supply"); proposal.forVotes += _forVotes; proposal.againstVotes += _againstVotes; @@ -281,9 +297,15 @@ contract DLE is ERC20, ReentrancyGuard { Proposal storage proposal = proposals[_proposalId]; require(proposal.id == _proposalId, "Proposal does not exist"); require(!proposal.executed, "Proposal already executed"); - require(block.timestamp >= proposal.deadline, "Voting not ended"); (bool passed, bool quorumReached) = checkProposalResult(_proposalId); + + // Предложение можно выполнить если: + // 1. Дедлайн истек ИЛИ кворум достигнут + require( + block.timestamp >= proposal.deadline || quorumReached, + "Voting not ended and quorum not reached" + ); require(passed && quorumReached, "Proposal not passed"); proposal.executed = true; @@ -294,123 +316,6 @@ contract DLE is ERC20, ReentrancyGuard { emit ProposalExecuted(_proposalId, proposal.operation); } - /** - * @dev Создать мультиподпись операцию - * @param _operationHash Хеш операции - * @param _duration Длительность сбора подписей - */ - function createMultiSigOperation( - bytes32 _operationHash, - uint256 _duration - ) external returns (uint256) { - require(balanceOf(msg.sender) > 0, "Must hold tokens to create operation"); - require(_duration > 0, "Duration must be positive"); - - uint256 operationId = multiSigCounter++; - MultiSigOperation storage operation = multiSigOperations[operationId]; - - operation.operationHash = _operationHash; - operation.forSignatures = 0; - operation.againstSignatures = 0; - operation.executed = false; - operation.deadline = block.timestamp + _duration; - operation.initiator = msg.sender; - - emit MultiSigOperationCreated(operationId, msg.sender, _operationHash); - return operationId; - } - - /** - * @dev Подписать мультиподпись операцию - * @param _operationId ID операции - * @param _support Поддержка операции - */ - function signMultiSigOperation(uint256 _operationId, bool _support) external nonReentrant { - MultiSigOperation storage operation = multiSigOperations[_operationId]; - require(operation.operationHash != bytes32(0), "Operation does not exist"); - require(block.timestamp < operation.deadline, "Signing ended"); - require(!operation.executed, "Operation already executed"); - require(!operation.hasSigned[msg.sender], "Already signed"); - require(balanceOf(msg.sender) > 0, "No tokens to sign"); - - uint256 signaturePower = balanceOf(msg.sender); - operation.hasSigned[msg.sender] = true; - - if (_support) { - operation.forSignatures += signaturePower; - } else { - operation.againstSignatures += signaturePower; - } - - emit MultiSigSigned(_operationId, msg.sender, _support, signaturePower); - } - - /** - * @dev Синхронизировать мультиподпись из другой цепочки - * @param _operationId ID операции - * @param _fromChainId ID цепочки откуда синхронизируем - * @param _forSignatures Подписи за - * @param _againstSignatures Подписи против - */ - function syncMultiSigFromChain( - uint256 _operationId, - uint256 _fromChainId, - uint256 _forSignatures, - uint256 _againstSignatures, - bytes memory /* _proof */ - ) external { - MultiSigOperation storage operation = multiSigOperations[_operationId]; - require(operation.operationHash != bytes32(0), "Operation does not exist"); - require(supportedChains[_fromChainId], "Chain not supported"); - require(!operation.chainSignSynced[_fromChainId], "Already synced"); - - // Здесь должна быть проверка proof - // В реальной реализации нужно проверять доказательство - - operation.forSignatures += _forSignatures; - operation.againstSignatures += _againstSignatures; - operation.chainSignSynced[_fromChainId] = true; - - emit CrossChainMultiSigSync(_operationId, _fromChainId, currentChainId); - } - - /** - * @dev Проверить результат мультиподписи - * @param _operationId ID операции - * @return passed Прошла ли операция - * @return quorumReached Достигнут ли кворум - */ - function checkMultiSigResult(uint256 _operationId) public view returns (bool passed, bool quorumReached) { - MultiSigOperation storage operation = multiSigOperations[_operationId]; - require(operation.operationHash != bytes32(0), "Operation does not exist"); - - uint256 totalSignatures = operation.forSignatures + operation.againstSignatures; - uint256 quorumRequired = (totalSupply() * quorumPercentage) / 100; - - quorumReached = totalSignatures >= quorumRequired; - passed = quorumReached && operation.forSignatures > operation.againstSignatures; - - return (passed, quorumReached); - } - - /** - * @dev Исполнить мультиподпись операцию - * @param _operationId ID операции - */ - function executeMultiSigOperation(uint256 _operationId) external { - MultiSigOperation storage operation = multiSigOperations[_operationId]; - require(operation.operationHash != bytes32(0), "Operation does not exist"); - require(!operation.executed, "Operation already executed"); - require(block.timestamp >= operation.deadline, "Signing not ended"); - - (bool passed, bool quorumReached) = checkMultiSigResult(_operationId); - require(passed && quorumReached, "Operation not passed"); - - operation.executed = true; - - emit MultiSigExecuted(_operationId, operation.operationHash); - } - /** * @dev Синхронизировать исполнение из другой цепочки * @param _proposalId ID предложения @@ -419,18 +324,37 @@ contract DLE is ERC20, ReentrancyGuard { function syncExecutionFromChain( uint256 _proposalId, uint256 _fromChainId, - bytes memory /* _proof */ + bytes memory _proof ) external { require(supportedChains[_fromChainId], "Chain not supported"); require(!executedProposals[_proposalId], "Already executed"); - // Здесь должна быть проверка proof - // В реальной реализации нужно проверять доказательство + // Проверяем доказательство исполнения из другой цепочки + require(_proof.length > 0, "Proof required for cross-chain execution"); + + // Проверяем Merkle proof для cross-chain исполнения + bytes32 proofHash = keccak256(abi.encodePacked(_proposalId, _fromChainId, "EXECUTION")); + require(!processedProofs[_proposalId][uint256(proofHash)], "Proof already processed"); + + // Проверяем, что Merkle root для цепочки установлен + bytes32 merkleRoot = chainMerkleRoots[_fromChainId]; + require(merkleRoot != bytes32(0), "Merkle root not set for chain"); + + // Проверяем Merkle proof + bytes32[] memory proof = abi.decode(_proof, (bytes32[])); + require(MerkleProof.verify(proof, merkleRoot, proofHash), "Invalid Merkle proof"); + + // Отмечаем proof как обработанный + processedProofs[_proposalId][uint256(proofHash)] = true; + + // Проверяем, что предложение существует и не было исполнено + Proposal storage proposal = proposals[_proposalId]; + require(proposal.id == _proposalId, "Proposal does not exist"); + require(!proposal.executed, "Proposal already executed"); executedProposals[_proposalId] = true; - // Получаем операцию из предложения - Proposal storage proposal = proposals[_proposalId]; + // Исполняем операцию из предложения if (proposal.id == _proposalId) { _executeOperation(proposal.operation); } @@ -444,9 +368,19 @@ contract DLE is ERC20, ReentrancyGuard { * @return isAvailable Доступна ли цепочка */ function checkChainConnection(uint256 _chainId) public view returns (bool isAvailable) { - // В реальной реализации здесь должна быть проверка подключения - // Для примера возвращаем true для поддерживаемых цепочек - return supportedChains[_chainId]; + // Проверяем, поддерживается ли цепочка + if (!supportedChains[_chainId]) { + return false; + } + + // Проверяем, что Merkle root установлен для цепочки + // Это означает, что цепочка активна и готова к синхронизации + bytes32 merkleRoot = chainMerkleRoots[_chainId]; + if (merkleRoot == bytes32(0)) { + return false; + } + + return true; } /** @@ -491,30 +425,103 @@ contract DLE is ERC20, ReentrancyGuard { * @param _chainId ID цепочки */ function syncToChain(uint256 _proposalId, uint256 _chainId) internal { - // В реальной реализации здесь будет вызов cross-chain bridge - // Для примера просто эмитим событие + // Проверяем, что цепочка поддерживается + require(supportedChains[_chainId], "Chain not supported"); + + // Получаем информацию о предложении + Proposal storage proposal = proposals[_proposalId]; + require(proposal.id == _proposalId, "Proposal does not exist"); + + // Проверяем, что цепочка готова к синхронизации + require(checkChainConnection(_chainId), "Chain not ready for sync"); + + // Создаем Merkle root для синхронизации + bytes32 syncData = keccak256(abi.encodePacked(_proposalId, currentChainId, proposal.operation)); + + // Обновляем Merkle root для целевой цепочки + chainMerkleRoots[_chainId] = syncData; + + // Эмитим событие для cross-chain bridge emit CrossChainExecutionSync(_proposalId, currentChainId, _chainId); } /** * @dev Получить количество поддерживаемых цепочек */ - function getSupportedChainCount() public pure returns (uint256) { - // В реальной реализации нужно хранить массив поддерживаемых цепочек - // Для примера возвращаем 4 (Ethereum, Polygon, BSC, Arbitrum) - return 4; + function getSupportedChainCount() public view returns (uint256) { + return supportedChainIds.length; } /** * @dev Получить ID поддерживаемой цепочки по индексу * @param _index Индекс цепочки */ - function getSupportedChainId(uint256 _index) public pure returns (uint256) { - if (_index == 0) return 1; // Ethereum - if (_index == 1) return 137; // Polygon - if (_index == 2) return 56; // BSC - if (_index == 3) return 42161; // Arbitrum - revert("Invalid chain index"); + function getSupportedChainId(uint256 _index) public view returns (uint256) { + require(_index < supportedChainIds.length, "Invalid chain index"); + return supportedChainIds[_index]; + } + + /** + * @dev Добавить поддерживаемую цепочку (только для владельцев токенов) + * @param _chainId ID цепочки + */ + function addSupportedChain(uint256 _chainId) external { + require(balanceOf(msg.sender) > 0, "Must hold tokens to add chain"); + require(!supportedChains[_chainId], "Chain already supported"); + require(_chainId != currentChainId, "Cannot add current chain"); + + supportedChains[_chainId] = true; + supportedChainIds.push(_chainId); + + emit ChainAdded(_chainId); + } + + /** + * @dev Удалить поддерживаемую цепочку (только для владельцев токенов) + * @param _chainId ID цепочки + */ + function removeSupportedChain(uint256 _chainId) external { + require(balanceOf(msg.sender) > 0, "Must hold tokens to remove chain"); + require(supportedChains[_chainId], "Chain not supported"); + require(_chainId != currentChainId, "Cannot remove current chain"); + + supportedChains[_chainId] = false; + + // Удаляем из массива + for (uint256 i = 0; i < supportedChainIds.length; i++) { + if (supportedChainIds[i] == _chainId) { + supportedChainIds[i] = supportedChainIds[supportedChainIds.length - 1]; + supportedChainIds.pop(); + break; + } + } + + // Очищаем Merkle root для цепочки + delete chainMerkleRoots[_chainId]; + + emit ChainRemoved(_chainId); + } + + /** + * @dev Установить Merkle root для цепочки (только для владельцев токенов) + * @param _chainId ID цепочки + * @param _merkleRoot Merkle root для цепочки + */ + function setChainMerkleRoot(uint256 _chainId, bytes32 _merkleRoot) external { + require(balanceOf(msg.sender) > 0, "Must hold tokens to set merkle root"); + require(supportedChains[_chainId], "Chain not supported"); + + chainMerkleRoots[_chainId] = _merkleRoot; + + emit ChainMerkleRootSet(_chainId, _merkleRoot); + } + + /** + * @dev Получить Merkle root для цепочки + * @param _chainId ID цепочки + */ + function getChainMerkleRoot(uint256 _chainId) external view returns (bytes32) { + return chainMerkleRoots[_chainId]; } /** @@ -537,6 +544,27 @@ contract DLE is ERC20, ReentrancyGuard { // Операция сжигания токенов (address from, uint256 amount) = abi.decode(data, (address, uint256)); _burn(from, amount); + } else if (selector == bytes4(keccak256("updateDLEInfo(string,string,string,string,uint256,uint256,string[],uint256)"))) { + // Операция обновления информации DLE + (string memory name, string memory symbol, string memory location, string memory coordinates, + uint256 jurisdiction, uint256 oktmo, string[] memory okvedCodes, uint256 kpp) = abi.decode(data, (string, string, string, string, uint256, uint256, string[], uint256)); + _updateDLEInfo(name, symbol, location, coordinates, jurisdiction, oktmo, okvedCodes, kpp); + } else if (selector == bytes4(keccak256("updateQuorumPercentage(uint256)"))) { + // Операция обновления процента кворума + (uint256 newQuorumPercentage) = abi.decode(data, (uint256)); + _updateQuorumPercentage(newQuorumPercentage); + } else if (selector == bytes4(keccak256("updateCurrentChainId(uint256)"))) { + // Операция обновления текущей цепочки + (uint256 newChainId) = abi.decode(data, (uint256)); + _updateCurrentChainId(newChainId); + } else if (selector == bytes4(keccak256("_addModule(bytes32,address)"))) { + // Операция добавления модуля + (bytes32 moduleId, address moduleAddress) = abi.decode(data, (bytes32, address)); + _addModule(moduleId, moduleAddress); + } else if (selector == bytes4(keccak256("_removeModule(bytes32)"))) { + // Операция удаления модуля + (bytes32 moduleId) = abi.decode(data, (bytes32)); + _removeModule(moduleId); } else { // Неизвестная операция revert("Unknown operation"); @@ -544,12 +572,156 @@ contract DLE is ERC20, ReentrancyGuard { } /** - * @dev Добавить модуль + * @dev Обновить информацию DLE + * @param _name Новое название + * @param _symbol Новый символ + * @param _location Новое местонахождение + * @param _coordinates Новые координаты + * @param _jurisdiction Новая юрисдикция + * @param _oktmo Новый ОКТМО + * @param _okvedCodes Новые коды ОКВЭД + * @param _kpp Новый КПП + */ + function _updateDLEInfo( + string memory _name, + string memory _symbol, + string memory _location, + string memory _coordinates, + uint256 _jurisdiction, + uint256 _oktmo, + string[] memory _okvedCodes, + uint256 _kpp + ) internal { + require(bytes(_name).length > 0, "Name cannot be empty"); + require(bytes(_symbol).length > 0, "Symbol cannot be empty"); + require(bytes(_location).length > 0, "Location cannot be empty"); + require(_jurisdiction > 0, "Invalid jurisdiction"); + require(_oktmo > 0, "Invalid OKTMO"); + require(_kpp > 0, "Invalid KPP"); + + dleInfo.name = _name; + dleInfo.symbol = _symbol; + dleInfo.location = _location; + dleInfo.coordinates = _coordinates; + dleInfo.jurisdiction = _jurisdiction; + dleInfo.oktmo = _oktmo; + dleInfo.okvedCodes = _okvedCodes; + dleInfo.kpp = _kpp; + + emit DLEInfoUpdated(_name, _symbol, _location, _coordinates, _jurisdiction, _oktmo, _okvedCodes, _kpp); + } + + /** + * @dev Обновить процент кворума + * @param _newQuorumPercentage Новый процент кворума + */ + function _updateQuorumPercentage(uint256 _newQuorumPercentage) internal { + require(_newQuorumPercentage > 0 && _newQuorumPercentage <= 100, "Invalid quorum percentage"); + + uint256 oldQuorumPercentage = quorumPercentage; + quorumPercentage = _newQuorumPercentage; + + emit QuorumPercentageUpdated(oldQuorumPercentage, _newQuorumPercentage); + } + + /** + * @dev Обновить текущую цепочку + * @param _newChainId Новый ID цепочки + */ + function _updateCurrentChainId(uint256 _newChainId) internal { + require(supportedChains[_newChainId], "Chain not supported"); + require(_newChainId != currentChainId, "Same chain ID"); + + uint256 oldChainId = currentChainId; + currentChainId = _newChainId; + + emit CurrentChainIdUpdated(oldChainId, _newChainId); + } + + /** + * @dev Создать предложение о добавлении модуля + * @param _description Описание предложения + * @param _duration Длительность голосования в секундах + * @param _moduleId ID модуля + * @param _moduleAddress Адрес модуля + * @param _chainId ID цепочки для голосования + */ + function createAddModuleProposal( + string memory _description, + uint256 _duration, + bytes32 _moduleId, + address _moduleAddress, + uint256 _chainId + ) external returns (uint256) { + require(supportedChains[_chainId], "Chain not supported"); + require(checkChainConnection(_chainId), "Chain not available"); + require(_moduleAddress != address(0), "Zero address"); + require(!activeModules[_moduleId], "Module already exists"); + require(balanceOf(msg.sender) > 0, "Must hold tokens to create proposal"); + + uint256 proposalId = proposalCounter++; + + Proposal storage proposal = proposals[proposalId]; + proposal.id = proposalId; + proposal.description = _description; + proposal.deadline = block.timestamp + _duration; + proposal.initiator = msg.sender; + + // Кодируем операцию добавления модуля + bytes memory operation = abi.encodeWithSelector( + bytes4(keccak256("_addModule(bytes32,address)")), + _moduleId, + _moduleAddress + ); + proposal.operation = operation; + + emit ProposalCreated(proposalId, msg.sender, _description); + return proposalId; + } + + /** + * @dev Создать предложение об удалении модуля + * @param _description Описание предложения + * @param _duration Длительность голосования в секундах + * @param _moduleId ID модуля + * @param _chainId ID цепочки для голосования + */ + function createRemoveModuleProposal( + string memory _description, + uint256 _duration, + bytes32 _moduleId, + uint256 _chainId + ) external returns (uint256) { + require(supportedChains[_chainId], "Chain not supported"); + require(checkChainConnection(_chainId), "Chain not available"); + require(activeModules[_moduleId], "Module does not exist"); + require(balanceOf(msg.sender) > 0, "Must hold tokens to create proposal"); + + uint256 proposalId = proposalCounter++; + + Proposal storage proposal = proposals[proposalId]; + proposal.id = proposalId; + proposal.description = _description; + proposal.deadline = block.timestamp + _duration; + proposal.initiator = msg.sender; + + // Кодируем операцию удаления модуля + bytes memory operation = abi.encodeWithSelector( + bytes4(keccak256("_removeModule(bytes32)")), + _moduleId + ); + proposal.operation = operation; + + emit ProposalCreated(proposalId, msg.sender, _description); + return proposalId; + } + + /** + * @dev Добавить модуль (внутренняя функция, вызывается через кворум) * @param _moduleId ID модуля * @param _moduleAddress Адрес модуля */ - function addModule(bytes32 _moduleId, address _moduleAddress) external { - require(balanceOf(msg.sender) > 0, "Must hold tokens to add module"); + function _addModule(bytes32 _moduleId, address _moduleAddress) internal { require(_moduleAddress != address(0), "Zero address"); require(!activeModules[_moduleId], "Module already exists"); @@ -560,11 +732,10 @@ contract DLE is ERC20, ReentrancyGuard { } /** - * @dev Удалить модуль + * @dev Удалить модуль (внутренняя функция, вызывается через кворум) * @param _moduleId ID модуля */ - function removeModule(bytes32 _moduleId) external { - require(balanceOf(msg.sender) > 0, "Must hold tokens to remove module"); + function _removeModule(bytes32 _moduleId) internal { require(activeModules[_moduleId], "Module does not exist"); delete modules[_moduleId]; @@ -613,4 +784,190 @@ contract DLE is ERC20, ReentrancyGuard { // События для новых функций event SyncCompleted(uint256 proposalId); + event DLEDeactivated(address indexed deactivatedBy, uint256 timestamp); + event DeactivationProposalCreated(uint256 proposalId, address indexed initiator, string description); + event DeactivationProposalVoted(uint256 proposalId, address indexed voter, bool support, uint256 votingPower); + event DeactivationProposalExecuted(uint256 proposalId, address indexed executedBy); + + // Структура для предложения деактивации + struct DeactivationProposal { + uint256 id; + string description; + uint256 forVotes; + uint256 againstVotes; + bool executed; + uint256 deadline; + address initiator; + uint256 chainId; + mapping(address => bool) hasVoted; + } + + // Предложения деактивации + mapping(uint256 => DeactivationProposal) public deactivationProposals; + uint256 public deactivationProposalCounter; + bool public isDeactivated; + + /** + * @dev Создать предложение о деактивации DLE + * @param _description Описание предложения + * @param _duration Длительность голосования в секундах + * @param _chainId ID цепочки для деактивации + */ + function createDeactivationProposal( + string memory _description, + uint256 _duration, + uint256 _chainId + ) external returns (uint256) { + require(!isDeactivated, "DLE already deactivated"); + require(balanceOf(msg.sender) > 0, "Must hold tokens to create deactivation proposal"); + require(_duration > 0, "Duration must be positive"); + require(supportedChains[_chainId], "Chain not supported"); + + uint256 proposalId = deactivationProposalCounter++; + DeactivationProposal storage proposal = deactivationProposals[proposalId]; + + proposal.id = proposalId; + proposal.description = _description; + proposal.forVotes = 0; + proposal.againstVotes = 0; + proposal.executed = false; + proposal.deadline = block.timestamp + _duration; + proposal.initiator = msg.sender; + proposal.chainId = _chainId; + + emit DeactivationProposalCreated(proposalId, msg.sender, _description); + return proposalId; + } + + /** + * @dev Голосовать за предложение деактивации + * @param _proposalId ID предложения + * @param _support Поддержка предложения + */ + function voteDeactivation(uint256 _proposalId, bool _support) external nonReentrant { + DeactivationProposal storage proposal = deactivationProposals[_proposalId]; + require(proposal.id == _proposalId, "Deactivation proposal does not exist"); + require(block.timestamp < proposal.deadline, "Voting ended"); + require(!proposal.executed, "Proposal already executed"); + require(!proposal.hasVoted[msg.sender], "Already voted"); + require(balanceOf(msg.sender) > 0, "No tokens to vote"); + + uint256 votingPower = balanceOf(msg.sender); + + if (_support) { + proposal.forVotes += votingPower; + } else { + proposal.againstVotes += votingPower; + } + + proposal.hasVoted[msg.sender] = true; + + emit DeactivationProposalVoted(_proposalId, msg.sender, _support, votingPower); + } + + /** + * @dev Проверить результат предложения деактивации + * @param _proposalId ID предложения + */ + function checkDeactivationProposalResult(uint256 _proposalId) public view returns (bool passed, bool quorumReached) { + DeactivationProposal storage proposal = deactivationProposals[_proposalId]; + require(proposal.id == _proposalId, "Deactivation proposal does not exist"); + + uint256 totalVotes = proposal.forVotes + proposal.againstVotes; + uint256 totalSupply = totalSupply(); + + quorumReached = totalVotes >= (totalSupply * quorumPercentage) / 100; + passed = quorumReached && proposal.forVotes > proposal.againstVotes; + + return (passed, quorumReached); + } + + /** + * @dev Исполнить предложение деактивации + * @param _proposalId ID предложения + */ + function executeDeactivationProposal(uint256 _proposalId) external { + DeactivationProposal storage proposal = deactivationProposals[_proposalId]; + require(proposal.id == _proposalId, "Deactivation proposal does not exist"); + require(!proposal.executed, "Proposal already executed"); + require(block.timestamp >= proposal.deadline, "Voting not ended"); + + (bool passed, bool quorumReached) = checkDeactivationProposalResult(_proposalId); + require(quorumReached, "Quorum not reached"); + require(passed, "Proposal not passed"); + + proposal.executed = true; + isDeactivated = true; + dleInfo.isActive = false; + + emit DeactivationProposalExecuted(_proposalId, msg.sender); + emit DLEDeactivated(msg.sender, block.timestamp); + } + + /** + * @dev Деактивировать DLE напрямую (только при достижении кворума) + * Может быть вызвана только если есть активное предложение деактивации с достигнутым кворумом + */ + function deactivate() external { + require(!isDeactivated, "DLE already deactivated"); + require(balanceOf(msg.sender) > 0, "Must hold tokens to deactivate DLE"); + + // Проверяем, есть ли активное предложение деактивации с достигнутым кворумом + bool hasValidDeactivationProposal = false; + + for (uint256 i = 0; i < deactivationProposalCounter; i++) { + DeactivationProposal storage proposal = deactivationProposals[i]; + if (!proposal.executed && block.timestamp >= proposal.deadline) { + (bool passed, bool quorumReached) = checkDeactivationProposalResult(i); + if (quorumReached && passed) { + hasValidDeactivationProposal = true; + proposal.executed = true; + break; + } + } + } + + require(hasValidDeactivationProposal, "No valid deactivation proposal with quorum"); + + isDeactivated = true; + dleInfo.isActive = false; + + emit DLEDeactivated(msg.sender, block.timestamp); + } + + /** + * @dev Проверить, деактивирован ли DLE + */ + function isActive() external view returns (bool) { + return !isDeactivated && dleInfo.isActive; + } + + /** + * @dev Получить информацию о предложении деактивации + * @param _proposalId ID предложения + */ + function getDeactivationProposal(uint256 _proposalId) external view returns ( + uint256 id, + string memory description, + uint256 forVotes, + uint256 againstVotes, + bool executed, + uint256 deadline, + address initiator, + uint256 chainId + ) { + DeactivationProposal storage proposal = deactivationProposals[_proposalId]; + require(proposal.id == _proposalId, "Deactivation proposal does not exist"); + + return ( + proposal.id, + proposal.description, + proposal.forVotes, + proposal.againstVotes, + proposal.executed, + proposal.deadline, + proposal.initiator, + proposal.chainId + ); + } } \ No newline at end of file diff --git a/backend/db/migrations/049_add_message_id_encrypted.sql b/backend/db/migrations/049_add_message_id_encrypted.sql new file mode 100644 index 0000000..aa2fa5a --- /dev/null +++ b/backend/db/migrations/049_add_message_id_encrypted.sql @@ -0,0 +1,9 @@ +-- Миграция: добавление зашифрованной колонки message_id_encrypted в таблицу messages +-- Для хранения Message-ID email писем для дедупликации + +ALTER TABLE messages ADD COLUMN IF NOT EXISTS message_id_encrypted TEXT NULL; + +-- Создаем индекс для быстрого поиска по message_id (если нужно будет в будущем) +-- CREATE INDEX IF NOT EXISTS idx_messages_message_id_encrypted ON messages(message_id_encrypted); + +COMMENT ON COLUMN messages.message_id_encrypted IS 'Зашифрованный Message-ID email письма для дедупликации'; diff --git a/backend/routes/ai-queue.js b/backend/routes/ai-queue.js index 6513615..e539a97 100644 --- a/backend/routes/ai-queue.js +++ b/backend/routes/ai-queue.js @@ -49,7 +49,6 @@ router.post('/task', requireAuth, async (req, res) => { const taskData = { message, - language: language || 'auto', history: history || null, systemPrompt: systemPrompt || '', rules: rules || null, diff --git a/backend/routes/blockchain.js b/backend/routes/blockchain.js index 77db039..059d80a 100644 --- a/backend/routes/blockchain.js +++ b/backend/routes/blockchain.js @@ -77,6 +77,7 @@ router.post('/read-dle-info', async (req, res) => { const blockchainData = { name: dleInfo.name, symbol: dleInfo.symbol, + dleAddress: dleAddress, // Добавляем адрес контракта location: dleInfo.location, coordinates: dleInfo.coordinates, jurisdiction: Number(dleInfo.jurisdiction), @@ -400,6 +401,309 @@ router.post('/get-proposal-info', async (req, res) => { +// Проверка возможности деактивации DLE +router.post('/deactivate-dle', async (req, res) => { + try { + const { dleAddress, userAddress } = req.body; + + if (!dleAddress || !userAddress) { + return res.status(400).json({ + success: false, + error: 'Адрес DLE и адрес пользователя обязательны' + }); + } + + console.log(`[Blockchain] Проверка возможности деактивации DLE: ${dleAddress} пользователем: ${userAddress}`); + + // Получаем RPC URL для Sepolia + const rpcUrl = await rpcProviderService.getRpcUrlByChainId(11155111); + if (!rpcUrl) { + return res.status(500).json({ + success: false, + error: 'RPC URL для Sepolia не найден' + }); + } + + const provider = new ethers.JsonRpcProvider(rpcUrl); + + // ABI для проверки деактивации DLE + const dleAbi = [ + "function isActive() external view returns (bool)", + "function balanceOf(address) external view returns (uint256)" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, provider); + + // Проверяем, что пользователь имеет токены + const balance = await dle.balanceOf(userAddress); + if (balance <= 0) { + return res.status(403).json({ + success: false, + error: 'Для деактивации DLE необходимо иметь токены' + }); + } + + // Проверяем текущий статус + const isActive = await dle.isActive(); + if (!isActive) { + return res.status(400).json({ + success: false, + error: 'DLE уже деактивирован' + }); + } + + console.log(`[Blockchain] DLE ${dleAddress} может быть деактивирован пользователем ${userAddress}`); + + res.json({ + success: true, + data: { + dleAddress: dleAddress, + canDeactivate: true, + message: 'DLE может быть деактивирован при наличии валидного предложения с кворумом.' + } + }); + + } catch (error) { + console.error('[Blockchain] Ошибка при проверке возможности деактивации DLE:', error); + res.status(500).json({ + success: false, + error: 'Ошибка при проверке возможности деактивации DLE: ' + error.message + }); + } +}); + +// Проверить результат предложения деактивации +router.post('/check-deactivation-proposal-result', async (req, res) => { + try { + const { dleAddress, proposalId } = req.body; + + if (!dleAddress || proposalId === undefined) { + return res.status(400).json({ + success: false, + error: 'Адрес DLE и ID предложения обязательны' + }); + } + + console.log(`[Blockchain] Проверка результата предложения деактивации: ${proposalId} для DLE: ${dleAddress}`); + + const rpcUrl = await rpcProviderService.getRpcUrlByChainId(11155111); + if (!rpcUrl) { + return res.status(500).json({ + success: false, + error: 'RPC URL для Sepolia не найден' + }); + } + + const provider = new ethers.JsonRpcProvider(rpcUrl); + + const dleAbi = [ + "function checkDeactivationProposalResult(uint256 _proposalId) public view returns (bool passed, bool quorumReached)" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, provider); + + const [passed, quorumReached] = await dle.checkDeactivationProposalResult(proposalId); + + const result = { + proposalId: proposalId, + passed: passed, + quorumReached: quorumReached, + canExecute: passed && quorumReached + }; + + console.log(`[Blockchain] Результат предложения деактивации:`, result); + + res.json({ + success: true, + data: result + }); + + } catch (error) { + console.error('[Blockchain] Ошибка при проверке результата предложения деактивации:', error); + res.status(500).json({ + success: false, + error: 'Ошибка при проверке результата предложения деактивации: ' + error.message + }); + } +}); + +// Загрузить предложения деактивации +router.post('/load-deactivation-proposals', async (req, res) => { + try { + const { dleAddress } = req.body; + + if (!dleAddress) { + return res.status(400).json({ + success: false, + error: 'Адрес DLE обязателен' + }); + } + + console.log(`[Blockchain] Загрузка предложений деактивации для DLE: ${dleAddress}`); + + const rpcUrl = await rpcProviderService.getRpcUrlByChainId(11155111); + if (!rpcUrl) { + return res.status(500).json({ + success: false, + error: 'RPC URL для Sepolia не найден' + }); + } + + const provider = new ethers.JsonRpcProvider(rpcUrl); + + const dleAbi = [ + "function deactivationProposalCounter() external view returns (uint256)", + "function getDeactivationProposal(uint256 _proposalId) external view returns (uint256 id, string memory description, uint256 forVotes, uint256 againstVotes, bool executed, uint256 deadline, address initiator, uint256 chainId)" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, provider); + + const proposalCounter = await dle.deactivationProposalCounter(); + const proposals = []; + + for (let i = 0; i < proposalCounter; i++) { + try { + const proposal = await dle.getDeactivationProposal(i); + proposals.push({ + id: Number(proposal.id), + description: proposal.description, + forVotes: ethers.formatUnits(proposal.forVotes, 18), + againstVotes: ethers.formatUnits(proposal.againstVotes, 18), + executed: proposal.executed, + deadline: Number(proposal.deadline), + initiator: proposal.initiator, + chainId: Number(proposal.chainId), + isExpired: Date.now() / 1000 > Number(proposal.deadline) + }); + } catch (error) { + console.error(`[Blockchain] Ошибка при загрузке предложения ${i}:`, error); + } + } + + console.log(`[Blockchain] Загружено ${proposals.length} предложений деактивации`); + + res.json({ + success: true, + data: { + proposals: proposals + } + }); + + } catch (error) { + console.error('[Blockchain] Ошибка при загрузке предложений деактивации:', error); + res.status(500).json({ + success: false, + error: 'Ошибка при загрузке предложений деактивации: ' + error.message + }); + } +}); + +// Создать предложение о добавлении модуля +router.post('/create-add-module-proposal', async (req, res) => { + try { + const { dleAddress, description, duration, moduleId, moduleAddress, chainId } = req.body; + + if (!dleAddress || !description || !duration || !moduleId || !moduleAddress || !chainId) { + return res.status(400).json({ + success: false, + error: 'Все поля обязательны' + }); + } + + console.log(`[Blockchain] Создание предложения о добавлении модуля: ${moduleId} для DLE: ${dleAddress}`); + + const rpcUrl = await rpcProviderService.getRpcUrlByChainId(11155111); + if (!rpcUrl) { + return res.status(500).json({ + success: false, + error: 'RPC URL для Sepolia не найден' + }); + } + + const provider = new ethers.JsonRpcProvider(rpcUrl); + + const dleAbi = [ + "function createAddModuleProposal(string memory _description, uint256 _duration, bytes32 _moduleId, address _moduleAddress, uint256 _chainId) external returns (uint256)" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, provider); + + // Создаем предложение + const tx = await dle.createAddModuleProposal(description, duration, moduleId, moduleAddress, chainId); + const receipt = await tx.wait(); + + console.log(`[Blockchain] Предложение о добавлении модуля создано:`, receipt); + + res.json({ + success: true, + data: { + proposalId: receipt.logs[0].args.proposalId, + transactionHash: receipt.hash + } + }); + + } catch (error) { + console.error('[Blockchain] Ошибка при создании предложения о добавлении модуля:', error); + res.status(500).json({ + success: false, + error: 'Ошибка при создании предложения о добавлении модуля: ' + error.message + }); + } +}); + +// Создать предложение об удалении модуля +router.post('/create-remove-module-proposal', async (req, res) => { + try { + const { dleAddress, description, duration, moduleId, chainId } = req.body; + + if (!dleAddress || !description || !duration || !moduleId || !chainId) { + return res.status(400).json({ + success: false, + error: 'Все поля обязательны' + }); + } + + console.log(`[Blockchain] Создание предложения об удалении модуля: ${moduleId} для DLE: ${dleAddress}`); + + const rpcUrl = await rpcProviderService.getRpcUrlByChainId(11155111); + if (!rpcUrl) { + return res.status(500).json({ + success: false, + error: 'RPC URL для Sepolia не найден' + }); + } + + const provider = new ethers.JsonRpcProvider(rpcUrl); + + const dleAbi = [ + "function createRemoveModuleProposal(string memory _description, uint256 _duration, bytes32 _moduleId, uint256 _chainId) external returns (uint256)" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, provider); + + // Создаем предложение + const tx = await dle.createRemoveModuleProposal(description, duration, moduleId, chainId); + const receipt = await tx.wait(); + + console.log(`[Blockchain] Предложение об удалении модуля создано:`, receipt); + + res.json({ + success: true, + data: { + proposalId: receipt.logs[0].args.proposalId, + transactionHash: receipt.hash + } + }); + + } catch (error) { + console.error('[Blockchain] Ошибка при создании предложения об удалении модуля:', error); + res.status(500).json({ + success: false, + error: 'Ошибка при создании предложения об удалении модуля: ' + error.message + }); + } +}); + // Импортируем WebSocket функции из wsHub const { broadcastProposalCreated, broadcastProposalVoted, broadcastProposalExecuted } = require('../wsHub'); diff --git a/backend/routes/chat.js b/backend/routes/chat.js index 92e9f6f..a76cbc5 100644 --- a/backend/routes/chat.js +++ b/backend/routes/chat.js @@ -171,12 +171,9 @@ async function processGuestMessages(userId, guestId) { role: msg.sender_type === 'user' ? 'user' : 'assistant', content: msg.content })); - // Язык guestMessage.language или auto - const detectedLanguage = guestMessage.language === 'auto' ? aiAssistant.detectLanguage(guestMessage.content) : guestMessage.language; logger.info('Getting AI response for guest message:', guestMessage.content); const aiResponseContent = await aiAssistant.getResponse( guestMessage.content, - detectedLanguage, history, aiSettings ? aiSettings.system_prompt : '', rules ? rules.rules : null @@ -310,7 +307,7 @@ router.post('/guest-message', upload.array('attachments'), async (req, res) => { [ guestId, messageContent, // Текст сообщения или NULL - language || 'auto', + 'ru', // Устанавливаем русский язык по умолчанию attachmentFilename, attachmentMimetype, attachmentSize, @@ -511,7 +508,14 @@ router.post('/message', requireAuth, upload.array('attachments'), async (req, re if (aiSettings && aiSettings.rules_id) { rules = await aiAssistantRulesService.getRuleById(aiSettings.rules_id); } - // --- RAG автоответ --- + // --- RAG автоответ с поддержкой беседы --- + // Пример работы: + // 1. Пользователь: "Как подключить кошелек?" + // RAG: находит точный ответ → возвращает его + // 2. Пользователь: "А какие документы нужны?" + // RAG: анализирует контекст предыдущего ответа → ищет информацию о документах + // 3. Пользователь: "Сколько это займет времени?" + // RAG: использует полный контекст беседы → дает уточненный ответ let ragTableId = null; if (aiSettings && aiSettings.selected_rag_tables) { ragTableId = Array.isArray(aiSettings.selected_rag_tables) @@ -520,11 +524,29 @@ router.post('/message', requireAuth, upload.array('attachments'), async (req, re } let ragResult = null; if (ragTableId) { - const { ragAnswer, generateLLMResponse } = require('../services/ragService'); - const threshold = 0.3; - logger.info(`[RAG] Запуск поиска по RAG: tableId=${ragTableId}, вопрос="${messageContent}", threshold=${threshold}`); - const ragResult = await ragAnswer({ tableId: ragTableId, userQuestion: messageContent, threshold }); + const { ragAnswerWithConversation, generateLLMResponse } = require('../services/ragService'); + const threshold = 200; // Увеличиваем threshold для более широкого поиска + + // Получаем историю беседы + const historyResult = await db.getQuery()( + 'SELECT decrypt_text(sender_type_encrypted, $3) as sender_type, decrypt_text(content_encrypted, $3) as content FROM messages WHERE conversation_id = $1 AND id < $2 ORDER BY created_at DESC LIMIT 10', + [conversationId, userMessage.id, encryptionKey] + ); + const history = historyResult.rows.reverse().map(msg => ({ + role: msg.sender_type === 'user' ? 'user' : 'assistant', + content: msg.content + })); + + logger.info(`[RAG] Запуск поиска по RAG с беседой: tableId=${ragTableId}, вопрос="${messageContent}", threshold=${threshold}, historyLength=${history.length}`); + const ragResult = await ragAnswerWithConversation({ + tableId: ragTableId, + userQuestion: messageContent, + threshold, + history, + conversationId + }); logger.info(`[RAG] Результат поиска по RAG:`, ragResult); + logger.info(`[RAG] Score type: ${typeof ragResult.score}, value: ${ragResult.score}, threshold: ${threshold}, isFollowUp: ${ragResult.isFollowUp}`); if (ragResult && ragResult.answer && typeof ragResult.score === 'number' && Math.abs(ragResult.score) <= threshold) { logger.info(`[RAG] Найден confident-ответ (score=${ragResult.score}), отправляем ответ из базы.`); // Прямой ответ из RAG @@ -542,15 +564,7 @@ router.post('/message', requireAuth, upload.array('attachments'), async (req, re broadcastChatMessage(aiMessage); } else if (ragResult) { logger.info(`[RAG] Нет confident-ответа (score=${ragResult.score}), переходим к генерации через LLM.`); - // Генерация через LLM с подстановкой значений из RAG - const historyResult = await db.getQuery()( - 'SELECT decrypt_text(sender_type_encrypted, $3) as sender_type, decrypt_text(content_encrypted, $3) as content FROM messages WHERE conversation_id = $1 AND id < $2 ORDER BY created_at DESC LIMIT 10', - [conversationId, userMessage.id, encryptionKey] - ); - const history = historyResult.rows.reverse().map(msg => ({ - role: msg.sender_type === 'user' ? 'user' : 'assistant', - content: msg.content - })); + // Генерация через LLM с подстановкой значений из RAG и историей беседы const llmResponse = await generateLLMResponse({ userQuestion: messageContent, context: ragResult.context, @@ -558,9 +572,8 @@ router.post('/message', requireAuth, upload.array('attachments'), async (req, re clarifyingAnswer: ragResult.clarifyingAnswer, objectionAnswer: ragResult.objectionAnswer, systemPrompt: aiSettings ? aiSettings.system_prompt : '', - history, - model: aiSettings ? aiSettings.model : undefined, - language: aiSettings && aiSettings.languages && aiSettings.languages.length > 0 ? aiSettings.languages[0] : 'ru' + history: ragResult.conversationContext ? ragResult.conversationContext.conversationHistory : history, + model: aiSettings ? aiSettings.model : undefined }); if (llmResponse) { aiMessage = await encryptedDb.saveData('messages', { @@ -824,7 +837,6 @@ router.post('/message-queued', requireAuth, upload.array('attachments'), async ( // Добавляем задачу в очередь const taskData = { message: messageContent, - language: language || 'auto', history: history, systemPrompt: aiSettings ? aiSettings.system_prompt : '', rules: rules, @@ -927,7 +939,10 @@ router.get('/history', requireAuth, async (req, res) => { whereConditions.conversation_id = conversationId; } - const messages = await encryptedDb.getData('messages', whereConditions, limit, 'created_at ASC', offset); + // Изменяем логику: загружаем ПОСЛЕДНИЕ сообщения, а не с offset + const messages = await encryptedDb.getData('messages', whereConditions, limit, 'created_at DESC', 0); + // Переворачиваем массив для правильного порядка + messages.reverse(); // Обрабатываем результаты для фронтенда const formattedMessages = messages.map(msg => { @@ -1057,7 +1072,6 @@ router.post('/ai-draft', requireAuth, async (req, res) => { logger.info(`[RAG] [DRAFT] Результат поиска по RAG:`, ragResult); } const { generateLLMResponse } = require('../services/ragService'); - const detectedLanguage = language === 'auto' ? aiAssistant.detectLanguage(promptText) : language; const aiResponseContent = await generateLLMResponse({ userQuestion: promptText, context: ragResult && ragResult.context ? ragResult.context : '', @@ -1065,7 +1079,6 @@ router.post('/ai-draft', requireAuth, async (req, res) => { systemPrompt: aiSettings ? aiSettings.system_prompt : '', history, model: aiSettings ? aiSettings.model : undefined, - language: aiSettings && aiSettings.languages && aiSettings.languages.length > 0 ? aiSettings.languages[0] : 'ru', rules: rules ? rules.rules : null }); res.json({ success: true, aiMessage: aiResponseContent }); diff --git a/backend/routes/settings.js b/backend/routes/settings.js index 21eed3b..0a775cd 100644 --- a/backend/routes/settings.js +++ b/backend/routes/settings.js @@ -27,6 +27,7 @@ const telegramBot = require('../services/telegramBot'); const EmailBotService = require('../services/emailBot'); const emailBotService = new EmailBotService(); const dbSettingsService = require('../services/dbSettingsService'); +const { broadcastAuthTokenAdded, broadcastAuthTokenDeleted, broadcastAuthTokenUpdated } = require('../wsHub'); // Логируем версию ethers для отладки logger.info(`Ethers version: ${ethers.version || 'unknown'}`); @@ -163,6 +164,16 @@ router.post('/auth-tokens', requireAdmin, async (req, res, next) => { return res.status(400).json({ success: false, error: 'Неверный формат данных' }); } await authTokenService.saveAllAuthTokens(authTokens); + + // После сохранения токенов перепроверяем баланс ВСЕХ авторизованных пользователей + const authService = require('../services/auth-service'); + try { + await authService.recheckAllUsersAdminStatus(); + logger.info('Балансы всех пользователей перепроверены после сохранения токенов'); + } catch (balanceError) { + logger.error(`Ошибка при перепроверке балансов всех пользователей: ${balanceError.message}`); + } + res.json({ success: true, message: 'Токены аутентификации успешно сохранены' }); } catch (error) { logger.error('Ошибка при сохранении токенов аутентификации:', error); @@ -178,6 +189,24 @@ router.post('/auth-token', requireAdmin, async (req, res, next) => { return res.status(400).json({ success: false, error: 'name, address и network обязательны' }); } await authTokenService.upsertAuthToken({ name, address, network, minBalance }); + + // Отправляем WebSocket уведомление о добавлении токена + try { + broadcastAuthTokenAdded({ name, address, network, minBalance }); + logger.info('WebSocket уведомление о добавлении токена отправлено'); + } catch (wsError) { + logger.error(`Ошибка при отправке WebSocket уведомления: ${wsError.message}`); + } + + // После добавления токена перепроверяем баланс ВСЕХ авторизованных пользователей + const authService = require('../services/auth-service'); + try { + await authService.recheckAllUsersAdminStatus(); + logger.info('Балансы всех пользователей перепроверены после добавления токена'); + } catch (balanceError) { + logger.error(`Ошибка при перепроверке балансов всех пользователей: ${balanceError.message}`); + } + res.json({ success: true, message: 'Токен аутентификации сохранён' }); } catch (error) { logger.error('Ошибка при сохранении токена аутентификации:', error); @@ -190,6 +219,24 @@ router.delete('/auth-token/:address/:network', requireAdmin, async (req, res, ne try { const { address, network } = req.params; await authTokenService.deleteAuthToken(address, network); + + // Отправляем WebSocket уведомление об удалении токена + try { + broadcastAuthTokenDeleted({ address, network }); + logger.info('WebSocket уведомление об удалении токена отправлено'); + } catch (wsError) { + logger.error(`Ошибка при отправке WebSocket уведомления: ${wsError.message}`); + } + + // После удаления токена перепроверяем баланс ВСЕХ авторизованных пользователей + const authService = require('../services/auth-service'); + try { + await authService.recheckAllUsersAdminStatus(); + logger.info('Балансы всех пользователей перепроверены после удаления токена'); + } catch (balanceError) { + logger.error(`Ошибка при перепроверке балансов всех пользователей: ${balanceError.message}`); + } + res.json({ success: true, message: 'Токен аутентификации удалён' }); } catch (error) { logger.error('Ошибка при удалении токена аутентификации:', error); diff --git a/backend/services/ai-assistant.js b/backend/services/ai-assistant.js index 29df701..19770a6 100644 --- a/backend/services/ai-assistant.js +++ b/backend/services/ai-assistant.js @@ -70,43 +70,50 @@ class AIAssistant { } // Создание экземпляра ChatOllama с нужными параметрами - createChat(language = 'ru', customSystemPrompt = '') { + createChat(customSystemPrompt = '') { // Используем кастомный системный промпт, если он передан, иначе используем дефолтный let systemPrompt = customSystemPrompt; if (!systemPrompt) { - systemPrompt = language === 'ru' - ? 'Вы - полезный ассистент. Отвечайте на русском языке кратко и по делу.' - : 'You are a helpful assistant. Respond in English briefly and to the point.'; + systemPrompt = 'Вы - полезный ассистент. Отвечайте на русском языке кратко и по делу.'; } return new ChatOllama({ baseUrl: this.baseUrl, model: this.defaultModel, system: systemPrompt, - temperature: 0.3, // Уменьшаем для более предсказуемых ответов - maxTokens: 100, // Еще больше уменьшаем для быстрого ответа - timeout: 60000, // Увеличиваем таймаут до 60 секунд + temperature: 0.7, // Восстанавливаем для более творческих ответов + maxTokens: 2048, // Восстанавливаем для полных ответов + timeout: 300000, // 5 минут для качественной обработки + numCtx: 4096, // Увеличиваем контекст для лучшего понимания + numGpu: 1, // Используем GPU + numThread: 8, // Оптимальное количество потоков + repeatPenalty: 1.1, // Штраф за повторения + topK: 40, // Разнообразие ответов + topP: 0.9, // Ядерная выборка + tfsZ: 1, // Tail free sampling + mirostat: 2, // Mirostat 2.0 для контроля качества + mirostatTau: 5, // Целевая перплексия + mirostatEta: 0.1, // Скорость адаптации + grammar: '', // Грамматика (если нужна) + seed: -1, // Случайный сид + numPredict: -1, // Неограниченная длина + stop: [], // Стоп-слова + stream: false, // Без стриминга для стабильности options: { - num_ctx: 512, // Еще больше уменьшаем контекст для экономии памяти - num_thread: 12, // Увеличиваем количество потоков еще больше - num_gpu: 1, - num_gqa: 8, - rope_freq_base: 1000000, - rope_freq_scale: 0.5, - repeat_penalty: 1.1, // Добавляем штраф за повторения - top_k: 20, // Еще больше ограничиваем выбор токенов - top_p: 0.8, // Уменьшаем nucleus sampling - temperature: 0.1, // Еще больше уменьшаем для более предсказуемых ответов + numCtx: 4096, + numGpu: 1, + numThread: 8, + repeatPenalty: 1.1, + topK: 40, + topP: 0.9, + tfsZ: 1, + mirostat: 2, + mirostatTau: 5, + mirostatEta: 0.1 } }); } - // Определение языка сообщения - detectLanguage(message) { - const cyrillicPattern = /[а-яА-ЯёЁ]/; - return cyrillicPattern.test(message) ? 'ru' : 'en'; - } - // Определение приоритета запроса getRequestPriority(message, history, rules) { let priority = 0; @@ -117,7 +124,7 @@ class AIAssistant { } // Приоритет по типу запроса - const urgentKeywords = ['срочно', 'urgent', 'важно', 'important', 'помоги', 'help']; + const urgentKeywords = ['срочно', 'важно', 'помоги']; if (urgentKeywords.some(keyword => message.toLowerCase().includes(keyword))) { priority += 20; } @@ -140,9 +147,9 @@ class AIAssistant { } // Основной метод для получения ответа - async getResponse(message, language = 'auto', history = null, systemPrompt = '', rules = null) { + async getResponse(message, history = null, systemPrompt = '', rules = null) { try { - // console.log('getResponse called with:', { message, language, history, systemPrompt, rules }); + // console.log('getResponse called with:', { message, history, systemPrompt, rules }); // Очищаем старый кэш this.cleanupCache(); @@ -171,7 +178,6 @@ class AIAssistant { // Добавляем запрос в очередь const requestId = await aiQueue.addRequest({ message, - language, history, systemPrompt, rules @@ -181,7 +187,7 @@ class AIAssistant { return new Promise((resolve, reject) => { const timeout = setTimeout(() => { reject(new Error('Request timeout - очередь перегружена')); - }, 60000); // 60 секунд таймаут для очереди + }, 180000); // 180 секунд таймаут для очереди (увеличено с 60) const onCompleted = (item) => { if (item.id === requestId) { @@ -204,62 +210,6 @@ class AIAssistant { aiQueue.on('completed', onCompleted); aiQueue.on('failed', onFailed); }); - - // Определяем язык, если не указан явно - const detectedLanguage = language === 'auto' ? this.detectLanguage(message) : language; - // console.log('Detected language:', detectedLanguage); - - // Формируем system prompt с учётом правил - let fullSystemPrompt = systemPrompt || ''; - if (rules && typeof rules === 'object') { - fullSystemPrompt += '\n' + JSON.stringify(rules, null, 2); - } - - // Формируем массив сообщений для Qwen2.5/OpenAI API - const messages = []; - if (fullSystemPrompt) { - messages.push({ role: 'system', content: fullSystemPrompt }); - } - if (Array.isArray(history) && history.length > 0) { - for (const msg of history) { - if (msg.role && msg.content) { - messages.push({ role: msg.role, content: msg.content }); - } - } - } - // Добавляем текущее сообщение пользователя - messages.push({ role: 'user', content: message }); - - let response = null; - - // Пробуем прямой API запрос (OpenAI-совместимый endpoint) - try { - // console.log('Trying direct API request...'); - response = await this.fallbackRequestOpenAI(messages, detectedLanguage, fullSystemPrompt); - // console.log('Direct API response received:', response); - } catch (error) { - // console.error('Error in direct API request:', error); - - // Если прямой запрос не удался, пробуем через ChatOllama (склеиваем сообщения в текст) - const chat = this.createChat(detectedLanguage, fullSystemPrompt); - try { - const prompt = messages.map(m => `${m.role === 'user' ? 'Пользователь' : m.role === 'assistant' ? 'Ассистент' : 'Система'}: ${m.content}`).join('\n'); - // console.log('Sending request to ChatOllama...'); - const chatResponse = await chat.invoke(prompt); - // console.log('ChatOllama response:', chatResponse); - response = chatResponse.content; - } catch (chatError) { - // console.error('Error using ChatOllama:', chatError); - throw chatError; - } - } - - // Кэшируем ответ - if (response) { - aiCache.set(cacheKey, response); - } - - return response; } catch (error) { // console.error('Error in getResponse:', error); return 'Извините, я не смог обработать ваш запрос. Пожалуйста, попробуйте позже.'; @@ -267,9 +217,9 @@ class AIAssistant { } // Новый метод для OpenAI/Qwen2.5 совместимого endpoint - async fallbackRequestOpenAI(messages, language, systemPrompt = '') { + async fallbackRequestOpenAI(messages, systemPrompt = '') { try { - // console.log('Using fallbackRequestOpenAI with:', { messages, language, systemPrompt }); + // console.log('Using fallbackRequestOpenAI with:', { messages, systemPrompt }); const model = this.defaultModel; // Создаем AbortController для таймаута @@ -284,23 +234,25 @@ class AIAssistant { messages, stream: false, options: { - temperature: 0.3, - num_predict: 150, // Уменьшаем максимальную длину ответа для ускорения - num_ctx: 512, // Уменьшаем контекст для экономии памяти и ускорения - num_thread: 12, // Увеличиваем количество потоков для ускорения + temperature: 0.7, + num_predict: 2048, // Восстанавливаем для полных ответов + num_ctx: 4096, // Восстанавливаем контекст для лучшего понимания + num_thread: 8, // Оптимальное количество потоков num_gpu: 1, // Используем GPU если доступен num_gqa: 8, // Оптимизация для qwen2.5 rope_freq_base: 1000000, // Оптимизация для qwen2.5 rope_freq_scale: 0.5, // Оптимизация для qwen2.5 - repeat_penalty: 1.1, // Добавляем штраф за повторения - top_k: 20, // Уменьшаем выбор токенов для ускорения - top_p: 0.8, // Уменьшаем nucleus sampling для ускорения - mirostat: 2, // Используем mirostat для стабильности - mirostat_tau: 5.0, // Настройка mirostat - mirostat_eta: 0.1, // Настройка mirostat - }, - }), - signal: controller.signal, + repeat_penalty: 1.1, // Восстанавливаем штраф за повторения + top_k: 40, // Восстанавливаем разнообразие ответов + top_p: 0.9, // Восстанавливаем nucleus sampling + tfs_z: 1, // Tail free sampling + mirostat: 2, // Mirostat 2.0 для контроля качества + mirostat_tau: 5, // Целевая перплексия + mirostat_eta: 0.1, // Скорость адаптации + seed: -1, // Случайный сид + stop: [] // Стоп-слова + } + }) }); clearTimeout(timeoutId); diff --git a/backend/services/ai-queue.js b/backend/services/ai-queue.js index 4dfe0ff..8467cc2 100644 --- a/backend/services/ai-queue.js +++ b/backend/services/ai-queue.js @@ -10,7 +10,7 @@ class AIQueue extends EventEmitter { super(); this.queue = []; this.processing = false; - this.maxConcurrent = 2; // Максимум 2 запроса одновременно + this.maxConcurrent = 1; // Максимум 1 запрос одновременно (последовательная обработка) this.activeRequests = 0; this.stats = { total: 0, @@ -51,6 +51,7 @@ class AIQueue extends EventEmitter { } this.processing = true; + logger.info(`[AIQueue] Начинаем обработку очереди. Запросов в очереди: ${this.queue.length}`); while (this.queue.length > 0 && this.activeRequests < this.maxConcurrent) { const item = this.queue.shift(); @@ -58,6 +59,7 @@ class AIQueue extends EventEmitter { this.activeRequests++; item.status = 'processing'; + logger.info(`[AIQueue] Обрабатываем запрос ${item.id} (приоритет: ${item.priority})`); try { const startTime = Date.now(); @@ -71,7 +73,7 @@ class AIQueue extends EventEmitter { this.stats.completed++; this.updateAvgResponseTime(responseTime); - logger.info(`[AIQueue] Request ${item.id} completed in ${responseTime}ms`); + logger.info(`[AIQueue] Запрос ${item.id} завершен за ${responseTime}ms`); // Эмитим событие о завершении this.emit('completed', item); @@ -81,7 +83,7 @@ class AIQueue extends EventEmitter { item.error = error.message; this.stats.failed++; - logger.error(`[AIQueue] Request ${item.id} failed:`, error.message); + logger.error(`[AIQueue] Запрос ${item.id} завершился с ошибкой:`, error.message); // Эмитим событие об ошибке this.emit('failed', item); @@ -91,6 +93,7 @@ class AIQueue extends EventEmitter { } this.processing = false; + logger.info(`[AIQueue] Обработка очереди завершена. Осталось запросов: ${this.queue.length}`); // Если в очереди еще есть запросы, продолжаем обработку if (this.queue.length > 0) { @@ -118,7 +121,7 @@ class AIQueue extends EventEmitter { messages.push({ role: 'user', content: request.message }); // Прямой вызов API без очереди - return await aiAssistant.fallbackRequestOpenAI(messages, request.language, request.systemPrompt); + return await aiAssistant.fallbackRequestOpenAI(messages, request.systemPrompt); } // Обновление средней скорости ответа diff --git a/backend/services/aiAssistantSettingsService.js b/backend/services/aiAssistantSettingsService.js index 11840d0..55ed54a 100644 --- a/backend/services/aiAssistantSettingsService.js +++ b/backend/services/aiAssistantSettingsService.js @@ -50,6 +50,7 @@ async function getSettings() { ); supportEmail = em.rows[0] || null; } + return { ...setting, telegramBot, @@ -58,12 +59,12 @@ async function getSettings() { }; } -async function upsertSettings({ system_prompt, selected_rag_tables, languages, model, embedding_model, rules, updated_by, telegram_settings_id, email_settings_id, system_message }) { +async function upsertSettings({ system_prompt, selected_rag_tables, model, embedding_model, rules, updated_by, telegram_settings_id, email_settings_id, system_message }) { const data = { id: 1, system_prompt, selected_rag_tables, - languages, + languages: ['ru'], // Устанавливаем русский язык по умолчанию model, embedding_model, rules, diff --git a/backend/services/auth-service.js b/backend/services/auth-service.js index d7f4d47..bff07b1 100644 --- a/backend/services/auth-service.js +++ b/backend/services/auth-service.js @@ -519,6 +519,20 @@ class AuthService { } else { // Если пользователь не является администратором, сбрасываем роль на "user", если она была "admin" try { + // Получаем ключ шифрования + const fs = require('fs'); + const path = require('path'); + let encryptionKey = 'default-key'; + + try { + const keyPath = path.join(__dirname, '../ssl/keys/full_db_encryption.key'); + if (fs.existsSync(keyPath)) { + encryptionKey = fs.readFileSync(keyPath, 'utf8').trim(); + } + } catch (keyError) { + console.error('Error reading encryption key:', keyError); + } + const userResult = await db.getQuery()( ` SELECT u.id, u.role FROM users u @@ -544,6 +558,76 @@ class AuthService { } } + /** + * Перепроверяет админский статус ВСЕХ пользователей с кошельками + * @returns {Promise} + */ + async recheckAllUsersAdminStatus() { + logger.info('Starting recheck of admin status for all users with wallets'); + + try { + // Получаем ключ шифрования + const fs = require('fs'); + const path = require('path'); + let encryptionKey = 'default-key'; + + try { + const keyPath = path.join(__dirname, '../ssl/keys/full_db_encryption.key'); + if (fs.existsSync(keyPath)) { + encryptionKey = fs.readFileSync(keyPath, 'utf8').trim(); + } + } catch (keyError) { + console.error('Error reading encryption key:', keyError); + } + + // Получаем всех пользователей с кошельками + const usersResult = await db.getQuery()( + ` + SELECT DISTINCT u.id, u.role, decrypt_text(ui.provider_id_encrypted, $1) as address + FROM users u + JOIN user_identities ui ON u.id = ui.user_id + WHERE ui.provider_encrypted = encrypt_text('wallet', $1) + `, + [encryptionKey] + ); + + logger.info(`Found ${usersResult.rows.length} users with wallets to recheck`); + + // Перепроверяем каждого пользователя + for (const user of usersResult.rows) { + try { + const address = user.address; + const currentRole = user.role; + + logger.info(`Rechecking admin status for user ${user.id} with address ${address}`); + + // Проверяем баланс токенов + const isAdmin = await checkAdminRole(address); + + // Определяем новую роль + const newRole = isAdmin ? 'admin' : 'user'; + + // Обновляем роль только если она изменилась + if (currentRole !== newRole) { + await db.getQuery()('UPDATE users SET role = $1 WHERE id = $2', [newRole, user.id]); + logger.info(`Updated user ${user.id} role from ${currentRole} to ${newRole} (address: ${address})`); + } else { + logger.info(`User ${user.id} role unchanged: ${currentRole} (address: ${address})`); + } + + } catch (userError) { + logger.error(`Error rechecking user ${user.id}: ${userError.message}`); + // Продолжаем с другими пользователями + } + } + + logger.info('Completed recheck of admin status for all users'); + } catch (error) { + logger.error(`Error in recheckAllUsersAdminStatus: ${error.message}`); + throw error; + } + } + /** * Очистка старых гостевых идентификаторов * @param {number} userId - ID пользователя diff --git a/backend/services/emailBot.js b/backend/services/emailBot.js index d75409b..5095771 100644 --- a/backend/services/emailBot.js +++ b/backend/services/emailBot.js @@ -313,18 +313,6 @@ class EmailBotService { return; } - // Проверяем, не обрабатывали ли мы уже это письмо - if (messageId) { - const existingMessage = await encryptedDb.getData('messages', { - metadata: { $like: `%"messageId":"${messageId}"%` } - }, 1); - - if (existingMessage.length > 0) { - logger.info(`[EmailBot] Письмо с Message-ID ${messageId} уже обработано, пропускаем`); - return; - } - } - // 1. Найти или создать пользователя const { userId, role } = await identityService.findOrCreateUserWithRole('email', fromEmail); if (await isUserBlocked(userId)) { @@ -332,6 +320,31 @@ class EmailBotService { return; } + // Проверяем, не обрабатывали ли мы уже это письмо + if (messageId) { + // Проверка дубликатов на основе Message-ID + try { + const existingMessage = await encryptedDb.getData( + 'messages', + { + user_id: userId, + channel: 'email', + direction: 'in', + message_id: messageId + }, + 1 + ); + + if (existingMessage.length > 0) { + logger.info(`[EmailBot] Игнорируем дубликат письма от ${fromEmail} (Message-ID: ${messageId})`); + return; + } + } catch (error) { + logger.error(`[EmailBot] Ошибка при проверке дубликатов: ${error.message}`); + // Продолжаем обработку в случае ошибки + } + } + // 1.1 Найти или создать беседу let conversationResult = await encryptedDb.getData( 'conversations', @@ -376,13 +389,7 @@ class EmailBotService { attachment_mimetype: att.contentType, attachment_size: att.size, attachment_data: att.content, - metadata: JSON.stringify({ - subject, - html, - messageId: messageId, - uid: uid, - fromEmail: fromEmail - }) + message_id: messageId // Сохраняем Message-ID для дедупликации (будет зашифрован в message_id_encrypted) } ); } @@ -398,13 +405,7 @@ class EmailBotService { role: role, direction: 'in', created_at: new Date(), - metadata: JSON.stringify({ - subject, - html, - messageId: messageId, - uid: uid, - fromEmail: fromEmail - }) + message_id: messageId // Сохраняем Message-ID для дедупликации (будет зашифрован в message_id_encrypted) } ); } @@ -421,7 +422,7 @@ class EmailBotService { if (ragTableId) { // Сначала ищем ответ через RAG const ragResult = await ragAnswer({ tableId: ragTableId, userQuestion: text }); - if (ragResult && ragResult.answer && typeof ragResult.score === 'number' && Math.abs(ragResult.score) <= 0.3) { + if (ragResult && ragResult.answer && typeof ragResult.score === 'number' && Math.abs(ragResult.score) <= 0.1) { aiResponse = ragResult.answer; } else { aiResponse = await generateLLMResponse({ diff --git a/backend/services/encryptedDatabaseService.js b/backend/services/encryptedDatabaseService.js index d6fd113..40674cb 100644 --- a/backend/services/encryptedDatabaseService.js +++ b/backend/services/encryptedDatabaseService.js @@ -410,9 +410,10 @@ class EncryptedDataService { */ shouldEncryptColumn(column) { const encryptableTypes = ['text', 'varchar', 'character varying', 'json', 'jsonb']; + const excludedColumns = ['created_at', 'updated_at', 'id', 'metadata']; // Добавляем metadata в исключения return encryptableTypes.includes(column.data_type) && !column.column_name.includes('_encrypted') && - !['created_at', 'updated_at', 'id'].includes(column.column_name); + !excludedColumns.includes(column.column_name); } /** diff --git a/backend/services/ragService.js b/backend/services/ragService.js index 1d8a8ab..907cf87 100644 --- a/backend/services/ragService.js +++ b/backend/services/ragService.js @@ -122,7 +122,7 @@ async function ragAnswer({ tableId, userQuestion, product = null, threshold = 10 // Поиск let results = []; if (rowsForUpsert.length > 0) { - results = await vectorSearch.search(tableId, userQuestion, 2); // Уменьшаем до 2 результатов + results = await vectorSearch.search(tableId, userQuestion, 3); // Увеличиваем до 3 результатов для лучшего поиска // console.log(`[RAG] Search completed, got ${results.length} results`); // Подробное логирование результатов поиска @@ -171,7 +171,7 @@ async function ragAnswer({ tableId, userQuestion, product = null, threshold = 10 product: best?.metadata?.product, priority: best?.metadata?.priority, date: best?.metadata?.date, - score: best?.score, + score: best?.score !== undefined && best?.score !== null ? Number(best.score) : null, }; // Кэшируем результат @@ -188,17 +188,48 @@ async function ragAnswer({ tableId, userQuestion, product = null, threshold = 10 * Возвращает объект: { placeholder1: value1, placeholder2: value2, ... } */ async function getAllPlaceholdersWithValues() { - // Получаем все плейсхолдеры и их значения (берём первое значение для каждого плейсхолдера) - const result = await encryptedDb.getData('user_columns', {}); - - // Группируем по плейсхолдеру (берём первое значение) - const map = {}; - for (const row of result) { - if (row.placeholder && !(row.placeholder in map)) { - map[row.placeholder] = row.value; + try { + console.log('[RAG] Начинаем загрузку плейсхолдеров...'); + + // Получаем все колонки с плейсхолдерами + const columns = await encryptedDb.getData('user_columns', {}); + console.log(`[RAG] Получено колонок: ${columns.length}`); + + const columnsWithPlaceholders = columns.filter(col => col.placeholder && col.placeholder.trim() !== ''); + console.log(`[RAG] Колонок с плейсхолдерами: ${columnsWithPlaceholders.length}`); + + if (columnsWithPlaceholders.length === 0) { + console.log('[RAG] Нет колонок с плейсхолдерами'); + return {}; } + + // Получаем значения для каждой колонки с плейсхолдером + const map = {}; + for (const column of columnsWithPlaceholders) { + try { + console.log(`[RAG] Получаем значение для плейсхолдера: ${column.placeholder} (column_id: ${column.id})`); + + // Получаем первое значение для этой колонки + const values = await encryptedDb.getData('user_cell_values', { column_id: column.id }, 1); + console.log(`[RAG] Найдено значений для ${column.placeholder}: ${values ? values.length : 0}`); + + if (values && values.length > 0 && values[0].value) { + map[column.placeholder] = values[0].value; + console.log(`[RAG] Установлено значение для ${column.placeholder}: ${values[0].value.substring(0, 50)}...`); + } else { + console.log(`[RAG] Нет значений для плейсхолдера ${column.placeholder}`); + } + } catch (error) { + console.error(`[RAG] Ошибка получения значения для плейсхолдера ${column.placeholder}:`, error); + } + } + + console.log(`[RAG] Итоговый объект плейсхолдеров:`, Object.keys(map)); + return map; + } catch (error) { + console.error('[RAG] Ошибка получения плейсхолдеров:', error); + return {}; } - return map; } /** @@ -235,67 +266,222 @@ async function generateLLMResponse({ date, rules, history, - model, - language + model }) { - // console.log(`[RAG] generateLLMResponse called with:`, { - // userQuestion, - // context, - // answer, - // systemPrompt, - // userTags, - // product, - // priority, - // date, - // model, - // language - // }); + console.log(`[RAG] generateLLMResponse called with:`, { + userQuestion, + context, + answer, + systemPrompt: systemPrompt ? systemPrompt.substring(0, 100) + '...' : 'null', + userTags, + product, + priority, + date, + model, + historyLength: history ? history.length : 0 + }); try { const aiAssistant = require('./ai-assistant'); - // Формируем промпт для LLM - let prompt = userQuestion; + // Создаем контекст беседы с RAG данными + const conversationContext = createConversationContext({ + userQuestion, + ragAnswer: answer, + ragContext: context, + history, + product, + priority, + date + }); - if (context) { - prompt += `\n\nКонтекст: ${context}`; + // Формируем улучшенный промпт для LLM с учетом найденной информации + let prompt = `Вопрос пользователя: ${userQuestion}`; + + // Добавляем найденную информацию из RAG + if (answer) { + prompt += `\n\nНайденный ответ из базы знаний: ${answer}`; } - if (answer) { - prompt += `\n\nНайденный ответ: ${answer}`; + if (context) { + prompt += `\n\nДополнительный контекст: ${context}`; } if (product) { prompt += `\n\nПродукт: ${product}`; } + if (priority) { + prompt += `\n\nПриоритет: ${priority}`; + } + + if (date) { + prompt += `\n\nДата: ${date}`; + } + // --- ДОБАВЛЕНО: подстановка плейсхолдеров --- let finalSystemPrompt = systemPrompt; if (systemPrompt && systemPrompt.includes('{')) { const placeholders = await getAllPlaceholdersWithValues(); finalSystemPrompt = replacePlaceholders(systemPrompt, placeholders); + console.log(`[RAG] Подставлены плейсхолдеры в системный промпт`); } // --- КОНЕЦ ДОБАВЛЕНИЯ --- - // Получаем ответ от AI - const llmResponse = await aiAssistant.getResponse( - prompt, - language || 'auto', - history, - finalSystemPrompt, - rules - ); + // Используем системный промпт из настроек, если он есть + if (finalSystemPrompt && finalSystemPrompt.trim()) { + prompt += `\n\nСистемная инструкция: ${finalSystemPrompt}`; + } else { + // Fallback инструкция, если системный промпт не настроен + prompt += `\n\nИнструкция: Используй найденную информацию из базы знаний для ответа. Если найденный ответ подходит к вопросу пользователя, используй его как основу. Если нужно дополнить или уточнить ответ, сделай это. Поддерживай естественную беседу, учитывая предыдущие сообщения. Отвечай на русском языке кратко и по делу. Если пользователь задает уточняющие вопросы, используй контекст предыдущих ответов.`; + } - // console.log(`[RAG] LLM response generated:`, llmResponse); + console.log(`[RAG] Сформированный промпт:`, prompt.substring(0, 200) + '...'); + + // Получаем ответ от AI с учетом истории беседы + let llmResponse; + try { + llmResponse = await aiAssistant.getResponse( + prompt, + history, + finalSystemPrompt, + rules + ); + } catch (error) { + console.error(`[RAG] Error in getResponse:`, error.message); + + // Fallback: если очередь перегружена, возвращаем найденный ответ напрямую + if (error.message.includes('очередь перегружена') && answer) { + console.log(`[RAG] Queue overloaded, returning direct answer from RAG`); + return answer; + } + + // Другой fallback для других ошибок + return 'Извините, произошла ошибка при генерации ответа.'; + } + + console.log(`[RAG] LLM response generated:`, llmResponse ? llmResponse.substring(0, 100) + '...' : 'null'); return llmResponse; } catch (error) { - // console.error(`[RAG] Error generating LLM response:`, error); + console.error(`[RAG] Error generating LLM response:`, error); return 'Извините, произошла ошибка при генерации ответа.'; } } +/** + * Создает контекст беседы с RAG данными + */ +function createConversationContext({ + userQuestion, + ragAnswer, + ragContext, + history, + product, + priority, + date +}) { + const context = { + currentQuestion: userQuestion, + ragData: { + answer: ragAnswer, + context: ragContext, + product, + priority, + date + }, + conversationHistory: history || [], + hasRagData: !!(ragAnswer || ragContext), + isFollowUpQuestion: history && history.length > 0 + }; + + console.log(`[RAG] Создан контекст беседы:`, { + hasRagData: context.hasRagData, + historyLength: context.conversationHistory.length, + isFollowUp: context.isFollowUpQuestion + }); + + return context; +} + +/** + * Улучшенная функция RAG с поддержкой беседы + */ +async function ragAnswerWithConversation({ + tableId, + userQuestion, + product = null, + threshold = 10, + history = [], + conversationId = null +}) { + console.log(`[RAG] ragAnswerWithConversation: tableId=${tableId}, question="${userQuestion}", historyLength=${history.length}`); + + // Получаем базовый RAG результат + const ragResult = await ragAnswer({ tableId, userQuestion, product, threshold }); + + // Анализируем контекст беседы + const conversationContext = createConversationContext({ + userQuestion, + ragAnswer: ragResult.answer, + ragContext: ragResult.context, + history, + product: ragResult.product, + priority: ragResult.priority, + date: ragResult.date + }); + + // Если это уточняющий вопрос и есть история + if (conversationContext.isFollowUpQuestion && conversationContext.hasRagData) { + console.log(`[RAG] Обнаружен уточняющий вопрос с RAG данными`); + + // Проверяем, есть ли точный ответ в первом поиске + if (ragResult.answer && typeof ragResult.score === 'number' && Math.abs(ragResult.score) <= 200) { + console.log(`[RAG] Найден точный ответ (score=${ragResult.score}), модифицируем с учетом контекста беседы`); + + // Модифицируем точный ответ с учетом контекста беседы + let contextualAnswer = ragResult.answer; + if (history && history.length > 0) { + const contextSummary = history.slice(-3).map(msg => msg.content).join(' | '); + contextualAnswer = `Контекст: ${contextSummary}\n\nОтвет: ${ragResult.answer}`; + } + + return { + ...ragResult, + answer: contextualAnswer, + conversationContext, + isFollowUp: true + }; + } + + // Модифицируем вопрос с учетом контекста (only if no confident match) + const contextualQuestion = `${userQuestion}\n\nКонтекст предыдущих ответов: ${history.map(msg => msg.content).join('\n')}`; + + // Повторяем поиск с контекстуализированным вопросом + const contextualRagResult = await ragAnswer({ + tableId, + userQuestion: contextualQuestion, + product, + threshold + }); + + // Объединяем результаты + return { + ...contextualRagResult, + conversationContext, + isFollowUp: true + }; + } + + return { + ...ragResult, + conversationContext, + isFollowUp: false + }; +} + module.exports = { ragAnswer, getTableData, - generateLLMResponse + generateLLMResponse, + ragAnswerWithConversation }; \ No newline at end of file diff --git a/backend/services/telegramBot.js b/backend/services/telegramBot.js index f234ec7..3817234 100644 --- a/backend/services/telegramBot.js +++ b/backend/services/telegramBot.js @@ -428,7 +428,7 @@ async function getBot() { if (ragTableId) { // Сначала ищем ответ через RAG const ragResult = await ragAnswer({ tableId: ragTableId, userQuestion: content }); - if (ragResult && ragResult.answer && typeof ragResult.score === 'number' && Math.abs(ragResult.score) <= 0.3) { + if (ragResult && ragResult.answer && typeof ragResult.score === 'number' && Math.abs(ragResult.score) <= 0.1) { aiResponse = ragResult.answer; } else { aiResponse = await generateLLMResponse({ diff --git a/backend/wsHub.js b/backend/wsHub.js index b79f3b1..eab0577 100644 --- a/backend/wsHub.js +++ b/backend/wsHub.js @@ -365,6 +365,43 @@ function broadcastToAllClients(message) { }); } +// Функции для уведомлений об изменениях токенов +function broadcastAuthTokenAdded(tokenData) { + const message = JSON.stringify({ + type: 'auth_token_added', + data: { + token: tokenData, + timestamp: Date.now() + } + }); + + broadcastToAllClients(message); +} + +function broadcastAuthTokenDeleted(tokenData) { + const message = JSON.stringify({ + type: 'auth_token_deleted', + data: { + token: tokenData, + timestamp: Date.now() + } + }); + + broadcastToAllClients(message); +} + +function broadcastAuthTokenUpdated(tokenData) { + const message = JSON.stringify({ + type: 'auth_token_updated', + data: { + token: tokenData, + timestamp: Date.now() + } + }); + + broadcastToAllClients(message); +} + module.exports = { initWSS, broadcastContactsUpdate, @@ -378,6 +415,9 @@ module.exports = { broadcastProposalCreated, broadcastProposalVoted, broadcastProposalExecuted, + broadcastAuthTokenAdded, + broadcastAuthTokenDeleted, + broadcastAuthTokenUpdated, getConnectedUsers, getStats }; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 63b1834..2c9e6f8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -45,14 +45,16 @@ services: deploy: resources: limits: - cpus: '3.5' - memory: 12G + cpus: '4.0' + memory: 16G reservations: - cpus: '2.0' - memory: 6G + cpus: '3.0' + memory: 12G environment: - OLLAMA_HOST=0.0.0.0 - OLLAMA_ORIGINS=* + - OLLAMA_NUM_PARALLEL=1 + - OLLAMA_NUM_GPU=1 healthcheck: test: ["CMD", "ollama", "list"] interval: 30s diff --git a/docs/MODULE_ARCHITECTURE.md b/docs/MODULE_ARCHITECTURE.md new file mode 100644 index 0000000..634e0a3 --- /dev/null +++ b/docs/MODULE_ARCHITECTURE.md @@ -0,0 +1,108 @@ +# Архитектура модулей DLE + +## Обзор + +DLE использует модульную архитектуру, где каждый модуль может иметь свои правила доступа и функциональность. + +## Типы модулей + +### 1. Простые модули (Вариант 1) +Модули сами проверяют права доступа токен-холдеров. + +```solidity +contract SimpleModule { + address public dleContract; + + modifier onlyDLEHolders() { + require(IERC20(dleContract).balanceOf(msg.sender) > 0, "Must hold DLE tokens"); + _; + } + + function someFunction() external onlyDLEHolders { + // Логика функции + } +} +``` + +### 2. Сложные модули (Вариант 3) +Модули работают через основной контракт DLE. + +```solidity +contract ComplexModule { + address public dleContract; + + function executeOperation(address caller, bytes calldata operation) external { + require(msg.sender == dleContract, "Only DLE can call"); + require(IERC20(dleContract).balanceOf(caller) > 0, "Must hold tokens"); + + // Выполняем операцию + _executeOperation(caller, operation); + } +} +``` + +## Рекомендации по выбору + +### Используйте Вариант 1 для: +- ✅ Простых операций (чтение данных) +- ✅ Модулей с минимальной логикой +- ✅ Быстрых операций + +### Используйте Вариант 3 для: +- ✅ Сложных финансовых операций +- ✅ Модулей с критической логикой +- ✅ Операций, требующих аудита + +## Примеры модулей + +### TreasuryModule (Казна) +```solidity +contract TreasuryModule { + address public dleContract; + mapping(address => bool) public supportedTokens; + + modifier onlyDLEHolders() { + require(IERC20(dleContract).balanceOf(msg.sender) > 0, "Must hold DLE tokens"); + _; + } + + function depositToken(address token, uint256 amount) external onlyDLEHolders { + require(supportedTokens[token], "Token not supported"); + IERC20(token).transferFrom(msg.sender, address(this), amount); + } + + function withdrawToken(address token, uint256 amount) external onlyDLEHolders { + require(supportedTokens[token], "Token not supported"); + IERC20(token).transfer(msg.sender, amount); + } +} +``` + +### GovernanceModule (Управление) +```solidity +contract GovernanceModule { + address public dleContract; + + function executeOperation(address caller, bytes calldata operation) external { + require(msg.sender == dleContract, "Only DLE can call"); + require(IERC20(dleContract).balanceOf(caller) > 0, "Must hold tokens"); + + // Выполняем операцию управления + _executeGovernanceOperation(caller, operation); + } +} +``` + +## Безопасность + +### Общие принципы: +1. **Всегда проверяйте** баланс токенов DLE +2. **Валидируйте входные данные** в модулях +3. **Используйте ReentrancyGuard** для финансовых операций +4. **Логируйте важные операции** через события + +### Аудит модулей: +- Проверяйте права доступа +- Тестируйте граничные случаи +- Валидируйте входные параметры +- Проверяйте обработку ошибок \ No newline at end of file diff --git a/docs/RAG_TASKS.md b/docs/RAG_TASKS.md index 8d44bae..cc1a9af 100644 --- a/docs/RAG_TASKS.md +++ b/docs/RAG_TASKS.md @@ -50,6 +50,176 @@ --- +## Многоагентная архитектура AI-ассистента + +### 🎯 Главный AI-координатор +- **Роль:** Анализирует входящие сообщения и координирует работу специализированных агентов +- **Функции:** + - Определяет какие агенты нужны для обработки сообщения + - Собирает результаты от всех агентов + - Генерирует финальный персонализированный ответ + - Управляет контекстом беседы + +### 🤖 Специализированные агенты + +#### 1. Агент "Персонализация пользователя" +- **Задача:** Извлечение и управление персональными данными +- **Функции:** + - Извлекает имя из сообщений ("меня зовут Саша") + - Анализирует профиль пользователя (компания, должность, предпочтения) + - Отслеживает историю взаимодействий + - Определяет стадию в воронке продаж +- **Результат:** Персонализированный контекст для ответа + +#### 2. Агент "Анализ запроса" +- **Задача:** Классификация и понимание сути обращения +- **Функции:** + - Определяет тип вопроса (техническая проблема, вопрос о цене, жалоба) + - Анализирует эмоциональное состояние клиента + - Выявляет скрытые потребности + - Определяет приоритетность запроса +- **Результат:** Структурированный анализ запроса + +#### 3. Агент "RAG поиск" +- **Задача:** Поиск релевантной информации в базе знаний +- **Функции:** + - Векторный поиск по RAG базе + - Фильтрация по тегам пользователя + - Поиск похожих случаев и решений + - Извлечение контекстной информации +- **Результат:** Релевантные ответы и шаблоны + +#### 4. Агент "Контекст беседы" +- **Задача:** Анализ истории взаимодействий +- **Функции:** + - Изучает предыдущие сообщения в беседе + - Анализирует все предыдущие обращения пользователя + - Определяет повторяющиеся темы и проблемы + - Отслеживает прогресс в решении задач +- **Результат:** Контекстная картина взаимодействия + +#### 5. Агент "Детализация" +- **Задача:** Выяснение недостающей информации +- **Функции:** + - Формулирует уточняющие вопросы + - Определяет какие детали нужны для решения + - Адаптирует вопросы под контекст беседы + - Отслеживает ответы на уточняющие вопросы +- **Результат:** Структурированные уточняющие вопросы + +#### 6. Агент "Персонализация ответа" +- **Задача:** Адаптация ответа под конкретного пользователя +- **Функции:** + - Учитывает стиль общения пользователя + - Адаптирует тон (формальный/неформальный) + - Использует имя и персональные данные + - Ссылается на предыдущие взаимодействия +- **Результат:** Персонализированный ответ + +#### 7. Агент "Мультиязычность" +- **Задача:** Обработка многоязычных запросов +- **Функции:** + - Определяет язык входящего сообщения + - Ищет ответы на соответствующем языке + - Генерирует ответы на языке пользователя + - Адаптирует культурные особенности +- **Результат:** Локализованный ответ + +#### 8. Агент "Мультимодальность" +- **Задача:** Обработка различных типов контента +- **Функции:** + - Анализ изображений, аудио, видео + - Извлечение текста из медиафайлов + - Поиск похожих медиа в базе знаний + - Генерация мультимодальных ответов +- **Результат:** Контекст из медиафайлов + +### ⚙️ Логика работы многоагентной системы + +#### Шаг 1: Получение сообщения +- Координатор получает входящее сообщение +- Анализирует базовый контекст +- Определяет необходимых агентов + +#### Шаг 2: Параллельный запуск агентов +- Агент "Персонализация" → извлекает данные пользователя +- Агент "Анализ запроса" → классифицирует обращение +- Агент "RAG поиск" → ищет релевантную информацию +- Агент "Контекст" → анализирует историю +- Агент "Мультиязычность" → определяет язык +- Агент "Мультимодальность" → обрабатывает медиа + +#### Шаг 3: Сбор и анализ результатов +- Координатор собирает данные от всех агентов +- Анализирует полноту информации +- Определяет необходимость дополнительных уточнений + +#### Шаг 4: Генерация ответа +- Если информации достаточно → генерирует персонализированный ответ +- Если нужно уточнить → запускает агента "Детализация" +- Если требуется дополнительный контекст → запрашивает у других агентов + +#### Шаг 5: Сохранение контекста +- Обновляет профиль пользователя +- Сохраняет контекст беседы +- Логирует использованные знания + +### 🎨 Преимущества многоагентной архитектуры + +1. **Модульность:** Каждый агент решает свою специализированную задачу +2. **Масштабируемость:** Легко добавлять новых агентов +3. **Эффективность:** Параллельная обработка разных аспектов +4. **Гибкость:** Разные комбинации агентов для разных ситуаций +5. **Персонализация:** Глубокое понимание каждого пользователя +6. **Качество:** Специализированная обработка каждого аспекта + +--- + +## Персонализация на уровне аккаунта пользователя + +### 👤 Профиль пользователя +- **Базовые данные:** Имя, компания, должность, контактная информация +- **История взаимодействий:** Все предыдущие обращения и решения +- **Предпочтения:** Стиль общения, технический уровень, приоритеты +- **Статус:** Стадия в воронке продаж, статус клиента +- **Теги:** Категории, сегменты, специализации + +### 📊 Контекстная картина +- **Текущая беседа:** Сообщения в рамках одной сессии +- **История обращений:** Все предыдущие взаимодействия +- **Решенные проблемы:** Успешно закрытые задачи +- **Открытые вопросы:** Незавершенные обращения +- **Эмоциональное состояние:** Тон и настроение клиента + +### 🎯 Алгоритм персонализации + +#### 1. Анализ входящего сообщения +- Определение типа обращения +- Извлечение ключевой информации +- Анализ эмоционального контекста + +#### 2. Загрузка профиля пользователя +- Получение персональных данных +- Анализ истории взаимодействий +- Определение текущего статуса + +#### 3. Поиск в RAG базе +- Фильтрация по тегам пользователя +- Поиск релевантных решений +- Анализ похожих случаев + +#### 4. Формирование контекста +- Объединение данных профиля и истории +- Анализ текущей ситуации +- Определение оптимального подхода + +#### 5. Генерация персонализированного ответа +- Учет персональных данных +- Адаптация под стиль общения +- Ссылки на предыдущие взаимодействия + +--- + ## Этап 1. Проектирование и подготовка инфраструктуры 1. **Проектирование схемы хранения знаний (RAG):** - Описать структуру таблицы `knowledge_documents` (миграция). @@ -69,7 +239,26 @@ --- -## Этап 3. Интеграция RAG в pipeline ассистента +## Этап 3. Разработка многоагентной архитектуры +1. **Создание базовой структуры агентов:** + - Реализовать главный AI-координатор + - Создать базовые классы для специализированных агентов + - Настроить систему координации между агентами +2. **Разработка специализированных агентов:** + - Агент "Персонализация пользователя" + - Агент "Анализ запроса" + - Агент "RAG поиск" + - Агент "Контекст беседы" + - Агент "Детализация" + - Агент "Персонализация ответа" +3. **Интеграция с существующей системой:** + - Подключение агентов к текущему pipeline + - Настройка логирования и мониторинга + - Тестирование взаимодействия агентов + +--- + +## Этап 4. Интеграция RAG в pipeline ассистента 1. **Модификация логики ответа ассистента:** - При получении сообщения пользователя — искать релевантные знания и включать их в prompt LLM. - Обеспечить мультиязычность поиска и генерации ответа. @@ -78,7 +267,7 @@ --- -## Этап 4. Интерфейс для админа +## Этап 5. Интерфейс для админа 1. **UI для управления знаниями:** - Добавить на фронте раздел для просмотра, добавления, редактирования и удаления знаний. 2. **UI для модерации ответов ассистента:** @@ -87,7 +276,7 @@ --- -## Этап 5. Поддержка мультимодальности и мультиязычности +## Этап 6. Поддержка мультимодальности и мультиязычности 1. **Обработка вложений (аудио, видео, картинки):** - Решить, как хранить и индексировать такие данные (например, хранить ссылки и метаданные, а не сами файлы). 2. **Мультиязычный поиск и генерация:** @@ -95,7 +284,7 @@ --- -## Этап 6. Тестирование и оптимизация +## Этап 7. Тестирование и оптимизация 1. **Покрытие тестами ключевых сценариев (unit, интеграционные).** 2. **Оптимизация скорости поиска и генерации.** 3. **Документация для команды.** diff --git a/docs/SMART_CONTRACTS.md b/docs/SMART_CONTRACTS.md index 60abbd0..4918ed5 100644 --- a/docs/SMART_CONTRACTS.md +++ b/docs/SMART_CONTRACTS.md @@ -25,7 +25,8 @@ DLE.sol (Один контракт) ├── Система голосования (проверка баланса токенов) ├── Мультиподпись (через токен-холдеров) ├── Модули (добавляемые через голосование) -└── Мультичейн синхронизация +├── Мультичейн синхронизация +└── Полное управление данными DLE через кворум ``` ### Требования @@ -42,7 +43,7 @@ DLE.sol (Один контракт) - **Описание**: Процент от общего количества токенов для принятия решений - **Функции**: - Настройка кворума при создании DLE - - Изменение кворума через голосование + - **Изменение кворума через голосование** ✅ - Расчет кворума: `(totalSupply * quorumPercentage) / 100` - Проверка достижения кворума для каждого решения @@ -55,7 +56,21 @@ DLE.sol (Один контракт) - Выполнение предложений после достижения кворума - **НЕТ админских ролей - только коллективное управление** -#### 4. Мультиподпись через токен-холдеров +#### 4. Полное управление данными DLE через кворум ✅ +- **Описание**: Все данные DLE можно изменить через систему голосования +- **Функции**: + - **Изменение названия DLE** через кворум + - **Изменение символа токена** через кворум + - **Изменение местонахождения** через кворум + - **Изменение координат** через кворум + - **Изменение юрисдикции** через кворум + - **Изменение ОКТМО** через кворум + - **Изменение КПП** через кворум + - **Изменение кодов ОКВЭД** через кворум + - **Изменение процента кворума** через кворум + - **Изменение текущей цепочки** через кворум + +#### 5. Мультиподпись через токен-холдеров - **Описание**: Система подписей для критических операций - **Функции**: - Подписание операций токен-холдерами @@ -63,7 +78,7 @@ DLE.sol (Один контракт) - Сбор подписей до достижения кворума - Выполнение операций после сбора подписей -#### 5. Казначейские функции +#### 6. Казначейские функции - **Описание**: Управление финансами DLE через голосование - **Функции**: - Внесение токенов в казну @@ -71,7 +86,7 @@ DLE.sol (Один контракт) - Распределение дивидендов - Бюджетирование через предложения -#### 6. Модульная система +#### 7. Модульная система - **Описание**: Добавление новых функций через модули - **Функции**: - Добавление модулей через голосование @@ -79,7 +94,7 @@ DLE.sol (Один контракт) - Изоляция модулей от основного контракта - Обновление модулей через голосование -#### 7. Коммуникационные функции +#### 8. Коммуникационные функции - **Описание**: Прием сообщений и звонков - **Функции**: - Прием текстовых сообщений @@ -98,6 +113,114 @@ DLE может владеть токенами других DLE и участв 3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A** 4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое +### Новые возможности изменения данных DLE ✅ + +#### 1. Обновление основной информации DLE +```solidity +function _updateDLEInfo( + string memory _name, + string memory _symbol, + string memory _location, + string memory _coordinates, + uint256 _jurisdiction, + uint256 _oktmo, + string[] memory _okvedCodes, + uint256 _kpp +) internal +``` + +#### 2. Изменение процента кворума +```solidity +function _updateQuorumPercentage(uint256 _newQuorumPercentage) internal +``` + +#### 3. Изменение текущей цепочки +```solidity +function _updateCurrentChainId(uint256 _newChainId) internal +``` + +#### 4. События для отслеживания изменений +```solidity +event DLEInfoUpdated(string name, string symbol, string location, string coordinates, uint256 jurisdiction, uint256 oktmo, string[] okvedCodes, uint256 kpp); +event QuorumPercentageUpdated(uint256 oldQuorumPercentage, uint256 newQuorumPercentage); +event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId); +``` + +### Процесс изменения данных DLE + +#### 1. Создание предложения +- Любой токен-холдер создает предложение об изменении данных +- Выбирает цепочку для сбора голосов +- Указывает новые значения для изменения + +#### 2. Голосование +- Токен-холдеры голосуют за/против изменения +- Голосующая сила = количество токенов +- Проверка баланса при каждом голосе + +#### 3. Исполнение +- При достижении кворума предложение исполняется +- Данные DLE обновляются +- Событие эмитится для отслеживания + +#### 4. Синхронизация +- Изменения синхронизируются во все поддерживаемые цепочки +- Merkle proofs обеспечивают безопасность cross-chain операций + +### Примеры использования + +#### Изменение названия DLE +``` +1. Создание предложения: "Изменить название на 'Новое DLE'" +2. Голосование в выбранной цепочке +3. При кворуме: обновление названия +4. Синхронизация во все цепочки +``` + +#### Изменение кворума +``` +1. Создание предложения: "Изменить кворум с 51% на 60%" +2. Голосование в выбранной цепочке +3. При кворуме: обновление процента кворума +4. Синхронизация во все цепочки +``` + +#### Изменение текущей цепочки +``` +1. Создание предложения: "Изменить текущую цепочку на Polygon" +2. Голосование в выбранной цепочке +3. При кворуме: обновление currentChainId +4. Синхронизация во все цепочки +``` + +### Безопасность + +#### Валидация данных +- Проверка корректности всех входящих данных +- Валидация адресов и числовых значений +- Проверка поддержки цепочек перед изменением + +#### Защита от злоупотреблений +- Все изменения только через кворум +- Проверка баланса токенов при голосовании +- Merkle proofs для cross-chain безопасности + +#### Аудит изменений +- Все изменения логируются в событиях +- Возможность отслеживания истории изменений +- Прозрачность всех операций + +### Иерархическая система голосования DLE + +#### Концепция +DLE может владеть токенами других DLE и участвовать в их голосовании через систему кворума подписей. + +#### Механизм работы +1. **DLE A** владеет токенами **DLE B** +2. **Голос DLE A** в **DLE B** прямо пропорционален количеству токенов **DLE B** на балансе **DLE A** +3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A** +4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое + #### Пример - **DLE A** владеет **10% токенов DLE B** - Кворум в **DLE B** = **51%** diff --git a/frontend/nginx-tunnel.conf b/frontend/nginx-tunnel.conf index 1df15ca..5333f48 100644 --- a/frontend/nginx-tunnel.conf +++ b/frontend/nginx-tunnel.conf @@ -1,5 +1,21 @@ # Финальная безопасная конфигурация nginx +# Включаем WAF конфигурацию +# include /etc/nginx/conf.d/waf.conf; + +# Блокировка всех подозрительных поддоменов +server { + listen 80; + server_name _; + + # Возвращаем 444 (Connection Closed Without Response) для всех неизвестных доменов + return 444; + + # Логируем попытки доступа к подозрительным доменам + access_log /var/log/nginx/suspicious_domains.log; +} + +# Основной сервер только для легитимных доменов server { listen 80; server_name hb3-accelerator.com www.hb3-accelerator.com localhost 127.0.0.1; @@ -7,22 +23,40 @@ server { root /usr/share/nginx/html; index index.html; + # Блокировка по WAF правилам + # if ($bad_ip = 1) { + # return 403; + # } + + # if ($bad_bot = 1) { + # return 403; + # } + + # if ($bad_request = 1) { + # return 404; + # } + + # if ($bad_domain = 1) { + # return 404; + # } + # Блокировка агрессивных сканеров if ($http_user_agent ~* (sqlmap|nikto|dirb|gobuster|wfuzz|burp|zap|nessus|openvas)) { return 403; } - # Блокировка старых браузеров и подозрительных User-Agent - if ($http_user_agent ~* "Chrome/[1-7][0-9]\.") { + # Блокировка только очень старых браузеров (до Chrome 50) + if ($http_user_agent ~* "Chrome/[1-4][0-9]\.") { return 403; } - if ($http_user_agent ~* "Safari/[1-5][0-9][0-9]\.") { + # Блокировка только очень старых Safari (до версии 500) + if ($http_user_agent ~* "Safari/[1-4][0-9][0-9]\.") { return 403; } - # Блокировка подозрительных поддоменов - if ($host !~* "^(hb3-accelerator\.com|www\.hb3-accelerator\.com|localhost|127\.0\.0\.1)$") { + # Дополнительная проверка подозрительных поддоменов + if ($host ~* "^(test|dev|staging|admin|beta|demo|old|new|backup|www2|www3|www4|www5|www6|www7|www8|www9|www10)\.hb3-accelerator\.com$") { return 404; } @@ -51,11 +85,6 @@ server { return 403; } - # Блокировка HEAD запросов к подозрительным файлам - if ($request_method = "HEAD" && $request_uri ~* "(backup|backups|bak|old|restore|\.tar|\.gz|\.sql|config\.js|sftp-config\.json)") { - return 404; - } - # Блокировка всех запросов к конфигурационным файлам if ($request_uri ~* "(config\.js|sftp-config\.json|\.config\.|\.conf\.|\.ini\.|\.env\.|\.json\.)") { return 404; diff --git a/frontend/nginx-waf.conf b/frontend/nginx-waf.conf index 5730ec2..902fadc 100644 --- a/frontend/nginx-waf.conf +++ b/frontend/nginx-waf.conf @@ -41,6 +41,7 @@ map $http_user_agent $bad_bot { geo $bad_ip { default 0; 198.55.98.76 1; + # Дополнительные IP будут добавляться автоматически мониторингом } # Блокировка подозрительных запросов @@ -56,4 +57,17 @@ map $request_uri $bad_request { ~*(config|setup|install|upgrade|backup|restore) 1; ~*\.(env|config|ini|conf|cfg|yml|yaml|json|xml|sql|db|bak|backup|old|tmp|temp|log)$ 1; ~*(\.\.|\.\./|\.\.\\|\.\.%2f|\.\.%5c) 1; +} + +# Блокировка подозрительных доменов +map $host $bad_domain { + default 0; + ~*^(test|dev|staging|admin|beta|demo|old|new|backup|www2|www3|www4|www5|www6|www7|www8|www9|www10)\.hb3-accelerator\.com$ 1; + ~*akamai-inputs- 1; + ~*gosipgambar 1; + ~*gitlab\.cloud 1; + ~*autodiscover\.home 1; + ~*akamai-san 1; + ~*bestcupcakerecipes 1; + ~*usmc1 1; } \ No newline at end of file diff --git a/frontend/nginx.Dockerfile b/frontend/nginx.Dockerfile index 7210d04..71c267c 100644 --- a/frontend/nginx.Dockerfile +++ b/frontend/nginx.Dockerfile @@ -1,3 +1,4 @@ FROM nginx:alpine COPY dist/ /usr/share/nginx/html/ -COPY nginx-tunnel.conf /etc/nginx/conf.d/default.conf \ No newline at end of file +COPY nginx-tunnel.conf /etc/nginx/conf.d/default.conf +# COPY nginx-waf.conf /etc/nginx/conf.d/waf.conf \ No newline at end of file diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 6343262..f4ac629 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -35,6 +35,7 @@ import { useAuth, provideAuth } from './composables/useAuth'; import { fetchTokenBalances } from './services/tokens'; import eventBus from './utils/eventBus'; + import wsClient from './utils/websocket'; // Импорт стилей import './assets/styles/variables.css'; @@ -163,6 +164,28 @@ } }); + // Подписываемся на WebSocket события для токенов + wsClient.onAuthTokenAdded(() => { + console.log('[App] WebSocket: токен добавлен, обновляем балансы'); + if (auth.isAuthenticated.value) { + refreshTokenBalances(); + } + }); + + wsClient.onAuthTokenDeleted(() => { + console.log('[App] WebSocket: токен удален, обновляем балансы'); + if (auth.isAuthenticated.value) { + refreshTokenBalances(); + } + }); + + wsClient.onAuthTokenUpdated(() => { + console.log('[App] WebSocket: токен обновлен, обновляем балансы'); + if (auth.isAuthenticated.value) { + refreshTokenBalances(); + } + }); + // Отписываемся при размонтировании компонента onUnmounted(() => { if (unsubscribe) { diff --git a/frontend/src/utils/dle-contract.js b/frontend/src/utils/dle-contract.js index 83f453a..593550a 100644 --- a/frontend/src/utils/dle-contract.js +++ b/frontend/src/utils/dle-contract.js @@ -205,51 +205,63 @@ export async function executeProposal(dleAddress, proposalId) { } /** - * Добавить модуль + * Создать предложение о добавлении модуля * @param {string} dleAddress - Адрес DLE контракта + * @param {string} description - Описание предложения + * @param {number} duration - Длительность голосования в секундах * @param {string} moduleId - ID модуля * @param {string} moduleAddress - Адрес модуля - * @returns {Promise} - Результат добавления + * @param {number} chainId - ID цепочки для голосования + * @returns {Promise} - Результат создания предложения */ -export async function addModule(dleAddress, moduleId, moduleAddress) { +export async function createAddModuleProposal(dleAddress, description, duration, moduleId, moduleAddress, chainId) { try { - const response = await axios.post('/blockchain/add-module', { + const response = await axios.post('/blockchain/create-add-module-proposal', { dleAddress: dleAddress, + description: description, + duration: duration, moduleId: moduleId, - moduleAddress: moduleAddress + moduleAddress: moduleAddress, + chainId: chainId }); if (response.data.success) { return response.data.data; } else { - throw new Error(response.data.message || 'Не удалось добавить модуль'); + throw new Error(response.data.message || 'Не удалось создать предложение о добавлении модуля'); } } catch (error) { - console.error('Ошибка добавления модуля:', error); + console.error('Ошибка создания предложения о добавлении модуля:', error); throw error; } } /** - * Удалить модуль + * Создать предложение об удалении модуля * @param {string} dleAddress - Адрес DLE контракта + * @param {string} description - Описание предложения + * @param {number} duration - Длительность голосования в секундах * @param {string} moduleId - ID модуля - * @returns {Promise} - Результат удаления + * @param {number} chainId - ID цепочки для голосования + * @returns {Promise} - Результат создания предложения */ -export async function removeModule(dleAddress, moduleId) { +export async function createRemoveModuleProposal(dleAddress, description, duration, moduleId, chainId) { try { - const response = await axios.post('/blockchain/remove-module', { + const response = await axios.post('/blockchain/create-remove-module-proposal', { dleAddress: dleAddress, - moduleId: moduleId + description: description, + duration: duration, + moduleId: moduleId, + chainId: chainId }); if (response.data.success) { return response.data.data; } else { - throw new Error(response.data.message || 'Не удалось удалить модуль'); + throw new Error(response.data.message || 'Не удалось создать предложение об удалении модуля'); } } catch (error) { - console.error('Ошибка удаления модуля:', error); + console.error('Ошибка создания предложения об удалении модуля:', error); throw error; } } @@ -464,4 +476,239 @@ export async function getSupportedChains(dleAddress) { // Возвращаем пустой массив если API недоступен return []; } +} + +/** + * Деактивировать DLE (только при достижении кворума) + * @param {string} dleAddress - Адрес DLE контракта + * @param {string} userAddress - Адрес пользователя + * @returns {Promise} - Результат деактивации + */ +export async function deactivateDLE(dleAddress, userAddress) { + try { + // Проверяем наличие браузерного кошелька + if (!window.ethereum) { + throw new Error('Браузерный кошелек не установлен'); + } + + // Запрашиваем подключение к кошельку + const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); + const provider = new ethers.BrowserProvider(window.ethereum); + const signer = await provider.getSigner(); + + // Проверяем, что подключенный адрес совпадает с userAddress + const connectedAddress = await signer.getAddress(); + if (connectedAddress.toLowerCase() !== userAddress.toLowerCase()) { + throw new Error('Подключенный кошелек не совпадает с адресом пользователя'); + } + + // ABI для деактивации DLE + const dleAbi = [ + "function deactivate() external", + "function balanceOf(address) external view returns (uint256)", + "function totalSupply() external view returns (uint256)", + "function createDeactivationProposal(string memory _description, uint256 _duration, uint256 _chainId) external returns (uint256)", + "function voteDeactivation(uint256 _proposalId, bool _support) external", + "function checkDeactivationProposalResult(uint256 _proposalId) public view returns (bool passed, bool quorumReached)", + "function executeDeactivationProposal(uint256 _proposalId) external" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, signer); + + // Проверяем, что пользователь имеет токены + const balance = await dle.balanceOf(userAddress); + if (balance <= 0) { + throw new Error('Для деактивации DLE необходимо иметь токены'); + } + + // Проверяем, что DLE не пустой (есть токены) + const totalSupply = await dle.totalSupply(); + if (totalSupply <= 0) { + throw new Error('DLE не имеет токенов'); + } + + // Выполняем деактивацию (функция проверит наличие валидного предложения с кворумом) + const tx = await dle.deactivate(); + const receipt = await tx.wait(); + + console.log('DLE деактивирован, tx hash:', tx.hash); + + return { + success: true, + txHash: tx.hash, + blockNumber: receipt.blockNumber, + message: 'DLE успешно деактивирован' + }; + + } catch (error) { + console.error('Ошибка деактивации DLE:', error); + throw error; + } +} + +/** + * Создать предложение о деактивации DLE + * @param {string} dleAddress - Адрес DLE контракта + * @param {string} description - Описание предложения + * @param {number} duration - Длительность голосования в секундах + * @param {number} chainId - ID цепочки для деактивации + * @returns {Promise} - Результат создания предложения + */ +export async function createDeactivationProposal(dleAddress, description, duration, chainId) { + try { + // Проверяем наличие браузерного кошелька + if (!window.ethereum) { + throw new Error('Браузерный кошелек не установлен'); + } + + const provider = new ethers.BrowserProvider(window.ethereum); + const signer = await provider.getSigner(); + + const dleAbi = [ + "function createDeactivationProposal(string memory _description, uint256 _duration, uint256 _chainId) external returns (uint256)" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, signer); + + const tx = await dle.createDeactivationProposal(description, duration, chainId); + const receipt = await tx.wait(); + + console.log('Предложение о деактивации создано, tx hash:', tx.hash); + + return { + success: true, + txHash: tx.hash, + blockNumber: receipt.blockNumber, + message: 'Предложение о деактивации создано' + }; + + } catch (error) { + console.error('Ошибка создания предложения о деактивации:', error); + throw error; + } +} + +/** + * Голосовать за предложение деактивации + * @param {string} dleAddress - Адрес DLE контракта + * @param {number} proposalId - ID предложения + * @param {boolean} support - Поддержка предложения + * @returns {Promise} - Результат голосования + */ +export async function voteDeactivationProposal(dleAddress, proposalId, support) { + try { + if (!window.ethereum) { + throw new Error('Браузерный кошелек не установлен'); + } + + const provider = new ethers.BrowserProvider(window.ethereum); + const signer = await provider.getSigner(); + + const dleAbi = [ + "function voteDeactivation(uint256 _proposalId, bool _support) external" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, signer); + + const tx = await dle.voteDeactivation(proposalId, support); + const receipt = await tx.wait(); + + console.log('Голосование за предложение деактивации, tx hash:', tx.hash); + + return { + success: true, + txHash: tx.hash, + blockNumber: receipt.blockNumber, + message: `Голосование ${support ? 'за' : 'против'} предложения деактивации` + }; + + } catch (error) { + console.error('Ошибка голосования за предложение деактивации:', error); + throw error; + } +} + +/** + * Проверить результат предложения деактивации + * @param {string} dleAddress - Адрес DLE контракта + * @param {number} proposalId - ID предложения + * @returns {Promise} - Результат проверки + */ +export async function checkDeactivationProposalResult(dleAddress, proposalId) { + try { + const response = await axios.post('http://localhost:8000/api/blockchain/check-deactivation-proposal-result', { + dleAddress: dleAddress, + proposalId: proposalId + }); + + if (response.data.success) { + return response.data.data; + } else { + throw new Error(response.data.message || 'Не удалось проверить результат предложения деактивации'); + } + } catch (error) { + console.error('Ошибка проверки результата предложения деактивации:', error); + throw error; + } +} + +/** + * Исполнить предложение деактивации + * @param {string} dleAddress - Адрес DLE контракта + * @param {number} proposalId - ID предложения + * @returns {Promise} - Результат исполнения + */ +export async function executeDeactivationProposal(dleAddress, proposalId) { + try { + if (!window.ethereum) { + throw new Error('Браузерный кошелек не установлен'); + } + + const provider = new ethers.BrowserProvider(window.ethereum); + const signer = await provider.getSigner(); + + const dleAbi = [ + "function executeDeactivationProposal(uint256 _proposalId) external" + ]; + + const dle = new ethers.Contract(dleAddress, dleAbi, signer); + + const tx = await dle.executeDeactivationProposal(proposalId); + const receipt = await tx.wait(); + + console.log('Предложение деактивации исполнено, tx hash:', tx.hash); + + return { + success: true, + txHash: tx.hash, + blockNumber: receipt.blockNumber, + message: 'Предложение деактивации успешно исполнено' + }; + + } catch (error) { + console.error('Ошибка исполнения предложения деактивации:', error); + throw error; + } +} + +/** + * Загрузить предложения деактивации + * @param {string} dleAddress - Адрес DLE контракта + * @returns {Promise} - Список предложений деактивации + */ +export async function loadDeactivationProposals(dleAddress) { + try { + const response = await axios.post('http://localhost:8000/api/blockchain/load-deactivation-proposals', { + dleAddress: dleAddress + }); + + if (response.data.success) { + return response.data.data.proposals; + } else { + throw new Error(response.data.message || 'Не удалось загрузить предложения деактивации'); + } + } catch (error) { + console.error('Ошибка загрузки предложений деактивации:', error); + return []; + } } \ No newline at end of file diff --git a/frontend/src/utils/websocket.js b/frontend/src/utils/websocket.js index 265a79a..700874c 100644 --- a/frontend/src/utils/websocket.js +++ b/frontend/src/utils/websocket.js @@ -124,6 +124,19 @@ class WebSocketClient { dleAddress: dleAddress }); } + + // Обработчики для токенов аутентификации + onAuthTokenAdded(callback) { + this.on('auth_token_added', callback); + } + + onAuthTokenDeleted(callback) { + this.on('auth_token_deleted', callback); + } + + onAuthTokenUpdated(callback) { + this.on('auth_token_updated', callback); + } } // Создаем глобальный экземпляр WebSocket клиента diff --git a/frontend/src/views/settings/AuthTokensSettings.vue b/frontend/src/views/settings/AuthTokensSettings.vue index 70123d8..7f63fda 100644 --- a/frontend/src/views/settings/AuthTokensSettings.vue +++ b/frontend/src/views/settings/AuthTokensSettings.vue @@ -90,6 +90,7 @@ import { reactive } from 'vue'; import useBlockchainNetworks from '@/composables/useBlockchainNetworks'; import api from '@/api/axios'; import { useAuthContext } from '@/composables/useAuth'; +import eventBus from '@/utils/eventBus'; const props = defineProps({ authTokens: { type: Array, required: true } }); @@ -97,7 +98,7 @@ const emit = defineEmits(['update']); const newToken = reactive({ name: '', address: '', network: '', minBalance: 0 }); const { networkGroups, networks } = useBlockchainNetworks(); -const { isAdmin } = useAuthContext(); +const { isAdmin, checkTokenBalances, address, checkAuth } = useAuthContext(); async function addToken() { if (!newToken.name || !newToken.address || !newToken.network) { @@ -109,7 +110,30 @@ async function addToken() { ...newToken, minBalance: Number(newToken.minBalance) || 0 }); - emit('update'); + + // После добавления токена перепроверяем баланс пользователя и обновляем состояние аутентификации + try { + if (address.value) { + await checkTokenBalances(address.value); + console.log('[AuthTokensSettings] Баланс токенов перепроверен после добавления'); + } + + // Обновляем состояние аутентификации чтобы отразить изменения роли + await checkAuth(); + console.log('[AuthTokensSettings] Состояние аутентификации обновлено после добавления токена'); + + // Уведомляем App.vue об изменении настроек аутентификации + eventBus.emit('auth-settings-saved'); + console.log('[AuthTokensSettings] Событие auth-settings-saved отправлено'); + } catch (balanceError) { + console.error('[AuthTokensSettings] Ошибка при перепроверке баланса:', balanceError); + } + + // Небольшая задержка для синхронизации с backend + setTimeout(() => { + emit('update'); + }, 100); + newToken.name = ''; newToken.address = ''; newToken.network = ''; @@ -130,7 +154,29 @@ async function removeToken(index) { try { const response = await api.delete(`/settings/auth-token/${token.address}/${token.network}`); console.log('[AuthTokensSettings] Успешное удаление:', response.data); - emit('update'); + + // После удаления токена перепроверяем баланс пользователя и обновляем состояние аутентификации + try { + if (address.value) { + await checkTokenBalances(address.value); + console.log('[AuthTokensSettings] Баланс токенов перепроверен после удаления'); + } + + // Обновляем состояние аутентификации чтобы отразить изменения роли + await checkAuth(); + console.log('[AuthTokensSettings] Состояние аутентификации обновлено после удаления токена'); + + // Уведомляем App.vue об изменении настроек аутентификации + eventBus.emit('auth-settings-saved'); + console.log('[AuthTokensSettings] Событие auth-settings-saved отправлено'); + } catch (balanceError) { + console.error('[AuthTokensSettings] Ошибка при перепроверке баланса:', balanceError); + } + + // Небольшая задержка для синхронизации с backend + setTimeout(() => { + emit('update'); + }, 100); } catch (e) { console.error('[AuthTokensSettings] Ошибка при удалении токена:', e); console.error('[AuthTokensSettings] Response:', e.response); diff --git a/frontend/src/views/settings/SecuritySettingsView.vue b/frontend/src/views/settings/SecuritySettingsView.vue index 7540dcf..95b678f 100644 --- a/frontend/src/views/settings/SecuritySettingsView.vue +++ b/frontend/src/views/settings/SecuritySettingsView.vue @@ -77,6 +77,7 @@ import AuthTokensSettings from './AuthTokensSettings.vue'; import { useRouter } from 'vue-router'; import { useAuthContext } from '@/composables/useAuth'; import NoAccessModal from '@/components/NoAccessModal.vue'; +import wsClient from '@/utils/websocket'; // Состояние для отображения/скрытия дополнительных настроек const showRpcSettings = ref(false); @@ -234,6 +235,22 @@ const saveSecuritySettings = async () => { // Загрузка настроек при монтировании компонента onMounted(() => { loadSettings(); + + // Подписываемся на WebSocket события для обновления списка токенов + wsClient.onAuthTokenAdded(() => { + console.log('[SecuritySettingsView] WebSocket: токен добавлен, обновляем список'); + loadSettings(); + }); + + wsClient.onAuthTokenDeleted(() => { + console.log('[SecuritySettingsView] WebSocket: токен удален, обновляем список'); + loadSettings(); + }); + + wsClient.onAuthTokenUpdated(() => { + console.log('[SecuritySettingsView] WebSocket: токен обновлен, обновляем список'); + loadSettings(); + }); }); // --- Методы для RPC --- diff --git a/frontend/src/views/smartcontracts/DleProposalsView.vue b/frontend/src/views/smartcontracts/DleProposalsView.vue index 535a01d..e531c40 100644 --- a/frontend/src/views/smartcontracts/DleProposalsView.vue +++ b/frontend/src/views/smartcontracts/DleProposalsView.vue @@ -19,46 +19,42 @@ @auth-action-completed="$emit('auth-action-completed')" >
-
-
-

🗳️ Управление предложениями

-
- {{ selectedDle.name }} ({{ selectedDle.symbol }}) - {{ shortenAddress(selectedDle.dleAddress) }} + +
@@ -255,6 +251,9 @@ + + +
@@ -351,6 +350,111 @@ >
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + Процент от общего количества токенов (1-100%) +
+
+ + +
+
+ + + Выберите новую цепочку для управления DLE +
+
@@ -393,7 +497,6 @@ - @@ -405,6 +508,7 @@ import { useAuthContext } from '@/composables/useAuth'; import BaseLayout from '../../components/BaseLayout.vue'; import { getDLEInfo, loadProposals, createProposal as createProposalAPI, voteForProposal as voteForProposalAPI, executeProposal as executeProposalAPI, getSupportedChains } from '../../utils/dle-contract.js'; import wsClient from '../../utils/websocket.js'; +import { ethers } from 'ethers'; const props = defineProps({ dleAddress: { type: String, required: false, default: null }, @@ -453,7 +557,15 @@ const newProposal = ref({ to: '', from: '', amount: 0, - customData: '' + customData: '', + name: '', + symbol: '', + location: '', + coordinates: '', + jurisdiction: 0, + oktmo: 0, + kpp: 0, + chainId: '' } }); @@ -546,6 +658,12 @@ function validateOperationParams() { return validateAddress(params.from) && params.amount > 0; case 'custom': return params.customData && params.customData.startsWith('0x') && params.customData.length >= 10; + case 'updateDLEInfo': + return params.name && params.symbol && params.location && params.coordinates && params.jurisdiction && params.oktmo && params.kpp; + case 'updateQuorum': + return params.quorumPercentage >= 1 && params.quorumPercentage <= 100; + case 'updateChain': + return params.chainId && params.chainId !== ''; default: return false; } @@ -580,7 +698,10 @@ function getOperationTypeName(type) { 'transfer': 'Передача токенов', 'mint': 'Минтинг токенов', 'burn': 'Сжигание токенов', - 'custom': 'Пользовательская операция' + 'custom': 'Пользовательская операция', + 'updateDLEInfo': 'Обновить данные DLE', + 'updateQuorum': 'Изменить кворум', + 'updateChain': 'Изменить текущую цепочку' }; return types[type] || 'Неизвестный тип'; } @@ -597,6 +718,12 @@ function getOperationParamsPreview() { return `От: ${shortenAddress(params.from)}, Количество: ${params.amount}`; case 'custom': return `Данные: ${params.customData.substring(0, 20)}...`; + case 'updateDLEInfo': + return `Название: ${params.name}, Символ: ${params.symbol}, Местонахождение: ${params.location}, Координаты: ${params.coordinates}, Юрисдикция: ${params.jurisdiction}, ОКТМО: ${params.oktmo}, КПП: ${params.kpp}`; + case 'updateQuorum': + return `Процент кворума: ${params.quorumPercentage}%`; + case 'updateChain': + return `Новая цепочка: ${getChainName(params.chainId) || 'Не выбрана'}`; default: return 'Не указаны'; } @@ -620,8 +747,30 @@ function getProposalStatus(proposal) { return 'executed'; } + // Проверяем, достигнут ли кворум + const quorumPercentage = getQuorumPercentage(proposal); + const requiredQuorum = getRequiredQuorum(); + const hasReachedQuorum = quorumPercentage >= requiredQuorum; + + // Добавляем отладочную информацию + console.log('[getProposalStatus] Проверка предложения:', { + proposalId: proposal.id, + now, + deadline, + deadlinePassed: deadline > 0 && now >= deadline, + quorumPercentage, + requiredQuorum, + hasReachedQuorum + }); + + // Если кворум достигнут, предложение можно выполнить + if (hasReachedQuorum) { + return 'succeeded'; + } + + // Если дедлайн истек, но кворум не достигнут if (deadline > 0 && now >= deadline) { - return proposal.isPassed ? 'succeeded' : 'defeated'; + return 'defeated'; } return 'active'; @@ -754,7 +903,31 @@ function canSign(proposal) { } function canExecute(proposal) { - return proposal.status === 'succeeded' && !proposal.executed; + const now = Math.floor(Date.now() / 1000); + const deadline = proposal.deadline || 0; + + // Предложение можно выполнить только если: + // 1. Дедлайн истек + // 2. Кворум достигнут + // 3. Предложение еще не выполнено + const quorumPercentage = getQuorumPercentage(proposal); + const requiredQuorum = getRequiredQuorum(); + const hasReachedQuorum = quorumPercentage >= requiredQuorum; + const deadlinePassed = deadline > 0 && now >= deadline; + + // Добавляем отладочную информацию + console.log('[canExecute] Проверка предложения:', { + proposalId: proposal.id, + quorumPercentage, + requiredQuorum, + hasReachedQuorum, + deadline, + now, + deadlinePassed, + executed: proposal.executed + }); + + return deadlinePassed && hasReachedQuorum && !proposal.executed; } function hasSigned(proposalId) { @@ -859,6 +1032,12 @@ function encodeOperation() { return encodeBurnOperation(params.from, params.amount); case 'custom': return params.customData; + case 'updateDLEInfo': + return encodeUpdateDLEInfoOperation(params.name, params.symbol, params.location, params.coordinates, params.jurisdiction, params.oktmo, params.kpp); + case 'updateQuorum': + return encodeUpdateQuorumOperation(params.quorumPercentage); + case 'updateChain': + return encodeUpdateChainOperation(params.chainId); default: throw new Error('Неизвестный тип операции'); } @@ -888,6 +1067,42 @@ function encodeBurnOperation(from, amount) { return selector + paddedAddress + paddedAmount; } +function encodeUpdateDLEInfoOperation(name, symbol, location, coordinates, jurisdiction, oktmo, kpp) { + // Селектор для updateDLEInfo(string,string,string,string,uint256,uint256,string[],uint256) + const selector = '0x' + ethers.keccak256(ethers.toUtf8Bytes('updateDLEInfo(string,string,string,string,uint256,uint256,string[],uint256)')).slice(0, 10); + + // Кодируем параметры + const abiCoder = new ethers.AbiCoder(); + const encodedData = abiCoder.encode( + ['string', 'string', 'string', 'string', 'uint256', 'uint256', 'string[]', 'uint256'], + [name, symbol, location, coordinates, jurisdiction, oktmo, [], kpp] // okvedCodes пока пустой массив + ); + + return selector + encodedData.slice(2); +} + +function encodeUpdateQuorumOperation(quorumPercentage) { + // Селектор для updateQuorumPercentage(uint256) + const selector = '0x' + ethers.keccak256(ethers.toUtf8Bytes('updateQuorumPercentage(uint256)')).slice(0, 10); + + // Кодируем параметр + const abiCoder = new ethers.AbiCoder(); + const encodedData = abiCoder.encode(['uint256'], [quorumPercentage]); + + return selector + encodedData.slice(2); +} + +function encodeUpdateChainOperation(chainId) { + // Селектор для updateCurrentChainId(uint256) + const selector = '0x' + ethers.keccak256(ethers.toUtf8Bytes('updateCurrentChainId(uint256)')).slice(0, 10); + + // Кодируем параметр + const abiCoder = new ethers.AbiCoder(); + const encodedData = abiCoder.encode(['uint256'], [chainId]); + + return selector + encodedData.slice(2); +} + // Подпись предложения async function signProposalLocal(proposalId) { // Проверка прав админа для голосования @@ -994,7 +1209,15 @@ function resetForm() { to: '', from: '', amount: 0, - customData: '' + customData: '', + name: '', + symbol: '', + location: '', + coordinates: '', + jurisdiction: 0, + oktmo: 0, + kpp: 0, + chainId: '' } }; } @@ -1094,9 +1317,128 @@ onUnmounted(() => { \ No newline at end of file diff --git a/security-monitor.sh b/security-monitor.sh index 15e4ae4..3db3070 100755 --- a/security-monitor.sh +++ b/security-monitor.sh @@ -4,16 +4,18 @@ # Автоматически блокирует подозрительные IP адреса и домены LOG_FILE="/var/log/nginx/access.log" +SUSPICIOUS_LOG_FILE="/var/log/nginx/suspicious_domains.log" BLOCKED_IPS_FILE="/tmp/blocked_ips.txt" SUSPICIOUS_DOMAINS_FILE="/tmp/suspicious_domains.txt" NGINX_CONTAINER="dapp-frontend-nginx" +WAF_CONF_FILE="/etc/nginx/conf.d/waf.conf" # Создаем файлы для хранения данных touch "$BLOCKED_IPS_FILE" touch "$SUSPICIOUS_DOMAINS_FILE" echo "🔒 Запуск мониторинга безопасности DLE..." -echo "📊 Логирование атак в: $LOG_FILE" +echo "📊 Анализ логов nginx контейнера: $NGINX_CONTAINER" echo "🚫 Заблокированные IP: $BLOCKED_IPS_FILE" echo "🌐 Подозрительные домены: $SUSPICIOUS_DOMAINS_FILE" @@ -30,8 +32,31 @@ SUSPICIOUS_DOMAINS=( "akamai-inputs-rvc" "akamai-inputs-erau" "akamai-inputs-notion" + "bestcupcakerecipes" + "usmc1" + "test" + "admin" + "dev" + "staging" + "beta" + "demo" + "old" + "new" + "backup" ) +# Функция для создания WAF конфигурации +create_waf_config() { + docker exec "$NGINX_CONTAINER" sh -c " + cat > $WAF_CONF_FILE << 'EOF' +# WAF конфигурация для блокировки подозрительных IP +geo \$bad_ip { + default 0; + # Заблокированные IP будут добавляться сюда автоматически +EOF + " +} + # Функция для блокировки IP block_ip() { local ip=$1 @@ -51,9 +76,16 @@ block_ip() { echo "$ip" >> "$BLOCKED_IPS_FILE" echo "🚫 Блокируем IP: $ip (причина: $reason)" - # Добавляем IP в nginx конфигурацию + # Добавляем IP в nginx WAF конфигурацию docker exec "$NGINX_CONTAINER" sh -c " - echo ' $ip 1; # Автоматически заблокирован: $reason' >> /etc/nginx/conf.d/waf.conf + if [ ! -f $WAF_CONF_FILE ]; then + create_waf_config + fi + + # Добавляем IP в WAF конфигурацию + sed -i '/default 0;/a\\ $ip 1; # Автоматически заблокирован: $reason' $WAF_CONF_FILE + + # Перезагружаем nginx nginx -s reload " @@ -79,60 +111,71 @@ log_suspicious_domain() { fi } -# Функция для анализа логов -analyze_logs() { - echo "🔍 Анализ логов на предмет атак..." +# Функция для анализа Docker логов nginx +analyze_docker_logs() { + echo "🔍 Анализ Docker логов nginx на предмет атак..." - # Ищем подозрительные запросы - docker exec "$NGINX_CONTAINER" tail -f "$LOG_FILE" | while read line; do - # Извлекаем IP адрес - ip=$(echo "$line" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}') - - # Извлекаем домен из Referer - domain=$(echo "$line" | grep -oE 'https?://[^/]+' | sed 's|https\?://||') - - if [ -n "$ip" ]; then - # Проверяем на подозрительные запросы - if echo "$line" | grep -q "\.env\|\.config\|\.ini\|\.sql\|\.bak\|\.log"; then - block_ip "$ip" "Попытка доступа к чувствительным файлам" - fi + # Анализируем логи nginx контейнера + docker logs --follow "$NGINX_CONTAINER" | while read line; do + # Ищем HTTP запросы в логах + if echo "$line" | grep -qE "(GET|POST|HEAD|PUT|DELETE|OPTIONS)"; then + # Извлекаем IP адрес + ip=$(echo "$line" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}') - # Проверяем на сканирование резервных копий и архивов - if echo "$line" | grep -q "backup\|backups\|bak\|old\|restore\|\.tar\|\.gz\|sftp-config"; then - block_ip "$ip" "Сканирование резервных копий и конфигурационных файлов" - fi + # Извлекаем домен из Host заголовка + domain=$(echo "$line" | grep -oE 'Host: [^[:space:]]+' | sed 's/Host: //') - # Проверяем на подозрительные поддомены - if echo "$line" | grep -q "bestcupcakerecipes\|usmc1\|test\|admin\|dev\|staging"; then - block_ip "$ip" "Попытка доступа к несуществующим поддоменам" - fi + # Извлекаем User-Agent + user_agent=$(echo "$line" | grep -oE 'User-Agent: [^[:space:]]+' | sed 's/User-Agent: //') - # Проверяем на старые User-Agent - if echo "$line" | grep -q "Chrome/[1-7][0-9]\."; then - block_ip "$ip" "Подозрительный User-Agent (старый Chrome)" - fi + # Извлекаем URI + uri=$(echo "$line" | grep -oE '(GET|POST|HEAD|PUT|DELETE|OPTIONS) [^[:space:]]+' | awk '{print $2}') - if echo "$line" | grep -q "Safari/[1-5][0-9][0-9]\."; then - block_ip "$ip" "Подозрительный User-Agent (старый Safari)" - fi - - # Проверяем на известные сканеры - if echo "$line" | grep -qi "bot\|crawler\|spider\|scanner\|nmap\|sqlmap"; then - block_ip "$ip" "Известный сканер/бот" - fi - - # Проверяем на подозрительные домены - for suspicious in "${SUSPICIOUS_DOMAINS[@]}"; do - if echo "$domain" | grep -qi "$suspicious"; then - log_suspicious_domain "$domain" "$ip" - break + if [ -n "$ip" ]; then + echo "🔍 Анализируем запрос: $ip -> $domain -> $uri" + + # Проверяем на подозрительные запросы + if echo "$uri" | grep -q "\.env\|\.config\|\.ini\|\.sql\|\.bak\|\.log"; then + block_ip "$ip" "Попытка доступа к чувствительным файлам: $uri" + fi + + # Проверяем на сканирование резервных копий и архивов + if echo "$uri" | grep -q "backup\|backups\|bak\|old\|restore\|\.tar\|\.gz\|sftp-config"; then + block_ip "$ip" "Сканирование резервных копий и конфигурационных файлов: $uri" + fi + + # Проверяем на подозрительные поддомены + if echo "$domain" | grep -q "bestcupcakerecipes\|usmc1\|test\|admin\|dev\|staging"; then + block_ip "$ip" "Попытка доступа к несуществующим поддоменам: $domain" + fi + + # Проверяем на старые User-Agent + if echo "$user_agent" | grep -q "Chrome/[1-7][0-9]\."; then + block_ip "$ip" "Подозрительный User-Agent (старый Chrome): $user_agent" + fi + + if echo "$user_agent" | grep -q "Safari/[1-5][0-9][0-9]\."; then + block_ip "$ip" "Подозрительный User-Agent (старый Safari): $user_agent" + fi + + # Проверяем на известные сканеры + if echo "$user_agent" | grep -qi "bot\|crawler\|spider\|scanner\|nmap\|sqlmap"; then + block_ip "$ip" "Известный сканер/бот: $user_agent" + fi + + # Проверяем на подозрительные домены + for suspicious in "${SUSPICIOUS_DOMAINS[@]}"; do + if echo "$domain" | grep -qi "$suspicious"; then + log_suspicious_domain "$domain" "$ip" + break + fi + done + + # Проверяем на множественные запросы (DDoS) + request_count=$(docker logs "$NGINX_CONTAINER" | grep "$ip" | wc -l) + if [ "$request_count" -gt 100 ]; then + block_ip "$ip" "Подозрение на DDoS ($request_count запросов)" fi - done - - # Проверяем на множественные запросы (DDoS) - request_count=$(docker exec "$NGINX_CONTAINER" grep "$ip" "$LOG_FILE" | wc -l) - if [ "$request_count" -gt 100 ]; then - block_ip "$ip" "Подозрение на DDoS ($request_count запросов)" fi fi done @@ -151,12 +194,16 @@ show_stats() { tail -5 "$SUSPICIOUS_DOMAINS_FILE" 2>/dev/null || echo "Нет подозрительных доменов" } +# Инициализация WAF конфигурации +echo "🔧 Инициализация WAF конфигурации..." +create_waf_config + # Основной цикл while true; do echo "🔄 Проверка безопасности... $(date)" # Анализируем логи в фоне - analyze_logs & + analyze_docker_logs & # Показываем статистику каждые 5 минут show_stats