{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC677Mock",
  "sourceName": "contracts/mocks/token/ERC20/ERC677Mock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "tokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "address[]",
          "name": "holders",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "allocations",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "increment",
          "type": "uint256"
        }
      ],
      "name": "ERC20AllowanceOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20ApprovalToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchMintValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchTransferValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ERC20PermitExpired",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitFromAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitInvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ERC20SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20TotalSupplyOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transferAndCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052346106685761359a803803806100198161069d565b928339810160c0828203126106685781516001600160401b03811161066857816100449184016106c2565b60208301519092906001600160401b03811161066857826100669183016106c2565b9260408201519060ff82168092036106685760608301516001600160401b0381116106685783019284601f850112156106685783516100ac6100a78261072d565b61069d565b9460208087848152019260051b8201019087821161066857602001915b81831061067d5750505060808101516001600160401b0381116106685781019480601f870112156106685785516101026100a78261072d565b9660208089848152019260051b82010192831161066857602001905b82821061066d5750505060a00151916001600160a01b0383168303610668577fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f8054600160ff199182168117909255634e83a8c360e11b6000527fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a6680549091169091179055825190926001600160401b03821161053e5760008051602061355a8339815191525490600182811c9216801561065e575b602083101461051e5781601f8493116105e1575b50602090601f831160011461055f57600092610554575b50508160011b916000199060031b1c19161760008051602061355a833981519152555b85516001600160401b03811161053e5760008051602061351a83398151915254600181811c91168015610534575b602082101461051e57601f81116104ac575b506020601f82116001146104275781906103979860009261041c575b50508160011b916000199060031b1c19161760008051602061351a833981519152555b60ff1960008051602061357a83398151915254161760008051602061357a8339815191525563a219a02560e01b600052806020526040600020600160ff19825416179055336103bd575b6307f5828d60e41b600090815260209190915260408082208054600160ff1991821681179092556303c130d960e41b84528284208054821683179055634ec7fbed60e11b845282842080548216831790556353f41a9760e01b8452828420805482168317905563602993f360e11b8452919092208054909116909117905560805261076e565b604051612c5390816108c7823960805181818161165701528181611cb601526129a20152f35b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3610311565b0151905038806102a4565b601f1982169760008051602061351a833981519152600052816000209860005b818110610494575091610397999184600195941061047b575b505050811b0160008051602061351a833981519152556102c7565b015160001960f88460031b161c19169055388080610460565b838301518b556001909a019960209384019301610447565b60008051602061351a8339815191526000527f38f29baf5b4f1132a8b8d899467148f866f7b7a6d08f3c484abb8c5467292cef601f830160051c81019160208410610514575b601f0160051c01905b8181106105085750610288565b600081556001016104fb565b90915081906104f2565b634e487b7160e01b600052602260045260246000fd5b90607f1690610276565b634e487b7160e01b600052604160045260246000fd5b015190503880610225565b60008051602061355a83398151915260009081528281209350601f198516905b8181106105c957509084600195949392106105b0575b505050811b0160008051602061355a83398151915255610248565b015160001960f88460031b161c19169055388080610595565b9293602060018192878601518155019501930161057f565b60008051602061355a8339815191526000529091507fce6c9d9c5887233b79e8966827dc87013a092e23a7d6c4dfeb06be71659aa428601f840160051c81019160208510610654575b90601f859493920160051c01905b818110610645575061020e565b60008155849350600101610638565b909150819061062a565b91607f16916101fa565b600080fd5b815181526020918201910161011e565b82516001600160a01b0381168103610668578152602092830192016100c9565b6040519190601f01601f191682016001600160401b0381118382101761053e57604052565b81601f82011215610668578051906001600160401b03821161053e576106f1601f8301601f191660200161069d565b92828452602083830101116106685760005b82811061071857505060206000918301015290565b80602080928401015182828701015201610703565b6001600160401b03811161053e5760051b60200190565b80518210156107585760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815190805182036108b55781156108b05760009260005b8381106107e15750505050806107995750565b60008051602061353a833981519152549080820191808311156107ca57505060008051602061353a83398151915255565b6301b352fb60e11b60005260045260245260446000fd5b6001600160a01b036107f38284610744565b5116801561089f576108058285610744565b5180610843575b9060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060019594604051908152a301610786565b9591908683019283111561088e5760008181527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee60205260409020805488019055919590919061080c565b631550ab9f60e21b60005260046000fd5b6392fd9c8f60e01b60005260046000fd5b505050565b6332c1299b60e11b60005260046000fdfe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461185d57806306fdde0314611802578063095ea7b31461179557806318160ddd1461173a57806323b872dd1461167b5780632b4c9f161461160c578063313ce567146115ae5780633644e5151461156d578063395093511461133d5780633c130d90146112e25780634000aea0146112c65780634885b25414611218578063572b6c05146111cd57806370a082311461114857806373c8a95814610fc55780637ecebe0014610f4057806388d695b214610efc5780638da5cb5b14610e8b57806395d89b4114610e18578063a457c2d714610dab578063a9059cbb14610d3e578063b88d4fde14610c2e578063c3666c36146109f1578063d505accf1461077e578063dd62ed3e146106cf578063e0df5b6f14610484578063eb7955491461040b578063f2fde38b146103185763f7ba94bd1461015b57600080fd5b346102bc5761016936611ac8565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101aa61298b565b92541691169081036102eb57508181036102c15760005b8181106101ca57005b6101d58183876121cf565b3573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576101ff8285876121cf565b359081471061028a57600080809381935af13d15610282573d906102228261291a565b916102306040519384611b34565b82523d6000602084013e5b1561024957506001016101c1565b80511561025857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b60609061023b565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761034f611922565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc61037861298b565b9080549273ffffffffffffffffffffffffffffffffffffffff80851693168381036102eb575073ffffffffffffffffffffffffffffffffffffffff16928383036103be57005b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346102bc5761041936611996565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee92610452838361044b61298b565b809761202e565b813b610464575b602060405160018152f35b61047a94610473913691612954565b9280612a9c565b8080808080610459565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043567ffffffffffffffff81116102bc576104d3903690600401611968565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061051261298b565b92541691169081036102eb57507ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea9067ffffffffffffffff81116106a05761055a8254611dad565b601f8111610658575b506000601f82116001146105bd578192936000926105b2575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055600080f35b01359050838061057c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216938382526020822091805b8681106106405750836001959610610608575b505050811b019055005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690558380806105fe565b909260206001819286860135815501940191016105eb565b826000526020600020601f830160051c81019160208410610696575b601f0160051c01905b81811061068a5750610563565b6000815560010161067d565b9091508190610674565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610706611922565b73ffffffffffffffffffffffffffffffffffffffff610723611945565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346102bc5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576107b5611922565b6107bd611945565b6044359060643560843560ff81168091036102bc5773ffffffffffffffffffffffffffffffffffffffff8516917f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d83156109c757814211610999576020926000926080928685528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9845288604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528a8684015260a083015260c082015260c0815261089f60e082611b34565b5190206108aa611f87565b9060405190868201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526108ef606282611b34565b519020906040519182528482015260a435604082015260c435606082015282805260015afa1561098d5773ffffffffffffffffffffffffffffffffffffffff600051160361096357610961927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611ec2565b005b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b346102bc576109ff36611a39565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610a4461298b565b92541691169081036102eb5750808214801590610c24575b6102c15760005b828110610a6c57005b73ffffffffffffffffffffffffffffffffffffffff610a94610a8f83858a6121cf565b61220e565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa90811561098d57600091610bf6575b5015610bc9575073ffffffffffffffffffffffffffffffffffffffff610b23610a8f83858a6121cf565b1690610b33610a8f8286896121cf565b91610b3f82878b6121cf565b3592813b156102bc57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191821561098d57600192610bb8575b5001610a63565b6000610bc391611b34565b88610bb1565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610c17915060203d8111610c1d575b610c0f8183611b34565b810190611b75565b89610af9565b503d610c05565b5082821415610a5c565b346102bc5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610c65611922565b610c6d611945565b60443560643567ffffffffffffffff81116102bc57610c90903690600401611968565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee93610cfc848484610cc361298b565b9873ffffffffffffffffffffffffffffffffffffffff8a1673ffffffffffffffffffffffffffffffffffffffff831603610d2d5761202e565b823b610d0d57602060405160018152f35b610d2295610d1c913691612954565b93612a9c565b808080808080610459565b610d39848b848461273c565b61202e565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610459610d78611922565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610da561298b565b9061202e565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610459610de5611922565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610e1261298b565b9061273c565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610e87610e737f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a82611e00565b6040519182916020835260208301906118c3565b0390f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346102bc57610459610f0d36611ac8565b929091907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610f3a61298b565b906124db565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610f77611922565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b346102bc57610fd336611a39565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061101661298b565b92541691169081036102eb575080831480159061113e575b6102c15760005b83811061103e57005b6110498183886121cf565b3573ffffffffffffffffffffffffffffffffffffffff8116908181036102bc5760006020918a8261108a87611083610a8f828f8f906121cf565b938b6121cf565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526110e5606482611b34565b51925af11561098d576000513d6111355750803b155b6111085750600101611035565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156110fb565b508583141561102e565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761117f611922565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602061120e611209611922565b611c9f565b6040519015158152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761124f611922565b60243567ffffffffffffffff81116102bc5761126f903690600401611a08565b916044359267ffffffffffffffff84116102bc57611294610459943690600401611a08565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6112c061298b565b9061222f565b346102bc57602061120e6112d936611996565b92919091611b8d565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610e87610e737ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea611e00565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57611374611922565b60243561137f61298b565b9073ffffffffffffffffffffffffffffffffffffffff83169283156115295773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef6020526040600020846000526020526040600020549180611444575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b80830192808411156114ce57505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef835260406000208660005283528060406000205592506113f5565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760206115a6611f87565b604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060ff7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104596116b5611922565b6116bd611945565b7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee916116e761298b565b92604435938473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff851603611728575b505061202e565b61173391848461273c565b8584611721565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104596117cf611922565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6117fc61298b565b90611ec2565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610e87610e737f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611e00565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102bc5761120e602091611cfe565b919082519283825260005b84811061190d5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016118ce565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc57602083818601950101116102bc57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036102bc5791602435916044359067ffffffffffffffff82116102bc57611a0491600401611968565b9091565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc576020808501948460051b0101116102bc57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611a8291600401611a08565b9290929160243567ffffffffffffffff81116102bc5781611aa591600401611a08565b929092916044359067ffffffffffffffff82116102bc57611a0491600401611a08565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611b1191600401611a08565b929092916024359067ffffffffffffffff82116102bc57611a0491600401611a08565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a057604052565b908160209103126102bc575180151581036102bc5790565b929192611b9861298b565b611bc48383837f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61202e565b813b15611c9557600073ffffffffffffffffffffffffffffffffffffffff608481937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8960209a6040519c8d9b8c9a8b977fa4c0ed36000000000000000000000000000000000000000000000000000000008952166004880152602487015260606044870152816064870152868601378685828601015201168101030193165af190811561098d57600091611c79575090565b611c92915060203d602011610c1d57610c0f8183611b34565b90565b5050505050600190565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611cf75773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114611da7577f01ffc9a7000000000000000000000000000000000000000000000000000000008114611da1576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b90600182811c92168015611df6575b6020831014611dc757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611dbc565b9060405191826000825492611e1484611dad565b8084529360018116908115611e825750600114611e3b575b50611e3992500383611b34565b565b90506000929192526020600020906000915b818310611e66575050906020611e399282010138611e2c565b6020919350806001915483858901015201910190918492611e4d565b60209350611e399592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138611e2c565b929173ffffffffffffffffffffffffffffffffffffffff16928315611f435773ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260016020938383166000520183526040600020866000528352846040600020556040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff827ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b611fb07f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611e00565b6020815191012060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815261202860c082611b34565b51902090565b929173ffffffffffffffffffffffffffffffffffffffff1692831561218b5782612098575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff821660005280602052604060002054838103908082101561213f57508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef971603612118575b5050925050612053565b8383166000528185526040600020558660005283526040600020858154019055388061210e565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b91908110156121df5760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b959490939291928581036102c15780156124d25773ffffffffffffffffffffffffffffffffffffffff8416600052866020526040600020549160009660009260005b8181106122cb575050505050505073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216036122b9575b50505050565b6122c29361273c565b388080806122b3565b73ffffffffffffffffffffffffffffffffffffffff6122ee610a8f83858b6121cf565b16801561248e576123008285876121cf565b35806123ca575b906020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8c16938492604051908152a38a1515806123c0575b612364575b50600101612271565b8a8703908782101561238a57600090815260208d9052604090209086019055600161235b565b878c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858b1415612356565b9a8b810190811115612464579a8c73ffffffffffffffffffffffffffffffffffffffff8b168381146124165750906040602093926000908482528552208181540190555b909150612307565b9050888298921161242e57509086602092019661240e565b8888917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff897f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b92939490918185036102c15784156127345773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b8181106125cd575050505050801515806125c3575b61253c575b5050505050565b808503948086101561257957505073ffffffffffffffffffffffffffffffffffffffff166000526020526040600020910190553880808080612535565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b5083811415612530565b73ffffffffffffffffffffffffffffffffffffffff6125f0610a8f8385896121cf565b1680156126f0576126028285876121cf565b3580612656575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a30161251b565b9687810190811115612464579673ffffffffffffffffffffffffffffffffffffffff89168281146126a357509060019291604060008381528c602052208181540190555b90919250612609565b8c829c92116126ba5750908a60019392019a61269a565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b92909173ffffffffffffffffffffffffffffffffffffffff81169384156128d6576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841415806128cd575b612809575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b80840393808510156128725750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926020928286166000528352604060002086600052835280604060002055926127c1565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b508015156127bc565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff81116106a057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926129608261291a565b9161296e6040519384611b34565b8294818452818301116102bc578281602093846000960137010152565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015612a8d573233148015612a92575b612a8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612a13575b50611c9257503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa90811561098d57600091612a6e575b5038612a09565b612a87915060203d602011610c1d57610c0f8183611b34565b38612a67565b503390565b50601836106129d2565b612b0b73ffffffffffffffffffffffffffffffffffffffff9294958360209516968460405197889687967f4fc3585900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401526080606484015260848301906118c3565b03816000865af190811561098d57600091612b9b575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc3585900000000000000000000000000000000000000000000000000000000911603612b6e5750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d602011612c15575b81612bb460209383611b34565b81010312612c115751907fffffffff0000000000000000000000000000000000000000000000000000000082168203612c0e57507fffffffff00000000000000000000000000000000000000000000000000000000612b21565b80fd5b5080fd5b3d9150612ba756fea2646970667358221220a3d978971f4f723470d89d6c6351cebd54c699f889631c35b82a7cc7eb7e757564736f6c634300081e0033335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a821da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf0335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a83",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461185d57806306fdde0314611802578063095ea7b31461179557806318160ddd1461173a57806323b872dd1461167b5780632b4c9f161461160c578063313ce567146115ae5780633644e5151461156d578063395093511461133d5780633c130d90146112e25780634000aea0146112c65780634885b25414611218578063572b6c05146111cd57806370a082311461114857806373c8a95814610fc55780637ecebe0014610f4057806388d695b214610efc5780638da5cb5b14610e8b57806395d89b4114610e18578063a457c2d714610dab578063a9059cbb14610d3e578063b88d4fde14610c2e578063c3666c36146109f1578063d505accf1461077e578063dd62ed3e146106cf578063e0df5b6f14610484578063eb7955491461040b578063f2fde38b146103185763f7ba94bd1461015b57600080fd5b346102bc5761016936611ac8565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101aa61298b565b92541691169081036102eb57508181036102c15760005b8181106101ca57005b6101d58183876121cf565b3573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576101ff8285876121cf565b359081471061028a57600080809381935af13d15610282573d906102228261291a565b916102306040519384611b34565b82523d6000602084013e5b1561024957506001016101c1565b80511561025857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b60609061023b565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761034f611922565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc61037861298b565b9080549273ffffffffffffffffffffffffffffffffffffffff80851693168381036102eb575073ffffffffffffffffffffffffffffffffffffffff16928383036103be57005b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346102bc5761041936611996565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee92610452838361044b61298b565b809761202e565b813b610464575b602060405160018152f35b61047a94610473913691612954565b9280612a9c565b8080808080610459565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043567ffffffffffffffff81116102bc576104d3903690600401611968565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061051261298b565b92541691169081036102eb57507ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea9067ffffffffffffffff81116106a05761055a8254611dad565b601f8111610658575b506000601f82116001146105bd578192936000926105b2575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055600080f35b01359050838061057c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216938382526020822091805b8681106106405750836001959610610608575b505050811b019055005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690558380806105fe565b909260206001819286860135815501940191016105eb565b826000526020600020601f830160051c81019160208410610696575b601f0160051c01905b81811061068a5750610563565b6000815560010161067d565b9091508190610674565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610706611922565b73ffffffffffffffffffffffffffffffffffffffff610723611945565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346102bc5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576107b5611922565b6107bd611945565b6044359060643560843560ff81168091036102bc5773ffffffffffffffffffffffffffffffffffffffff8516917f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d83156109c757814211610999576020926000926080928685528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9845288604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528a8684015260a083015260c082015260c0815261089f60e082611b34565b5190206108aa611f87565b9060405190868201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526108ef606282611b34565b519020906040519182528482015260a435604082015260c435606082015282805260015afa1561098d5773ffffffffffffffffffffffffffffffffffffffff600051160361096357610961927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611ec2565b005b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b346102bc576109ff36611a39565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610a4461298b565b92541691169081036102eb5750808214801590610c24575b6102c15760005b828110610a6c57005b73ffffffffffffffffffffffffffffffffffffffff610a94610a8f83858a6121cf565b61220e565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa90811561098d57600091610bf6575b5015610bc9575073ffffffffffffffffffffffffffffffffffffffff610b23610a8f83858a6121cf565b1690610b33610a8f8286896121cf565b91610b3f82878b6121cf565b3592813b156102bc57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191821561098d57600192610bb8575b5001610a63565b6000610bc391611b34565b88610bb1565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610c17915060203d8111610c1d575b610c0f8183611b34565b810190611b75565b89610af9565b503d610c05565b5082821415610a5c565b346102bc5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610c65611922565b610c6d611945565b60443560643567ffffffffffffffff81116102bc57610c90903690600401611968565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee93610cfc848484610cc361298b565b9873ffffffffffffffffffffffffffffffffffffffff8a1673ffffffffffffffffffffffffffffffffffffffff831603610d2d5761202e565b823b610d0d57602060405160018152f35b610d2295610d1c913691612954565b93612a9c565b808080808080610459565b610d39848b848461273c565b61202e565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610459610d78611922565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610da561298b565b9061202e565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610459610de5611922565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610e1261298b565b9061273c565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610e87610e737f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a82611e00565b6040519182916020835260208301906118c3565b0390f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346102bc57610459610f0d36611ac8565b929091907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610f3a61298b565b906124db565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610f77611922565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b346102bc57610fd336611a39565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061101661298b565b92541691169081036102eb575080831480159061113e575b6102c15760005b83811061103e57005b6110498183886121cf565b3573ffffffffffffffffffffffffffffffffffffffff8116908181036102bc5760006020918a8261108a87611083610a8f828f8f906121cf565b938b6121cf565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526110e5606482611b34565b51925af11561098d576000513d6111355750803b155b6111085750600101611035565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156110fb565b508583141561102e565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761117f611922565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602061120e611209611922565b611c9f565b6040519015158152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761124f611922565b60243567ffffffffffffffff81116102bc5761126f903690600401611a08565b916044359267ffffffffffffffff84116102bc57611294610459943690600401611a08565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6112c061298b565b9061222f565b346102bc57602061120e6112d936611996565b92919091611b8d565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610e87610e737ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea611e00565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57611374611922565b60243561137f61298b565b9073ffffffffffffffffffffffffffffffffffffffff83169283156115295773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef6020526040600020846000526020526040600020549180611444575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b80830192808411156114ce57505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef835260406000208660005283528060406000205592506113f5565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760206115a6611f87565b604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060ff7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104596116b5611922565b6116bd611945565b7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee916116e761298b565b92604435938473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff851603611728575b505061202e565b61173391848461273c565b8584611721565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104596117cf611922565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6117fc61298b565b90611ec2565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610e87610e737f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611e00565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102bc5761120e602091611cfe565b919082519283825260005b84811061190d5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016118ce565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc57602083818601950101116102bc57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036102bc5791602435916044359067ffffffffffffffff82116102bc57611a0491600401611968565b9091565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc576020808501948460051b0101116102bc57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611a8291600401611a08565b9290929160243567ffffffffffffffff81116102bc5781611aa591600401611a08565b929092916044359067ffffffffffffffff82116102bc57611a0491600401611a08565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611b1191600401611a08565b929092916024359067ffffffffffffffff82116102bc57611a0491600401611a08565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a057604052565b908160209103126102bc575180151581036102bc5790565b929192611b9861298b565b611bc48383837f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61202e565b813b15611c9557600073ffffffffffffffffffffffffffffffffffffffff608481937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8960209a6040519c8d9b8c9a8b977fa4c0ed36000000000000000000000000000000000000000000000000000000008952166004880152602487015260606044870152816064870152868601378685828601015201168101030193165af190811561098d57600091611c79575090565b611c92915060203d602011610c1d57610c0f8183611b34565b90565b5050505050600190565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611cf75773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114611da7577f01ffc9a7000000000000000000000000000000000000000000000000000000008114611da1576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b90600182811c92168015611df6575b6020831014611dc757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611dbc565b9060405191826000825492611e1484611dad565b8084529360018116908115611e825750600114611e3b575b50611e3992500383611b34565b565b90506000929192526020600020906000915b818310611e66575050906020611e399282010138611e2c565b6020919350806001915483858901015201910190918492611e4d565b60209350611e399592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138611e2c565b929173ffffffffffffffffffffffffffffffffffffffff16928315611f435773ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260016020938383166000520183526040600020866000528352846040600020556040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff827ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b611fb07f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611e00565b6020815191012060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815261202860c082611b34565b51902090565b929173ffffffffffffffffffffffffffffffffffffffff1692831561218b5782612098575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff821660005280602052604060002054838103908082101561213f57508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef971603612118575b5050925050612053565b8383166000528185526040600020558660005283526040600020858154019055388061210e565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b91908110156121df5760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b959490939291928581036102c15780156124d25773ffffffffffffffffffffffffffffffffffffffff8416600052866020526040600020549160009660009260005b8181106122cb575050505050505073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216036122b9575b50505050565b6122c29361273c565b388080806122b3565b73ffffffffffffffffffffffffffffffffffffffff6122ee610a8f83858b6121cf565b16801561248e576123008285876121cf565b35806123ca575b906020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8c16938492604051908152a38a1515806123c0575b612364575b50600101612271565b8a8703908782101561238a57600090815260208d9052604090209086019055600161235b565b878c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858b1415612356565b9a8b810190811115612464579a8c73ffffffffffffffffffffffffffffffffffffffff8b168381146124165750906040602093926000908482528552208181540190555b909150612307565b9050888298921161242e57509086602092019661240e565b8888917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff897f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b92939490918185036102c15784156127345773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b8181106125cd575050505050801515806125c3575b61253c575b5050505050565b808503948086101561257957505073ffffffffffffffffffffffffffffffffffffffff166000526020526040600020910190553880808080612535565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b5083811415612530565b73ffffffffffffffffffffffffffffffffffffffff6125f0610a8f8385896121cf565b1680156126f0576126028285876121cf565b3580612656575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a30161251b565b9687810190811115612464579673ffffffffffffffffffffffffffffffffffffffff89168281146126a357509060019291604060008381528c602052208181540190555b90919250612609565b8c829c92116126ba5750908a60019392019a61269a565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b92909173ffffffffffffffffffffffffffffffffffffffff81169384156128d6576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841415806128cd575b612809575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b80840393808510156128725750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926020928286166000528352604060002086600052835280604060002055926127c1565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b508015156127bc565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff81116106a057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926129608261291a565b9161296e6040519384611b34565b8294818452818301116102bc578281602093846000960137010152565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015612a8d573233148015612a92575b612a8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612a13575b50611c9257503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa90811561098d57600091612a6e575b5038612a09565b612a87915060203d602011610c1d57610c0f8183611b34565b38612a67565b503390565b50601836106129d2565b612b0b73ffffffffffffffffffffffffffffffffffffffff9294958360209516968460405197889687967f4fc3585900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401526080606484015260848301906118c3565b03816000865af190811561098d57600091612b9b575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc3585900000000000000000000000000000000000000000000000000000000911603612b6e5750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d602011612c15575b81612bb460209383611b34565b81010312612c115751907fffffffff0000000000000000000000000000000000000000000000000000000082168203612c0e57507fffffffff00000000000000000000000000000000000000000000000000000000612b21565b80fd5b5080fd5b3d9150612ba756fea2646970667358221220a3d978971f4f723470d89d6c6351cebd54c699f889631c35b82a7cc7eb7e757564736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
