{
  "_format": "hh-sol-artifact-1",
  "contractName": "MasterChefJoeV3",
  "sourceName": "contracts/MasterChefJoeV3.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IMasterChef",
          "name": "_MASTER_CHEF_V2",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_joe",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_MASTER_PID",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract IERC20",
          "name": "lpToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        }
      ],
      "name": "Add",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EmergencyWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Harvest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Init",
      "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": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "overwrite",
          "type": "bool"
        }
      ],
      "name": "Set",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lastRewardTimestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accJoePerShare",
          "type": "uint256"
        }
      ],
      "name": "UpdatePool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "JOE",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MASTER_CHEF_V2",
      "outputs": [
        {
          "internalType": "contract IMasterChef",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MASTER_PID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "contract IERC20",
          "name": "_lpToken",
          "type": "address"
        },
        {
          "internalType": "contract IRewarder",
          "name": "_rewarder",
          "type": "address"
        }
      ],
      "name": "add",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        }
      ],
      "name": "emergencyWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "harvestFromMasterChef",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "dummyToken",
          "type": "address"
        }
      ],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "joePerSec",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "pids",
          "type": "uint256[]"
        }
      ],
      "name": "massUpdatePools",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "pendingTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pendingJoe",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "bonusTokenAddress",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "bonusTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "pendingBonusToken",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "poolInfo",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "lpToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "accJoePerShare",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastRewardTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pools",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "contract IRewarder",
          "name": "_rewarder",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "overwrite",
          "type": "bool"
        }
      ],
      "name": "set",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAllocPoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        }
      ],
      "name": "updatePool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rewardDebt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b5060405162002c6038038062002c608339810160408190526200003491620000b6565b600062000040620000b2565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556001600160601b0319606093841b81166080529190921b1660a05260c05262000116565b3390565b600080600060608486031215620000cb578283fd5b8351620000d881620000fd565b6020850151909350620000eb81620000fd565b80925050604084015190509250925092565b6001600160a01b03811681146200011357600080fd5b50565b60805160601c60a05160601c60c051612ad16200018f600039806104f352806108615280610c9552806115f05250806106a952806117785280611e0752508061043252806104c6528061057e528061083452806112b7528061134b52806113df5280611483528061151952806115c35250612ad16000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806361621aaa116100b8578063ab7de0981161007c578063ab7de09814610250578063ca418d2314610263578063e2bbb1581461026b578063f2fde38b1461027e578063ffcd426314610291578063ffebad30146102b457610137565b806361621aaa14610204578063715018a61461020c57806388bba42f146102145780638da5cb5b1461022757806393f1a40b1461022f57610137565b8063441a3e70116100ff578063441a3e70146101b05780634f70b15a146101c357806351eb05a6146101cb5780635312ea8e146101de57806357a5b58c146101f157610137565b8063081e3eda1461013c5780631526fe271461015a57806317caf6f11461017e57806319ab453c1461018657806327bf88ad1461019b575b600080fd5b6101446102bc565b6040516101519190612994565b60405180910390f35b61016d610168366004612577565b6102c2565b6040516101519594939291906126ee565b61014461030d565b6101996101943660046123d6565b610313565b005b6101a361057c565b604051610151919061269d565b6101996101be366004612617565b6105a0565b61019961081d565b6101996101d9366004612577565b6108c0565b6101996101ec366004612577565b610af3565b6101996101ff3660046123f2565b610c64565b610144610c93565b610199610cb7565b610199610222366004612638565b610d40565b6101a3610f81565b61024261023d3660046125a7565b610f90565b6040516101519291906129fe565b61019961025e3660046125d6565b610fb4565b6101446112a8565b610199610279366004612617565b61167b565b61019961028c3660046123d6565b6119fb565b6102a461029f3660046125a7565b611abb565b604051610151949392919061299d565b6101a3611e05565b60025490565b600281815481106102cf57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b0393841695509193909290911685565b60065481565b61031b611e29565b6001600160a01b031661032c610f81565b6001600160a01b03161461035b5760405162461bcd60e51b8152600401610352906128f3565b60405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061038a90339060040161269d565b60206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da919061258f565b9050806103f95760405162461bcd60e51b81526004016103529061271e565b61040e6001600160a01b038316333084611e2d565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b39061045c907f00000000000000000000000000000000000000000000000000000000000000009085906004016126b1565b602060405180830381600087803b15801561047657600080fd5b505af115801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae9190612461565b50604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb1589061051d907f00000000000000000000000000000000000000000000000000000000000000009085906004016129fe565b600060405180830381600087803b15801561053757600080fd5b505af115801561054b573d6000803e3d6000fd5b50506040517f57a86f7d14ccde89e22870afe839e3011216827daa9b24e18629f0a1e9d6cc14925060009150a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260015414156105c35760405162461bcd60e51b81526004016103529061295d565b60026001556105d061081d565b6105d9826108c0565b6105e1612395565b600283815481106105ee57fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b0390811684526001820154848601526002820154848401526003820154606085015260049091015416608083015287855292825282842033855290915291208054919250901561071457600061069a8260010154610694670de0b6b3a764000061068e87602001518760000154611f2690919063ffffffff16565b90611f69565b90611f9b565b90506106d06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383611fc3565b84336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548360405161070a9190612994565b60405180910390a3505b80546107209084611f9b565b808255602083015161074091670de0b6b3a76400009161068e9190611f26565b600182015560808201516001600160a01b038116156107ba5781546040516301a7af8b60e41b81526001600160a01b03831691631a7af8b0916107879133916004016126b1565b600060405180830381600087803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b505050505b82516107d0906001600160a01b03163386611fc3565b84336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688660405161080a9190612994565b60405180910390a3505060018055505050565b604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb1589061088c907f0000000000000000000000000000000000000000000000000000000000000000906000906004016129fe565b600060405180830381600087803b1580156108a657600080fd5b505af11580156108ba573d6000803e3d6000fd5b50505050565b6108c8612395565b600282815481106108d557fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b0390811684526001820154948401949094526002810154918301829052600381015460608401526004015490921660808201529150421115610aef5780516040516370a0823160e01b81526000916001600160a01b0316906370a082319061096790309060040161269d565b60206040518083038186803b15801561097f57600080fd5b505afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b7919061258f565b90508015610a305760006109d8836040015142611f9b90919063ffffffff16565b90506000610a0260065461068e86606001516109fc6109f56112a8565b8790611f26565b90611f26565b9050610a28610a1d8461068e84670de0b6b3a7640000611f26565b6020860151906120b9565b602085015250505b4260408301526002805483919085908110610a4757fe5b6000918252602091829020835160059092020180546001600160a01b039283166001600160a01b0319918216178255848401516001830155604080860151600284015560608601516003840155608090950151600490920180549290931691161790558382015190840151915185927f3be3541fc42237d611b30329040bfa4569541d156560acdbbae57640d20b8f4692610ae59290918691612a0c565b60405180910390a2505b5050565b60026001541415610b165760405162461bcd60e51b81526004016103529061295d565b6002600155610b23612395565b60028281548110610b3057fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b0390811684526001808301548587015260028301548585015260038301546060860152600490920154811660808501908152898852958552828720338852909452908520805486825591810195909555925190945090811615610c14576040516301a7af8b60e41b81526001600160a01b03821690631a7af8b090610be19033906000906004016126b1565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050505b8351610c2a906001600160a01b03163384611fc3565b84336001600160a01b03167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05958460405161080a9190612994565b8060005b818110156108ba57610c8b848483818110610c7f57fe5b905060200201356108c0565b600101610c68565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cbf611e29565b6001600160a01b0316610cd0610f81565b6001600160a01b031614610cf65760405162461bcd60e51b8152600401610352906128f3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610d48611e29565b6001600160a01b0316610d59610f81565b6001600160a01b031614610d7f5760405162461bcd60e51b8152600401610352906128f3565b610d87612395565b60028581548110610d9457fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b03908116845260018201549484019490945260028082015492840192909252600381015460608401526004015490921660808201528154909250610e32918691610e2c919089908110610e0957fe5b906000526020600020906005020160030154600654611f9b90919063ffffffff16565b906120b9565b600655606081018490528115610eb3576040516301a7af8b60e41b81526001600160a01b03841690631a7af8b090610e719060009081906004016126b1565b600060405180830381600087803b158015610e8b57600080fd5b505af1158015610e9f573d6000803e3d6000fd5b5050506001600160a01b0384166080830152505b8060028681548110610ec157fe5b600091825260209182902083516005929092020180546001600160a01b03199081166001600160a01b03938416178255928401516001820155604084015160028201556060840151600382015560809093015160049093018054909216921691909117905581610f35578060800151610f37565b825b6001600160a01b0316857fa54644aae5c48c5971516f334e4fe8ecbc7930e23f34877d4203c6551e67ffaa8685604051610f729291906129ee565b60405180910390a35050505050565b6000546001600160a01b031690565b60056020908152600092835260408084209091529082529020805460019091015482565b610fbc611e29565b6001600160a01b0316610fcd610f81565b6001600160a01b031614610ff35760405162461bcd60e51b8152600401610352906128f3565b610ffe6003836120de565b1561101b5760405162461bcd60e51b8152600401610352906128c4565b6040516370a0823160e01b81526001600160a01b038316906370a082319061104790309060040161269d565b60206040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611097919061258f565b506001600160a01b03811615611109576040516301a7af8b60e41b81526001600160a01b03821690631a7af8b0906110d69060009081906004016126b1565b600060405180830381600087803b1580156110f057600080fd5b505af1158015611104573d6000803e3d6000fd5b505050505b600654429061111890856120b9565b6006556040805160a0810182526001600160a01b038581168252600060208301818152938301858152606084018981528784166080860190815260028054600181018255945294517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600590940293840180546001600160a01b031990811692871692909217905595517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf84015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0830155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad182015591517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad29092018054909316911617905561124c6003846120f3565b506002546001600160a01b03808416919085169061126b906001611f9b565b7f4b16bd2431ad24dc020ab0e1de7fcb6563dead6a24fb10089d6c23e97a70381f8760405161129a9190612994565b60405180910390a450505050565b6000806103e8905060006114757f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630735b2086040518163ffffffff1660e01b815260040160206040518083038186803b15801561130e57600080fd5b505afa158015611322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611346919061258f565b6106947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ef9d586040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a257600080fd5b505afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da919061258f565b6106947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fc3c28af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e919061258f565b8790611f9b565b905060006115128361068e847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ca418d236040518163ffffffff1660e01b815260040160206040518083038186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc919061258f565b90506116737f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a8919061258f565b604051631526fe2760e01b815261068e906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe2790611618907f000000000000000000000000000000000000000000000000000000000000000090600401612994565b60806040518083038186803b15801561163057600080fd5b505afa158015611644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116689190612525565b602001518490611f26565b935050505090565b6002600154141561169e5760405162461bcd60e51b81526004016103529061295d565b60026001556116ab61081d565b6116b4826108c0565b6116bc612395565b600283815481106116c957fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b039081168452600182015484860152600282015484840152600382015460608501526004909101541660808301528785529282528284203385529091529120805491925090156117e35760006117698260010154610694670de0b6b3a764000061068e87602001518760000154611f2690919063ffffffff16565b905061179f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383611fc3565b84336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516117d99190612994565b60405180910390a3505b81516040516370a0823160e01b81526000916001600160a01b0316906370a082319061181390309060040161269d565b60206040518083038186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611863919061258f565b835190915061187d906001600160a01b0316333087611e2d565b82516040516370a0823160e01b81526000916119039184916001600160a01b0316906370a08231906118b390309060040161269d565b60206040518083038186803b1580156118cb57600080fd5b505afa1580156118df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610694919061258f565b835490915061191290826120b9565b808455602085015161193291670de0b6b3a76400009161068e9190611f26565b600184015560808401516001600160a01b038116156119ac5783546040516301a7af8b60e41b81526001600160a01b03831691631a7af8b0916119799133916004016126b1565b600060405180830381600087803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b505050505b86336001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15846040516119e69190612994565b60405180910390a35050600180555050505050565b611a03611e29565b6001600160a01b0316611a14610f81565b6001600160a01b031614611a3a5760405162461bcd60e51b8152600401610352906128f3565b6001600160a01b038116611a605760405162461bcd60e51b815260040161035290612798565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060606000611aca612395565b60028781548110611ad757fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b039081168452600182015484860190815260028301548585015260038301546060860152600492830154821660808601528e88529585528287208d821688529094528186209451835192516370a0823160e01b815293975094959391909116916370a0823191611b6e9130910161269d565b60206040518083038186803b158015611b8657600080fd5b505afa158015611b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbe919061258f565b9050836040015142118015611bd257508015155b15611c34576000611bf0856040015142611f9b90919063ffffffff16565b90506000611c0d60065461068e88606001516109fc6109f56112a8565b9050611c2f611c288461068e84670de0b6b3a7640000611f26565b85906120b9565b935050505b611c5f8360010154610694670de0b6b3a764000061068e868860000154611f2690919063ffffffff16565b60808501519098506001600160a01b031615611df85783608001516001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea919061247d565b9650611d7284608001516001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015611d2c57600080fd5b505afa158015611d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d64919061247d565b6001600160a01b0316612108565b608085015160405163c031a66f60e01b81529197506001600160a01b03169063c031a66f90611da5908c9060040161269d565b60206040518083038186803b158015611dbd57600080fd5b505afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061258f565b94505b5050505092959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b3390565b60006060856001600160a01b03166323b872dd60e01b868686604051602401611e58939291906126ca565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611e969190612681565b6000604051808303816000865af19150503d8060008114611ed3576040519150601f19603f3d011682016040523d82523d6000602084013e611ed8565b606091505b5091509150818015611f02575080511580611f02575080806020019051810190611f029190612461565b611f1e5760405162461bcd60e51b815260040161035290612928565b505050505050565b600082611f3557506000611f63565b82820282848281611f4257fe5b0414611f605760405162461bcd60e51b815260040161035290612883565b90505b92915050565b6000808211611f8a5760405162461bcd60e51b81526004016103529061284c565b818381611f9357fe5b049392505050565b600082821115611fbd5760405162461bcd60e51b815260040161035290612815565b50900390565b60006060846001600160a01b031663a9059cbb60e01b8585604051602401611fec9291906126b1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161202a9190612681565b6000604051808303816000865af19150503d8060008114612067576040519150601f19603f3d011682016040523d82523d6000602084013e61206c565b606091505b50915091508180156120965750805115806120965750808060200190518101906120969190612461565b6120b25760405162461bcd60e51b815260040161035290612761565b5050505050565b600082820183811015611f605760405162461bcd60e51b8152600401610352906127de565b6000611f60836001600160a01b0384166121cd565b6000611f60836001600160a01b0384166121e5565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009183916001600160a01b0386169161214f9190612681565b600060405180830381855afa9150503d806000811461218a576040519150601f19603f3d011682016040523d82523d6000602084013e61218f565b606091505b5091509150816121ba57604051806040016040528060038152602001623f3f3f60e81b8152506121c3565b6121c38161222f565b925050505b919050565b60009081526001919091016020526040902054151590565b60006121f183836121cd565b61222757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611f63565b506000611f63565b60606040825110612255578180602001905181019061224e9190612499565b90506121c8565b8151602014156123755760005b60208160ff161080156122915750828160ff168151811061227f57fe5b01602001516001600160f81b03191615155b1561229e57600101612262565b60608160ff1667ffffffffffffffff811180156122ba57600080fd5b506040519080825280601f01601f1916602001820160405280156122e5576020820181803683370190505b509050600091505b60208260ff1610801561231c5750838260ff168151811061230a57fe5b01602001516001600160f81b03191615155b1561236c57838260ff168151811061233057fe5b602001015160f81c60f81b818360ff168151811061234a57fe5b60200101906001600160f81b031916908160001a9053506001909101906122ed565b91506121c89050565b506040805180820190915260038152623f3f3f60e81b60208201526121c8565b6040518060a0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6000602082840312156123e7578081fd5b8135611f6081612a75565b60008060208385031215612404578081fd5b823567ffffffffffffffff8082111561241b578283fd5b818501915085601f83011261242e578283fd5b81358181111561243c578384fd5b866020808302850101111561244f578384fd5b60209290920196919550909350505050565b600060208284031215612472578081fd5b8151611f6081612a8d565b60006020828403121561248e578081fd5b8151611f6081612a75565b6000602082840312156124aa578081fd5b815167ffffffffffffffff808211156124c1578283fd5b818401915084601f8301126124d4578283fd5b8151818111156124e2578384fd5b6124f5601f8201601f1916602001612a22565b915080825285602082850101111561250b578384fd5b61251c816020840160208601612a49565b50949350505050565b600060808284031215612536578081fd5b6125406080612a22565b825161254b81612a75565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612588578081fd5b5035919050565b6000602082840312156125a0578081fd5b5051919050565b600080604083850312156125b9578182fd5b8235915060208301356125cb81612a75565b809150509250929050565b6000806000606084860312156125ea578081fd5b8335925060208401356125fc81612a75565b9150604084013561260c81612a75565b809150509250925092565b60008060408385031215612629578182fd5b50508035926020909101359150565b6000806000806080858703121561264d578081fd5b8435935060208501359250604085013561266681612a75565b9150606085013561267681612a8d565b939692955090935050565b60008251612693818460208701612a49565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039586168152602081019490945260408401929092526060830152909116608082015260a00190565b60208082526023908201527f4d61737465724368656656323a2042616c616e6365206d75737420657863656560408201526206420360ec1b606082015260800190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152741859190e88131408185b1c9958591e481859191959605a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b600085825260018060a01b03851660208301526080604083015283518060808401526129d08160a0850160208801612a49565b606083019390935250601f91909101601f19160160a0019392505050565b9182521515602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612a4157600080fd5b604052919050565b60005b83811015612a64578181015183820152602001612a4c565b838111156108ba5750506000910152565b6001600160a01b0381168114612a8a57600080fd5b50565b8015158114612a8a57600080fdfea26469706673582212202f0e0c56a49df3e971e5d181662e0e5f3a0a8eef4320c24b6690261ca25423fb64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806361621aaa116100b8578063ab7de0981161007c578063ab7de09814610250578063ca418d2314610263578063e2bbb1581461026b578063f2fde38b1461027e578063ffcd426314610291578063ffebad30146102b457610137565b806361621aaa14610204578063715018a61461020c57806388bba42f146102145780638da5cb5b1461022757806393f1a40b1461022f57610137565b8063441a3e70116100ff578063441a3e70146101b05780634f70b15a146101c357806351eb05a6146101cb5780635312ea8e146101de57806357a5b58c146101f157610137565b8063081e3eda1461013c5780631526fe271461015a57806317caf6f11461017e57806319ab453c1461018657806327bf88ad1461019b575b600080fd5b6101446102bc565b6040516101519190612994565b60405180910390f35b61016d610168366004612577565b6102c2565b6040516101519594939291906126ee565b61014461030d565b6101996101943660046123d6565b610313565b005b6101a361057c565b604051610151919061269d565b6101996101be366004612617565b6105a0565b61019961081d565b6101996101d9366004612577565b6108c0565b6101996101ec366004612577565b610af3565b6101996101ff3660046123f2565b610c64565b610144610c93565b610199610cb7565b610199610222366004612638565b610d40565b6101a3610f81565b61024261023d3660046125a7565b610f90565b6040516101519291906129fe565b61019961025e3660046125d6565b610fb4565b6101446112a8565b610199610279366004612617565b61167b565b61019961028c3660046123d6565b6119fb565b6102a461029f3660046125a7565b611abb565b604051610151949392919061299d565b6101a3611e05565b60025490565b600281815481106102cf57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b0393841695509193909290911685565b60065481565b61031b611e29565b6001600160a01b031661032c610f81565b6001600160a01b03161461035b5760405162461bcd60e51b8152600401610352906128f3565b60405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061038a90339060040161269d565b60206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da919061258f565b9050806103f95760405162461bcd60e51b81526004016103529061271e565b61040e6001600160a01b038316333084611e2d565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b39061045c907f00000000000000000000000000000000000000000000000000000000000000009085906004016126b1565b602060405180830381600087803b15801561047657600080fd5b505af115801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae9190612461565b50604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb1589061051d907f00000000000000000000000000000000000000000000000000000000000000009085906004016129fe565b600060405180830381600087803b15801561053757600080fd5b505af115801561054b573d6000803e3d6000fd5b50506040517f57a86f7d14ccde89e22870afe839e3011216827daa9b24e18629f0a1e9d6cc14925060009150a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260015414156105c35760405162461bcd60e51b81526004016103529061295d565b60026001556105d061081d565b6105d9826108c0565b6105e1612395565b600283815481106105ee57fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b0390811684526001820154848601526002820154848401526003820154606085015260049091015416608083015287855292825282842033855290915291208054919250901561071457600061069a8260010154610694670de0b6b3a764000061068e87602001518760000154611f2690919063ffffffff16565b90611f69565b90611f9b565b90506106d06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383611fc3565b84336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548360405161070a9190612994565b60405180910390a3505b80546107209084611f9b565b808255602083015161074091670de0b6b3a76400009161068e9190611f26565b600182015560808201516001600160a01b038116156107ba5781546040516301a7af8b60e41b81526001600160a01b03831691631a7af8b0916107879133916004016126b1565b600060405180830381600087803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b505050505b82516107d0906001600160a01b03163386611fc3565b84336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688660405161080a9190612994565b60405180910390a3505060018055505050565b604051631c57762b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e2bbb1589061088c907f0000000000000000000000000000000000000000000000000000000000000000906000906004016129fe565b600060405180830381600087803b1580156108a657600080fd5b505af11580156108ba573d6000803e3d6000fd5b50505050565b6108c8612395565b600282815481106108d557fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b0390811684526001820154948401949094526002810154918301829052600381015460608401526004015490921660808201529150421115610aef5780516040516370a0823160e01b81526000916001600160a01b0316906370a082319061096790309060040161269d565b60206040518083038186803b15801561097f57600080fd5b505afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b7919061258f565b90508015610a305760006109d8836040015142611f9b90919063ffffffff16565b90506000610a0260065461068e86606001516109fc6109f56112a8565b8790611f26565b90611f26565b9050610a28610a1d8461068e84670de0b6b3a7640000611f26565b6020860151906120b9565b602085015250505b4260408301526002805483919085908110610a4757fe5b6000918252602091829020835160059092020180546001600160a01b039283166001600160a01b0319918216178255848401516001830155604080860151600284015560608601516003840155608090950151600490920180549290931691161790558382015190840151915185927f3be3541fc42237d611b30329040bfa4569541d156560acdbbae57640d20b8f4692610ae59290918691612a0c565b60405180910390a2505b5050565b60026001541415610b165760405162461bcd60e51b81526004016103529061295d565b6002600155610b23612395565b60028281548110610b3057fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b0390811684526001808301548587015260028301548585015260038301546060860152600490920154811660808501908152898852958552828720338852909452908520805486825591810195909555925190945090811615610c14576040516301a7af8b60e41b81526001600160a01b03821690631a7af8b090610be19033906000906004016126b1565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050505b8351610c2a906001600160a01b03163384611fc3565b84336001600160a01b03167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05958460405161080a9190612994565b8060005b818110156108ba57610c8b848483818110610c7f57fe5b905060200201356108c0565b600101610c68565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cbf611e29565b6001600160a01b0316610cd0610f81565b6001600160a01b031614610cf65760405162461bcd60e51b8152600401610352906128f3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610d48611e29565b6001600160a01b0316610d59610f81565b6001600160a01b031614610d7f5760405162461bcd60e51b8152600401610352906128f3565b610d87612395565b60028581548110610d9457fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b03908116845260018201549484019490945260028082015492840192909252600381015460608401526004015490921660808201528154909250610e32918691610e2c919089908110610e0957fe5b906000526020600020906005020160030154600654611f9b90919063ffffffff16565b906120b9565b600655606081018490528115610eb3576040516301a7af8b60e41b81526001600160a01b03841690631a7af8b090610e719060009081906004016126b1565b600060405180830381600087803b158015610e8b57600080fd5b505af1158015610e9f573d6000803e3d6000fd5b5050506001600160a01b0384166080830152505b8060028681548110610ec157fe5b600091825260209182902083516005929092020180546001600160a01b03199081166001600160a01b03938416178255928401516001820155604084015160028201556060840151600382015560809093015160049093018054909216921691909117905581610f35578060800151610f37565b825b6001600160a01b0316857fa54644aae5c48c5971516f334e4fe8ecbc7930e23f34877d4203c6551e67ffaa8685604051610f729291906129ee565b60405180910390a35050505050565b6000546001600160a01b031690565b60056020908152600092835260408084209091529082529020805460019091015482565b610fbc611e29565b6001600160a01b0316610fcd610f81565b6001600160a01b031614610ff35760405162461bcd60e51b8152600401610352906128f3565b610ffe6003836120de565b1561101b5760405162461bcd60e51b8152600401610352906128c4565b6040516370a0823160e01b81526001600160a01b038316906370a082319061104790309060040161269d565b60206040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611097919061258f565b506001600160a01b03811615611109576040516301a7af8b60e41b81526001600160a01b03821690631a7af8b0906110d69060009081906004016126b1565b600060405180830381600087803b1580156110f057600080fd5b505af1158015611104573d6000803e3d6000fd5b505050505b600654429061111890856120b9565b6006556040805160a0810182526001600160a01b038581168252600060208301818152938301858152606084018981528784166080860190815260028054600181018255945294517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600590940293840180546001600160a01b031990811692871692909217905595517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf84015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0830155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad182015591517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad29092018054909316911617905561124c6003846120f3565b506002546001600160a01b03808416919085169061126b906001611f9b565b7f4b16bd2431ad24dc020ab0e1de7fcb6563dead6a24fb10089d6c23e97a70381f8760405161129a9190612994565b60405180910390a450505050565b6000806103e8905060006114757f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630735b2086040518163ffffffff1660e01b815260040160206040518083038186803b15801561130e57600080fd5b505afa158015611322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611346919061258f565b6106947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ef9d586040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a257600080fd5b505afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da919061258f565b6106947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fc3c28af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e919061258f565b8790611f9b565b905060006115128361068e847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ca418d236040518163ffffffff1660e01b815260040160206040518083038186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc919061258f565b90506116737f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317caf6f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a8919061258f565b604051631526fe2760e01b815261068e906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631526fe2790611618907f000000000000000000000000000000000000000000000000000000000000000090600401612994565b60806040518083038186803b15801561163057600080fd5b505afa158015611644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116689190612525565b602001518490611f26565b935050505090565b6002600154141561169e5760405162461bcd60e51b81526004016103529061295d565b60026001556116ab61081d565b6116b4826108c0565b6116bc612395565b600283815481106116c957fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b039081168452600182015484860152600282015484840152600382015460608501526004909101541660808301528785529282528284203385529091529120805491925090156117e35760006117698260010154610694670de0b6b3a764000061068e87602001518760000154611f2690919063ffffffff16565b905061179f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383611fc3565b84336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516117d99190612994565b60405180910390a3505b81516040516370a0823160e01b81526000916001600160a01b0316906370a082319061181390309060040161269d565b60206040518083038186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611863919061258f565b835190915061187d906001600160a01b0316333087611e2d565b82516040516370a0823160e01b81526000916119039184916001600160a01b0316906370a08231906118b390309060040161269d565b60206040518083038186803b1580156118cb57600080fd5b505afa1580156118df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610694919061258f565b835490915061191290826120b9565b808455602085015161193291670de0b6b3a76400009161068e9190611f26565b600184015560808401516001600160a01b038116156119ac5783546040516301a7af8b60e41b81526001600160a01b03831691631a7af8b0916119799133916004016126b1565b600060405180830381600087803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b505050505b86336001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15846040516119e69190612994565b60405180910390a35050600180555050505050565b611a03611e29565b6001600160a01b0316611a14610f81565b6001600160a01b031614611a3a5760405162461bcd60e51b8152600401610352906128f3565b6001600160a01b038116611a605760405162461bcd60e51b815260040161035290612798565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060606000611aca612395565b60028781548110611ad757fe5b600091825260208083206040805160a081018252600594850290920180546001600160a01b039081168452600182015484860190815260028301548585015260038301546060860152600492830154821660808601528e88529585528287208d821688529094528186209451835192516370a0823160e01b815293975094959391909116916370a0823191611b6e9130910161269d565b60206040518083038186803b158015611b8657600080fd5b505afa158015611b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbe919061258f565b9050836040015142118015611bd257508015155b15611c34576000611bf0856040015142611f9b90919063ffffffff16565b90506000611c0d60065461068e88606001516109fc6109f56112a8565b9050611c2f611c288461068e84670de0b6b3a7640000611f26565b85906120b9565b935050505b611c5f8360010154610694670de0b6b3a764000061068e868860000154611f2690919063ffffffff16565b60808501519098506001600160a01b031615611df85783608001516001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea919061247d565b9650611d7284608001516001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015611d2c57600080fd5b505afa158015611d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d64919061247d565b6001600160a01b0316612108565b608085015160405163c031a66f60e01b81529197506001600160a01b03169063c031a66f90611da5908c9060040161269d565b60206040518083038186803b158015611dbd57600080fd5b505afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061258f565b94505b5050505092959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b3390565b60006060856001600160a01b03166323b872dd60e01b868686604051602401611e58939291906126ca565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611e969190612681565b6000604051808303816000865af19150503d8060008114611ed3576040519150601f19603f3d011682016040523d82523d6000602084013e611ed8565b606091505b5091509150818015611f02575080511580611f02575080806020019051810190611f029190612461565b611f1e5760405162461bcd60e51b815260040161035290612928565b505050505050565b600082611f3557506000611f63565b82820282848281611f4257fe5b0414611f605760405162461bcd60e51b815260040161035290612883565b90505b92915050565b6000808211611f8a5760405162461bcd60e51b81526004016103529061284c565b818381611f9357fe5b049392505050565b600082821115611fbd5760405162461bcd60e51b815260040161035290612815565b50900390565b60006060846001600160a01b031663a9059cbb60e01b8585604051602401611fec9291906126b1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161202a9190612681565b6000604051808303816000865af19150503d8060008114612067576040519150601f19603f3d011682016040523d82523d6000602084013e61206c565b606091505b50915091508180156120965750805115806120965750808060200190518101906120969190612461565b6120b25760405162461bcd60e51b815260040161035290612761565b5050505050565b600082820183811015611f605760405162461bcd60e51b8152600401610352906127de565b6000611f60836001600160a01b0384166121cd565b6000611f60836001600160a01b0384166121e5565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009183916001600160a01b0386169161214f9190612681565b600060405180830381855afa9150503d806000811461218a576040519150601f19603f3d011682016040523d82523d6000602084013e61218f565b606091505b5091509150816121ba57604051806040016040528060038152602001623f3f3f60e81b8152506121c3565b6121c38161222f565b925050505b919050565b60009081526001919091016020526040902054151590565b60006121f183836121cd565b61222757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611f63565b506000611f63565b60606040825110612255578180602001905181019061224e9190612499565b90506121c8565b8151602014156123755760005b60208160ff161080156122915750828160ff168151811061227f57fe5b01602001516001600160f81b03191615155b1561229e57600101612262565b60608160ff1667ffffffffffffffff811180156122ba57600080fd5b506040519080825280601f01601f1916602001820160405280156122e5576020820181803683370190505b509050600091505b60208260ff1610801561231c5750838260ff168151811061230a57fe5b01602001516001600160f81b03191615155b1561236c57838260ff168151811061233057fe5b602001015160f81c60f81b818360ff168151811061234a57fe5b60200101906001600160f81b031916908160001a9053506001909101906122ed565b91506121c89050565b506040805180820190915260038152623f3f3f60e81b60208201526121c8565b6040518060a0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6000602082840312156123e7578081fd5b8135611f6081612a75565b60008060208385031215612404578081fd5b823567ffffffffffffffff8082111561241b578283fd5b818501915085601f83011261242e578283fd5b81358181111561243c578384fd5b866020808302850101111561244f578384fd5b60209290920196919550909350505050565b600060208284031215612472578081fd5b8151611f6081612a8d565b60006020828403121561248e578081fd5b8151611f6081612a75565b6000602082840312156124aa578081fd5b815167ffffffffffffffff808211156124c1578283fd5b818401915084601f8301126124d4578283fd5b8151818111156124e2578384fd5b6124f5601f8201601f1916602001612a22565b915080825285602082850101111561250b578384fd5b61251c816020840160208601612a49565b50949350505050565b600060808284031215612536578081fd5b6125406080612a22565b825161254b81612a75565b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612588578081fd5b5035919050565b6000602082840312156125a0578081fd5b5051919050565b600080604083850312156125b9578182fd5b8235915060208301356125cb81612a75565b809150509250929050565b6000806000606084860312156125ea578081fd5b8335925060208401356125fc81612a75565b9150604084013561260c81612a75565b809150509250925092565b60008060408385031215612629578182fd5b50508035926020909101359150565b6000806000806080858703121561264d578081fd5b8435935060208501359250604085013561266681612a75565b9150606085013561267681612a8d565b939692955090935050565b60008251612693818460208701612a49565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039586168152602081019490945260408401929092526060830152909116608082015260a00190565b60208082526023908201527f4d61737465724368656656323a2042616c616e6365206d75737420657863656560408201526206420360ec1b606082015260800190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152741859190e88131408185b1c9958591e481859191959605a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b600085825260018060a01b03851660208301526080604083015283518060808401526129d08160a0850160208801612a49565b606083019390935250601f91909101601f19160160a0019392505050565b9182521515602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612a4157600080fd5b604052919050565b60005b83811015612a64578181015183820152602001612a4c565b838111156108ba5750506000910152565b6001600160a01b0381168114612a8a57600080fd5b50565b8015158114612a8a57600080fdfea26469706673582212202f0e0c56a49df3e971e5d181662e0e5f3a0a8eef4320c24b6690261ca25423fb64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
