{"id":"4310b63459465f04b44ec8e7f6364178","_format":"hh-sol-build-info-1","solcVersion":"0.7.5","solcLongVersion":"0.7.5+commit.eb77ed08","input":{"language":"Solidity","sources":{"contracts/lib/Address2.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.7.5;\n\n/**\n * @dev Collection of functions related to the address type\n * From https://github.com/OpenZeppelin/openzeppelin-contracts\n */\nlibrary Address {\n  /**\n   * @dev Returns true if `account` is a contract.\n   *\n   * [IMPORTANT]\n   * ====\n   * It is unsafe to assume that an address for which this function returns\n   * false is an externally-owned account (EOA) and not a contract.\n   *\n   * Among others, `isContract` will return false for the following\n   * types of addresses:\n   *\n   *  - an externally-owned account\n   *  - a contract in construction\n   *  - an address where a contract will be created\n   *  - an address where a contract lived, but was destroyed\n   * ====\n   */\n  function isContract(address account) internal view returns (bool) {\n    // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\n    // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\n    // for accounts without code, i.e. `keccak256('')`\n    bytes32 codehash;\n    bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n    // solhint-disable-next-line no-inline-assembly\n    assembly {\n      codehash := extcodehash(account)\n    }\n    return (codehash != accountHash && codehash != 0x0);\n  }\n\n  /**\n   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n   * `recipient`, forwarding all available gas and reverting on errors.\n   *\n   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n   * of certain opcodes, possibly making contracts go over the 2300 gas limit\n   * imposed by `transfer`, making them unable to receive funds via\n   * `transfer`. {sendValue} removes this limitation.\n   *\n   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n   *\n   * IMPORTANT: because control is transferred to `recipient`, care must be\n   * taken to not create reentrancy vulnerabilities. Consider using\n   * {ReentrancyGuard} or the\n   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n   */\n  function sendValue(address payable recipient, uint256 amount) internal {\n    require(address(this).balance >= amount, 'Address: insufficient balance');\n\n    // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n    (bool success, ) = recipient.call{value: amount}('');\n    require(success, 'Address: unable to send value, recipient may have reverted');\n  }\n}"},"contracts/lib/BaseAdminUpgradeabilityProxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.7.5;\n\nimport './UpgradeabilityProxy.sol';\n\n/**\n * @title BaseAdminUpgradeabilityProxy\n * @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n * This contract combines an upgradeability proxy with an authorization\n * mechanism for administrative tasks.\n * All external functions in this contract must be guarded by the\n * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity\n * feature proposal that would enable this to be done automatically.\n */\ncontract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {\n  /**\n   * @dev Emitted when the administration has been transferred.\n   * @param previousAdmin Address of the previous admin.\n   * @param newAdmin Address of the new admin.\n   */\n  event AdminChanged(address previousAdmin, address newAdmin);\n\n  /**\n   * @dev Storage slot with the admin of the contract.\n   * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n   * validated in the constructor.\n   */\n\n  bytes32 internal constant ADMIN_SLOT =\n    0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n  /**\n   * @dev Modifier to check whether the `msg.sender` is the admin.\n   * If it is, it will run the function. Otherwise, it will delegate the call\n   * to the implementation.\n   */\n  modifier ifAdmin() {\n    if (msg.sender == _admin()) {\n      _;\n    } else {\n      _fallback();\n    }\n  }\n\n  /**\n   * @return The address of the proxy admin.\n   */\n  function admin() external ifAdmin returns (address) {\n    return _admin();\n  }\n\n  /**\n   * @return The address of the implementation.\n   */\n  function implementation() external ifAdmin returns (address) {\n    return _implementation();\n  }\n\n  /**\n   * @dev Changes the admin of the proxy.\n   * Only the current admin can call this function.\n   * @param newAdmin Address to transfer proxy administration to.\n   */\n  function changeAdmin(address newAdmin) external ifAdmin {\n    require(newAdmin != address(0), 'Cannot change the admin of a proxy to the zero address');\n    emit AdminChanged(_admin(), newAdmin);\n    _setAdmin(newAdmin);\n  }\n\n  /**\n   * @dev Upgrade the backing implementation of the proxy.\n   * Only the admin can call this function.\n   * @param newImplementation Address of the new implementation.\n   */\n  function upgradeTo(address newImplementation) external ifAdmin {\n    _upgradeTo(newImplementation);\n  }\n\n  /**\n   * @dev Upgrade the backing implementation of the proxy and call a function\n   * on the new implementation.\n   * This is useful to initialize the proxied contract.\n   * @param newImplementation Address of the new implementation.\n   * @param data Data to send as msg.data in the low level call.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   */\n  function upgradeToAndCall(address newImplementation, bytes calldata data)\n    external\n    payable\n    ifAdmin\n  {\n    _upgradeTo(newImplementation);\n    (bool success, ) = newImplementation.delegatecall(data);\n    require(success);\n  }\n\n  /**\n   * @return adm The admin slot.\n   */\n  function _admin() internal view returns (address adm) {\n    bytes32 slot = ADMIN_SLOT;\n    assembly {\n      adm := sload(slot)\n    }\n  }\n\n  /**\n   * @dev Sets the address of the proxy admin.\n   * @param newAdmin Address of the new proxy admin.\n   */\n  function _setAdmin(address newAdmin) internal {\n    bytes32 slot = ADMIN_SLOT;\n\n    assembly {\n      sstore(slot, newAdmin)\n    }\n  }\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal virtual override {\n    require(msg.sender != _admin(), 'Cannot call fallback function from the proxy admin');\n    super._willFallback();\n  }\n}"},"contracts/lib/BaseUpgradeabilityProxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.7.5;\n\nimport './Proxy.sol';\nimport './Address2.sol';\n\n/**\n * @title BaseUpgradeabilityProxy\n * @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n * This contract implements a proxy that allows to change the\n * implementation address to which it will delegate.\n * Such a change is called an implementation upgrade.\n */\ncontract BaseUpgradeabilityProxy is Proxy {\n  /**\n   * @dev Emitted when the implementation is upgraded.\n   * @param implementation Address of the new implementation.\n   */\n  event Upgraded(address indexed implementation);\n\n  /**\n   * @dev Storage slot with the address of the current implementation.\n   * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n   * validated in the constructor.\n   */\n  bytes32 internal constant IMPLEMENTATION_SLOT =\n    0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n  /**\n   * @dev Returns the current implementation.\n   * @return impl Address of the current implementation\n   */\n  function _implementation() internal view override returns (address impl) {\n    bytes32 slot = IMPLEMENTATION_SLOT;\n    assembly {\n      impl := sload(slot)\n    }\n  }\n\n  /**\n   * @dev Upgrades the proxy to a new implementation.\n   * @param newImplementation Address of the new implementation.\n   */\n  function _upgradeTo(address newImplementation) internal {\n    _setImplementation(newImplementation);\n    emit Upgraded(newImplementation);\n  }\n\n  /**\n   * @dev Sets the implementation address of the proxy.\n   * @param newImplementation Address of the new implementation.\n   */\n  function _setImplementation(address newImplementation) internal {\n    require(\n      Address.isContract(newImplementation),\n      'Cannot set a proxy implementation to a non-contract address'\n    );\n\n    bytes32 slot = IMPLEMENTATION_SLOT;\n\n    assembly {\n      sstore(slot, newImplementation)\n    }\n  }\n}"},"contracts/lib/InitializableAdminUpgradeabilityProxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.7.5;\n\nimport './BaseAdminUpgradeabilityProxy.sol';\nimport './InitializableUpgradeabilityProxy.sol';\n\n/**\n * @title InitializableAdminUpgradeabilityProxy\n * @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n * Extends from BaseAdminUpgradeabilityProxy with an initializer for\n * initializing the implementation, admin, and init data.\n */\ncontract InitializableAdminUpgradeabilityProxy is\n  BaseAdminUpgradeabilityProxy,\n  InitializableUpgradeabilityProxy\n{\n  /**\n   * Contract initializer.\n   * @param _logic address of the initial implementation.\n   * @param _admin Address of the proxy administrator.\n   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  function initialize(\n    address _logic,\n    address _admin,\n    bytes memory _data\n  ) public payable {\n    require(_implementation() == address(0));\n    InitializableUpgradeabilityProxy.initialize(_logic, _data);\n    assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1));\n    _setAdmin(_admin);\n  }\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal override(BaseAdminUpgradeabilityProxy, Proxy) {\n    BaseAdminUpgradeabilityProxy._willFallback();\n  }\n}"},"contracts/lib/InitializableUpgradeabilityProxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.7.5;\n\nimport './BaseUpgradeabilityProxy.sol';\n\n/**\n * @title InitializableUpgradeabilityProxy\n * @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n * Extends BaseUpgradeabilityProxy with an initializer for initializing\n * implementation and init data.\n */\ncontract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {\n  /**\n   * @dev Contract initializer.\n   * @param _logic Address of the initial implementation.\n   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  function initialize(address _logic, bytes memory _data) public payable {\n    require(_implementation() == address(0));\n    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));\n    _setImplementation(_logic);\n    if (_data.length > 0) {\n      (bool success, ) = _logic.delegatecall(_data);\n      require(success);\n    }\n  }\n}"},"contracts/lib/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.7.5;\n\n/**\n * @title Proxy\n * @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n * Implements delegation of calls to other contracts, with proper\n * forwarding of return values and bubbling of failures.\n * It defines a fallback function that delegates all calls to the address\n * returned by the abstract _implementation() internal function.\n */\nabstract contract Proxy {\n  /**\n   * @dev Fallback function.\n   * Implemented entirely in `_fallback`.\n   */\n  fallback() external payable {\n    _fallback();\n  }\n\n  /**\n   * @return The Address of the implementation.\n   */\n  function _implementation() internal view virtual returns (address);\n\n  /**\n   * @dev Delegates execution to an implementation contract.\n   * This is a low level function that doesn't return to its internal call site.\n   * It will return to the external caller whatever the implementation returns.\n   * @param implementation Address to delegate.\n   */\n  function _delegate(address implementation) internal {\n    assembly {\n      // Copy msg.data. We take full control of memory in this inline assembly\n      // block because it will not return to Solidity code. We overwrite the\n      // Solidity scratch pad at memory position 0.\n      calldatacopy(0, 0, calldatasize())\n\n      // Call the implementation.\n      // out and outsize are 0 because we don't know the size yet.\n      let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n      // Copy the returned data.\n      returndatacopy(0, 0, returndatasize())\n\n      switch result\n        // delegatecall returns 0 on error.\n        case 0 {\n          revert(0, returndatasize())\n        }\n        default {\n          return(0, returndatasize())\n        }\n    }\n  }\n\n  /**\n   * @dev Function that is run as the first thing in the fallback function.\n   * Can be redefined in derived contracts to add functionality.\n   * Redefinitions must call super._willFallback().\n   */\n  function _willFallback() internal virtual {}\n\n  /**\n   * @dev fallback implementation.\n   * Extracted to enable manual triggering.\n   */\n  function _fallback() internal {\n    _willFallback();\n    _delegate(_implementation());\n  }\n}"},"contracts/lib/UpgradeabilityProxy.sol":{"content":"// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.7.5;\n\nimport './BaseUpgradeabilityProxy.sol';\n\n/**\n * @title UpgradeabilityProxy\n * @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n * Extends BaseUpgradeabilityProxy with a constructor for initializing\n * implementation and init data.\n */\ncontract UpgradeabilityProxy is BaseUpgradeabilityProxy {\n  /**\n   * @dev Contract constructor.\n   * @param _logic Address of the initial implementation.\n   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  constructor(address _logic, bytes memory _data) public payable {\n    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));\n    _setImplementation(_logic);\n    if (_data.length > 0) {\n      (bool success, ) = _logic.delegatecall(_data);\n      require(success);\n    }\n  }\n}"}},"settings":{"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"3628","formattedMessage":"contracts/lib/BaseAdminUpgradeabilityProxy.sol:15:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/lib/Proxy.sol:17:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n","message":"This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.","secondarySourceLocations":[{"end":617,"file":"contracts/lib/Proxy.sol","message":"The payable fallback function is defined here.","start":567}],"severity":"warning","sourceLocation":{"end":3891,"file":"contracts/lib/BaseAdminUpgradeabilityProxy.sol","start":565},"type":"Warning"},{"component":"general","errorCode":"3628","formattedMessage":"contracts/lib/InitializableUpgradeabilityProxy.sol:12:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/lib/Proxy.sol:17:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n","message":"This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.","secondarySourceLocations":[{"end":617,"file":"contracts/lib/Proxy.sol","message":"The payable fallback function is defined here.","start":567}],"severity":"warning","sourceLocation":{"end":1329,"file":"contracts/lib/InitializableUpgradeabilityProxy.sol","start":367},"type":"Warning"},{"component":"general","errorCode":"3628","formattedMessage":"contracts/lib/InitializableAdminUpgradeabilityProxy.sol:13:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract InitializableAdminUpgradeabilityProxy is\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/lib/Proxy.sol:17:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n","message":"This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.","secondarySourceLocations":[{"end":617,"file":"contracts/lib/Proxy.sol","message":"The payable fallback function is defined here.","start":567}],"severity":"warning","sourceLocation":{"end":1676,"file":"contracts/lib/InitializableAdminUpgradeabilityProxy.sol","start":448},"type":"Warning"},{"component":"general","errorCode":"2462","formattedMessage":"contracts/lib/UpgradeabilityProxy.sol:21:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  constructor(address _logic, bytes memory _data) public payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.","severity":"warning","sourceLocation":{"end":1251,"file":"contracts/lib/UpgradeabilityProxy.sol","start":940},"type":"Warning"},{"component":"general","errorCode":"6321","formattedMessage":"contracts/lib/BaseAdminUpgradeabilityProxy.sol:48:46: Warning: Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.\n  function admin() external ifAdmin returns (address) {\n                                             ^-----^\n","message":"Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.","severity":"warning","sourceLocation":{"end":1578,"file":"contracts/lib/BaseAdminUpgradeabilityProxy.sol","start":1571},"type":"Warning"},{"component":"general","errorCode":"6321","formattedMessage":"contracts/lib/BaseAdminUpgradeabilityProxy.sol:55:55: Warning: Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.\n  function implementation() external ifAdmin returns (address) {\n                                                      ^-----^\n","message":"Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.","severity":"warning","sourceLocation":{"end":1729,"file":"contracts/lib/BaseAdminUpgradeabilityProxy.sol","start":1722},"type":"Warning"}],"sources":{"contracts/lib/Address2.sol":{"ast":{"absolutePath":"contracts/lib/Address2.sol","exportedSymbols":{"Address":[63]},"id":64,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"32:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"56:130:0","text":" @dev Collection of functions related to the address type\n From https://github.com/OpenZeppelin/openzeppelin-contracts"},"fullyImplemented":true,"id":63,"linearizedBaseContracts":[63],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":27,"nodeType":"Block","src":"809:520:0","statements":[{"assignments":[11],"declarations":[{"constant":false,"id":11,"mutability":"mutable","name":"codehash","nodeType":"VariableDeclaration","scope":27,"src":"1045:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1045:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12,"nodeType":"VariableDeclarationStatement","src":"1045:16:0"},{"assignments":[14],"declarations":[{"constant":false,"id":14,"mutability":"mutable","name":"accountHash","nodeType":"VariableDeclaration","scope":27,"src":"1067:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1067:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":16,"initialValue":{"hexValue":"307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730","id":15,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1089:66:0","typeDescriptions":{"typeIdentifier":"t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1","typeString":"int_const 8947...(69 digits omitted)...1552"},"value":"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"},"nodeType":"VariableDeclarationStatement","src":"1067:88:0"},{"AST":{"nodeType":"YulBlock","src":"1222:46:0","statements":[{"nodeType":"YulAssignment","src":"1230:32:0","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1254:7:0"}],"functionName":{"name":"extcodehash","nodeType":"YulIdentifier","src":"1242:11:0"},"nodeType":"YulFunctionCall","src":"1242:20:0"},"variableNames":[{"name":"codehash","nodeType":"YulIdentifier","src":"1230:8:0"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5,"isOffset":false,"isSlot":false,"src":"1254:7:0","valueSize":1},{"declaration":11,"isOffset":false,"isSlot":false,"src":"1230:8:0","valueSize":1}],"id":17,"nodeType":"InlineAssembly","src":"1213:55:0"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18,"name":"codehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"1281:8:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":19,"name":"accountHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"1293:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1281:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":23,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21,"name":"codehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11,"src":"1308:8:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"307830","id":22,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1320:3:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"src":"1308:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1281:42:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":25,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1280:44:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9,"id":26,"nodeType":"Return","src":"1273:51:0"}]},"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"207:533:0","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="},"id":28,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":28,"src":"763:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"763:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"762:17:0"},"returnParameters":{"id":9,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":28,"src":"803:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7,"name":"bool","nodeType":"ElementaryTypeName","src":"803:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:6:0"},"scope":63,"src":"743:586:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":61,"nodeType":"Block","src":"2283:300:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":39,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2305:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$63","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$63","typeString":"library Address"}],"id":38,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2297:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2297:7:0","typeDescriptions":{}}},"id":40,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2297:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2297:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":42,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"2322:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2297:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":44,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2330:31:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":36,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":45,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2289:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":46,"nodeType":"ExpressionStatement","src":"2289:73:0"},{"assignments":[48,null],"declarations":[{"constant":false,"id":48,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":61,"src":"2443:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":47,"name":"bool","nodeType":"ElementaryTypeName","src":"2443:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":55,"initialValue":{"arguments":[{"hexValue":"","id":53,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2491:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":49,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"2461:9:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2461:14:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":51,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"2483:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2461:29:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2461:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2442:52:0"},{"expression":{"arguments":[{"id":57,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"2508:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":58,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2517:60:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":56,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2500:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":59,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2500:78:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60,"nodeType":"ExpressionStatement","src":"2500:78:0"}]},"documentation":{"id":29,"nodeType":"StructuredDocumentation","src":"1333:876:0","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":62,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":62,"src":"2231:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":30,"name":"address","nodeType":"ElementaryTypeName","src":"2231:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":33,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":62,"src":"2258:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32,"name":"uint256","nodeType":"ElementaryTypeName","src":"2258:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2230:43:0"},"returnParameters":{"id":35,"nodeType":"ParameterList","parameters":[],"src":"2283:0:0"},"scope":63,"src":"2212:371:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":64,"src":"187:2398:0"}],"src":"32:2553:0"},"id":0},"contracts/lib/BaseAdminUpgradeabilityProxy.sol":{"ast":{"absolutePath":"contracts/lib/BaseAdminUpgradeabilityProxy.sol","exportedSymbols":{"Address":[63],"BaseAdminUpgradeabilityProxy":[233],"BaseUpgradeabilityProxy":[298],"Proxy":[476],"UpgradeabilityProxy":[529]},"id":234,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":65,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"32:22:1"},{"absolutePath":"contracts/lib/UpgradeabilityProxy.sol","file":"./UpgradeabilityProxy.sol","id":66,"nodeType":"ImportDirective","scope":234,"sourceUnit":530,"src":"56:35:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":68,"name":"BaseUpgradeabilityProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":298,"src":"606:23:1","typeDescriptions":{"typeIdentifier":"t_contract$_BaseUpgradeabilityProxy_$298","typeString":"contract BaseUpgradeabilityProxy"}},"id":69,"nodeType":"InheritanceSpecifier","src":"606:23:1"}],"contractDependencies":[298,476],"contractKind":"contract","documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"93:471:1","text":" @title BaseAdminUpgradeabilityProxy\n @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n This contract combines an upgradeability proxy with an authorization\n mechanism for administrative tasks.\n All external functions in this contract must be guarded by the\n `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity\n feature proposal that would enable this to be done automatically."},"fullyImplemented":true,"id":233,"linearizedBaseContracts":[233,298,476],"name":"BaseAdminUpgradeabilityProxy","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":70,"nodeType":"StructuredDocumentation","src":"634:177:1","text":" @dev Emitted when the administration has been transferred.\n @param previousAdmin Address of the previous admin.\n @param newAdmin Address of the new admin."},"id":76,"name":"AdminChanged","nodeType":"EventDefinition","parameters":{"id":75,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72,"indexed":false,"mutability":"mutable","name":"previousAdmin","nodeType":"VariableDeclaration","scope":76,"src":"833:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71,"name":"address","nodeType":"ElementaryTypeName","src":"833:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74,"indexed":false,"mutability":"mutable","name":"newAdmin","nodeType":"VariableDeclaration","scope":76,"src":"856:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"856:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"832:41:1"},"src":"814:60:1"},{"constant":true,"documentation":{"id":77,"nodeType":"StructuredDocumentation","src":"878:181:1","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":80,"mutability":"constant","name":"ADMIN_SLOT","nodeType":"VariableDeclaration","scope":233,"src":"1063:109:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1063:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":79,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:66:1","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":95,"nodeType":"Block","src":"1381:86:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1391:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1391:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":85,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"1405:6:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1405:8:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1391:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":93,"nodeType":"Block","src":"1437:26:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":90,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"1445:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":91,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1445:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":92,"nodeType":"ExpressionStatement","src":"1445:11:1"}]},"id":94,"nodeType":"IfStatement","src":"1387:76:1","trueBody":{"id":89,"nodeType":"Block","src":"1415:16:1","statements":[{"id":88,"nodeType":"PlaceholderStatement","src":"1423:1:1"}]}}]},"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"1177:182:1","text":" @dev Modifier to check whether the `msg.sender` is the admin.\n If it is, it will run the function. Otherwise, it will delegate the call\n to the implementation."},"id":96,"name":"ifAdmin","nodeType":"ModifierDefinition","parameters":{"id":82,"nodeType":"ParameterList","parameters":[],"src":"1378:2:1"},"src":"1362:105:1","virtual":false,"visibility":"internal"},{"body":{"id":107,"nodeType":"Block","src":"1580:26:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"1593:6:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1593:8:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":103,"id":106,"nodeType":"Return","src":"1586:15:1"}]},"documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"1471:54:1","text":" @return The address of the proxy admin."},"functionSelector":"f851a440","id":108,"implemented":true,"kind":"function","modifiers":[{"id":100,"modifierName":{"id":99,"name":"ifAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"1554:7:1","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1554:7:1"}],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":98,"nodeType":"ParameterList","parameters":[],"src":"1542:2:1"},"returnParameters":{"id":103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":102,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":108,"src":"1571:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":101,"name":"address","nodeType":"ElementaryTypeName","src":"1571:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1570:9:1"},"scope":233,"src":"1528:78:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":119,"nodeType":"Block","src":"1731:35:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":116,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[262],"referencedDeclaration":262,"src":"1744:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1744:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":115,"id":118,"nodeType":"Return","src":"1737:24:1"}]},"documentation":{"id":109,"nodeType":"StructuredDocumentation","src":"1610:57:1","text":" @return The address of the implementation."},"functionSelector":"5c60da1b","id":120,"implemented":true,"kind":"function","modifiers":[{"id":112,"modifierName":{"id":111,"name":"ifAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"1705:7:1","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1705:7:1"}],"name":"implementation","nodeType":"FunctionDefinition","parameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"1693:2:1"},"returnParameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":120,"src":"1722:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"1722:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1721:9:1"},"scope":233,"src":"1670:96:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":148,"nodeType":"Block","src":"1998:168:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":129,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":123,"src":"2012:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2032: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":131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2024:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"2024:7:1","typeDescriptions":{}}},"id":133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2024:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2012:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f2061646472657373","id":135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2036:56:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_37112268ceb11e15373f32f9374a1f3287d0a3e6e5a9a435ac06367e6cd0cf00","typeString":"literal_string \"Cannot change the admin of a proxy to the zero address\""},"value":"Cannot change the admin of a proxy to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37112268ceb11e15373f32f9374a1f3287d0a3e6e5a9a435ac06367e6cd0cf00","typeString":"literal_string \"Cannot change the admin of a proxy to the zero address\""}],"id":128,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2004:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2004:89:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":137,"nodeType":"ExpressionStatement","src":"2004:89:1"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":139,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"2117:6:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2117:8:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":141,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":123,"src":"2127:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":138,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"2104:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":143,"nodeType":"EmitStatement","src":"2099:37:1"},{"expression":{"arguments":[{"id":145,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":123,"src":"2152:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":144,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"2142:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2142:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":147,"nodeType":"ExpressionStatement","src":"2142:19:1"}]},"documentation":{"id":121,"nodeType":"StructuredDocumentation","src":"1770:169:1","text":" @dev Changes the admin of the proxy.\n Only the current admin can call this function.\n @param newAdmin Address to transfer proxy administration to."},"functionSelector":"8f283970","id":149,"implemented":true,"kind":"function","modifiers":[{"id":126,"modifierName":{"id":125,"name":"ifAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"1990:7:1","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1990:7:1"}],"name":"changeAdmin","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"newAdmin","nodeType":"VariableDeclaration","scope":149,"src":"1963:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"1963:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1962:18:1"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"1998:0:1"},"scope":233,"src":"1942:224:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":161,"nodeType":"Block","src":"2413:40:1","statements":[{"expression":{"arguments":[{"id":158,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"2430:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":157,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"2419:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2419:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":160,"nodeType":"ExpressionStatement","src":"2419:29:1"}]},"documentation":{"id":150,"nodeType":"StructuredDocumentation","src":"2170:177:1","text":" @dev Upgrade the backing implementation of the proxy.\n Only the admin can call this function.\n @param newImplementation Address of the new implementation."},"functionSelector":"3659cfe6","id":162,"implemented":true,"kind":"function","modifiers":[{"id":155,"modifierName":{"id":154,"name":"ifAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"2405:7:1","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2405:7:1"}],"name":"upgradeTo","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":152,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":162,"src":"2369:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"2369:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2368:27:1"},"returnParameters":{"id":156,"nodeType":"ParameterList","parameters":[],"src":"2413:0:1"},"scope":233,"src":"2350:103:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":187,"nodeType":"Block","src":"3083:123:1","statements":[{"expression":{"arguments":[{"id":173,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165,"src":"3100:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":172,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"3089:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3089:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":175,"nodeType":"ExpressionStatement","src":"3089:29:1"},{"assignments":[177,null],"declarations":[{"constant":false,"id":177,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":187,"src":"3125:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":176,"name":"bool","nodeType":"ElementaryTypeName","src":"3125:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":182,"initialValue":{"arguments":[{"id":180,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"3174:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":178,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165,"src":"3143:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"3143:30:1","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3143:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3124:55:1"},{"expression":{"arguments":[{"id":184,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"3193:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":183,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3185:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3185:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":186,"nodeType":"ExpressionStatement","src":"3185:16:1"}]},"documentation":{"id":163,"nodeType":"StructuredDocumentation","src":"2457:510:1","text":" @dev Upgrade the backing implementation of the proxy and call a function\n on the new implementation.\n This is useful to initialize the proxied contract.\n @param newImplementation Address of the new implementation.\n @param data Data to send as msg.data in the low level call.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding."},"functionSelector":"4f1ef286","id":188,"implemented":true,"kind":"function","modifiers":[{"id":170,"modifierName":{"id":169,"name":"ifAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3073:7:1","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3073:7:1"}],"name":"upgradeToAndCall","nodeType":"FunctionDefinition","parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":188,"src":"2996:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":164,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":167,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":188,"src":"3023:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":166,"name":"bytes","nodeType":"ElementaryTypeName","src":"3023:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2995:48:1"},"returnParameters":{"id":171,"nodeType":"ParameterList","parameters":[],"src":"3083:0:1"},"scope":233,"src":"2970:236:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":199,"nodeType":"Block","src":"3309:82:1","statements":[{"assignments":[195],"declarations":[{"constant":false,"id":195,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":199,"src":"3315:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3315:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":197,"initialValue":{"id":196,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"3330:10:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3315:25:1"},{"AST":{"nodeType":"YulBlock","src":"3355:32:1","statements":[{"nodeType":"YulAssignment","src":"3363:18:1","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3376:4:1"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3370:5:1"},"nodeType":"YulFunctionCall","src":"3370:11:1"},"variableNames":[{"name":"adm","nodeType":"YulIdentifier","src":"3363:3:1"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":192,"isOffset":false,"isSlot":false,"src":"3363:3:1","valueSize":1},{"declaration":195,"isOffset":false,"isSlot":false,"src":"3376:4:1","valueSize":1}],"id":198,"nodeType":"InlineAssembly","src":"3346:41:1"}]},"documentation":{"id":189,"nodeType":"StructuredDocumentation","src":"3210:42:1","text":" @return adm The admin slot."},"id":200,"implemented":true,"kind":"function","modifiers":[],"name":"_admin","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"3270:2:1"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"adm","nodeType":"VariableDeclaration","scope":200,"src":"3296:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":191,"name":"address","nodeType":"ElementaryTypeName","src":"3296:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3295:13:1"},"scope":233,"src":"3255:136:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":211,"nodeType":"Block","src":"3553:87:1","statements":[{"assignments":[207],"declarations":[{"constant":false,"id":207,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":211,"src":"3559:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3559:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":209,"initialValue":{"id":208,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"3574:10:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3559:25:1"},{"AST":{"nodeType":"YulBlock","src":"3600:36:1","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3615:4:1"},{"name":"newAdmin","nodeType":"YulIdentifier","src":"3621:8:1"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3608:6:1"},"nodeType":"YulFunctionCall","src":"3608:22:1"},"nodeType":"YulExpressionStatement","src":"3608:22:1"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":203,"isOffset":false,"isSlot":false,"src":"3621:8:1","valueSize":1},{"declaration":207,"isOffset":false,"isSlot":false,"src":"3615:4:1","valueSize":1}],"id":210,"nodeType":"InlineAssembly","src":"3591:45:1"}]},"documentation":{"id":201,"nodeType":"StructuredDocumentation","src":"3395:109:1","text":" @dev Sets the address of the proxy admin.\n @param newAdmin Address of the new proxy admin."},"id":212,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nodeType":"FunctionDefinition","parameters":{"id":204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":203,"mutability":"mutable","name":"newAdmin","nodeType":"VariableDeclaration","scope":212,"src":"3526:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":202,"name":"address","nodeType":"ElementaryTypeName","src":"3526:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3525:18:1"},"returnParameters":{"id":205,"nodeType":"ParameterList","parameters":[],"src":"3553:0:1"},"scope":233,"src":"3507:133:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[462],"body":{"id":231,"nodeType":"Block","src":"3766:123:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":218,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3780:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3780:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":220,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"3794:6:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3794:8:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3780:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e","id":223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3804:52:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_08b466bde770d6d309a22d90ec051a62ad397be6218a53e741989877ec297fc9","typeString":"literal_string \"Cannot call fallback function from the proxy admin\""},"value":"Cannot call fallback function from the proxy admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_08b466bde770d6d309a22d90ec051a62ad397be6218a53e741989877ec297fc9","typeString":"literal_string \"Cannot call fallback function from the proxy admin\""}],"id":217,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3772:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3772:85:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":225,"nodeType":"ExpressionStatement","src":"3772:85:1"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":226,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3863:5:1","typeDescriptions":{"typeIdentifier":"t_super$_BaseAdminUpgradeabilityProxy_$233","typeString":"contract super BaseAdminUpgradeabilityProxy"}},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_willFallback","nodeType":"MemberAccess","referencedDeclaration":462,"src":"3863:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3863:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":230,"nodeType":"ExpressionStatement","src":"3863:21:1"}]},"documentation":{"id":213,"nodeType":"StructuredDocumentation","src":"3644:68:1","text":" @dev Only fall back when the sender is not the admin."},"id":232,"implemented":true,"kind":"function","modifiers":[],"name":"_willFallback","nodeType":"FunctionDefinition","overrides":{"id":215,"nodeType":"OverrideSpecifier","overrides":[],"src":"3757:8:1"},"parameters":{"id":214,"nodeType":"ParameterList","parameters":[],"src":"3737:2:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[],"src":"3766:0:1"},"scope":233,"src":"3715:174:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":234,"src":"565:3326:1"}],"src":"32:3859:1"},"id":1},"contracts/lib/BaseUpgradeabilityProxy.sol":{"ast":{"absolutePath":"contracts/lib/BaseUpgradeabilityProxy.sol","exportedSymbols":{"Address":[63],"BaseUpgradeabilityProxy":[298],"Proxy":[476]},"id":299,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":235,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"32:22:2"},{"absolutePath":"contracts/lib/Proxy.sol","file":"./Proxy.sol","id":236,"nodeType":"ImportDirective","scope":299,"sourceUnit":477,"src":"56:21:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/Address2.sol","file":"./Address2.sol","id":237,"nodeType":"ImportDirective","scope":299,"sourceUnit":64,"src":"78:24:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":239,"name":"Proxy","nodeType":"UserDefinedTypeName","referencedDeclaration":476,"src":"465:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_Proxy_$476","typeString":"contract Proxy"}},"id":240,"nodeType":"InheritanceSpecifier","src":"465:5:2"}],"contractDependencies":[476],"contractKind":"contract","documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"104:324:2","text":" @title BaseUpgradeabilityProxy\n @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n This contract implements a proxy that allows to change the\n implementation address to which it will delegate.\n Such a change is called an implementation upgrade."},"fullyImplemented":true,"id":298,"linearizedBaseContracts":[298,476],"name":"BaseUpgradeabilityProxy","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":241,"nodeType":"StructuredDocumentation","src":"475:126:2","text":" @dev Emitted when the implementation is upgraded.\n @param implementation Address of the new implementation."},"id":245,"name":"Upgraded","nodeType":"EventDefinition","parameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"indexed":true,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":245,"src":"619:30:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":242,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"618:32:2"},"src":"604:47:2"},{"constant":true,"documentation":{"id":246,"nodeType":"StructuredDocumentation","src":"655:206:2","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":249,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nodeType":"VariableDeclaration","scope":298,"src":"864:118:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"864:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"916:66:2","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"baseFunctions":[449],"body":{"id":261,"nodeType":"Block","src":"1174:92:2","statements":[{"assignments":[257],"declarations":[{"constant":false,"id":257,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":261,"src":"1180:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":256,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1180:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":259,"initialValue":{"id":258,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"1195:19:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1180:34:2"},{"AST":{"nodeType":"YulBlock","src":"1229:33:2","statements":[{"nodeType":"YulAssignment","src":"1237:19:2","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"1251:4:2"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"1245:5:2"},"nodeType":"YulFunctionCall","src":"1245:11:2"},"variableNames":[{"name":"impl","nodeType":"YulIdentifier","src":"1237:4:2"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":254,"isOffset":false,"isSlot":false,"src":"1237:4:2","valueSize":1},{"declaration":257,"isOffset":false,"isSlot":false,"src":"1251:4:2","valueSize":1}],"id":260,"nodeType":"InlineAssembly","src":"1220:42:2"}]},"documentation":{"id":250,"nodeType":"StructuredDocumentation","src":"987:111:2","text":" @dev Returns the current implementation.\n @return impl Address of the current implementation"},"id":262,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nodeType":"FunctionDefinition","overrides":{"id":252,"nodeType":"OverrideSpecifier","overrides":[],"src":"1142:8:2"},"parameters":{"id":251,"nodeType":"ParameterList","parameters":[],"src":"1125:2:2"},"returnParameters":{"id":255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"impl","nodeType":"VariableDeclaration","scope":262,"src":"1160:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":253,"name":"address","nodeType":"ElementaryTypeName","src":"1160:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1159:14:2"},"scope":298,"src":"1101:165:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":276,"nodeType":"Block","src":"1457:86:2","statements":[{"expression":{"arguments":[{"id":269,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"1482:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":268,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"1463:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1463:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":271,"nodeType":"ExpressionStatement","src":"1463:37:2"},{"eventCall":{"arguments":[{"id":273,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"1520:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":272,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"1511:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1511:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":275,"nodeType":"EmitStatement","src":"1506:32:2"}]},"documentation":{"id":263,"nodeType":"StructuredDocumentation","src":"1270:128:2","text":" @dev Upgrades the proxy to a new implementation.\n @param newImplementation Address of the new implementation."},"id":277,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":265,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":277,"src":"1421:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":264,"name":"address","nodeType":"ElementaryTypeName","src":"1421:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1420:27:2"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[],"src":"1457:0:2"},"scope":298,"src":"1401:142:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":296,"nodeType":"Block","src":"1744:239:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":286,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"1784:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":284,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"1765:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$63_$","typeString":"type(library Address)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":28,"src":"1765:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1765:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373","id":288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1810:61:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5145a64ce8c406e5785204fe5b300f0ceda96d6636350b38fdccb9cd8c0c37c","typeString":"literal_string \"Cannot set a proxy implementation to a non-contract address\""},"value":"Cannot set a proxy implementation to a non-contract address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5145a64ce8c406e5785204fe5b300f0ceda96d6636350b38fdccb9cd8c0c37c","typeString":"literal_string \"Cannot set a proxy implementation to a non-contract address\""}],"id":283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1750:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1750:127:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":290,"nodeType":"ExpressionStatement","src":"1750:127:2"},{"assignments":[292],"declarations":[{"constant":false,"id":292,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":296,"src":"1884:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1884:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":294,"initialValue":{"id":293,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"1899:19:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1884:34:2"},{"AST":{"nodeType":"YulBlock","src":"1934:45:2","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"1949:4:2"},{"name":"newImplementation","nodeType":"YulIdentifier","src":"1955:17:2"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"1942:6:2"},"nodeType":"YulFunctionCall","src":"1942:31:2"},"nodeType":"YulExpressionStatement","src":"1942:31:2"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":280,"isOffset":false,"isSlot":false,"src":"1955:17:2","valueSize":1},{"declaration":292,"isOffset":false,"isSlot":false,"src":"1949:4:2","valueSize":1}],"id":295,"nodeType":"InlineAssembly","src":"1925:54:2"}]},"documentation":{"id":278,"nodeType":"StructuredDocumentation","src":"1547:130:2","text":" @dev Sets the implementation address of the proxy.\n @param newImplementation Address of the new implementation."},"id":297,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nodeType":"FunctionDefinition","parameters":{"id":281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":280,"mutability":"mutable","name":"newImplementation","nodeType":"VariableDeclaration","scope":297,"src":"1708:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":279,"name":"address","nodeType":"ElementaryTypeName","src":"1708:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1707:27:2"},"returnParameters":{"id":282,"nodeType":"ParameterList","parameters":[],"src":"1744:0:2"},"scope":298,"src":"1680:303:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":299,"src":"429:1556:2"}],"src":"32:1953:2"},"id":2},"contracts/lib/InitializableAdminUpgradeabilityProxy.sol":{"ast":{"absolutePath":"contracts/lib/InitializableAdminUpgradeabilityProxy.sol","exportedSymbols":{"Address":[63],"BaseAdminUpgradeabilityProxy":[233],"BaseUpgradeabilityProxy":[298],"InitializableAdminUpgradeabilityProxy":[369],"InitializableUpgradeabilityProxy":[432],"Proxy":[476],"UpgradeabilityProxy":[529]},"id":370,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":300,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"32:22:3"},{"absolutePath":"contracts/lib/BaseAdminUpgradeabilityProxy.sol","file":"./BaseAdminUpgradeabilityProxy.sol","id":301,"nodeType":"ImportDirective","scope":370,"sourceUnit":234,"src":"56:44:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/InitializableUpgradeabilityProxy.sol","file":"./InitializableUpgradeabilityProxy.sol","id":302,"nodeType":"ImportDirective","scope":370,"sourceUnit":433,"src":"101:48:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":304,"name":"BaseAdminUpgradeabilityProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":233,"src":"500:28:3","typeDescriptions":{"typeIdentifier":"t_contract$_BaseAdminUpgradeabilityProxy_$233","typeString":"contract BaseAdminUpgradeabilityProxy"}},"id":305,"nodeType":"InheritanceSpecifier","src":"500:28:3"},{"baseName":{"id":306,"name":"InitializableUpgradeabilityProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":432,"src":"532:32:3","typeDescriptions":{"typeIdentifier":"t_contract$_InitializableUpgradeabilityProxy_$432","typeString":"contract InitializableUpgradeabilityProxy"}},"id":307,"nodeType":"InheritanceSpecifier","src":"532:32:3"}],"contractDependencies":[233,298,432,476],"contractKind":"contract","documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"151:296:3","text":" @title InitializableAdminUpgradeabilityProxy\n @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n Extends from BaseAdminUpgradeabilityProxy with an initializer for\n initializing the implementation, admin, and init data."},"fullyImplemented":true,"id":369,"linearizedBaseContracts":[369,432,233,298,476],"name":"InitializableAdminUpgradeabilityProxy","nodeType":"ContractDefinition","nodes":[{"body":{"id":354,"nodeType":"Block","src":"1244:220:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":318,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[262],"referencedDeclaration":262,"src":"1258:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1258:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1287:1:3","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":321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1279:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":320,"name":"address","nodeType":"ElementaryTypeName","src":"1279:7:3","typeDescriptions":{}}},"id":323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1279:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1258:31:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":317,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1250:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1250:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":326,"nodeType":"ExpressionStatement","src":"1250:40:3"},{"expression":{"arguments":[{"id":330,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"1340:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":331,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"1348:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":327,"name":"InitializableUpgradeabilityProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":432,"src":"1296:32:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InitializableUpgradeabilityProxy_$432_$","typeString":"type(contract InitializableUpgradeabilityProxy)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":431,"src":"1296:43:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1296:58:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":333,"nodeType":"ExpressionStatement","src":"1296:58:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":335,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"1367:10:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e61646d696e","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1407:21:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""},"value":"eip1967.proxy.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""}],"id":340,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1397:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1397:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1389:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":338,"name":"uint256","nodeType":"ElementaryTypeName","src":"1389:7:3","typeDescriptions":{}}},"id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1389:41:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1433:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1389:45:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1381:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":336,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1381:7:3","typeDescriptions":{}}},"id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1381:54:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1367:68:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":334,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1360:6:3","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:76:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":349,"nodeType":"ExpressionStatement","src":"1360:76:3"},{"expression":{"arguments":[{"id":351,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"1452:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":350,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"1442:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1442:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":353,"nodeType":"ExpressionStatement","src":"1442:17:3"}]},"documentation":{"id":308,"nodeType":"StructuredDocumentation","src":"569:569:3","text":" Contract initializer.\n @param _logic address of the initial implementation.\n @param _admin Address of the proxy administrator.\n @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."},"functionSelector":"cf7a1d77","id":355,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"_logic","nodeType":"VariableDeclaration","scope":355,"src":"1166:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":309,"name":"address","nodeType":"ElementaryTypeName","src":"1166:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"_admin","nodeType":"VariableDeclaration","scope":355,"src":"1186:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"1186:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":314,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":355,"src":"1206:18:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":313,"name":"bytes","nodeType":"ElementaryTypeName","src":"1206:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1160:68:3"},"returnParameters":{"id":316,"nodeType":"ParameterList","parameters":[],"src":"1244:0:3"},"scope":369,"src":"1141:323:3","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[232,462],"body":{"id":367,"nodeType":"Block","src":"1619:55:3","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":362,"name":"BaseAdminUpgradeabilityProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"1625:28:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseAdminUpgradeabilityProxy_$233_$","typeString":"type(contract BaseAdminUpgradeabilityProxy)"}},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_willFallback","nodeType":"MemberAccess","referencedDeclaration":232,"src":"1625:42:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1625:44:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":366,"nodeType":"ExpressionStatement","src":"1625:44:3"}]},"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"1468:68:3","text":" @dev Only fall back when the sender is not the admin."},"id":368,"implemented":true,"kind":"function","modifiers":[],"name":"_willFallback","nodeType":"FunctionDefinition","overrides":{"id":360,"nodeType":"OverrideSpecifier","overrides":[{"id":358,"name":"BaseAdminUpgradeabilityProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":233,"src":"1582:28:3","typeDescriptions":{"typeIdentifier":"t_contract$_BaseAdminUpgradeabilityProxy_$233","typeString":"contract BaseAdminUpgradeabilityProxy"}},{"id":359,"name":"Proxy","nodeType":"UserDefinedTypeName","referencedDeclaration":476,"src":"1612:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_Proxy_$476","typeString":"contract Proxy"}}],"src":"1573:45:3"},"parameters":{"id":357,"nodeType":"ParameterList","parameters":[],"src":"1561:2:3"},"returnParameters":{"id":361,"nodeType":"ParameterList","parameters":[],"src":"1619:0:3"},"scope":369,"src":"1539:135:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":370,"src":"448:1228:3"}],"src":"32:1644:3"},"id":3},"contracts/lib/InitializableUpgradeabilityProxy.sol":{"ast":{"absolutePath":"contracts/lib/InitializableUpgradeabilityProxy.sol","exportedSymbols":{"Address":[63],"BaseUpgradeabilityProxy":[298],"InitializableUpgradeabilityProxy":[432],"Proxy":[476]},"id":433,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":371,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"32:22:4"},{"absolutePath":"contracts/lib/BaseUpgradeabilityProxy.sol","file":"./BaseUpgradeabilityProxy.sol","id":372,"nodeType":"ImportDirective","scope":433,"sourceUnit":299,"src":"56:39:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":374,"name":"BaseUpgradeabilityProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":298,"src":"412:23:4","typeDescriptions":{"typeIdentifier":"t_contract$_BaseUpgradeabilityProxy_$298","typeString":"contract BaseUpgradeabilityProxy"}},"id":375,"nodeType":"InheritanceSpecifier","src":"412:23:4"}],"contractDependencies":[298,476],"contractKind":"contract","documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"97:269:4","text":" @title InitializableUpgradeabilityProxy\n @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n Extends BaseUpgradeabilityProxy with an initializer for initializing\n implementation and init data."},"fullyImplemented":true,"id":432,"linearizedBaseContracts":[432,298,476],"name":"InitializableUpgradeabilityProxy","nodeType":"ContractDefinition","nodes":[{"body":{"id":430,"nodeType":"Block","src":"1033:294:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":384,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[262],"referencedDeclaration":262,"src":"1047:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1047:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1076:1:4","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":387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1068:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"1068:7:4","typeDescriptions":{}}},"id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1068:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1047:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":383,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1039:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1039:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":392,"nodeType":"ExpressionStatement","src":"1039:40:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":394,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"1092:19:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e696d706c656d656e746174696f6e","id":400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1141:30:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""},"value":"eip1967.proxy.implementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""}],"id":399,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1131:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1131:41:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1123:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":397,"name":"uint256","nodeType":"ElementaryTypeName","src":"1123:7:4","typeDescriptions":{}}},"id":402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1123:50:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1176:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1123:54:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1115:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1115:7:4","typeDescriptions":{}}},"id":405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1115:63:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1092:86:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":393,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1085:6:4","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1085:94:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":408,"nodeType":"ExpressionStatement","src":"1085:94:4"},{"expression":{"arguments":[{"id":410,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"1204:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":409,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"1185:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1185:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":412,"nodeType":"ExpressionStatement","src":"1185:26:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":413,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"1221:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1221:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1221:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":429,"nodeType":"IfStatement","src":"1217:106:4","trueBody":{"id":428,"nodeType":"Block","src":"1239:84:4","statements":[{"assignments":[418,null],"declarations":[{"constant":false,"id":418,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":428,"src":"1248:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":417,"name":"bool","nodeType":"ElementaryTypeName","src":"1248:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":423,"initialValue":{"arguments":[{"id":421,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"1286:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":419,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"1266:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"1266:19:4","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1266:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1247:45:4"},{"expression":{"arguments":[{"id":425,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":418,"src":"1308:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":424,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1300:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1300:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":427,"nodeType":"ExpressionStatement","src":"1300:16:4"}]}}]},"documentation":{"id":376,"nodeType":"StructuredDocumentation","src":"440:519:4","text":" @dev Contract initializer.\n @param _logic Address of the initial implementation.\n @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."},"functionSelector":"d1f57894","id":431,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"mutability":"mutable","name":"_logic","nodeType":"VariableDeclaration","scope":431,"src":"982:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":377,"name":"address","nodeType":"ElementaryTypeName","src":"982:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":380,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":431,"src":"998:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":379,"name":"bytes","nodeType":"ElementaryTypeName","src":"998:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"981:36:4"},"returnParameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"1033:0:4"},"scope":432,"src":"962:365:4","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":433,"src":"367:962:4"}],"src":"32:1297:4"},"id":4},"contracts/lib/Proxy.sol":{"ast":{"absolutePath":"contracts/lib/Proxy.sol","exportedSymbols":{"Proxy":[476]},"id":477,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":434,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"32:22:5"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":435,"nodeType":"StructuredDocumentation","src":"56:399:5","text":" @title Proxy\n @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n Implements delegation of calls to other contracts, with proper\n forwarding of return values and bubbling of failures.\n It defines a fallback function that delegates all calls to the address\n returned by the abstract _implementation() internal function."},"fullyImplemented":false,"id":476,"linearizedBaseContracts":[476],"name":"Proxy","nodeType":"ContractDefinition","nodes":[{"body":{"id":442,"nodeType":"Block","src":"595:22:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":439,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"601:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"601:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":441,"nodeType":"ExpressionStatement","src":"601:11:5"}]},"documentation":{"id":436,"nodeType":"StructuredDocumentation","src":"484:80:5","text":" @dev Fallback function.\n Implemented entirely in `_fallback`."},"id":443,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"575:2:5"},"returnParameters":{"id":438,"nodeType":"ParameterList","parameters":[],"src":"595:0:5"},"scope":476,"src":"567:50:5","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":444,"nodeType":"StructuredDocumentation","src":"621:57:5","text":" @return The Address of the implementation."},"id":449,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nodeType":"FunctionDefinition","parameters":{"id":445,"nodeType":"ParameterList","parameters":[],"src":"705:2:5"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":449,"src":"739:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":446,"name":"address","nodeType":"ElementaryTypeName","src":"739:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"738:9:5"},"scope":476,"src":"681:67:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":456,"nodeType":"Block","src":"1086:733:5","statements":[{"AST":{"nodeType":"YulBlock","src":"1101:714:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1330:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1333:1:5","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1336:12:5"},"nodeType":"YulFunctionCall","src":"1336:14:5"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1317:12:5"},"nodeType":"YulFunctionCall","src":"1317:34:5"},"nodeType":"YulExpressionStatement","src":"1317:34:5"},{"nodeType":"YulVariableDeclaration","src":"1460:74:5","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1487:3:5"},"nodeType":"YulFunctionCall","src":"1487:5:5"},{"name":"implementation","nodeType":"YulIdentifier","src":"1494:14:5"},{"kind":"number","nodeType":"YulLiteral","src":"1510:1:5","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1513:12:5"},"nodeType":"YulFunctionCall","src":"1513:14:5"},{"kind":"number","nodeType":"YulLiteral","src":"1529:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1532:1:5","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"1474:12:5"},"nodeType":"YulFunctionCall","src":"1474:60:5"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"1464:6:5","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1590:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1593:1:5","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1596:14:5"},"nodeType":"YulFunctionCall","src":"1596:16:5"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"1575:14:5"},"nodeType":"YulFunctionCall","src":"1575:38:5"},"nodeType":"YulExpressionStatement","src":"1575:38:5"},{"cases":[{"body":{"nodeType":"YulBlock","src":"1694:49:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1713:1:5","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1716:14:5"},"nodeType":"YulFunctionCall","src":"1716:16:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1706:6:5"},"nodeType":"YulFunctionCall","src":"1706:27:5"},"nodeType":"YulExpressionStatement","src":"1706:27:5"}]},"nodeType":"YulCase","src":"1687:56:5","value":{"kind":"number","nodeType":"YulLiteral","src":"1692:1:5","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"1760:49:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1779:1:5","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1782:14:5"},"nodeType":"YulFunctionCall","src":"1782:16:5"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"1772:6:5"},"nodeType":"YulFunctionCall","src":"1772:27:5"},"nodeType":"YulExpressionStatement","src":"1772:27:5"}]},"nodeType":"YulCase","src":"1752:57:5","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"1628:6:5"},"nodeType":"YulSwitch","src":"1621:188:5"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":452,"isOffset":false,"isSlot":false,"src":"1494:14:5","valueSize":1}],"id":455,"nodeType":"InlineAssembly","src":"1092:723:5"}]},"documentation":{"id":450,"nodeType":"StructuredDocumentation","src":"752:279:5","text":" @dev Delegates execution to an implementation contract.\n This is a low level function that doesn't return to its internal call site.\n It will return to the external caller whatever the implementation returns.\n @param implementation Address to delegate."},"id":457,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nodeType":"FunctionDefinition","parameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"implementation","nodeType":"VariableDeclaration","scope":457,"src":"1053:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":451,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1052:24:5"},"returnParameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"1086:0:5"},"scope":476,"src":"1034:785:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":461,"nodeType":"Block","src":"2070:2:5","statements":[]},"documentation":{"id":458,"nodeType":"StructuredDocumentation","src":"1823:202:5","text":" @dev Function that is run as the first thing in the fallback function.\n Can be redefined in derived contracts to add functionality.\n Redefinitions must call super._willFallback()."},"id":462,"implemented":true,"kind":"function","modifiers":[],"name":"_willFallback","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"2050:2:5"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[],"src":"2070:0:5"},"scope":476,"src":"2028:44:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":474,"nodeType":"Block","src":"2197:60:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":466,"name":"_willFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"2203:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2203:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":468,"nodeType":"ExpressionStatement","src":"2203:15:5"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":470,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2234:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2234:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":469,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"2224:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2224:28:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"2224:28:5"}]},"documentation":{"id":463,"nodeType":"StructuredDocumentation","src":"2076:88:5","text":" @dev fallback implementation.\n Extracted to enable manual triggering."},"id":475,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[],"src":"2185:2:5"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"2197:0:5"},"scope":476,"src":"2167:90:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":477,"src":"456:1803:5"}],"src":"32:2227:5"},"id":5},"contracts/lib/UpgradeabilityProxy.sol":{"ast":{"absolutePath":"contracts/lib/UpgradeabilityProxy.sol","exportedSymbols":{"Address":[63],"BaseUpgradeabilityProxy":[298],"Proxy":[476],"UpgradeabilityProxy":[529]},"id":530,"license":"agpl-3.0","nodeType":"SourceUnit","nodes":[{"id":478,"literals":["solidity","0.7",".5"],"nodeType":"PragmaDirective","src":"37:22:6"},{"absolutePath":"contracts/lib/BaseUpgradeabilityProxy.sol","file":"./BaseUpgradeabilityProxy.sol","id":479,"nodeType":"ImportDirective","scope":530,"sourceUnit":299,"src":"61:39:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":481,"name":"BaseUpgradeabilityProxy","nodeType":"UserDefinedTypeName","referencedDeclaration":298,"src":"390:23:6","typeDescriptions":{"typeIdentifier":"t_contract$_BaseUpgradeabilityProxy_$298","typeString":"contract BaseUpgradeabilityProxy"}},"id":482,"nodeType":"InheritanceSpecifier","src":"390:23:6"}],"contractDependencies":[298,476],"contractKind":"contract","documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"102:255:6","text":" @title UpgradeabilityProxy\n @dev From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability\n Extends BaseUpgradeabilityProxy with a constructor for initializing\n implementation and init data."},"fullyImplemented":true,"id":529,"linearizedBaseContracts":[529,298,476],"name":"UpgradeabilityProxy","nodeType":"ContractDefinition","nodes":[{"body":{"id":527,"nodeType":"Block","src":"1003:248:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":491,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"1016:19:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e696d706c656d656e746174696f6e","id":497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1065:30:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""},"value":"eip1967.proxy.implementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""}],"id":496,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1055:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1055:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1047:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1047:7:6","typeDescriptions":{}}},"id":499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1047:50:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1100:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1047:54:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1039:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":492,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1039:7:6","typeDescriptions":{}}},"id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1039:63:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1016:86:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":490,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1009:6:6","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1009:94:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":505,"nodeType":"ExpressionStatement","src":"1009:94:6"},{"expression":{"arguments":[{"id":507,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"1128:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":506,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"1109:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1109:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":509,"nodeType":"ExpressionStatement","src":"1109:26:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":510,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":487,"src":"1145:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1145:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1160:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1145:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":526,"nodeType":"IfStatement","src":"1141:106:6","trueBody":{"id":525,"nodeType":"Block","src":"1163:84:6","statements":[{"assignments":[515,null],"declarations":[{"constant":false,"id":515,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":525,"src":"1172:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":514,"name":"bool","nodeType":"ElementaryTypeName","src":"1172:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":520,"initialValue":{"arguments":[{"id":518,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":487,"src":"1210:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":516,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":485,"src":"1190:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"1190:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1190:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1171:45:6"},{"expression":{"arguments":[{"id":522,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1232:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":521,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1224:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1224:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":524,"nodeType":"ExpressionStatement","src":"1224:16:6"}]}}]},"documentation":{"id":483,"nodeType":"StructuredDocumentation","src":"418:519:6","text":" @dev Contract constructor.\n @param _logic Address of the initial implementation.\n @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."},"id":528,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":485,"mutability":"mutable","name":"_logic","nodeType":"VariableDeclaration","scope":528,"src":"952:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":484,"name":"address","nodeType":"ElementaryTypeName","src":"952:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":487,"mutability":"mutable","name":"_data","nodeType":"VariableDeclaration","scope":528,"src":"968:18:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":486,"name":"bytes","nodeType":"ElementaryTypeName","src":"968:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"951:36:6"},"returnParameters":{"id":489,"nodeType":"ParameterList","parameters":[],"src":"1003:0:6"},"scope":529,"src":"940:311:6","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":530,"src":"358:895:6"}],"src":"37:1216:6"},"id":6}},"contracts":{"contracts/lib/Address2.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122026f7a9727b44c7e9dadb60dc42c24ded94f9052d371bf53363490cd70729078364736f6c63430007050033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xF7 0xA9 PUSH19 0x7B44C7E9DADB60DC42C24DED94F9052D371BF5 CALLER PUSH4 0x490CD707 0x29 SMOD DUP4 PUSH5 0x736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"187:2398:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122026f7a9727b44c7e9dadb60dc42c24ded94f9052d371bf53363490cd70729078364736f6c63430007050033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xF7 0xA9 PUSH19 0x7B44C7E9DADB60DC42C24DED94F9052D371BF5 CALLER PUSH4 0x490CD707 0x29 SMOD DUP4 PUSH5 0x736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"187:2398:0:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type From https://github.com/OpenZeppelin/openzeppelin-contracts\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Address2.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Address2.sol\":{\"keccak256\":\"0x24193ee0da226868230fbb81b8ca68c7ba7b6ada5c3fc540afe2b164dfd25fc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fb230f9278f2e38f16e09cc4b87f8a6fe27ed7520163de201eebe3affa20224\",\"dweb:/ipfs/QmcuLVuUibYPPNrUW4AkzQtGefhuaLzrxz1CAJkPwCyR6n\"]}},\"version\":1}"}},"contracts/lib/BaseAdminUpgradeabilityProxy.sol":{"BaseAdminUpgradeabilityProxy":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610652806100206000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220e62682b0b47741ba19f1e8339efb3aa0ee22520de63cab3340609c2c60ed80ac64736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x652 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19A JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x378 JUMP JUMPDEST PUSH2 0x188 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x198 PUSH2 0x193 PUSH2 0x403 JUMP JUMPDEST PUSH2 0x428 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C4 DUP2 PUSH2 0x471 JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x180 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x274 JUMPI PUSH2 0x1FE DUP4 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST PUSH2 0x27C PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x403 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2BB PUSH2 0x180 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5AC PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x34D PUSH2 0x44C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x1C4 DUP2 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x44C JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x57A PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x198 PUSH2 0x198 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x447 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x4DE DUP2 PUSH2 0x53D JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E2 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x571 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A2646970667358221220E62682B0B477 COINBASE 0xBA NOT CALL 0xE8 CALLER SWAP15 0xFB GASPRICE LOG0 0xEE 0x22 MSTORE 0xD 0xE6 EXTCODECOPY 0xAB CALLER BLOCKHASH PUSH1 0x9C 0x2C PUSH1 0xED DUP1 0xAC PUSH5 0x736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"565:3326:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220e62682b0b47741ba19f1e8339efb3aa0ee22520de63cab3340609c2c60ed80ac64736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19A JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x378 JUMP JUMPDEST PUSH2 0x188 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x198 PUSH2 0x193 PUSH2 0x403 JUMP JUMPDEST PUSH2 0x428 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C4 DUP2 PUSH2 0x471 JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x180 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x274 JUMPI PUSH2 0x1FE DUP4 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST PUSH2 0x27C PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x403 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2BB PUSH2 0x180 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5AC PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x34D PUSH2 0x44C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x1C4 DUP2 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x44C JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x57A PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x198 PUSH2 0x198 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x447 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x4DE DUP2 PUSH2 0x53D JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E2 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x571 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A2646970667358221220E62682B0B477 COINBASE 0xBA NOT CALL 0xE8 CALLER SWAP15 0xFB GASPRICE LOG0 0xEE 0x22 MSTORE 0xD 0xE6 EXTCODECOPY 0xAB CALLER BLOCKHASH PUSH1 0x9C 0x2C PUSH1 0xED DUP1 0xAC PUSH5 0x736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"565:3326:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:11:5;:9;:11::i;:::-;565:3326:1;2350:103;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2350:103:1;-1:-1:-1;;;;;2350:103:1;;:::i;2970:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2970:236:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2970:236:1;;-1:-1:-1;2970:236:1;-1:-1:-1;2970:236:1;:::i;1670:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1670:96:1;;;;;;;;;;;;;;1942:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1942:224:1;-1:-1:-1;;;;;1942:224:1;;:::i;1528:78::-;;;;;;;;;;;;;:::i;2167:90:5:-;2203:15;:13;:15::i;:::-;2224:28;2234:17;:15;:17::i;:::-;2224:9;:28::i;:::-;2167:90::o;2350:103:1:-;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;2419:29:::1;2430:17;2419:10;:29::i;:::-;1387:76:::0;;;1445:11;:9;:11::i;:::-;2350:103;:::o;2970:236::-;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;3089:29:::1;3100:17;3089:10;:29::i;:::-;3125:12;3143:17;-1:-1:-1::0;;;;;3143:30:1::1;3174:4;;3143:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;3143:36:1::1;::::0;-1:-1:-1;3143:36:1;;-1:-1:-1;;3143:36:1;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3124:55;;;3193:7;3185:16;;;::::0;::::1;;1423:1;1387:76:::0;;;1445:11;:9;:11::i;:::-;2970:236;;;:::o;1670:96::-;1722:7;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;1744:17:::1;:15;:17::i;:::-;1737:24;;1387:76:::0;;;1445:11;:9;:11::i;:::-;1670:96;:::o;1942:224::-;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;-1:-1:-1;;;;;2012:22:1;::::1;2004:89;;;;-1:-1:-1::0;;;2004:89:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:32;2117:8;:6;:8::i;:::-;2104:32;::::0;;-1:-1:-1;;;;;2104:32:1;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;2142:19;2152:8;2142:9;:19::i;1528:78::-:0;1571:7;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;1593:8:::1;:6;:8::i;3715:174::-:0;3794:8;:6;:8::i;:::-;-1:-1:-1;;;;;3780:22:1;:10;-1:-1:-1;;;;;3780:22:1;;;3772:85;;;;-1:-1:-1;;;3772:85:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:21;:19;:21::i;1101:165:2:-;916:66;1245:11;;1229:33::o;1034:785:5:-;1336:14;1333:1;1330;1317:34;1532:1;1529;1513:14;1510:1;1494:14;1487:5;1474:60;1596:16;1593:1;1590;1575:38;1628:6;1687:56;;;;1782:16;1779:1;1772:27;1687:56;1716:16;1713:1;1706:27;3255:136:1;1106:66;3370:11;;3355:32::o;1401:142:2:-;1463:37;1482:17;1463:18;:37::i;:::-;1511:27;;-1:-1:-1;;;;;1511:27:2;;;;;;;;1401:142;:::o;3507:133:1:-;1106:66;3608:22;3600:36::o;1680:303:2:-;1765:37;1784:17;1765:18;:37::i;:::-;1750:127;;;;-1:-1:-1;;;1750:127:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;916:66;1942:31;1934:45::o;743:586:0:-;803:4;1242:20;;1089:66;1281:23;;;;;;:42;;-1:-1:-1;1308:15:0;;;1281:42;1273:51;743:586;-1:-1:-1;;;;743:586:0:o"},"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability This contract combines an upgradeability proxy with an authorization mechanism for administrative tasks. All external functions in this contract must be guarded by the `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity feature proposal that would enable this to be done automatically.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the administration has been transferred.\",\"params\":{\"newAdmin\":\"Address of the new admin.\",\"previousAdmin\":\"Address of the previous admin.\"}}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"returns\":{\"_0\":\"The address of the proxy admin.\"}},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Only the current admin can call this function.\",\"params\":{\"newAdmin\":\"Address to transfer proxy administration to.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation.\"}},\"upgradeTo(address)\":{\"details\":\"Upgrade the backing implementation of the proxy. Only the admin can call this function.\",\"params\":{\"newImplementation\":\"Address of the new implementation.\"}},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the backing implementation of the proxy and call a function on the new implementation. This is useful to initialize the proxied contract.\",\"params\":{\"data\":\"Data to send as msg.data in the low level call. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\",\"newImplementation\":\"Address of the new implementation.\"}}},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"}},\"title\":\"BaseAdminUpgradeabilityProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/BaseAdminUpgradeabilityProxy.sol\":\"BaseAdminUpgradeabilityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Address2.sol\":{\"keccak256\":\"0x24193ee0da226868230fbb81b8ca68c7ba7b6ada5c3fc540afe2b164dfd25fc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fb230f9278f2e38f16e09cc4b87f8a6fe27ed7520163de201eebe3affa20224\",\"dweb:/ipfs/QmcuLVuUibYPPNrUW4AkzQtGefhuaLzrxz1CAJkPwCyR6n\"]},\"contracts/lib/BaseAdminUpgradeabilityProxy.sol\":{\"keccak256\":\"0xfaa3ae578f975705f5c3986631d58ebd548ba1e3d6f9761b309f1aa129a8c7fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1888c4ac885d453e3306790040c4de4a552a7c0480ad71e97fae35caf3024c48\",\"dweb:/ipfs/QmRXF7eYdKBTEPYjib4Z29pyJQNrHKfQWpibL3RbrVNuQN\"]},\"contracts/lib/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x8efe531f381e7e978137589e727be4995272dc4cbb278d2654fb042808342b9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47b16c4eee947bc4d7e69c9a1faee142781fc5c22c21e31eeb693bc12c6cfa89\",\"dweb:/ipfs/QmetYhtij1fcth2bxKime9DzUH4aUcDSHFf4XCNHwVXBee\"]},\"contracts/lib/Proxy.sol\":{\"keccak256\":\"0x480557a3539fa85296fe1efde4d0fad33223851af4757d079a314813c23b34f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7698f35f1c78b52d98bf21d59da323d708bcfdb8b8e99b0d658cdc4e0ed20bb5\",\"dweb:/ipfs/QmfY3EWKQ2FCXVen9cjPo7MyQzUdDKsviDx8v3jJhPDUVr\"]},\"contracts/lib/UpgradeabilityProxy.sol\":{\"keccak256\":\"0xba16acdc829ead01f5138755b83dd19bf50ca58b501ae4827cfda1aec46762f7\",\"license\":\"agpl-3.0\",\"urls\":[\"bzz-raw://4dabc3d469b3f0a0e0f3bb48bb92e0df25d9da15751de09de35a163e4e0c1b49\",\"dweb:/ipfs/QmX4p1VKHytgBCjELrQ9D1FZ75bhBBiQHcjKxpFEGRGTsb\"]}},\"version\":1}"}},"contracts/lib/BaseUpgradeabilityProxy.sol":{"BaseUpgradeabilityProxy":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50609e8061001e6000396000f3fe6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122031a9971d5bd23285e47b1be9424df15cf7ee67c7e2bcffac604a0746bddae5dc64736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9E DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x20 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x63 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xA9 SWAP8 SAR JUMPDEST 0xD2 ORIGIN DUP6 0xE4 PUSH28 0x1BE9424DF15CF7EE67C7E2BCFFAC604A0746BDDAE5DC64736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"429:1556:2:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122031a9971d5bd23285e47b1be9424df15cf7ee67c7e2bcffac604a0746bddae5dc64736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x20 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x63 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xA9 SWAP8 SAR JUMPDEST 0xD2 ORIGIN DUP6 0xE4 PUSH28 0x1BE9424DF15CF7EE67C7E2BCFFAC604A0746BDDAE5DC64736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"429:1556:2:-:0;;;601:11:5;:9;:11::i;:::-;429:1556:2;2167:90:5;2203:15;:13;:15::i;:::-;2224:28;2234:17;:15;:17::i;:::-;2224:9;:28::i;:::-;2167:90::o;1101:165:2:-;916:66;1245:11;;1229:33::o;1034:785:5:-;1336:14;1333:1;1330;1317:34;1532:1;1529;1513:14;1510:1;1494:14;1487:5;1474:60;1596:16;1593:1;1590;1575:38;1628:6;1687:56;;;;1782:16;1779:1;1772:27;1687:56;1716:16;1713:1;1706:27"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability This contract implements a proxy that allows to change the implementation address to which it will delegate. Such a change is called an implementation upgrade.\",\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\",\"params\":{\"implementation\":\"Address of the new implementation.\"}}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"title\":\"BaseUpgradeabilityProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/BaseUpgradeabilityProxy.sol\":\"BaseUpgradeabilityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Address2.sol\":{\"keccak256\":\"0x24193ee0da226868230fbb81b8ca68c7ba7b6ada5c3fc540afe2b164dfd25fc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fb230f9278f2e38f16e09cc4b87f8a6fe27ed7520163de201eebe3affa20224\",\"dweb:/ipfs/QmcuLVuUibYPPNrUW4AkzQtGefhuaLzrxz1CAJkPwCyR6n\"]},\"contracts/lib/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x8efe531f381e7e978137589e727be4995272dc4cbb278d2654fb042808342b9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47b16c4eee947bc4d7e69c9a1faee142781fc5c22c21e31eeb693bc12c6cfa89\",\"dweb:/ipfs/QmetYhtij1fcth2bxKime9DzUH4aUcDSHFf4XCNHwVXBee\"]},\"contracts/lib/Proxy.sol\":{\"keccak256\":\"0x480557a3539fa85296fe1efde4d0fad33223851af4757d079a314813c23b34f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7698f35f1c78b52d98bf21d59da323d708bcfdb8b8e99b0d658cdc4e0ed20bb5\",\"dweb:/ipfs/QmfY3EWKQ2FCXVen9cjPo7MyQzUdDKsviDx8v3jJhPDUVr\"]}},\"version\":1}"}},"contracts/lib/InitializableAdminUpgradeabilityProxy.sol":{"InitializableAdminUpgradeabilityProxy":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610905806100206000396000f3fe6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610543945050505050565b34801561031257600080fd5b50610142610623565b61032361064e565b61033361032e610656565b61067b565b565b61033d61069f565b6001600160a01b0316336001600160a01b031614156103645761035f816106c4565b61036c565b61036c61031b565b50565b61037761069f565b6001600160a01b0316336001600160a01b0316141561040f57610399836106c4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b600061042661069f565b6001600160a01b0316336001600160a01b0316141561044e57610447610656565b9050610456565b61045661031b565b90565b61046161069f565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b815260040180806020018281038252603681526020018061085f6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e861069f565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f81610704565b600061051d610656565b6001600160a01b03161461053057600080fd5b61053a8382610543565b61041782610704565b600061054d610656565b6001600160a01b03161461056057600080fd5b61056982610728565b80511561061f576000826001600160a01b0316826040518082805190602001908083835b602083106105ac5780518252601f19909201916020918201910161058d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b505090508061041757600080fd5b5050565b600061062d61069f565b6001600160a01b0316336001600160a01b0316141561044e5761044761069f565b610333610790565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561069a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106cd81610728565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610731816107f0565b61076c5760405162461bcd60e51b815260040180806020018281038252603b815260200180610895603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61079861069f565b6001600160a01b0316336001600160a01b031614156107e85760405162461bcd60e51b815260040180806020018281038252603281526020018061082d6032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061082457508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212205c9c8c7ab638c9556a2f1d9ac26cce10cc03bb7ca5270f7ca2a63fdd4ae2146064736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x905 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F283970 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0xCF7A1D77 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x306 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x78 PUSH2 0x31B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x335 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x36F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x459 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x513 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x543 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x623 JUMP JUMPDEST PUSH2 0x323 PUSH2 0x64E JUMP JUMPDEST PUSH2 0x333 PUSH2 0x32E PUSH2 0x656 JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x33D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH2 0x35F DUP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH2 0x36C PUSH2 0x31B JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x377 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x40F JUMPI PUSH2 0x399 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 JUMP JUMPDEST PUSH2 0x417 PUSH2 0x31B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x426 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x656 JUMP JUMPDEST SWAP1 POP PUSH2 0x456 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x31B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x461 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x85F PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x4E8 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x35F DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53A DUP4 DUP3 PUSH2 0x543 JUMP JUMPDEST PUSH2 0x417 DUP3 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569 DUP3 PUSH2 0x728 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5AC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x58D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x611 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x69F JUMP JUMPDEST PUSH2 0x333 PUSH2 0x790 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x69A JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x731 DUP2 PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x76C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x895 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH2 0x798 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x333 PUSH2 0x333 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x824 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212205C9C8C7AB638 0xC9 SSTORE PUSH11 0x2F1D9AC26CCE10CC03BB7C 0xA5 0x27 0xF PUSH29 0xA2A63FDD4AE2146064736F6C6343000705003300000000000000000000 ","sourceMap":"448:1228:3:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610543945050505050565b34801561031257600080fd5b50610142610623565b61032361064e565b61033361032e610656565b61067b565b565b61033d61069f565b6001600160a01b0316336001600160a01b031614156103645761035f816106c4565b61036c565b61036c61031b565b50565b61037761069f565b6001600160a01b0316336001600160a01b0316141561040f57610399836106c4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b600061042661069f565b6001600160a01b0316336001600160a01b0316141561044e57610447610656565b9050610456565b61045661031b565b90565b61046161069f565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b815260040180806020018281038252603681526020018061085f6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e861069f565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f81610704565b600061051d610656565b6001600160a01b03161461053057600080fd5b61053a8382610543565b61041782610704565b600061054d610656565b6001600160a01b03161461056057600080fd5b61056982610728565b80511561061f576000826001600160a01b0316826040518082805190602001908083835b602083106105ac5780518252601f19909201916020918201910161058d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b505090508061041757600080fd5b5050565b600061062d61069f565b6001600160a01b0316336001600160a01b0316141561044e5761044761069f565b610333610790565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561069a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106cd81610728565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610731816107f0565b61076c5760405162461bcd60e51b815260040180806020018281038252603b815260200180610895603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61079861069f565b6001600160a01b0316336001600160a01b031614156107e85760405162461bcd60e51b815260040180806020018281038252603281526020018061082d6032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061082457508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212205c9c8c7ab638c9556a2f1d9ac26cce10cc03bb7ca5270f7ca2a63fdd4ae2146064736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F283970 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0xCF7A1D77 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x306 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x78 PUSH2 0x31B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x335 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x36F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x459 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x513 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x543 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x623 JUMP JUMPDEST PUSH2 0x323 PUSH2 0x64E JUMP JUMPDEST PUSH2 0x333 PUSH2 0x32E PUSH2 0x656 JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x33D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH2 0x35F DUP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH2 0x36C PUSH2 0x31B JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x377 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x40F JUMPI PUSH2 0x399 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 JUMP JUMPDEST PUSH2 0x417 PUSH2 0x31B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x426 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x656 JUMP JUMPDEST SWAP1 POP PUSH2 0x456 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x31B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x461 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x85F PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x4E8 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x35F DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53A DUP4 DUP3 PUSH2 0x543 JUMP JUMPDEST PUSH2 0x417 DUP3 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569 DUP3 PUSH2 0x728 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5AC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x58D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x611 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x69F JUMP JUMPDEST PUSH2 0x333 PUSH2 0x790 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x69A JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x731 DUP2 PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x76C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x895 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH2 0x798 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x333 PUSH2 0x333 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x824 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212205C9C8C7AB638 0xC9 SSTORE PUSH11 0x2F1D9AC26CCE10CC03BB7C 0xA5 0x27 0xF PUSH29 0xA2A63FDD4AE2146064736F6C6343000705003300000000000000000000 ","sourceMap":"448:1228:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:11:5;:9;:11::i;:::-;448:1228:3;2350:103:1;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2350:103:1;-1:-1:-1;;;;;2350:103:1;;:::i;2970:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2970:236:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2970:236:1;;-1:-1:-1;2970:236:1;-1:-1:-1;2970:236:1;:::i;1670:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1670:96:1;;;;;;;;;;;;;;1942:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1942:224:1;-1:-1:-1;;;;;1942:224:1;;:::i;1141:323:3:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1141:323:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1141:323:3;;-1:-1:-1;1141:323:3;;-1:-1:-1;;;;;1141:323:3:i;962:365:4:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;962:365:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;962:365:4;;-1:-1:-1;962:365:4;;-1:-1:-1;;;;;962:365:4:i;1528:78:1:-;;;;;;;;;;;;;:::i;2167:90:5:-;2203:15;:13;:15::i;:::-;2224:28;2234:17;:15;:17::i;:::-;2224:9;:28::i;:::-;2167:90::o;2350:103:1:-;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;2419:29:::1;2430:17;2419:10;:29::i;:::-;1387:76:::0;;;1445:11;:9;:11::i;:::-;2350:103;:::o;2970:236::-;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;3089:29:::1;3100:17;3089:10;:29::i;:::-;3125:12;3143:17;-1:-1:-1::0;;;;;3143:30:1::1;3174:4;;3143:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;3143:36:1::1;::::0;-1:-1:-1;3143:36:1;;-1:-1:-1;;3143:36:1;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3124:55;;;3193:7;3185:16;;;::::0;::::1;;1423:1;1387:76:::0;;;1445:11;:9;:11::i;:::-;2970:236;;;:::o;1670:96::-;1722:7;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;1744:17:::1;:15;:17::i;:::-;1737:24;;1387:76:::0;;;1445:11;:9;:11::i;:::-;1670:96;:::o;1942:224::-;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;-1:-1:-1;;;;;2012:22:1;::::1;2004:89;;;;-1:-1:-1::0;;;2004:89:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:32;2117:8;:6;:8::i;:::-;2104:32;::::0;;-1:-1:-1;;;;;2104:32:1;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;2142:19;2152:8;2142:9;:19::i;1141:323:3:-:0;1287:1;1258:17;:15;:17::i;:::-;-1:-1:-1;;;;;1258:31:3;;1250:40;;;;;;1296:58;1340:6;1348:5;1296:43;:58::i;:::-;1442:17;1452:6;1442:9;:17::i;962:365:4:-;1076:1;1047:17;:15;:17::i;:::-;-1:-1:-1;;;;;1047:31:4;;1039:40;;;;;;1185:26;1204:6;1185:18;:26::i;:::-;1221:12;;:16;1217:106;;1248:12;1266:6;-1:-1:-1;;;;;1266:19:4;1286:5;1266:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1266:26:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:45;;;1308:7;1300:16;;;;;1217:106;962:365;;:::o;1528:78:1:-;1571:7;1405:8;:6;:8::i;:::-;-1:-1:-1;;;;;1391:22:1;:10;-1:-1:-1;;;;;1391:22:1;;1387:76;;;1593:8:::1;:6;:8::i;1539:135:3:-:0;1625:44;:42;:44::i;1101:165:2:-;916:66;1245:11;;1229:33::o;1034:785:5:-;1336:14;1333:1;1330;1317:34;1532:1;1529;1513:14;1510:1;1494:14;1487:5;1474:60;1596:16;1593:1;1590;1575:38;1628:6;1687:56;;;;1782:16;1779:1;1772:27;1687:56;1716:16;1713:1;1706:27;3255:136:1;1106:66;3370:11;;3355:32::o;1401:142:2:-;1463:37;1482:17;1463:18;:37::i;:::-;1511:27;;-1:-1:-1;;;;;1511:27:2;;;;;;;;1401:142;:::o;3507:133:1:-;1106:66;3608:22;3600:36::o;1680:303:2:-;1765:37;1784:17;1765:18;:37::i;:::-;1750:127;;;;-1:-1:-1;;;1750:127:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;916:66;1942:31;1934:45::o;3715:174:1:-;3794:8;:6;:8::i;:::-;-1:-1:-1;;;;;3780:22:1;:10;-1:-1:-1;;;;;3780:22:1;;;3772:85;;;;-1:-1:-1;;;3772:85:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:21;:19;:21::i;743:586:0:-;803:4;1242:20;;1089:66;1281:23;;;;;;:42;;-1:-1:-1;1308:15:0;;;1281:42;1273:51;743:586;-1:-1:-1;;;;743:586:0:o"},"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","initialize(address,address,bytes)":"cf7a1d77","initialize(address,bytes)":"d1f57894","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability Extends from BaseAdminUpgradeabilityProxy with an initializer for initializing the implementation, admin, and init data.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"returns\":{\"_0\":\"The address of the proxy admin.\"}},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Only the current admin can call this function.\",\"params\":{\"newAdmin\":\"Address to transfer proxy administration to.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation.\"}},\"initialize(address,address,bytes)\":{\"params\":{\"_admin\":\"Address of the proxy administrator.\",\"_data\":\"Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\",\"_logic\":\"address of the initial implementation.\"}},\"initialize(address,bytes)\":{\"details\":\"Contract initializer.\",\"params\":{\"_data\":\"Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\",\"_logic\":\"Address of the initial implementation.\"}},\"upgradeTo(address)\":{\"details\":\"Upgrade the backing implementation of the proxy. Only the admin can call this function.\",\"params\":{\"newImplementation\":\"Address of the new implementation.\"}},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the backing implementation of the proxy and call a function on the new implementation. This is useful to initialize the proxied contract.\",\"params\":{\"data\":\"Data to send as msg.data in the low level call. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\",\"newImplementation\":\"Address of the new implementation.\"}}},\"title\":\"InitializableAdminUpgradeabilityProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initialize(address,address,bytes)\":{\"notice\":\"Contract initializer.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/InitializableAdminUpgradeabilityProxy.sol\":\"InitializableAdminUpgradeabilityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Address2.sol\":{\"keccak256\":\"0x24193ee0da226868230fbb81b8ca68c7ba7b6ada5c3fc540afe2b164dfd25fc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fb230f9278f2e38f16e09cc4b87f8a6fe27ed7520163de201eebe3affa20224\",\"dweb:/ipfs/QmcuLVuUibYPPNrUW4AkzQtGefhuaLzrxz1CAJkPwCyR6n\"]},\"contracts/lib/BaseAdminUpgradeabilityProxy.sol\":{\"keccak256\":\"0xfaa3ae578f975705f5c3986631d58ebd548ba1e3d6f9761b309f1aa129a8c7fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1888c4ac885d453e3306790040c4de4a552a7c0480ad71e97fae35caf3024c48\",\"dweb:/ipfs/QmRXF7eYdKBTEPYjib4Z29pyJQNrHKfQWpibL3RbrVNuQN\"]},\"contracts/lib/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x8efe531f381e7e978137589e727be4995272dc4cbb278d2654fb042808342b9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47b16c4eee947bc4d7e69c9a1faee142781fc5c22c21e31eeb693bc12c6cfa89\",\"dweb:/ipfs/QmetYhtij1fcth2bxKime9DzUH4aUcDSHFf4XCNHwVXBee\"]},\"contracts/lib/InitializableAdminUpgradeabilityProxy.sol\":{\"keccak256\":\"0x291e6963a77dec2410b7e2387504e21912e5ef57fa3533d47660fc0dfc1a0fb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f11c6d62490dd170e2cb965fa108697a596155aa005a8986c9c2cf5c8fae1e03\",\"dweb:/ipfs/QmP6bsK2p9qX42LP9M5piZxTb2AepdgJssJhP5x8v52AWC\"]},\"contracts/lib/InitializableUpgradeabilityProxy.sol\":{\"keccak256\":\"0xb520c32c747125ca3fa689ccd14b6ce23f47ecb7ab6f1237c9440bd26dfbdce6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f72715917deb0c790fc6c33ac258bdc3d28c36af2c29995d3b784a41be60dc\",\"dweb:/ipfs/QmbC1iWgLudzqfzKiPkp6YbybcN9Jkt9nUTLYymCCD9HUG\"]},\"contracts/lib/Proxy.sol\":{\"keccak256\":\"0x480557a3539fa85296fe1efde4d0fad33223851af4757d079a314813c23b34f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7698f35f1c78b52d98bf21d59da323d708bcfdb8b8e99b0d658cdc4e0ed20bb5\",\"dweb:/ipfs/QmfY3EWKQ2FCXVen9cjPo7MyQzUdDKsviDx8v3jJhPDUVr\"]},\"contracts/lib/UpgradeabilityProxy.sol\":{\"keccak256\":\"0xba16acdc829ead01f5138755b83dd19bf50ca58b501ae4827cfda1aec46762f7\",\"license\":\"agpl-3.0\",\"urls\":[\"bzz-raw://4dabc3d469b3f0a0e0f3bb48bb92e0df25d9da15751de09de35a163e4e0c1b49\",\"dweb:/ipfs/QmX4p1VKHytgBCjELrQ9D1FZ75bhBBiQHcjKxpFEGRGTsb\"]}},\"version\":1}"}},"contracts/lib/InitializableUpgradeabilityProxy.sol":{"InitializableUpgradeabilityProxy":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610338806100206000396000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f16101da565b6101ff565b565b60006101026101da565b6001600160a01b03161461011557600080fd5b61011e82610223565b8051156101d6576000826001600160a01b0316826040518082805190602001908083835b602083106101615780518252601f199092019160209182019101610142565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50509050806101d457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561021e573d6000f35b3d6000fd5b61022c8161028b565b6102675760405162461bcd60e51b815260040180806020018281038252603b8152602001806102c8603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906102bf57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122034fd1dc0a8e6c50e403d3396977a0e99f40345da5ec94b840fb5ff672afd2bb964736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x28 JUMPI JUMPDEST PUSH2 0x26 PUSH2 0xDE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE6 PUSH2 0xF6 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xF1 PUSH2 0x1DA JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x102 PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E DUP3 PUSH2 0x223 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x161 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x142 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x21E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x22C DUP2 PUSH2 0x28B JUMP JUMPDEST PUSH2 0x267 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C8 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2BF JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742073657420612070726F787920696D PUSH17 0x6C656D656E746174696F6E20746F206120 PUSH15 0x6F6E2D636F6E747261637420616464 PUSH19 0x657373A264697066735822122034FD1DC0A8E6 0xC5 0xE BLOCKHASH RETURNDATASIZE CALLER SWAP7 SWAP8 PUSH27 0xE99F40345DA5EC94B840FB5FF672AFD2BB964736F6C6343000705 STOP CALLER ","sourceMap":"367:962:4:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f16101da565b6101ff565b565b60006101026101da565b6001600160a01b03161461011557600080fd5b61011e82610223565b8051156101d6576000826001600160a01b0316826040518082805190602001908083835b602083106101615780518252601f199092019160209182019101610142565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50509050806101d457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561021e573d6000f35b3d6000fd5b61022c8161028b565b6102675760405162461bcd60e51b815260040180806020018281038252603b8152602001806102c8603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906102bf57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122034fd1dc0a8e6c50e403d3396977a0e99f40345da5ec94b840fb5ff672afd2bb964736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x28 JUMPI JUMPDEST PUSH2 0x26 PUSH2 0xDE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE6 PUSH2 0xF6 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xF1 PUSH2 0x1DA JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x102 PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E DUP3 PUSH2 0x223 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x161 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x142 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x21E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x22C DUP2 PUSH2 0x28B JUMP JUMPDEST PUSH2 0x267 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C8 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2BF JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742073657420612070726F787920696D PUSH17 0x6C656D656E746174696F6E20746F206120 PUSH15 0x6F6E2D636F6E747261637420616464 PUSH19 0x657373A264697066735822122034FD1DC0A8E6 0xC5 0xE BLOCKHASH RETURNDATASIZE CALLER SWAP7 SWAP8 PUSH27 0xE99F40345DA5EC94B840FB5FF672AFD2BB964736F6C6343000705 STOP CALLER ","sourceMap":"367:962:4:-:0;;;;;;;;;;;;;;;;;;601:11:5;:9;:11::i;:::-;367:962:4;962:365;;;;;;;;;;;;;;;;-1:-1:-1;;;;;962:365:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;962:365:4;;-1:-1:-1;962:365:4;;-1:-1:-1;;;;;962:365:4:i;2167:90:5:-;2203:15;:13;:15::i;:::-;2224:28;2234:17;:15;:17::i;:::-;2224:9;:28::i;:::-;2167:90::o;962:365:4:-;1076:1;1047:17;:15;:17::i;:::-;-1:-1:-1;;;;;1047:31:4;;1039:40;;;;;;1185:26;1204:6;1185:18;:26::i;:::-;1221:12;;:16;1217:106;;1248:12;1266:6;-1:-1:-1;;;;;1266:19:4;1286:5;1266:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1266:26:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:45;;;1308:7;1300:16;;;;;;1217:106;;962:365;;:::o;1101:165:2:-;916:66;1245:11;;1229:33::o;1034:785:5:-;1336:14;1333:1;1330;1317:34;1532:1;1529;1513:14;1510:1;1494:14;1487:5;1474:60;1596:16;1593:1;1590;1575:38;1628:6;1687:56;;;;1782:16;1779:1;1772:27;1687:56;1716:16;1713:1;1706:27;1680:303:2;1765:37;1784:17;1765:18;:37::i;:::-;1750:127;;;;-1:-1:-1;;;1750:127:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;916:66;1942:31;1934:45::o;743:586:0:-;803:4;1242:20;;1089:66;1281:23;;;;;;:42;;-1:-1:-1;1308:15:0;;;1281:42;1273:51;743:586;-1:-1:-1;;;;743:586:0:o"},"methodIdentifiers":{"initialize(address,bytes)":"d1f57894"}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability Extends BaseUpgradeabilityProxy with an initializer for initializing implementation and init data.\",\"kind\":\"dev\",\"methods\":{\"initialize(address,bytes)\":{\"details\":\"Contract initializer.\",\"params\":{\"_data\":\"Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\",\"_logic\":\"Address of the initial implementation.\"}}},\"title\":\"InitializableUpgradeabilityProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/InitializableUpgradeabilityProxy.sol\":\"InitializableUpgradeabilityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Address2.sol\":{\"keccak256\":\"0x24193ee0da226868230fbb81b8ca68c7ba7b6ada5c3fc540afe2b164dfd25fc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fb230f9278f2e38f16e09cc4b87f8a6fe27ed7520163de201eebe3affa20224\",\"dweb:/ipfs/QmcuLVuUibYPPNrUW4AkzQtGefhuaLzrxz1CAJkPwCyR6n\"]},\"contracts/lib/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x8efe531f381e7e978137589e727be4995272dc4cbb278d2654fb042808342b9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47b16c4eee947bc4d7e69c9a1faee142781fc5c22c21e31eeb693bc12c6cfa89\",\"dweb:/ipfs/QmetYhtij1fcth2bxKime9DzUH4aUcDSHFf4XCNHwVXBee\"]},\"contracts/lib/InitializableUpgradeabilityProxy.sol\":{\"keccak256\":\"0xb520c32c747125ca3fa689ccd14b6ce23f47ecb7ab6f1237c9440bd26dfbdce6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f72715917deb0c790fc6c33ac258bdc3d28c36af2c29995d3b784a41be60dc\",\"dweb:/ipfs/QmbC1iWgLudzqfzKiPkp6YbybcN9Jkt9nUTLYymCCD9HUG\"]},\"contracts/lib/Proxy.sol\":{\"keccak256\":\"0x480557a3539fa85296fe1efde4d0fad33223851af4757d079a314813c23b34f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7698f35f1c78b52d98bf21d59da323d708bcfdb8b8e99b0d658cdc4e0ed20bb5\",\"dweb:/ipfs/QmfY3EWKQ2FCXVen9cjPo7MyQzUdDKsviDx8v3jJhPDUVr\"]}},\"version\":1}"}},"contracts/lib/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability Implements delegation of calls to other contracts, with proper forwarding of return values and bubbling of failures. It defines a fallback function that delegates all calls to the address returned by the abstract _implementation() internal function.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Proxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Proxy.sol\":{\"keccak256\":\"0x480557a3539fa85296fe1efde4d0fad33223851af4757d079a314813c23b34f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7698f35f1c78b52d98bf21d59da323d708bcfdb8b8e99b0d658cdc4e0ed20bb5\",\"dweb:/ipfs/QmfY3EWKQ2FCXVen9cjPo7MyQzUdDKsviDx8v3jJhPDUVr\"]}},\"version\":1}"}},"contracts/lib/UpgradeabilityProxy.sol":{"UpgradeabilityProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405260405161037b38038061037b8339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610259565b6101be8161021d60201b6100201760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610340603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061025157508115155b949350505050565b60d9806102676000396000f3fe6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea26469706673582212207e42cd06437a59468efa4231e1f39430bab51392f74bba1375a53818794e266964736f6c6343000705003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x37B CODESIZE SUB DUP1 PUSH2 0x37B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x91 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP PUSH2 0xE3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEC DUP3 PUSH2 0x1AB JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x110 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x194 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP POP PUSH2 0x259 JUMP JUMPDEST PUSH2 0x1BE DUP2 PUSH2 0x21D PUSH1 0x20 SHL PUSH2 0x20 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x340 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x251 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xD9 DUP1 PUSH2 0x267 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x5B JUMP JUMPDEST PUSH1 0x80 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH1 0x53 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x9E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x42CD06437A59468EFA4231E1F39430BAB51392F74BBA1375A53818794E2669 PUSH5 0x736F6C6343 STOP SMOD SDIV STOP CALLER NUMBER PUSH2 0x6E6E PUSH16 0x742073657420612070726F787920696D PUSH17 0x6C656D656E746174696F6E20746F206120 PUSH15 0x6F6E2D636F6E747261637420616464 PUSH19 0x65737300000000000000000000000000000000 ","sourceMap":"358:895:6:-:0;;;940:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;940:311:6;;;;;;;;;;-1:-1:-1;940:311:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;940:311:6;;-1:-1:-1;1009:94:6;;-1:-1:-1;;1009:94:6;;1109:26;1128:6;1109:18;:26::i;:::-;1145:12;;:16;1141:106;;1172:12;1190:6;-1:-1:-1;;;;;1190:19:6;1210:5;1190:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1190:26:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1171:45;;;1232:7;1224:16;;;;;;1141:106;;940:311;;358:895;;1680:303:2;1765:37;1784:17;1765:18;;;;;:37;;:::i;:::-;1750:127;;;;-1:-1:-1;;;1750:127:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;916:66;1942:31;1934:45::o;743:586:0:-;803:4;1242:20;;1089:66;1281:23;;;;;;:42;;-1:-1:-1;1308:15:0;;;1281:42;1273:51;743:586;-1:-1:-1;;;;743:586:0:o;358:895:6:-;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea26469706673582212207e42cd06437a59468efa4231e1f39430bab51392f74bba1375a53818794e266964736f6c63430007050033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x5B JUMP JUMPDEST PUSH1 0x80 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH1 0x53 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x9E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x42CD06437A59468EFA4231E1F39430BAB51392F74BBA1375A53818794E2669 PUSH5 0x736F6C6343 STOP SMOD SDIV STOP CALLER ","sourceMap":"358:895:6:-:0;;;601:11:5;:9;:11::i;:::-;358:895:6;2167:90:5;2203:15;:13;:15::i;:::-;2224:28;2234:17;:15;:17::i;:::-;2224:9;:28::i;:::-;2167:90::o;743:586:0:-;803:4;1242:20;;1089:66;1281:23;;;;;;:42;;-1:-1:-1;1308:15:0;;;1281:42;1273:51;743:586;-1:-1:-1;;;;743:586:0:o;1101:165:2:-;916:66;1245:11;;1229:33::o;1034:785:5:-;1336:14;1333:1;1330;1317:34;1532:1;1529;1513:14;1510:1;1494:14;1487:5;1474:60;1596:16;1593:1;1590;1575:38;1628:6;1687:56;;;;1782:16;1779:1;1772:27;1687:56;1716:16;1713:1;1706:27"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"From https://github.com/OpenZeppelin/openzeppelin-sdk/tree/solc-0.6/packages/lib/contracts/upgradeability Extends BaseUpgradeabilityProxy with a constructor for initializing implementation and init data.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Contract constructor.\",\"params\":{\"_data\":\"Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\",\"_logic\":\"Address of the initial implementation.\"}}},\"title\":\"UpgradeabilityProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/UpgradeabilityProxy.sol\":\"UpgradeabilityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/Address2.sol\":{\"keccak256\":\"0x24193ee0da226868230fbb81b8ca68c7ba7b6ada5c3fc540afe2b164dfd25fc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fb230f9278f2e38f16e09cc4b87f8a6fe27ed7520163de201eebe3affa20224\",\"dweb:/ipfs/QmcuLVuUibYPPNrUW4AkzQtGefhuaLzrxz1CAJkPwCyR6n\"]},\"contracts/lib/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x8efe531f381e7e978137589e727be4995272dc4cbb278d2654fb042808342b9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47b16c4eee947bc4d7e69c9a1faee142781fc5c22c21e31eeb693bc12c6cfa89\",\"dweb:/ipfs/QmetYhtij1fcth2bxKime9DzUH4aUcDSHFf4XCNHwVXBee\"]},\"contracts/lib/Proxy.sol\":{\"keccak256\":\"0x480557a3539fa85296fe1efde4d0fad33223851af4757d079a314813c23b34f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7698f35f1c78b52d98bf21d59da323d708bcfdb8b8e99b0d658cdc4e0ed20bb5\",\"dweb:/ipfs/QmfY3EWKQ2FCXVen9cjPo7MyQzUdDKsviDx8v3jJhPDUVr\"]},\"contracts/lib/UpgradeabilityProxy.sol\":{\"keccak256\":\"0xba16acdc829ead01f5138755b83dd19bf50ca58b501ae4827cfda1aec46762f7\",\"license\":\"agpl-3.0\",\"urls\":[\"bzz-raw://4dabc3d469b3f0a0e0f3bb48bb92e0df25d9da15751de09de35a163e4e0c1b49\",\"dweb:/ipfs/QmX4p1VKHytgBCjELrQ9D1FZ75bhBBiQHcjKxpFEGRGTsb\"]}},\"version\":1}"}}}}}