{
  "_format": "hh-sol-artifact-1",
  "contractName": "DelegationAwareAToken",
  "sourceName": "contracts/protocol/tokenization/DelegationAwareAToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "pool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAssetAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "reserveTreasury",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "incentivesController",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "BalanceTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ATOKEN_REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EIP712_REVISION",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POOL",
      "outputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RESERVE_TREASURY_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UINT_MAX_VALUE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiverOfUnderlying",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        }
      ],
      "name": "delegateUnderlyingTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getScaledUserBalanceAndSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "underlyingAssetDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mintToTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "scaledBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "scaledTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferOnLiquidation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferUnderlyingTo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x610100604052600080553480156200001657600080fd5b5060405162002dd238038062002dd2833981810160405260c08110156200003c57600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200007057600080fd5b9083019060208201858111156200008657600080fd5b8251640100000000811182820188101715620000a157600080fd5b82525081516020918201929091019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012257600080fd5b9083019060208201858111156200013857600080fd5b82516401000000008111828201881017156200015357600080fd5b82525081516020918201929091019080838360005b838110156200018257818101518382015260200162000168565b50505050905090810190601f168015620001b05780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505085858585858582826012838360379080519060200190620001e79291906200024f565b508251620001fd9060389060208601906200024f565b506039805460ff90931660ff19909316929092179091556001600160601b0319606091821b811660805298811b891660e05296871b881660a0525050505050901b1660c05250620002eb945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029257805160ff1916838001178555620002c2565b82800160010185558215620002c2579182015b82811115620002c2578251825591602001919060010190620002a5565b50620002d0929150620002d4565b5090565b5b80821115620002d05760008155600101620002d5565b60805160601c60a05160601c60c05160601c60e05160601c612a2d620003a5600039806107f752806109ff5280610b905280610ff152806110d4528061119c52806111dd5280611751528061195c52806120a9528061220552508061128e52806112cf5280611325528061149b525080610a2e5280610d0652806110a0528061110352806114bf528061187f52806120d852806121b6525080611d1a5280611d4152806125f0528061261e52806126ce5250612a2d6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063b16a19de116100a2578063d505accf11610071578063d505accf1461062b578063d7020d0a1461067c578063dd62ed3e146106b8578063f866c319146106e6576101e5565b8063b16a19de146105ed578063b1bf962d146105f5578063b9844d8d146105fd578063d0fc81d214610623576101e5565b806395d89b41116100de57806395d89b4114610585578063a457c2d71461058d578063a9059cbb146105b9578063ae167335146105e5576101e5565b806370a08231146105105780637535d24614610536578063781603761461055a5780637df5bd3b14610562576101e5565b806323b872dd11610187578063313ce56711610156578063313ce567146104925780633644e515146104b057806339509351146104b85780634efecaa5146104e4576101e5565b806323b872dd146103605780632f1146181461039657806330adf81f146103be5780633118724e146103c6576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd146103325780631da24f3e1461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261071c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b0381351690602001356107b3565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166107d1565b6040805192835260208301919091528051918290030190f35b6102ee6107ee565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b0381351690602081013590604001356107f3565b6102ee6109de565b6102ee6004803603602081101561035057600080fd5b50356001600160a01b0316610ac3565b6102936004803603606081101561037657600080fd5b506001600160a01b03813581169160208101359091169060400135610ace565b6103bc600480360360208110156103ac57600080fd5b50356001600160a01b0316610b8e565b005b6102ee610d8e565b6103bc600480360360608110156103dc57600080fd5b60ff823516919081019060408101602082013564010000000081111561040157600080fd5b82018360208201111561041357600080fd5b8035906020019184600183028401116401000000008311171561043557600080fd5b91939092909160208101903564010000000081111561045357600080fd5b82018360208201111561046557600080fd5b8035906020019184600183028401116401000000008311171561048757600080fd5b509092509050610db2565b61049a610f90565b6040805160ff9092168252519081900360200190f35b6102ee610f99565b610293600480360360408110156104ce57600080fd5b506001600160a01b038135169060200135610f9f565b6102ee600480360360408110156104fa57600080fd5b506001600160a01b038135169060200135610fed565b6102ee6004803603602081101561052657600080fd5b50356001600160a01b03166110cd565b61053e61119a565b604080516001600160a01b039092168252519081900360200190f35b6101f26111be565b6103bc6004803603604081101561057857600080fd5b50803590602001356111db565b6101f2611373565b610293600480360360408110156105a357600080fd5b506001600160a01b0381351690602001356113d4565b610293600480360360408110156105cf57600080fd5b506001600160a01b03813516906020013561143c565b61053e611499565b61053e6114bd565b6102ee6114e1565b6102ee6004803603602081101561061357600080fd5b50356001600160a01b03166114f0565b6102ee611502565b6103bc600480360360e081101561064157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611508565b6103bc6004803603608081101561069257600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561174f565b6102ee600480360360408110156106ce57600080fd5b506001600160a01b038135811691602001351661192f565b6103bc600480360360608110156106fc57600080fd5b506001600160a01b0381358116916020810135909116906040013561195a565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505090505b90565b60006107c76107c0611a49565b8484611a4d565b5060015b92915050565b6000806107dd83611b39565b6107e5611b54565b91509150915091565b600181565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610827611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906108d55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561089a578181015183820152602001610882565b50505050905090810190601f1680156108c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006108e185611b39565b905060006108ef8585611b5a565b6040805180820190915260028152611a9b60f11b6020820152909150816109575760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b506109628682611c61565b6040805186815290516001600160a01b0388169160009160008051602061291f8339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b6000806109e9611b54565b9050806109fa5760009150506107b0565b610abd7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d6020811015610ab457600080fd5b50518290611ddd565b91505090565b60006107cb82611b39565b6000610adb848484611e9b565b610b4b84610ae7611a49565b610b46856040518060600160405280602881526020016128c9602891396001600160a01b038a16600090815260356020526040812090610b25611a49565b6001600160a01b031681526020810191909152604001600020549190611ead565b611a4d565b826001600160a01b0316846001600160a01b031660008051602061291f833981519152846040518082815260200191505060405180910390a35060019392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d6020811015610c1157600080fd5b5051604080516315d9b46f60e31b815290516001600160a01b039092169163aecda37891600480820192602092909190829003018186803b158015610c5557600080fd5b505afa158015610c69573d6000803e3d6000fd5b505050506040513d6020811015610c7f57600080fd5b50516001600160a01b0316610c92611a49565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610d035760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c19a95c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610d7357600080fd5b505af1158015610d87573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6000610dbc611f07565b60015490915060ff1680610dd35750610dd3611f0c565b80610ddf575060005481115b610e1a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806128f1602e913960400191505060405180910390fd5b60015460ff16158015610e39576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f87876040518083838082843760408051939091018390038320838201825260018452603160f81b602094850152815180850198909852878201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060880152608087018890523060a0808901919091528151808903909101815260c08801808352815191850191909120603b5560e0601f8f01859004909402880184019091528c8152610f2d969095508d94508c93508392019050838280828437600092019190915250611f1292505050565b610f6c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f2592505050565b610f7588611f38565b508015610f87576001805460ff191690555b50505050505050565b60395460ff1690565b603b5481565b60006107c7610fac611a49565b84610b468560356000610fbd611a49565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611f4e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611021611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906110925760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b506110c76001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484611faf565b50919050565b60006107cb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b505161119484611b39565b90611ddd565b7f000000000000000000000000000000000000000000000000000000000000000081565b604051806040016040528060018152602001603160f81b81525081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661120d611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061127e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b50816112895761136f565b6112bc7f00000000000000000000000000000000000000000000000000000000000000006112b78484611b5a565b611c61565b6040805183815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169160009160008051602061291f8339815191529181900360200190a3604080518381526020810183905281516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25b5050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b60006107c76113e1611a49565b84610b46856040518060600160405280602581526020016129d3602591396035600061140b611a49565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611ead565b6000611450611449611a49565b8484611e9b565b826001600160a01b0316611462611a49565b6001600160a01b031660008051602061291f833981519152846040518082815260200191505060405180910390a350600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114eb611b54565b905090565b603a6020526000908152604090205481565b60001981565b6001600160a01b038716611553576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b8342111561159d576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156116b2573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611715576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611720826001611f4e565b6001600160a01b038a166000908152603a6020526040902055611744898989611a4d565b505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611781611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117f25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b5060006117ff8383611b5a565b60408051808201909152600281526106a760f31b6020820152909150816118675760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b506118728582612001565b6118a66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611faf565b6040805184815290516000916001600160a01b0388169160008051602061291f8339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661198c611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906119fd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b50611a0b83838360006120a5565b816001600160a01b0316836001600160a01b031660008051602061291f833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611a925760405162461bcd60e51b81526004018080602001828103825260248152602001806129856024913960400191505060405180910390fd5b6001600160a01b038216611ad75760405162461bcd60e51b81526004018080602001828103825260228152602001806128816022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611bc25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611c3e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b5082816b033b2e3c9fd0803ce800000086020181611c5857fe5b04949350505050565b6001600160a01b038216611cbc576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611cc860008383611ea8565b603654611cd58183611f4e565b6036556001600160a01b038316600090815260346020526040902054611cfb8184611f4e565b6001600160a01b038086166000908152603460205260409020919091557f00000000000000000000000000000000000000000000000000000000000000001615611dd7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505b50505050565b6000821580611dea575081155b15611df7575060006107cb565b816b019d971e4fe8401e740000001981611e0d57fe5b0483111560405180604001604052806002815260200161068760f31b81525090611e785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b611ea883838360016120a5565b505050565b60008184841115611eff5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b505050900390565b600190565b303b1590565b805161136f9060379060208401906127a8565b805161136f9060389060208401906127a8565b6039805460ff191660ff92909216919091179055565b600082820183811015611fa8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611ea89084906122c4565b6001600160a01b0382166120465760405162461bcd60e51b815260040180806020018281038252602181526020018061293f6021913960400191505060405180910390fd5b61205282600083611ea8565b60365461205f818361247c565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611cfb9286929061285f90830139839190611ead565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b505050506040513d602081101561215e57600080fd5b5051905060006121718261119488611b39565b905060006121828361119488611b39565b905061219887876121938887611b5a565b6124be565b8315612268576040805163d5ed393360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015289811660248301528881166044830152606482018890526084820185905260a4820184905291517f00000000000000000000000000000000000000000000000000000000000000009092169163d5ed39339160c48082019260009290919082900301818387803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b505050505b856001600160a01b0316876001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668786604051808381526020018281526020019250505060405180910390a350505050505050565b6122d6826001600160a01b031661276c565b612327576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123655780518252601f199092019160209182019101612346565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123c7576040519150601f19603f3d011682016040523d82523d6000602084013e6123cc565b606091505b509150915081612423576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611dd75780806020019051602081101561243f57600080fd5b5051611dd75760405162461bcd60e51b815260040180806020018281038252602a8152602001806129a9602a913960400191505060405180910390fd5b6000611fa883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ead565b6001600160a01b0383166125035760405162461bcd60e51b81526004018080602001828103825260258152602001806129606025913960400191505060405180910390fd5b6001600160a01b0382166125485760405162461bcd60e51b815260040180806020018281038252602381526020018061283c6023913960400191505060405180910390fd5b612553838383611ea8565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506125a2826040518060600160405280602681526020016128a360269139839190611ead565b6001600160a01b0380861660009081526034602052604080822093909355908516815220546125d18184611f4e565b6001600160a01b038086166000908152603460205260409020919091557f00000000000000000000000000000000000000000000000000000000000000001615610d8757600060365490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561269b57600080fd5b505af11580156126af573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612764577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561274b57600080fd5b505af115801561275f573d6000803e3d6000fd5b505050505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906127a057508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e957805160ff1916838001178555612816565b82800160010185558215612816579182015b828111156128165782518255916020019190600101906127fb565b50612822929150612826565b5090565b5b80821115612822576000815560010161282756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204b24bec190e973af777c15e1bd2e7203ab3520a4009be5a28c41ab48e65a91a864736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063b16a19de116100a2578063d505accf11610071578063d505accf1461062b578063d7020d0a1461067c578063dd62ed3e146106b8578063f866c319146106e6576101e5565b8063b16a19de146105ed578063b1bf962d146105f5578063b9844d8d146105fd578063d0fc81d214610623576101e5565b806395d89b41116100de57806395d89b4114610585578063a457c2d71461058d578063a9059cbb146105b9578063ae167335146105e5576101e5565b806370a08231146105105780637535d24614610536578063781603761461055a5780637df5bd3b14610562576101e5565b806323b872dd11610187578063313ce56711610156578063313ce567146104925780633644e515146104b057806339509351146104b85780634efecaa5146104e4576101e5565b806323b872dd146103605780632f1146181461039657806330adf81f146103be5780633118724e146103c6576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd146103325780631da24f3e1461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261071c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b0381351690602001356107b3565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166107d1565b6040805192835260208301919091528051918290030190f35b6102ee6107ee565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b0381351690602081013590604001356107f3565b6102ee6109de565b6102ee6004803603602081101561035057600080fd5b50356001600160a01b0316610ac3565b6102936004803603606081101561037657600080fd5b506001600160a01b03813581169160208101359091169060400135610ace565b6103bc600480360360208110156103ac57600080fd5b50356001600160a01b0316610b8e565b005b6102ee610d8e565b6103bc600480360360608110156103dc57600080fd5b60ff823516919081019060408101602082013564010000000081111561040157600080fd5b82018360208201111561041357600080fd5b8035906020019184600183028401116401000000008311171561043557600080fd5b91939092909160208101903564010000000081111561045357600080fd5b82018360208201111561046557600080fd5b8035906020019184600183028401116401000000008311171561048757600080fd5b509092509050610db2565b61049a610f90565b6040805160ff9092168252519081900360200190f35b6102ee610f99565b610293600480360360408110156104ce57600080fd5b506001600160a01b038135169060200135610f9f565b6102ee600480360360408110156104fa57600080fd5b506001600160a01b038135169060200135610fed565b6102ee6004803603602081101561052657600080fd5b50356001600160a01b03166110cd565b61053e61119a565b604080516001600160a01b039092168252519081900360200190f35b6101f26111be565b6103bc6004803603604081101561057857600080fd5b50803590602001356111db565b6101f2611373565b610293600480360360408110156105a357600080fd5b506001600160a01b0381351690602001356113d4565b610293600480360360408110156105cf57600080fd5b506001600160a01b03813516906020013561143c565b61053e611499565b61053e6114bd565b6102ee6114e1565b6102ee6004803603602081101561061357600080fd5b50356001600160a01b03166114f0565b6102ee611502565b6103bc600480360360e081101561064157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611508565b6103bc6004803603608081101561069257600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561174f565b6102ee600480360360408110156106ce57600080fd5b506001600160a01b038135811691602001351661192f565b6103bc600480360360608110156106fc57600080fd5b506001600160a01b0381358116916020810135909116906040013561195a565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505090505b90565b60006107c76107c0611a49565b8484611a4d565b5060015b92915050565b6000806107dd83611b39565b6107e5611b54565b91509150915091565b600181565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610827611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906108d55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561089a578181015183820152602001610882565b50505050905090810190601f1680156108c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006108e185611b39565b905060006108ef8585611b5a565b6040805180820190915260028152611a9b60f11b6020820152909150816109575760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b506109628682611c61565b6040805186815290516001600160a01b0388169160009160008051602061291f8339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b6000806109e9611b54565b9050806109fa5760009150506107b0565b610abd7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d6020811015610ab457600080fd5b50518290611ddd565b91505090565b60006107cb82611b39565b6000610adb848484611e9b565b610b4b84610ae7611a49565b610b46856040518060600160405280602881526020016128c9602891396001600160a01b038a16600090815260356020526040812090610b25611a49565b6001600160a01b031681526020810191909152604001600020549190611ead565b611a4d565b826001600160a01b0316846001600160a01b031660008051602061291f833981519152846040518082815260200191505060405180910390a35060019392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d6020811015610c1157600080fd5b5051604080516315d9b46f60e31b815290516001600160a01b039092169163aecda37891600480820192602092909190829003018186803b158015610c5557600080fd5b505afa158015610c69573d6000803e3d6000fd5b505050506040513d6020811015610c7f57600080fd5b50516001600160a01b0316610c92611a49565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610d035760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c19a95c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610d7357600080fd5b505af1158015610d87573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6000610dbc611f07565b60015490915060ff1680610dd35750610dd3611f0c565b80610ddf575060005481115b610e1a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806128f1602e913960400191505060405180910390fd5b60015460ff16158015610e39576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f87876040518083838082843760408051939091018390038320838201825260018452603160f81b602094850152815180850198909852878201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060880152608087018890523060a0808901919091528151808903909101815260c08801808352815191850191909120603b5560e0601f8f01859004909402880184019091528c8152610f2d969095508d94508c93508392019050838280828437600092019190915250611f1292505050565b610f6c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f2592505050565b610f7588611f38565b508015610f87576001805460ff191690555b50505050505050565b60395460ff1690565b603b5481565b60006107c7610fac611a49565b84610b468560356000610fbd611a49565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611f4e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611021611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906110925760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b506110c76001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484611faf565b50919050565b60006107cb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b505161119484611b39565b90611ddd565b7f000000000000000000000000000000000000000000000000000000000000000081565b604051806040016040528060018152602001603160f81b81525081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661120d611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061127e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b50816112895761136f565b6112bc7f00000000000000000000000000000000000000000000000000000000000000006112b78484611b5a565b611c61565b6040805183815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169160009160008051602061291f8339815191529181900360200190a3604080518381526020810183905281516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25b5050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b60006107c76113e1611a49565b84610b46856040518060600160405280602581526020016129d3602591396035600061140b611a49565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611ead565b6000611450611449611a49565b8484611e9b565b826001600160a01b0316611462611a49565b6001600160a01b031660008051602061291f833981519152846040518082815260200191505060405180910390a350600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114eb611b54565b905090565b603a6020526000908152604090205481565b60001981565b6001600160a01b038716611553576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b8342111561159d576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156116b2573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611715576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611720826001611f4e565b6001600160a01b038a166000908152603a6020526040902055611744898989611a4d565b505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611781611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117f25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b5060006117ff8383611b5a565b60408051808201909152600281526106a760f31b6020820152909150816118675760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b506118728582612001565b6118a66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611faf565b6040805184815290516000916001600160a01b0388169160008051602061291f8339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661198c611a49565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906119fd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b50611a0b83838360006120a5565b816001600160a01b0316836001600160a01b031660008051602061291f833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611a925760405162461bcd60e51b81526004018080602001828103825260248152602001806129856024913960400191505060405180910390fd5b6001600160a01b038216611ad75760405162461bcd60e51b81526004018080602001828103825260228152602001806128816022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611bc25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611c3e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b5082816b033b2e3c9fd0803ce800000086020181611c5857fe5b04949350505050565b6001600160a01b038216611cbc576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611cc860008383611ea8565b603654611cd58183611f4e565b6036556001600160a01b038316600090815260346020526040902054611cfb8184611f4e565b6001600160a01b038086166000908152603460205260409020919091557f00000000000000000000000000000000000000000000000000000000000000001615611dd7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611dbe57600080fd5b505af1158015611dd2573d6000803e3d6000fd5b505050505b50505050565b6000821580611dea575081155b15611df7575060006107cb565b816b019d971e4fe8401e740000001981611e0d57fe5b0483111560405180604001604052806002815260200161068760f31b81525090611e785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b611ea883838360016120a5565b505050565b60008184841115611eff5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561089a578181015183820152602001610882565b505050900390565b600190565b303b1590565b805161136f9060379060208401906127a8565b805161136f9060389060208401906127a8565b6039805460ff191660ff92909216919091179055565b600082820183811015611fa8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611ea89084906122c4565b6001600160a01b0382166120465760405162461bcd60e51b815260040180806020018281038252602181526020018061293f6021913960400191505060405180910390fd5b61205282600083611ea8565b60365461205f818361247c565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611cfb9286929061285f90830139839190611ead565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b505050506040513d602081101561215e57600080fd5b5051905060006121718261119488611b39565b905060006121828361119488611b39565b905061219887876121938887611b5a565b6124be565b8315612268576040805163d5ed393360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015289811660248301528881166044830152606482018890526084820185905260a4820184905291517f00000000000000000000000000000000000000000000000000000000000000009092169163d5ed39339160c48082019260009290919082900301818387803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b505050505b856001600160a01b0316876001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668786604051808381526020018281526020019250505060405180910390a350505050505050565b6122d6826001600160a01b031661276c565b612327576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123655780518252601f199092019160209182019101612346565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123c7576040519150601f19603f3d011682016040523d82523d6000602084013e6123cc565b606091505b509150915081612423576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611dd75780806020019051602081101561243f57600080fd5b5051611dd75760405162461bcd60e51b815260040180806020018281038252602a8152602001806129a9602a913960400191505060405180910390fd5b6000611fa883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ead565b6001600160a01b0383166125035760405162461bcd60e51b81526004018080602001828103825260258152602001806129606025913960400191505060405180910390fd5b6001600160a01b0382166125485760405162461bcd60e51b815260040180806020018281038252602381526020018061283c6023913960400191505060405180910390fd5b612553838383611ea8565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506125a2826040518060600160405280602681526020016128a360269139839190611ead565b6001600160a01b0380861660009081526034602052604080822093909355908516815220546125d18184611f4e565b6001600160a01b038086166000908152603460205260409020919091557f00000000000000000000000000000000000000000000000000000000000000001615610d8757600060365490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561269b57600080fd5b505af11580156126af573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612764577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561274b57600080fd5b505af115801561275f573d6000803e3d6000fd5b505050505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906127a057508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e957805160ff1916838001178555612816565b82800160010185558215612816579182015b828111156128165782518255916020019190600101906127fb565b50612822929150612826565b5090565b5b80821115612822576000815560010161282756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204b24bec190e973af777c15e1bd2e7203ab3520a4009be5a28c41ab48e65a91a864736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
