{
  "contractName": "Staking",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_token",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        }
      ],
      "name": "LockAllowanceChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LockAmountChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockManager",
          "type": "address"
        }
      ],
      "name": "LockManagerRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldLockManager",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newLockManager",
          "type": "address"
        }
      ],
      "name": "LockManagerTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "NewLockManager",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "StakeTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Unstaked",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_allowance",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "allowManager",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "canUnlock",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_allowance",
          "type": "uint256"
        }
      ],
      "name": "decreaseLockAllowance",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getBalancesOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "staked",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "locked",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        }
      ],
      "name": "getLock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_allowance",
          "type": "uint256"
        }
      ],
      "name": "increaseLockAllowance",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "lastStakedFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "lock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "lockedBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "receiveApproval",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "slash",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_unlockAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_slashAmount",
          "type": "uint256"
        }
      ],
      "name": "slashAndUnlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "slashAndUnstake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "stake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "stakeFor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supportsHistory",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalStaked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "totalStakedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "totalStakedFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "totalStakedForAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "transferAndUnstake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_lockManager",
          "type": "address"
        }
      ],
      "name": "unlockAndRemoveManager",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "unlockedBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "unstake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002dfa38038062002dfa833981810160405260208110156200003757600080fd5b50516200004d816001600160e01b036200013716565b6040518060400160405280601a81526020017f5354414b494e475f544f4b454e5f4e4f545f434f4e545241435400000000000081525090620001105760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d4578181015183820152602001620000ba565b50505050905090810190601f168015620001025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080546001600160a01b0319166001600160a01b03929092169190911790556200015c565b60006001600160a01b038216620001515750600062000157565b50803b15155b919050565b612c8e806200016c6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063722914af116100f9578063c8fd6ed011610097578063d6ab3b7f11610071578063d6ab3b7f14610771578063e74f823914610797578063ede38421146107cd578063fc0c546a146107f9576101b9565b8063c8fd6ed0146106a1578063c9c5323214610718578063cac3f6fb14610735576101b9565b80638f4ffcb1116100d35780638f4ffcb1146105355780639a0b7205146105c4578063a9059cbb146105f0578063b29790491461061c576101b9565b8063722914af146104db578063817b1cd21461050757806384955c881461050f576101b9565b80634b341aed1161016657806359508f8f1161014057806359508f8f1461041757806365c120981461044d5780636ce2d92b146104835780637033e4a6146104d3576101b9565b80634b341aed1461039557806358f21872146103bb57806359355736146103f1576101b9565b8063282d3fdf11610197578063282d3fdf146102f457806334cf8c5914610320578063433ea1ec1461034e576101b9565b80630e89439b146101be5780630ef9635614610237578063233b7451146102bc575b600080fd5b610235600480360360408110156101d457600080fd5b813591908101906040810160208201356401000000008111156101f657600080fd5b82018360208201111561020857600080fd5b8035906020019184600183028401116401000000008311171561022a57600080fd5b50909250905061081d565b005b6102356004803603606081101561024d57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561027d57600080fd5b82018360208201111561028f57600080fd5b803590602001918460018302840111640100000000831117156102b157600080fd5b509092509050610864565b6102e2600480360360208110156102d257600080fd5b50356001600160a01b03166108ac565b60408051918252519081900360200190f35b6102356004803603604081101561030a57600080fd5b506001600160a01b0381351690602001356108d8565b6102356004803603604081101561033657600080fd5b506001600160a01b0381358116916020013516610b50565b61037c6004803603604081101561036457600080fd5b506001600160a01b0381358116916020013516610cd0565b6040805192835260208301919091528051918290030190f35b6102e2600480360360208110156103ab57600080fd5b50356001600160a01b0316610d03565b610235600480360360608110156103d157600080fd5b506001600160a01b03813581169160208101359091169060400135610d0e565b6102e26004803603602081101561040757600080fd5b50356001600160a01b0316610d24565b6102356004803603606081101561042d57600080fd5b506001600160a01b03813581169160208101359091169060400135610d2f565b6102356004803603606081101561046357600080fd5b506001600160a01b03813581169160208101359091169060400135610e4a565b6104bf6004803603608081101561049957600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135611102565b604080519115158252519081900360200190f35b6104bf61111b565b610235600480360360408110156104f157600080fd5b506001600160a01b038135169060200135611120565b6102e26111d6565b6102e26004803603602081101561052557600080fd5b50356001600160a01b03166111e5565b6102356004803603608081101561054b57600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561058557600080fd5b82018360208201111561059757600080fd5b803590602001918460018302840111640100000000831117156105b957600080fd5b5090925090506111f0565b610235600480360360408110156105da57600080fd5b506001600160a01b0381351690602001356112e1565b6102356004803603604081101561060657600080fd5b506001600160a01b0381351690602001356112f0565b6102356004803603606081101561063257600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561066257600080fd5b82018360208201111561067457600080fd5b8035906020019184600183028401116401000000008311171561069657600080fd5b5090925090506112fb565b610235600480360360408110156106b757600080fd5b813591908101906040810160208201356401000000008111156106d957600080fd5b8201836020820111156106eb57600080fd5b8035906020019184600183028401116401000000008311171561070d57600080fd5b50909250905061133c565b6102e26004803603602081101561072e57600080fd5b50356113fe565b6102356004803603608081101561074b57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561149e565b61037c6004803603602081101561078757600080fd5b50356001600160a01b03166114c3565b610235600480360360608110156107ad57600080fd5b506001600160a01b038135811691602081013590911690604001356114e1565b6102e2600480360360408110156107e357600080fd5b506001600160a01b0381351690602001356114f7565b6108016115ba565b604080516001600160a01b039092168252519081900360200190f35b61085f33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115c992505050565b505050565b6108a633858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115c992505050565b50505050565b6001600160a01b03811660009081526001602052604081206108d0906002016117c0565b90505b919050565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f000000000000000000000000006020820152816109955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561095a578181015183820152602001610942565b50505050905090810190601f1680156109875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061099f82611805565b8111156040518060400160405280601a81526020017f5354414b494e475f4e4f545f454e4f5547485f42414c414e434500000000000081525090610a245760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b0382166000908152600160209081526040808320338452918290528220805491929091610a5f908563ffffffff61182816565b905081600101548111156040518060400160405280601c81526020017f5354414b494e475f4e4f545f454e4f5547485f414c4c4f57414e43450000000081525090610aeb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b508082556001830154610b04908563ffffffff61182816565b600184015560408051828152905133916001600160a01b038816917fe5fa7959d07a49023f056773acdae23061f2ed83666b174c4d3ad25c84bd395a9181900360200190a35050505050565b610b5d33838360006118ba565b6040518060400160405280601581526020017f5354414b494e475f43414e4e4f545f554e4c4f434b000000000000000000000081525090610bdf5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b038083166000908152600160208181526040808420948616845290849052909120805491830154909190610c21908263ffffffff611af016565b6001840155604080516000815290516001600160a01b0380871692908816917fe5fa7959d07a49023f056773acdae23061f2ed83666b174c4d3ad25c84bd395a9181900360200190a3836001600160a01b0316856001600160a01b03167ff3432d503b0a213f2ba362cb1d618ffae11bce483f826749e5d88ac1185a86f660405160405180910390a350506001600160a01b039091166000908152602091909152604081208181556001015550565b6001600160a01b039182166000908152600160208181526040808420949095168352929092529190912080549101549091565b60006108d082611b7f565b610d19833383611ba3565b61085f838383611cbe565b60006108d082611eb9565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281610daf5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50610dbc338484846118ba565b6040518060400160405280601581526020017f5354414b494e475f43414e4e4f545f554e4c4f434b000000000000000000000081525090610e3e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f838383611ba3565b336001600160a01b0384161480610e695750336001600160a01b038316145b6040518060400160405280601f81526020017f5354414b494e475f43414e4e4f545f4348414e47455f414c4c4f57414e43450081525090610eeb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5060408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281610f6c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b038084166000908152600160208181526040808420948716845293905291812091820154610fa8908463ffffffff611af016565b825460408051808201909152601c81527f5354414b494e475f4e4f545f454e4f5547485f414c4c4f57414e434500000000602082015291925082101561102f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5060408051808201909152601681527f5354414b494e475f414c4c4f57414e43455f5a45524f000000000000000000006020820152816110b05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50600182018190556040805182815290516001600160a01b0380871692908816917f34ef02a331da5344779c32380b51356398a989bef946d9dd8839938900f9ebce9181900360200190a35050505050565b6000611110858585856118ba565b90505b949350505050565b600190565b3360009081526001602081815260408084206001600160a01b0387168552825292839020918201548351808501909452601b84527f5354414b494e475f4c4f434b5f444f45535f4e4f545f45584953540000000000918401919091529091906111ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f838284611ed8565b60006111e0611fc2565b905090565b60006108d082611805565b6001600160a01b0383163314801561121557506000546001600160a01b038481169116145b6040518060400160405280601381526020017f5354414b494e475f57524f4e475f544f4b454e00000000000000000000000000815250906112975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506112da85868685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115c992505050565b5050505050565b6112ec338383611cbe565b5050565b6112ec338383611fce565b6108a6848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120b992505050565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f000000000000000000000000006020820152836113bc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f338484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061221d92505050565b60408051808201909152601b81527f5354414b494e475f424c4f434b4e554d4245525f544f4f5f4249470000000000602082015260009067ffffffffffffffff83111561148c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506108d060028363ffffffff61239116565b6114b884336114b3858563ffffffff61182816565b611ba3565b6108a6848483611fce565b6000806114cf83611b7f565b91506114da83611eb9565b9050915091565b6114ec833383611ba3565b61085f838383611fce565b60408051808201909152601b81527f5354414b494e475f424c4f434b4e554d4245525f544f4f5f4249470000000000602082015260009067ffffffffffffffff8311156115855760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b03831660009081526001602052604090206115b1906002018363ffffffff61239116565b90505b92915050565b6000546001600160a01b031681565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f000000000000000000000000006020820152826116495760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5060006116588484600161239d565b90506116658360016124a8565b600054611683906001600160a01b031686308663ffffffff61250016565b6040518060400160405280601a81526020017f5354414b494e475f544f4b454e5f4445504f5349545f4641494c000000000000815250906117055760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50836001600160a01b03167fc65e53b88159e7d2c0fc12a0600072e28ae53ff73b4c1715369c30f1609351428483856040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561177d578181015183820152602001611765565b50505050905090810190601f1680156117aa5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a25050505050565b805460009080156117fc578260000160018203815481106117dd57fe5b60009182526020909120015467ffffffffffffffff1691506108d39050565b50600092915050565b60006108d061181383611eb9565b61181c84611b7f565b9063ffffffff611af016565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f57000000000000000000000000000000602082015260009083830190848210156118b25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b509392505050565b6001600160a01b0380841660009081526001602081815260408084209487168452938152838320918201548451808601909552601b85527f5354414b494e475f4c4f434b5f444f45535f4e4f545f4558495354000000000091850191909152919290916119685760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50805460408051808201909152601781527f5354414b494e475f4e4f545f454e4f5547485f4c4f434b0000000000000000006020820152908411156119ee5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50600083156119fd5783611a00565b81545b9050846001600160a01b0316876001600160a01b03161415611a2757600192505050611113565b856001600160a01b0316876001600160a01b031614611a4b57600092505050611113565b80611a5b57600192505050611113565b846001600160a01b03166332c6534b87836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d6020811015611ae357600080fd5b5051979650505050505050565b6000828211156040518060400160405280601281526020017f4d4154485f5355425f554e444552464c4f57000000000000000000000000000081525090611b785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5050900390565b6001600160a01b03811660009081526001602052604081206108d090600201612594565b6001600160a01b03808416600090815260016020908152604080832093861683528382529182902080548351808501909452601784527f5354414b494e475f4e4f545f454e4f5547485f4c4f434b000000000000000000928401929092529184821015611c515760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b508381038083556001840154611c6d908663ffffffff611af016565b60018501556040805182815290516001600160a01b0380891692908a16917fe5fa7959d07a49023f056773acdae23061f2ed83666b174c4d3ad25c84bd395a9181900360200190a350505050505050565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281611d3e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506000611d4d8483600061239d565b9050611d5a8260006124a8565b6040805160008082526020820180845285815292820184905260608083019081528251608084018190526001600160a01b038916947faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c87549488948894919360a08501918491908190849084905b83811015611dde578181015183820152602001611dc6565b50505050905090810190601f168015611e0b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2600054611e37906001600160a01b0316848463ffffffff6125ec16565b6040518060400160405280601b81526020017f5354414b494e475f544f4b454e5f5452414e534645525f4641494c0000000000815250906112da5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b6001600160a01b03166000908152600160208190526040909120015490565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281611f585760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001820154600090611f71908363ffffffff61182816565b600184018190556040805182815290519192506001600160a01b0386169133917f34ef02a331da5344779c32380b51356398a989bef946d9dd8839938900f9ebce919081900360200190a350505050565b60006111e06002612594565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f0000000000000000000000000060208201528161204e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061205b8382600061239d565b506120688282600161239d565b50816001600160a01b0316836001600160a01b03167f1e07278daf12d879e91ea076cf43032a70d56cb1d6e8bc91534dcd17f61e18f3836040518082815260200191505060405180910390a3505050565b3360009081526001602081815260408084206001600160a01b0388168552825292839020918201548351808501909452601b84527f5354414b494e475f4c4f434b5f414c52454144595f455849535453000000000091840191909152909190156121645760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50836001600160a01b0316336001600160a01b03167f9bc888ab5ee77cb1d3110ed41a6f406608a152b75aa4f0ea5a894e3eafbcff38846040518080602001828103825283818151815260200191508051906020019080838360005b838110156121d85781810151838201526020016121c0565b50505050905090810190601f1680156122055780820380516001836020036101000a031916815260200191505b509250505060405180910390a36108a6848285611ed8565b600061222b8484600061239d565b90506122388360006124a8565b600054612255906001600160a01b0316858563ffffffff6125ec16565b6040518060400160405280601b81526020017f5354414b494e475f544f4b454e5f5452414e534645525f4641494c0000000000815250906122d75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50836001600160a01b03167faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c87548483856040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561234f578181015183820152602001612337565b50505050905090810190601f16801561237c5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050565b60006115b1838361266e565b6000806123a985611b7f565b9050600083156123ca576123c3828663ffffffff61182816565b905061246c565b6123d386611805565b8511156040518060400160405280601a81526020017f5354414b494e475f4e4f545f454e4f5547485f42414c414e4345000000000000815250906124585760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50612469828663ffffffff611af016565b90505b61249f61247761287d565b6001600160a01b0388166000908152600160205260409020600201908363ffffffff61288f16565b95945050505050565b60006124b2611fc2565b9050600082156124d3576124cc828563ffffffff61182816565b90506124e6565b6124e3828563ffffffff611af016565b90505b6108a66124f161287d565b6002908363ffffffff61288f16565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905260009061258a8682612936565b9695505050505050565b805460009080156117fc578260000160018203815481106125b157fe5b60009182526020909120015468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1691506108d39050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009061249f8582612936565b8154600090806126825760009150506115b4565b83547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201906000908690839081106126b757fe5b6000918252602090912001805490915067ffffffffffffffff9081169086161061270c575468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1692506115b4915050565b826001148061274357508560000160008154811061272657fe5b60009182526020909120015467ffffffffffffffff908116908616105b1561275457600093505050506115b4565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83015b81811115612830578754600283830160010104906000908a908390811061279d57fe5b6000918252602090912001805490915067ffffffffffffffff908116908a168110156127cb57829450612828565b8067ffffffffffffffff168a67ffffffffffffffff1610156127f257600183039350612828565b505468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1696506115b495505050505050565b50505061277a565b87600001828154811061283f57fe5b60009182526020909120015468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1698975050505050505050565b60006111e061288a612981565b612985565b60408051808201909152601881527f434845434b504f494e545f56414c55455f544f4f5f4249470000000000000000602082015277ffffffffffffffffffffffffffffffffffffffffffffffff82111561292a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f838383612a1a565b6000806040516020818551602087016000895af18015612977573d8015612964576020811461296d57612975565b60019350612975565b600183511493505b505b5090949350505050565b4390565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115612a135760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5090919050565b825480612aba576040805180820190915267ffffffffffffffff808516825277ffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a815291909120945194018054915190921668010000000000000000029383167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179091169190911790556108a6565b6000846000016001830381548110612ace57fe5b6000918252602090912001805490915067ffffffffffffffff908116908516811015612b8d576040805180820190915267ffffffffffffffff808716825277ffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528a54600181018c5560008c815291909120945194018054915190921668010000000000000000029383167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617909116919091179055612c51565b808567ffffffffffffffff161415612bd957815467ffffffffffffffff166801000000000000000077ffffffffffffffffffffffffffffffffffffffffffffffff861602178255612c51565b60408051808201825260208082527f434845434b504f494e545f43414e4e4f545f4144445f504153545f56414c5545818301908152925162461bcd60e51b815260048101918252825160248201528251929391928392604490920191908083836000831561095a578181015183820152602001610942565b50505050505056fea265627a7a7231582004d5edc0ed93aa01e3ce39072b1a9492445addd751317f043cc2e7832ae81f2464736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101b95760003560e01c8063722914af116100f9578063c8fd6ed011610097578063d6ab3b7f11610071578063d6ab3b7f14610771578063e74f823914610797578063ede38421146107cd578063fc0c546a146107f9576101b9565b8063c8fd6ed0146106a1578063c9c5323214610718578063cac3f6fb14610735576101b9565b80638f4ffcb1116100d35780638f4ffcb1146105355780639a0b7205146105c4578063a9059cbb146105f0578063b29790491461061c576101b9565b8063722914af146104db578063817b1cd21461050757806384955c881461050f576101b9565b80634b341aed1161016657806359508f8f1161014057806359508f8f1461041757806365c120981461044d5780636ce2d92b146104835780637033e4a6146104d3576101b9565b80634b341aed1461039557806358f21872146103bb57806359355736146103f1576101b9565b8063282d3fdf11610197578063282d3fdf146102f457806334cf8c5914610320578063433ea1ec1461034e576101b9565b80630e89439b146101be5780630ef9635614610237578063233b7451146102bc575b600080fd5b610235600480360360408110156101d457600080fd5b813591908101906040810160208201356401000000008111156101f657600080fd5b82018360208201111561020857600080fd5b8035906020019184600183028401116401000000008311171561022a57600080fd5b50909250905061081d565b005b6102356004803603606081101561024d57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561027d57600080fd5b82018360208201111561028f57600080fd5b803590602001918460018302840111640100000000831117156102b157600080fd5b509092509050610864565b6102e2600480360360208110156102d257600080fd5b50356001600160a01b03166108ac565b60408051918252519081900360200190f35b6102356004803603604081101561030a57600080fd5b506001600160a01b0381351690602001356108d8565b6102356004803603604081101561033657600080fd5b506001600160a01b0381358116916020013516610b50565b61037c6004803603604081101561036457600080fd5b506001600160a01b0381358116916020013516610cd0565b6040805192835260208301919091528051918290030190f35b6102e2600480360360208110156103ab57600080fd5b50356001600160a01b0316610d03565b610235600480360360608110156103d157600080fd5b506001600160a01b03813581169160208101359091169060400135610d0e565b6102e26004803603602081101561040757600080fd5b50356001600160a01b0316610d24565b6102356004803603606081101561042d57600080fd5b506001600160a01b03813581169160208101359091169060400135610d2f565b6102356004803603606081101561046357600080fd5b506001600160a01b03813581169160208101359091169060400135610e4a565b6104bf6004803603608081101561049957600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135611102565b604080519115158252519081900360200190f35b6104bf61111b565b610235600480360360408110156104f157600080fd5b506001600160a01b038135169060200135611120565b6102e26111d6565b6102e26004803603602081101561052557600080fd5b50356001600160a01b03166111e5565b6102356004803603608081101561054b57600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561058557600080fd5b82018360208201111561059757600080fd5b803590602001918460018302840111640100000000831117156105b957600080fd5b5090925090506111f0565b610235600480360360408110156105da57600080fd5b506001600160a01b0381351690602001356112e1565b6102356004803603604081101561060657600080fd5b506001600160a01b0381351690602001356112f0565b6102356004803603606081101561063257600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561066257600080fd5b82018360208201111561067457600080fd5b8035906020019184600183028401116401000000008311171561069657600080fd5b5090925090506112fb565b610235600480360360408110156106b757600080fd5b813591908101906040810160208201356401000000008111156106d957600080fd5b8201836020820111156106eb57600080fd5b8035906020019184600183028401116401000000008311171561070d57600080fd5b50909250905061133c565b6102e26004803603602081101561072e57600080fd5b50356113fe565b6102356004803603608081101561074b57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561149e565b61037c6004803603602081101561078757600080fd5b50356001600160a01b03166114c3565b610235600480360360608110156107ad57600080fd5b506001600160a01b038135811691602081013590911690604001356114e1565b6102e2600480360360408110156107e357600080fd5b506001600160a01b0381351690602001356114f7565b6108016115ba565b604080516001600160a01b039092168252519081900360200190f35b61085f33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115c992505050565b505050565b6108a633858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115c992505050565b50505050565b6001600160a01b03811660009081526001602052604081206108d0906002016117c0565b90505b919050565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f000000000000000000000000006020820152816109955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561095a578181015183820152602001610942565b50505050905090810190601f1680156109875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061099f82611805565b8111156040518060400160405280601a81526020017f5354414b494e475f4e4f545f454e4f5547485f42414c414e434500000000000081525090610a245760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b0382166000908152600160209081526040808320338452918290528220805491929091610a5f908563ffffffff61182816565b905081600101548111156040518060400160405280601c81526020017f5354414b494e475f4e4f545f454e4f5547485f414c4c4f57414e43450000000081525090610aeb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b508082556001830154610b04908563ffffffff61182816565b600184015560408051828152905133916001600160a01b038816917fe5fa7959d07a49023f056773acdae23061f2ed83666b174c4d3ad25c84bd395a9181900360200190a35050505050565b610b5d33838360006118ba565b6040518060400160405280601581526020017f5354414b494e475f43414e4e4f545f554e4c4f434b000000000000000000000081525090610bdf5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b038083166000908152600160208181526040808420948616845290849052909120805491830154909190610c21908263ffffffff611af016565b6001840155604080516000815290516001600160a01b0380871692908816917fe5fa7959d07a49023f056773acdae23061f2ed83666b174c4d3ad25c84bd395a9181900360200190a3836001600160a01b0316856001600160a01b03167ff3432d503b0a213f2ba362cb1d618ffae11bce483f826749e5d88ac1185a86f660405160405180910390a350506001600160a01b039091166000908152602091909152604081208181556001015550565b6001600160a01b039182166000908152600160208181526040808420949095168352929092529190912080549101549091565b60006108d082611b7f565b610d19833383611ba3565b61085f838383611cbe565b60006108d082611eb9565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281610daf5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50610dbc338484846118ba565b6040518060400160405280601581526020017f5354414b494e475f43414e4e4f545f554e4c4f434b000000000000000000000081525090610e3e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f838383611ba3565b336001600160a01b0384161480610e695750336001600160a01b038316145b6040518060400160405280601f81526020017f5354414b494e475f43414e4e4f545f4348414e47455f414c4c4f57414e43450081525090610eeb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5060408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281610f6c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b038084166000908152600160208181526040808420948716845293905291812091820154610fa8908463ffffffff611af016565b825460408051808201909152601c81527f5354414b494e475f4e4f545f454e4f5547485f414c4c4f57414e434500000000602082015291925082101561102f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5060408051808201909152601681527f5354414b494e475f414c4c4f57414e43455f5a45524f000000000000000000006020820152816110b05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50600182018190556040805182815290516001600160a01b0380871692908816917f34ef02a331da5344779c32380b51356398a989bef946d9dd8839938900f9ebce9181900360200190a35050505050565b6000611110858585856118ba565b90505b949350505050565b600190565b3360009081526001602081815260408084206001600160a01b0387168552825292839020918201548351808501909452601b84527f5354414b494e475f4c4f434b5f444f45535f4e4f545f45584953540000000000918401919091529091906111ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f838284611ed8565b60006111e0611fc2565b905090565b60006108d082611805565b6001600160a01b0383163314801561121557506000546001600160a01b038481169116145b6040518060400160405280601381526020017f5354414b494e475f57524f4e475f544f4b454e00000000000000000000000000815250906112975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506112da85868685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115c992505050565b5050505050565b6112ec338383611cbe565b5050565b6112ec338383611fce565b6108a6848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120b992505050565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f000000000000000000000000006020820152836113bc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f338484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061221d92505050565b60408051808201909152601b81527f5354414b494e475f424c4f434b4e554d4245525f544f4f5f4249470000000000602082015260009067ffffffffffffffff83111561148c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506108d060028363ffffffff61239116565b6114b884336114b3858563ffffffff61182816565b611ba3565b6108a6848483611fce565b6000806114cf83611b7f565b91506114da83611eb9565b9050915091565b6114ec833383611ba3565b61085f838383611fce565b60408051808201909152601b81527f5354414b494e475f424c4f434b4e554d4245525f544f4f5f4249470000000000602082015260009067ffffffffffffffff8311156115855760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001600160a01b03831660009081526001602052604090206115b1906002018363ffffffff61239116565b90505b92915050565b6000546001600160a01b031681565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f000000000000000000000000006020820152826116495760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5060006116588484600161239d565b90506116658360016124a8565b600054611683906001600160a01b031686308663ffffffff61250016565b6040518060400160405280601a81526020017f5354414b494e475f544f4b454e5f4445504f5349545f4641494c000000000000815250906117055760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50836001600160a01b03167fc65e53b88159e7d2c0fc12a0600072e28ae53ff73b4c1715369c30f1609351428483856040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561177d578181015183820152602001611765565b50505050905090810190601f1680156117aa5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a25050505050565b805460009080156117fc578260000160018203815481106117dd57fe5b60009182526020909120015467ffffffffffffffff1691506108d39050565b50600092915050565b60006108d061181383611eb9565b61181c84611b7f565b9063ffffffff611af016565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f57000000000000000000000000000000602082015260009083830190848210156118b25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b509392505050565b6001600160a01b0380841660009081526001602081815260408084209487168452938152838320918201548451808601909552601b85527f5354414b494e475f4c4f434b5f444f45535f4e4f545f4558495354000000000091850191909152919290916119685760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50805460408051808201909152601781527f5354414b494e475f4e4f545f454e4f5547485f4c4f434b0000000000000000006020820152908411156119ee5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50600083156119fd5783611a00565b81545b9050846001600160a01b0316876001600160a01b03161415611a2757600192505050611113565b856001600160a01b0316876001600160a01b031614611a4b57600092505050611113565b80611a5b57600192505050611113565b846001600160a01b03166332c6534b87836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d6020811015611ae357600080fd5b5051979650505050505050565b6000828211156040518060400160405280601281526020017f4d4154485f5355425f554e444552464c4f57000000000000000000000000000081525090611b785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5050900390565b6001600160a01b03811660009081526001602052604081206108d090600201612594565b6001600160a01b03808416600090815260016020908152604080832093861683528382529182902080548351808501909452601784527f5354414b494e475f4e4f545f454e4f5547485f4c4f434b000000000000000000928401929092529184821015611c515760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b508381038083556001840154611c6d908663ffffffff611af016565b60018501556040805182815290516001600160a01b0380891692908a16917fe5fa7959d07a49023f056773acdae23061f2ed83666b174c4d3ad25c84bd395a9181900360200190a350505050505050565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281611d3e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506000611d4d8483600061239d565b9050611d5a8260006124a8565b6040805160008082526020820180845285815292820184905260608083019081528251608084018190526001600160a01b038916947faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c87549488948894919360a08501918491908190849084905b83811015611dde578181015183820152602001611dc6565b50505050905090810190601f168015611e0b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2600054611e37906001600160a01b0316848463ffffffff6125ec16565b6040518060400160405280601b81526020017f5354414b494e475f544f4b454e5f5452414e534645525f4641494c0000000000815250906112da5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b6001600160a01b03166000908152600160208190526040909120015490565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f00000000000000000000000000602082015281611f585760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b506001820154600090611f71908363ffffffff61182816565b600184018190556040805182815290519192506001600160a01b0386169133917f34ef02a331da5344779c32380b51356398a989bef946d9dd8839938900f9ebce919081900360200190a350505050565b60006111e06002612594565b60408051808201909152601381527f5354414b494e475f414d4f554e545f5a45524f0000000000000000000000000060208201528161204e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061205b8382600061239d565b506120688282600161239d565b50816001600160a01b0316836001600160a01b03167f1e07278daf12d879e91ea076cf43032a70d56cb1d6e8bc91534dcd17f61e18f3836040518082815260200191505060405180910390a3505050565b3360009081526001602081815260408084206001600160a01b0388168552825292839020918201548351808501909452601b84527f5354414b494e475f4c4f434b5f414c52454144595f455849535453000000000091840191909152909190156121645760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50836001600160a01b0316336001600160a01b03167f9bc888ab5ee77cb1d3110ed41a6f406608a152b75aa4f0ea5a894e3eafbcff38846040518080602001828103825283818151815260200191508051906020019080838360005b838110156121d85781810151838201526020016121c0565b50505050905090810190601f1680156122055780820380516001836020036101000a031916815260200191505b509250505060405180910390a36108a6848285611ed8565b600061222b8484600061239d565b90506122388360006124a8565b600054612255906001600160a01b0316858563ffffffff6125ec16565b6040518060400160405280601b81526020017f5354414b494e475f544f4b454e5f5452414e534645525f4641494c0000000000815250906122d75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50836001600160a01b03167faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c87548483856040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561234f578181015183820152602001612337565b50505050905090810190601f16801561237c5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050565b60006115b1838361266e565b6000806123a985611b7f565b9050600083156123ca576123c3828663ffffffff61182816565b905061246c565b6123d386611805565b8511156040518060400160405280601a81526020017f5354414b494e475f4e4f545f454e4f5547485f42414c414e4345000000000000815250906124585760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b50612469828663ffffffff611af016565b90505b61249f61247761287d565b6001600160a01b0388166000908152600160205260409020600201908363ffffffff61288f16565b95945050505050565b60006124b2611fc2565b9050600082156124d3576124cc828563ffffffff61182816565b90506124e6565b6124e3828563ffffffff611af016565b90505b6108a66124f161287d565b6002908363ffffffff61288f16565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905260009061258a8682612936565b9695505050505050565b805460009080156117fc578260000160018203815481106125b157fe5b60009182526020909120015468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1691506108d39050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260009061249f8582612936565b8154600090806126825760009150506115b4565b83547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201906000908690839081106126b757fe5b6000918252602090912001805490915067ffffffffffffffff9081169086161061270c575468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1692506115b4915050565b826001148061274357508560000160008154811061272657fe5b60009182526020909120015467ffffffffffffffff908116908616105b1561275457600093505050506115b4565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83015b81811115612830578754600283830160010104906000908a908390811061279d57fe5b6000918252602090912001805490915067ffffffffffffffff908116908a168110156127cb57829450612828565b8067ffffffffffffffff168a67ffffffffffffffff1610156127f257600183039350612828565b505468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1696506115b495505050505050565b50505061277a565b87600001828154811061283f57fe5b60009182526020909120015468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1698975050505050505050565b60006111e061288a612981565b612985565b60408051808201909152601881527f434845434b504f494e545f56414c55455f544f4f5f4249470000000000000000602082015277ffffffffffffffffffffffffffffffffffffffffffffffff82111561292a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5061085f838383612a1a565b6000806040516020818551602087016000895af18015612977573d8015612964576020811461296d57612975565b60019350612975565b600183511493505b505b5090949350505050565b4390565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115612a135760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561095a578181015183820152602001610942565b5090919050565b825480612aba576040805180820190915267ffffffffffffffff808516825277ffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a815291909120945194018054915190921668010000000000000000029383167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179091169190911790556108a6565b6000846000016001830381548110612ace57fe5b6000918252602090912001805490915067ffffffffffffffff908116908516811015612b8d576040805180820190915267ffffffffffffffff808716825277ffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528a54600181018c5560008c815291909120945194018054915190921668010000000000000000029383167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617909116919091179055612c51565b808567ffffffffffffffff161415612bd957815467ffffffffffffffff166801000000000000000077ffffffffffffffffffffffffffffffffffffffffffffffff861602178255612c51565b60408051808201825260208082527f434845434b504f494e545f43414e4e4f545f4144445f504153545f56414c5545818301908152925162461bcd60e51b815260048101918252825160248201528251929391928392604490920191908083836000831561095a578181015183820152602001610942565b50505050505056fea265627a7a7231582004d5edc0ed93aa01e3ce39072b1a9492445addd751317f043cc2e7832ae81f2464736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
