{
  "_format": "hh-sol-artifact-1",
  "contractName": "Contribution2Test",
  "sourceName": "contracts/test/contribution/Contribution2Test.sol",
  "abi": [
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PeriodIntervalZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "periodNumber",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "tag",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ContributionRecorded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CONTRIBUTOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_periodInterval",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "periodInterval",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tag",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "recordContribution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "totalContributions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userContributions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516110876100fd600039600081816108da015281816109030152610a4e01526110876000f3fe6080604052600436106101145760003560e01c80636513f7ab116100a0578063cd6dc68711610064578063cd6dc6871461032e578063d547741f1461034e578063e1cb0e521461036e578063e6fd48bc14610382578063f099f9f51461039857600080fd5b80636513f7ab146102455780638c962d9d1461028357806391d14854146102bb578063a217fddf146102db578063ad3cb1cc146102f057600080fd5b80632f2ff15d116100e75780632f2ff15d146101a757806336568abe146101c95780634f1ef286146101e957806352d1902d146101fc57806361fa40dc1461021157600080fd5b806301ffc9a714610119578063086146d21461014e57806319fac44f14610171578063248a9ca314610187575b600080fd5b34801561012557600080fd5b50610139610134366004610cee565b6103b8565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b506101636103ef565b604051908152602001610145565b34801561017d57600080fd5b5061016360015481565b34801561019357600080fd5b506101636101a2366004610d18565b610411565b3480156101b357600080fd5b506101c76101c2366004610d4d565b610433565b005b3480156101d557600080fd5b506101c76101e4366004610d4d565b610455565b6101c76101f7366004610d8f565b61048d565b34801561020857600080fd5b506101636104ac565b34801561021d57600080fd5b506101637fa0bb1af1c90aa52ed052b92714ff0087008cc720049bf1af77cca2600b31e80c81565b34801561025157600080fd5b50610163610260366004610e59565b600360209081526000938452604080852082529284528284209052825290205481565b34801561028f57600080fd5b5061016361029e366004610e8e565b600260209081526000928352604080842090915290825290205481565b3480156102c757600080fd5b506101396102d6366004610d4d565b6104c9565b3480156102e757600080fd5b50610163600081565b3480156102fc57600080fd5b50610321604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101459190610ed4565b34801561033a57600080fd5b506101c7610349366004610f07565b610501565b34801561035a57600080fd5b506101c7610369366004610d4d565b610691565b34801561037a57600080fd5b506063610163565b34801561038e57600080fd5b5061016360005481565b3480156103a457600080fd5b506101c76103b3366004610f31565b6106ad565b60006001600160e01b03198216637965db0b60e01b14806103e957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000600154600054426104029190610f7d565b61040c9190610f90565b905090565b6000908152600080516020611032833981519152602052604090206001015490565b61043c82610411565b610445816107a1565b61044f83836107ae565b50505050565b6001600160a01b038116331461047e5760405163334bd91960e11b815260040160405180910390fd5b6104888282610853565b505050565b6104956108cf565b61049e82610976565b6104a88282610981565b5050565b60006104b6610a43565b5060008051602061101283398151915290565b6000918252600080516020611032833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156105475750825b905060008267ffffffffffffffff1660011480156105645750303b155b905081158015610572575080155b156105905760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105ba57845460ff60401b1916600160401b1785555b856000036105db57604051630938939360e41b815260040160405180910390fd5b6105e3610a8c565b6105eb610a8c565b6105f66000886107ae565b50620151808611156106245761060f6201518042610f90565b61061c9062015180610fb2565b60005561063d565b8561062f8142610f90565b6106399190610fb2565b6000555b6001869055831561068857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61069a82610411565b6106a3816107a1565b61044f8383610853565b7fa0bb1af1c90aa52ed052b92714ff0087008cc720049bf1af77cca2600b31e80c6106d7816107a1565b60006106e16103ef565b600081815260026020908152604080832089845290915281208054929350859290919061070f908490610fc9565b9091555050600081815260036020908152604080832088845282528083206001600160a01b03881684529091528120805485929061074e908490610fc9565b92505081905550836001600160a01b031685827fc38cf03175533ac8bb2eeb423faafc317732df6d4394d60ee47a5d2e60152c8a8660405161079291815260200190565b60405180910390a45050505050565b6107ab8133610a94565b50565b60006000805160206110328339815191526107c984846104c9565b610849576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556107ff3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506103e9565b60009150506103e9565b600060008051602061103283398151915261086e84846104c9565b15610849576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506103e9565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061095657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661094a600080516020611012833981519152546001600160a01b031690565b6001600160a01b031614155b156109745760405163703e46dd60e11b815260040160405180910390fd5b565b60006104a8816107a1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109db575060408051601f3d908101601f191682019092526109d891810190610fdc565b60015b610a0857604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b6000805160206110128339815191528114610a3957604051632a87526960e21b8152600481018290526024016109ff565b6104888383610acd565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109745760405163703e46dd60e11b815260040160405180910390fd5b610974610b23565b610a9e82826104c9565b6104a85760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016109ff565b610ad682610b6c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610b1b576104888282610bd1565b6104a8610c47565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661097457604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610ba257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016109ff565b60008051602061101283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610bee9190610ff5565b600060405180830381855af49150503d8060008114610c29576040519150601f19603f3d011682016040523d82523d6000602084013e610c2e565b606091505b5091509150610c3e858383610c66565b95945050505050565b34156109745760405163b398979f60e01b815260040160405180910390fd5b606082610c7b57610c7682610cc5565b610cbe565b8151158015610c9257506001600160a01b0384163b155b15610cbb57604051639996b31560e01b81526001600160a01b03851660048201526024016109ff565b50805b9392505050565b805115610cd55780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215610d0057600080fd5b81356001600160e01b031981168114610cbe57600080fd5b600060208284031215610d2a57600080fd5b5035919050565b80356001600160a01b0381168114610d4857600080fd5b919050565b60008060408385031215610d6057600080fd5b82359150610d7060208401610d31565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610da257600080fd5b610dab83610d31565b9150602083013567ffffffffffffffff811115610dc757600080fd5b8301601f81018513610dd857600080fd5b803567ffffffffffffffff811115610df257610df2610d79565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e2157610e21610d79565b604052818152828201602001871015610e3957600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215610e6e57600080fd5b8335925060208401359150610e8560408501610d31565b90509250925092565b60008060408385031215610ea157600080fd5b50508035926020909101359150565b60005b83811015610ecb578181015183820152602001610eb3565b50506000910152565b6020815260008251806020840152610ef3816040850160208701610eb0565b601f01601f19169190910160400192915050565b60008060408385031215610f1a57600080fd5b610f2383610d31565b946020939093013593505050565b600080600060608486031215610f4657600080fd5b83359250610f5660208501610d31565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b818103818111156103e9576103e9610f67565b600082610fad57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176103e9576103e9610f67565b808201808211156103e9576103e9610f67565b600060208284031215610fee57600080fd5b5051919050565b60008251611007818460208701610eb0565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212203c1084356c74dee0004e293186fd5be189b10b34f4bf559cd876a871a5b3487f64736f6c634300081b0033",
  "deployedBytecode": "0x6080604052600436106101145760003560e01c80636513f7ab116100a0578063cd6dc68711610064578063cd6dc6871461032e578063d547741f1461034e578063e1cb0e521461036e578063e6fd48bc14610382578063f099f9f51461039857600080fd5b80636513f7ab146102455780638c962d9d1461028357806391d14854146102bb578063a217fddf146102db578063ad3cb1cc146102f057600080fd5b80632f2ff15d116100e75780632f2ff15d146101a757806336568abe146101c95780634f1ef286146101e957806352d1902d146101fc57806361fa40dc1461021157600080fd5b806301ffc9a714610119578063086146d21461014e57806319fac44f14610171578063248a9ca314610187575b600080fd5b34801561012557600080fd5b50610139610134366004610cee565b6103b8565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b506101636103ef565b604051908152602001610145565b34801561017d57600080fd5b5061016360015481565b34801561019357600080fd5b506101636101a2366004610d18565b610411565b3480156101b357600080fd5b506101c76101c2366004610d4d565b610433565b005b3480156101d557600080fd5b506101c76101e4366004610d4d565b610455565b6101c76101f7366004610d8f565b61048d565b34801561020857600080fd5b506101636104ac565b34801561021d57600080fd5b506101637fa0bb1af1c90aa52ed052b92714ff0087008cc720049bf1af77cca2600b31e80c81565b34801561025157600080fd5b50610163610260366004610e59565b600360209081526000938452604080852082529284528284209052825290205481565b34801561028f57600080fd5b5061016361029e366004610e8e565b600260209081526000928352604080842090915290825290205481565b3480156102c757600080fd5b506101396102d6366004610d4d565b6104c9565b3480156102e757600080fd5b50610163600081565b3480156102fc57600080fd5b50610321604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101459190610ed4565b34801561033a57600080fd5b506101c7610349366004610f07565b610501565b34801561035a57600080fd5b506101c7610369366004610d4d565b610691565b34801561037a57600080fd5b506063610163565b34801561038e57600080fd5b5061016360005481565b3480156103a457600080fd5b506101c76103b3366004610f31565b6106ad565b60006001600160e01b03198216637965db0b60e01b14806103e957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000600154600054426104029190610f7d565b61040c9190610f90565b905090565b6000908152600080516020611032833981519152602052604090206001015490565b61043c82610411565b610445816107a1565b61044f83836107ae565b50505050565b6001600160a01b038116331461047e5760405163334bd91960e11b815260040160405180910390fd5b6104888282610853565b505050565b6104956108cf565b61049e82610976565b6104a88282610981565b5050565b60006104b6610a43565b5060008051602061101283398151915290565b6000918252600080516020611032833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156105475750825b905060008267ffffffffffffffff1660011480156105645750303b155b905081158015610572575080155b156105905760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105ba57845460ff60401b1916600160401b1785555b856000036105db57604051630938939360e41b815260040160405180910390fd5b6105e3610a8c565b6105eb610a8c565b6105f66000886107ae565b50620151808611156106245761060f6201518042610f90565b61061c9062015180610fb2565b60005561063d565b8561062f8142610f90565b6106399190610fb2565b6000555b6001869055831561068857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61069a82610411565b6106a3816107a1565b61044f8383610853565b7fa0bb1af1c90aa52ed052b92714ff0087008cc720049bf1af77cca2600b31e80c6106d7816107a1565b60006106e16103ef565b600081815260026020908152604080832089845290915281208054929350859290919061070f908490610fc9565b9091555050600081815260036020908152604080832088845282528083206001600160a01b03881684529091528120805485929061074e908490610fc9565b92505081905550836001600160a01b031685827fc38cf03175533ac8bb2eeb423faafc317732df6d4394d60ee47a5d2e60152c8a8660405161079291815260200190565b60405180910390a45050505050565b6107ab8133610a94565b50565b60006000805160206110328339815191526107c984846104c9565b610849576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556107ff3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506103e9565b60009150506103e9565b600060008051602061103283398151915261086e84846104c9565b15610849576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506103e9565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061095657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661094a600080516020611012833981519152546001600160a01b031690565b6001600160a01b031614155b156109745760405163703e46dd60e11b815260040160405180910390fd5b565b60006104a8816107a1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109db575060408051601f3d908101601f191682019092526109d891810190610fdc565b60015b610a0857604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b6000805160206110128339815191528114610a3957604051632a87526960e21b8152600481018290526024016109ff565b6104888383610acd565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109745760405163703e46dd60e11b815260040160405180910390fd5b610974610b23565b610a9e82826104c9565b6104a85760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016109ff565b610ad682610b6c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610b1b576104888282610bd1565b6104a8610c47565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661097457604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610ba257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016109ff565b60008051602061101283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610bee9190610ff5565b600060405180830381855af49150503d8060008114610c29576040519150601f19603f3d011682016040523d82523d6000602084013e610c2e565b606091505b5091509150610c3e858383610c66565b95945050505050565b34156109745760405163b398979f60e01b815260040160405180910390fd5b606082610c7b57610c7682610cc5565b610cbe565b8151158015610c9257506001600160a01b0384163b155b15610cbb57604051639996b31560e01b81526001600160a01b03851660048201526024016109ff565b50805b9392505050565b805115610cd55780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215610d0057600080fd5b81356001600160e01b031981168114610cbe57600080fd5b600060208284031215610d2a57600080fd5b5035919050565b80356001600160a01b0381168114610d4857600080fd5b919050565b60008060408385031215610d6057600080fd5b82359150610d7060208401610d31565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610da257600080fd5b610dab83610d31565b9150602083013567ffffffffffffffff811115610dc757600080fd5b8301601f81018513610dd857600080fd5b803567ffffffffffffffff811115610df257610df2610d79565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e2157610e21610d79565b604052818152828201602001871015610e3957600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215610e6e57600080fd5b8335925060208401359150610e8560408501610d31565b90509250925092565b60008060408385031215610ea157600080fd5b50508035926020909101359150565b60005b83811015610ecb578181015183820152602001610eb3565b50506000910152565b6020815260008251806020840152610ef3816040850160208701610eb0565b601f01601f19169190910160400192915050565b60008060408385031215610f1a57600080fd5b610f2383610d31565b946020939093013593505050565b600080600060608486031215610f4657600080fd5b83359250610f5660208501610d31565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b818103818111156103e9576103e9610f67565b600082610fad57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176103e9576103e9610f67565b808201808211156103e9576103e9610f67565b600060208284031215610fee57600080fd5b5051919050565b60008251611007818460208701610eb0565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212203c1084356c74dee0004e293186fd5be189b10b34f4bf559cd876a871a5b3487f64736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
