{
  "_format": "hh-sol-artifact-1",
  "contractName": "JoeLensView",
  "sourceName": "contracts/Lens/JoeLensView.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_nativeSymbol",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract Joetroller",
          "name": "joetroller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountLimits",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract JToken[]",
              "name": "markets",
              "type": "address[]"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "shortfall",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCollateralValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalBorrowValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "healthFactor",
              "type": "uint256"
            }
          ],
          "internalType": "struct JoeLensView.AccountLimits",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract JToken",
          "name": "jToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "jTokenBalances",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "jToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "jTokenBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "balanceOfUnderlyingStored",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "supplyValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowBalanceStored",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingTokenBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingTokenAllowance",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "collateralEnabled",
              "type": "bool"
            }
          ],
          "internalType": "struct JoeLensView.JTokenBalances",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract JToken[]",
          "name": "jTokens",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "jTokenBalancesAll",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "jToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "jTokenBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "balanceOfUnderlyingStored",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "supplyValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowBalanceStored",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowValueUSD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingTokenBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingTokenAllowance",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "collateralEnabled",
              "type": "bool"
            }
          ],
          "internalType": "struct JoeLensView.JTokenBalances[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract JToken",
          "name": "jToken",
          "type": "address"
        }
      ],
      "name": "jTokenMetadata",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "jToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "exchangeRateStored",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "supplyRatePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowRatePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveFactorMantissa",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalBorrows",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalReserves",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCash",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCollateralTokens",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "isListed",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "collateralFactorMantissa",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingAssetAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "jTokenDecimals",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingDecimals",
              "type": "uint256"
            },
            {
              "internalType": "enum JoetrollerV1Storage.Version",
              "name": "version",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "collateralCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingPrice",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "supplyPaused",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "borrowPaused",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "supplyCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowCap",
              "type": "uint256"
            }
          ],
          "internalType": "struct JoeLensView.JTokenMetadata",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract JToken[]",
          "name": "jTokens",
          "type": "address[]"
        }
      ],
      "name": "jTokenMetadataAll",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "jToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "exchangeRateStored",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "supplyRatePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowRatePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveFactorMantissa",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalBorrows",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalReserves",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCash",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalCollateralTokens",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "isListed",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "collateralFactorMantissa",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingAssetAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "jTokenDecimals",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingDecimals",
              "type": "uint256"
            },
            {
              "internalType": "enum JoetrollerV1Storage.Version",
              "name": "version",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "collateralCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingPrice",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "supplyPaused",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "borrowPaused",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "supplyCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowCap",
              "type": "uint256"
            }
          ],
          "internalType": "struct JoeLensView.JTokenMetadata[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "nativeSymbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002b3538038062002b35833981016040819052620000349162000152565b80516200004990600090602084019062000051565b505062000214565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200009457805160ff1916838001178555620000c4565b82800160010185558215620000c4579182015b82811115620000c4578251825591602001919060010190620000a7565b50620000d2929150620000d6565b5090565b620000f391905b80821115620000d25760008155600101620000dd565b90565b600082601f8301126200010857600080fd5b81516200011f6200011982620001b9565b62000192565b915080825260208301602083018583830111156200013c57600080fd5b62000149838284620001e1565b50505092915050565b6000602082840312156200016557600080fd5b81516001600160401b038111156200017c57600080fd5b6200018a84828501620000f6565b949350505050565b6040518181016001600160401b0381118282101715620001b157600080fd5b604052919050565b60006001600160401b03821115620001d057600080fd5b506020601f91909101601f19160190565b60005b83811015620001fe578181015183820152602001620001e4565b838111156200020e576000848401525b50505050565b61291180620002246000396000f3fe608060405234801561001057600080fd5b50600436106100615760003560e01c8062673b0c1461006657806357553afb1461008f5780637dd8f6d9146100af5780637fedad55146100cf57806388613111146100e4578063d9ca3c9c14610104575b600080fd5b610079610074366004611f03565b610124565b60405161008691906126de565b60405180910390f35b6100a261009d366004611fdd565b6101bd565b6040516100869190612760565b6100c26100bd366004611fdd565b61084c565b604051610086919061274f565b6100d7610a6b565b604051610086919061270e565b6100f76100f2366004611e8c565b610af9565b60405161008691906126ef565b610117610112366004611fbf565b610d85565b604051610086919061276f565b606060008351905060608160405190808252806020026020018201604052801561016857816020015b610155611b1e565b81526020019060019003908161014d5790505b50905060005b828110156101b25761019386828151811061018557fe5b6020026020010151866101bd565b82828151811061019f57fe5b602090810291909101015260010161016e565b509150505b92915050565b6101c5611b1e565b6101cd611b1e565b6000846001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561020857600080fd5b505afa15801561021c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102409190810190611ffc565b6001600160a01b03808716845260405163929fe9a160e01b815291925082169063929fe9a19061027690879089906004016126c3565b60206040518083038186803b15801561028e57600080fd5b505afa1580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102c69190810190611f54565b826101200190151590811515815250506103de856001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561031257600080fd5b505afa158015610326573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034e919081019061201a565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050610e8c565b15610400576001600160a01b038416803160e084015231610100830152610583565b60008590506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561044057600080fd5b505afa158015610454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104789190810190611e6e565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906104a790899060040161269a565b60206040518083038186803b1580156104bf57600080fd5b505afa1580156104d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104f7919081019061204f565b60e0850152604051636eb1769f60e11b81526001600160a01b0382169063dd62ed3e9061052a9089908b906004016126a8565b60206040518083038186803b15801561054257600080fd5b505afa158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061057a919081019061204f565b61010085015250505b6040516361bfb47160e11b81526000906001600160a01b0387169063c37f68e2906105b290889060040161269a565b60806040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060291908101906120b0565b60a08701919091526020860191909152915061061e9050611b7c565b604051806020016040528083815250905061063d818560200151610ee5565b8460400181815250506000836001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b99190810190611ffc565b90506000816001600160a01b031663fc57d4df8a6040518263ffffffff1660e01b81526004016106e99190612700565b60206040518083038186803b15801561070157600080fd5b505afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610739919081019061204f565b90506000856001600160a01b0316638e8f294b8b6040518263ffffffff1660e01b8152600401610769919061269a565b60606040518083038186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107b99190810190611f72565b509150506107c5611b7c565b50604080516020810182529088015181526107e08184610ee5565b60608901526107ed611b7c565b604051806020016040528084815250905061080c818a60600151610ee5565b60808a0152610819611b7c565b50604080516020810190915260a08a015181526108368186610ee5565b60c08b015250979b9a5050505050505050505050565b610854611b8f565b61085c611b8f565b604051635ec88c7960e01b81526000906001600160a01b03861690635ec88c799061088b90879060040161269a565b60606040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108db919081019061206d565b604085015260208401529050801561090e5760405162461bcd60e51b81526004016109059061272f565b60405180910390fd5b604051632aff3bff60e21b81526001600160a01b0386169063abfceffc9061093a90879060040161269a565b60006040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098e9190810190611ece565b80835260609061099e9086610124565b905060005b8151811015610a0c576109d184606001518383815181106109c057fe5b602002602001015160800151610f0c565b8460600181815250506109ff84608001518383815181106109ee57fe5b602002602001015160c00151610f0c565b60808501526001016109a3565b50610a15611b7c565b50604080516020810190915260808401518152606084015115610a58576000846080015111610a45576064610a53565b610a53846060015182610f49565b610a5b565b60005b60a0850152509195945050505050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610af15780601f10610ac657610100808354040283529160200191610af1565b820191906000526020600020905b815481529060010190602001808311610ad457829003601f168201915b505050505081565b60608180610b195760405162461bcd60e51b81526004016109059061273f565b606081604051908082528060200260200182016040528015610b5557816020015b610b42611bc5565b815260200190600190039081610b3a5790505b509050600085856000818110610b6757fe5b9050602002016020610b7c9190810190611fbf565b6001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec9190810190611ffc565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c619190810190611ffc565b905060005b84811015610d7957878782818110610c7a57fe5b9050602002016020610c8f9190810190611fbf565b6001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc757600080fd5b505afa158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cff9190810190611ffc565b6001600160a01b0316836001600160a01b031614610d2f5760405162461bcd60e51b81526004016109059061271f565b610d5a888883818110610d3e57fe5b9050602002016020610d539190810190611fbf565b8484610f67565b848281518110610d6657fe5b6020908102919091010152600101610c66565b50919695505050505050565b610d8d611bc5565b6000826001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc857600080fd5b505afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e009190810190611ffc565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e759190810190611ffc565b9050610e82848383610f67565b925050505b919050565b600081604051602001610e9f919061268e565b6040516020818303038152906040528051906020012083604051602001610ec6919061268e565b6040516020818303038152906040528051906020012014905092915050565b6000610eef611b7c565b610ef984846119c4565b9050610f04816119ee565b949350505050565b6000610f428383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506119fd565b9392505050565b6000610f42610f6084670de0b6b3a7640000611a2d565b8351611a6f565b610f6f611bc5565b6000846001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b158015610faa57600080fd5b505afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fe2919081019061204f565b90506000806000866001600160a01b0316638e8f294b896040518263ffffffff1660e01b8152600401611015919061269a565b60606040518083038186803b15801561102d57600080fd5b505afa158015611041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110659190810190611f72565b9250925092506000806000806110ad8c6001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561031257600080fd5b156110bf57600093506012925061121f565b60008c9050806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fd57600080fd5b505afa158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111359190810190611e6e565b9450806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561117057600080fd5b505afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111a89190810190611e6e565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112189190810190612111565b60ff169350505b600185600281111561122d57fe5b141561131a578b6001600160a01b031663d2bb18e96040518163ffffffff1660e01b815260040160206040518083038186803b15801561126c57600080fd5b505afa158015611280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a4919081019061204f565b91508b6001600160a01b03166319a4dd3c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611317919081019061204f565b90505b604051806102c001604052808d6001600160a01b031681526020018981526020018d6001600160a01b031663b1d389746040518163ffffffff1660e01b815260040160206040518083038186803b15801561137457600080fd5b505afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113ac919081019061204f565b81526020018d6001600160a01b031663526097506040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ea57600080fd5b505afa1580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611422919081019061204f565b81526020018d6001600160a01b031663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561146057600080fd5b505afa158015611474573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611498919081019061204f565b81526020018d6001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061150e919081019061204f565b81526020018d6001600160a01b0316638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154c57600080fd5b505afa158015611560573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611584919081019061204f565b81526020018d6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c257600080fd5b505afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115fa919081019061204f565b81526020018d6001600160a01b0316633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561163857600080fd5b505afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611670919081019061204f565b81526020018281526020018815158152602001878152602001856001600160a01b031681526020018d6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117099190810190612111565b60ff16815260200184815260200186600281111561172357fe5b81526020018381526020018b6001600160a01b031663fc57d4df8f6040518263ffffffff1660e01b815260040161175a9190612700565b60206040518083038186803b15801561177257600080fd5b505afa158015611786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117aa919081019061204f565b81526020018c6001600160a01b031663731f0c2b8f6040518263ffffffff1660e01b81526004016117db919061269a565b60206040518083038186803b1580156117f357600080fd5b505afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061182b9190810190611f54565b151581526020018c6001600160a01b0316636d154ea58f6040518263ffffffff1660e01b815260040161185e919061269a565b60206040518083038186803b15801561187657600080fd5b505afa15801561188a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118ae9190810190611f54565b151581526020018c6001600160a01b03166302c3bcbb8f6040518263ffffffff1660e01b81526004016118e1919061269a565b60206040518083038186803b1580156118f957600080fd5b505afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611931919081019061204f565b81526020018c6001600160a01b0316634a5844328f6040518263ffffffff1660e01b8152600401611962919061269a565b60206040518083038186803b15801561197a57600080fd5b505afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119b2919081019061204f565b90529c9b505050505050505050505050565b6119cc611b7c565b60405180602001604052806119e5856000015185611a2d565b90529392505050565b51670de0b6b3a7640000900490565b60008383018285821015611a245760405162461bcd60e51b8152600401610905919061270e565b50949350505050565b6000610f4283836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250611aa2565b6000610f4283836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250611aea565b6000831580611aaf575082155b15611abc57506000610f42565b83830283858281611ac957fe5b04148390611a245760405162461bcd60e51b8152600401610905919061270e565b60008183611b0b5760405162461bcd60e51b8152600401610905919061270e565b50828481611b1557fe5b04949350505050565b60405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060200160405280600081525090565b6040518060c001604052806060815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102c0016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160006002811115611c5b57fe5b8152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b80356101b781612889565b80516101b781612889565b60008083601f840112611cb757600080fd5b50813567ffffffffffffffff811115611ccf57600080fd5b602083019150836020820283011115611ce757600080fd5b9250929050565b600082601f830112611cff57600080fd5b8135611d12611d0d826127a5565b61277e565b91508181835260208401935060208101905083856020840282011115611d3757600080fd5b60005b83811015611d635781611d4d8882611de8565b8452506020928301929190910190600101611d3a565b5050505092915050565b600082601f830112611d7e57600080fd5b8151611d8c611d0d826127a5565b91508181835260208401935060208101905083856020840282011115611db157600080fd5b60005b83811015611d635781611dc78882611df3565b8452506020928301929190910190600101611db4565b80516101b78161289d565b80356101b7816128a6565b80516101b7816128a6565b80516101b7816128af565b600082601f830112611e1a57600080fd5b8151611e28611d0d826127c6565b91508082526020830160208301858383011115611e4457600080fd5b611e4f838284612846565b50505092915050565b80516101b7816128bc565b80516101b7816128c5565b600060208284031215611e8057600080fd5b6000610f048484611c9a565b60008060208385031215611e9f57600080fd5b823567ffffffffffffffff811115611eb657600080fd5b611ec285828601611ca5565b92509250509250929050565b600060208284031215611ee057600080fd5b815167ffffffffffffffff811115611ef757600080fd5b610f0484828501611d6d565b60008060408385031215611f1657600080fd5b823567ffffffffffffffff811115611f2d57600080fd5b611f3985828601611cee565b9250506020611f4a85828601611c8f565b9150509250929050565b600060208284031215611f6657600080fd5b6000610f048484611ddd565b600080600060608486031215611f8757600080fd5b6000611f938686611ddd565b9350506020611fa486828701611e58565b9250506040611fb586828701611dfe565b9150509250925092565b600060208284031215611fd157600080fd5b6000610f048484611de8565b60008060408385031215611ff057600080fd5b6000611f398585611de8565b60006020828403121561200e57600080fd5b6000610f048484611df3565b60006020828403121561202c57600080fd5b815167ffffffffffffffff81111561204357600080fd5b610f0484828501611e09565b60006020828403121561206157600080fd5b6000610f048484611e58565b60008060006060848603121561208257600080fd5b600061208e8686611e58565b935050602061209f86828701611e58565b9250506040611fb586828701611e58565b600080600080608085870312156120c657600080fd5b60006120d28787611e58565b94505060206120e387828801611e58565b93505060406120f487828801611e58565b925050606061210587828801611e58565b91505092959194509250565b60006020828403121561212357600080fd5b6000610f048484611e63565b600061213b838361227a565b505060200190565b600061214f8383612405565b50506101400190565b600061216483836124cc565b50506102c00190565b61217681612801565b82525050565b6000612187826127f4565b61219181856127f8565b935061219c836127ee565b8060005b838110156121ca5781516121b4888261212f565b97506121bf836127ee565b9250506001016121a0565b509495945050505050565b60006121e0826127f4565b6121ea81856127f8565b93506121f5836127ee565b8060005b838110156121ca57815161220d8882612143565b9750612218836127ee565b9250506001016121f9565b600061222e826127f4565b61223881856127f8565b9350612243836127ee565b8060005b838110156121ca57815161225b8882612158565b9750612266836127ee565b925050600101612247565b6121768161280c565b61217681612811565b6121768161283b565b6000612297826127f4565b6122a181856127f8565b93506122b1818560208601612846565b6122ba81612872565b9093019392505050565b60006122cf826127f4565b6122d98185610e87565b93506122e9818560208601612846565b9290920192915050565b60006123006013836127f8565b7236b4b9b6b0ba31b4103537b2ba3937b63632b960691b815260200192915050565b600061232f601b836127f8565b7f43616e277420676574206163636f756e74206c69717569646974790000000000815260200192915050565b6000612368600d836127f8565b6c1a5b9d985b1a59081a5b9c1d5d609a1b815260200192915050565b805160c08084526000919084019061239c828261217c565b91505060208301516123b16020860182612685565b5060408301516123c46040860182612685565b5060608301516123d76060860182612685565b5060808301516123ea6080860182612685565b5060a08301516123fd60a0860182612685565b509392505050565b8051610140830190612417848261216d565b50602082015161242a6020850182612685565b50604082015161243d6040850182612685565b5060608201516124506060850182612685565b5060808201516124636080850182612685565b5060a082015161247660a0850182612685565b5060c082015161248960c0850182612685565b5060e082015161249c60e0850182612685565b506101008201516124b1610100850182612685565b506101208201516124c6610120850182612271565b50505050565b80516102c08301906124de848261216d565b5060208201516124f16020850182612685565b5060408201516125046040850182612685565b5060608201516125176060850182612685565b50608082015161252a6080850182612685565b5060a082015161253d60a0850182612685565b5060c082015161255060c0850182612685565b5060e082015161256360e0850182612685565b50610100820151612578610100850182612685565b5061012082015161258d610120850182612685565b506101408201516125a2610140850182612271565b506101608201516125b7610160850182612685565b506101808201516125cc61018085018261216d565b506101a08201516125e16101a0850182612685565b506101c08201516125f66101c0850182612685565b506101e082015161260b6101e0850182612283565b50610200820151612620610200850182612685565b50610220820151612635610220850182612685565b5061024082015161264a610240850182612271565b5061026082015161265f610260850182612271565b50610280820151612674610280850182612685565b506102a08201516124c66102a08501825b61217681612832565b6000610f4282846122c4565b602081016101b7828461216d565b604081016126b6828561216d565b610f42602083018461216d565b604081016126d1828561216d565b610f42602083018461227a565b60208082528101610f4281846121d5565b60208082528101610f428184612223565b602081016101b7828461227a565b60208082528101610f42818461228c565b602080825281016101b7816122f3565b602080825281016101b781612322565b602080825281016101b78161235b565b60208082528101610f428184612384565b61014081016101b78284612405565b6102c081016101b782846124cc565b60405181810167ffffffffffffffff8111828210171561279d57600080fd5b604052919050565b600067ffffffffffffffff8211156127bc57600080fd5b5060209081020190565b600067ffffffffffffffff8211156127dd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b60006101b782612826565b151590565b60006101b782612801565b80610e878161287c565b6001600160a01b031690565b90565b60ff1690565b60006101b78261281c565b60005b83811015612861578181015183820152602001612849565b838111156124c65750506000910152565b601f01601f191690565b6003811061288657fe5b50565b61289281612801565b811461288657600080fd5b6128928161280c565b61289281612811565b6003811061288657600080fd5b61289281612832565b6128928161283556fea365627a7a72315820eef397349815284f014bb84b04388eaceebda969d9d42447a36a732988d45ced6c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100615760003560e01c8062673b0c1461006657806357553afb1461008f5780637dd8f6d9146100af5780637fedad55146100cf57806388613111146100e4578063d9ca3c9c14610104575b600080fd5b610079610074366004611f03565b610124565b60405161008691906126de565b60405180910390f35b6100a261009d366004611fdd565b6101bd565b6040516100869190612760565b6100c26100bd366004611fdd565b61084c565b604051610086919061274f565b6100d7610a6b565b604051610086919061270e565b6100f76100f2366004611e8c565b610af9565b60405161008691906126ef565b610117610112366004611fbf565b610d85565b604051610086919061276f565b606060008351905060608160405190808252806020026020018201604052801561016857816020015b610155611b1e565b81526020019060019003908161014d5790505b50905060005b828110156101b25761019386828151811061018557fe5b6020026020010151866101bd565b82828151811061019f57fe5b602090810291909101015260010161016e565b509150505b92915050565b6101c5611b1e565b6101cd611b1e565b6000846001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561020857600080fd5b505afa15801561021c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102409190810190611ffc565b6001600160a01b03808716845260405163929fe9a160e01b815291925082169063929fe9a19061027690879089906004016126c3565b60206040518083038186803b15801561028e57600080fd5b505afa1580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102c69190810190611f54565b826101200190151590811515815250506103de856001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561031257600080fd5b505afa158015610326573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034e919081019061201a565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050610e8c565b15610400576001600160a01b038416803160e084015231610100830152610583565b60008590506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561044057600080fd5b505afa158015610454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104789190810190611e6e565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906104a790899060040161269a565b60206040518083038186803b1580156104bf57600080fd5b505afa1580156104d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104f7919081019061204f565b60e0850152604051636eb1769f60e11b81526001600160a01b0382169063dd62ed3e9061052a9089908b906004016126a8565b60206040518083038186803b15801561054257600080fd5b505afa158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061057a919081019061204f565b61010085015250505b6040516361bfb47160e11b81526000906001600160a01b0387169063c37f68e2906105b290889060040161269a565b60806040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060291908101906120b0565b60a08701919091526020860191909152915061061e9050611b7c565b604051806020016040528083815250905061063d818560200151610ee5565b8460400181815250506000836001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b99190810190611ffc565b90506000816001600160a01b031663fc57d4df8a6040518263ffffffff1660e01b81526004016106e99190612700565b60206040518083038186803b15801561070157600080fd5b505afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610739919081019061204f565b90506000856001600160a01b0316638e8f294b8b6040518263ffffffff1660e01b8152600401610769919061269a565b60606040518083038186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107b99190810190611f72565b509150506107c5611b7c565b50604080516020810182529088015181526107e08184610ee5565b60608901526107ed611b7c565b604051806020016040528084815250905061080c818a60600151610ee5565b60808a0152610819611b7c565b50604080516020810190915260a08a015181526108368186610ee5565b60c08b015250979b9a5050505050505050505050565b610854611b8f565b61085c611b8f565b604051635ec88c7960e01b81526000906001600160a01b03861690635ec88c799061088b90879060040161269a565b60606040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108db919081019061206d565b604085015260208401529050801561090e5760405162461bcd60e51b81526004016109059061272f565b60405180910390fd5b604051632aff3bff60e21b81526001600160a01b0386169063abfceffc9061093a90879060040161269a565b60006040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098e9190810190611ece565b80835260609061099e9086610124565b905060005b8151811015610a0c576109d184606001518383815181106109c057fe5b602002602001015160800151610f0c565b8460600181815250506109ff84608001518383815181106109ee57fe5b602002602001015160c00151610f0c565b60808501526001016109a3565b50610a15611b7c565b50604080516020810190915260808401518152606084015115610a58576000846080015111610a45576064610a53565b610a53846060015182610f49565b610a5b565b60005b60a0850152509195945050505050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610af15780601f10610ac657610100808354040283529160200191610af1565b820191906000526020600020905b815481529060010190602001808311610ad457829003601f168201915b505050505081565b60608180610b195760405162461bcd60e51b81526004016109059061273f565b606081604051908082528060200260200182016040528015610b5557816020015b610b42611bc5565b815260200190600190039081610b3a5790505b509050600085856000818110610b6757fe5b9050602002016020610b7c9190810190611fbf565b6001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec9190810190611ffc565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c619190810190611ffc565b905060005b84811015610d7957878782818110610c7a57fe5b9050602002016020610c8f9190810190611fbf565b6001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc757600080fd5b505afa158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cff9190810190611ffc565b6001600160a01b0316836001600160a01b031614610d2f5760405162461bcd60e51b81526004016109059061271f565b610d5a888883818110610d3e57fe5b9050602002016020610d539190810190611fbf565b8484610f67565b848281518110610d6657fe5b6020908102919091010152600101610c66565b50919695505050505050565b610d8d611bc5565b6000826001600160a01b0316636330533c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc857600080fd5b505afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e009190810190611ffc565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e759190810190611ffc565b9050610e82848383610f67565b925050505b919050565b600081604051602001610e9f919061268e565b6040516020818303038152906040528051906020012083604051602001610ec6919061268e565b6040516020818303038152906040528051906020012014905092915050565b6000610eef611b7c565b610ef984846119c4565b9050610f04816119ee565b949350505050565b6000610f428383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506119fd565b9392505050565b6000610f42610f6084670de0b6b3a7640000611a2d565b8351611a6f565b610f6f611bc5565b6000846001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b158015610faa57600080fd5b505afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fe2919081019061204f565b90506000806000866001600160a01b0316638e8f294b896040518263ffffffff1660e01b8152600401611015919061269a565b60606040518083038186803b15801561102d57600080fd5b505afa158015611041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110659190810190611f72565b9250925092506000806000806110ad8c6001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561031257600080fd5b156110bf57600093506012925061121f565b60008c9050806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fd57600080fd5b505afa158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111359190810190611e6e565b9450806001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561117057600080fd5b505afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111a89190810190611e6e565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112189190810190612111565b60ff169350505b600185600281111561122d57fe5b141561131a578b6001600160a01b031663d2bb18e96040518163ffffffff1660e01b815260040160206040518083038186803b15801561126c57600080fd5b505afa158015611280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a4919081019061204f565b91508b6001600160a01b03166319a4dd3c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611317919081019061204f565b90505b604051806102c001604052808d6001600160a01b031681526020018981526020018d6001600160a01b031663b1d389746040518163ffffffff1660e01b815260040160206040518083038186803b15801561137457600080fd5b505afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113ac919081019061204f565b81526020018d6001600160a01b031663526097506040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ea57600080fd5b505afa1580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611422919081019061204f565b81526020018d6001600160a01b031663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561146057600080fd5b505afa158015611474573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611498919081019061204f565b81526020018d6001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061150e919081019061204f565b81526020018d6001600160a01b0316638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154c57600080fd5b505afa158015611560573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611584919081019061204f565b81526020018d6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c257600080fd5b505afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115fa919081019061204f565b81526020018d6001600160a01b0316633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561163857600080fd5b505afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611670919081019061204f565b81526020018281526020018815158152602001878152602001856001600160a01b031681526020018d6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117099190810190612111565b60ff16815260200184815260200186600281111561172357fe5b81526020018381526020018b6001600160a01b031663fc57d4df8f6040518263ffffffff1660e01b815260040161175a9190612700565b60206040518083038186803b15801561177257600080fd5b505afa158015611786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117aa919081019061204f565b81526020018c6001600160a01b031663731f0c2b8f6040518263ffffffff1660e01b81526004016117db919061269a565b60206040518083038186803b1580156117f357600080fd5b505afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061182b9190810190611f54565b151581526020018c6001600160a01b0316636d154ea58f6040518263ffffffff1660e01b815260040161185e919061269a565b60206040518083038186803b15801561187657600080fd5b505afa15801561188a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118ae9190810190611f54565b151581526020018c6001600160a01b03166302c3bcbb8f6040518263ffffffff1660e01b81526004016118e1919061269a565b60206040518083038186803b1580156118f957600080fd5b505afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611931919081019061204f565b81526020018c6001600160a01b0316634a5844328f6040518263ffffffff1660e01b8152600401611962919061269a565b60206040518083038186803b15801561197a57600080fd5b505afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119b2919081019061204f565b90529c9b505050505050505050505050565b6119cc611b7c565b60405180602001604052806119e5856000015185611a2d565b90529392505050565b51670de0b6b3a7640000900490565b60008383018285821015611a245760405162461bcd60e51b8152600401610905919061270e565b50949350505050565b6000610f4283836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250611aa2565b6000610f4283836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250611aea565b6000831580611aaf575082155b15611abc57506000610f42565b83830283858281611ac957fe5b04148390611a245760405162461bcd60e51b8152600401610905919061270e565b60008183611b0b5760405162461bcd60e51b8152600401610905919061270e565b50828481611b1557fe5b04949350505050565b60405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060200160405280600081525090565b6040518060c001604052806060815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102c0016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160006002811115611c5b57fe5b8152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b80356101b781612889565b80516101b781612889565b60008083601f840112611cb757600080fd5b50813567ffffffffffffffff811115611ccf57600080fd5b602083019150836020820283011115611ce757600080fd5b9250929050565b600082601f830112611cff57600080fd5b8135611d12611d0d826127a5565b61277e565b91508181835260208401935060208101905083856020840282011115611d3757600080fd5b60005b83811015611d635781611d4d8882611de8565b8452506020928301929190910190600101611d3a565b5050505092915050565b600082601f830112611d7e57600080fd5b8151611d8c611d0d826127a5565b91508181835260208401935060208101905083856020840282011115611db157600080fd5b60005b83811015611d635781611dc78882611df3565b8452506020928301929190910190600101611db4565b80516101b78161289d565b80356101b7816128a6565b80516101b7816128a6565b80516101b7816128af565b600082601f830112611e1a57600080fd5b8151611e28611d0d826127c6565b91508082526020830160208301858383011115611e4457600080fd5b611e4f838284612846565b50505092915050565b80516101b7816128bc565b80516101b7816128c5565b600060208284031215611e8057600080fd5b6000610f048484611c9a565b60008060208385031215611e9f57600080fd5b823567ffffffffffffffff811115611eb657600080fd5b611ec285828601611ca5565b92509250509250929050565b600060208284031215611ee057600080fd5b815167ffffffffffffffff811115611ef757600080fd5b610f0484828501611d6d565b60008060408385031215611f1657600080fd5b823567ffffffffffffffff811115611f2d57600080fd5b611f3985828601611cee565b9250506020611f4a85828601611c8f565b9150509250929050565b600060208284031215611f6657600080fd5b6000610f048484611ddd565b600080600060608486031215611f8757600080fd5b6000611f938686611ddd565b9350506020611fa486828701611e58565b9250506040611fb586828701611dfe565b9150509250925092565b600060208284031215611fd157600080fd5b6000610f048484611de8565b60008060408385031215611ff057600080fd5b6000611f398585611de8565b60006020828403121561200e57600080fd5b6000610f048484611df3565b60006020828403121561202c57600080fd5b815167ffffffffffffffff81111561204357600080fd5b610f0484828501611e09565b60006020828403121561206157600080fd5b6000610f048484611e58565b60008060006060848603121561208257600080fd5b600061208e8686611e58565b935050602061209f86828701611e58565b9250506040611fb586828701611e58565b600080600080608085870312156120c657600080fd5b60006120d28787611e58565b94505060206120e387828801611e58565b93505060406120f487828801611e58565b925050606061210587828801611e58565b91505092959194509250565b60006020828403121561212357600080fd5b6000610f048484611e63565b600061213b838361227a565b505060200190565b600061214f8383612405565b50506101400190565b600061216483836124cc565b50506102c00190565b61217681612801565b82525050565b6000612187826127f4565b61219181856127f8565b935061219c836127ee565b8060005b838110156121ca5781516121b4888261212f565b97506121bf836127ee565b9250506001016121a0565b509495945050505050565b60006121e0826127f4565b6121ea81856127f8565b93506121f5836127ee565b8060005b838110156121ca57815161220d8882612143565b9750612218836127ee565b9250506001016121f9565b600061222e826127f4565b61223881856127f8565b9350612243836127ee565b8060005b838110156121ca57815161225b8882612158565b9750612266836127ee565b925050600101612247565b6121768161280c565b61217681612811565b6121768161283b565b6000612297826127f4565b6122a181856127f8565b93506122b1818560208601612846565b6122ba81612872565b9093019392505050565b60006122cf826127f4565b6122d98185610e87565b93506122e9818560208601612846565b9290920192915050565b60006123006013836127f8565b7236b4b9b6b0ba31b4103537b2ba3937b63632b960691b815260200192915050565b600061232f601b836127f8565b7f43616e277420676574206163636f756e74206c69717569646974790000000000815260200192915050565b6000612368600d836127f8565b6c1a5b9d985b1a59081a5b9c1d5d609a1b815260200192915050565b805160c08084526000919084019061239c828261217c565b91505060208301516123b16020860182612685565b5060408301516123c46040860182612685565b5060608301516123d76060860182612685565b5060808301516123ea6080860182612685565b5060a08301516123fd60a0860182612685565b509392505050565b8051610140830190612417848261216d565b50602082015161242a6020850182612685565b50604082015161243d6040850182612685565b5060608201516124506060850182612685565b5060808201516124636080850182612685565b5060a082015161247660a0850182612685565b5060c082015161248960c0850182612685565b5060e082015161249c60e0850182612685565b506101008201516124b1610100850182612685565b506101208201516124c6610120850182612271565b50505050565b80516102c08301906124de848261216d565b5060208201516124f16020850182612685565b5060408201516125046040850182612685565b5060608201516125176060850182612685565b50608082015161252a6080850182612685565b5060a082015161253d60a0850182612685565b5060c082015161255060c0850182612685565b5060e082015161256360e0850182612685565b50610100820151612578610100850182612685565b5061012082015161258d610120850182612685565b506101408201516125a2610140850182612271565b506101608201516125b7610160850182612685565b506101808201516125cc61018085018261216d565b506101a08201516125e16101a0850182612685565b506101c08201516125f66101c0850182612685565b506101e082015161260b6101e0850182612283565b50610200820151612620610200850182612685565b50610220820151612635610220850182612685565b5061024082015161264a610240850182612271565b5061026082015161265f610260850182612271565b50610280820151612674610280850182612685565b506102a08201516124c66102a08501825b61217681612832565b6000610f4282846122c4565b602081016101b7828461216d565b604081016126b6828561216d565b610f42602083018461216d565b604081016126d1828561216d565b610f42602083018461227a565b60208082528101610f4281846121d5565b60208082528101610f428184612223565b602081016101b7828461227a565b60208082528101610f42818461228c565b602080825281016101b7816122f3565b602080825281016101b781612322565b602080825281016101b78161235b565b60208082528101610f428184612384565b61014081016101b78284612405565b6102c081016101b782846124cc565b60405181810167ffffffffffffffff8111828210171561279d57600080fd5b604052919050565b600067ffffffffffffffff8211156127bc57600080fd5b5060209081020190565b600067ffffffffffffffff8211156127dd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b60006101b782612826565b151590565b60006101b782612801565b80610e878161287c565b6001600160a01b031690565b90565b60ff1690565b60006101b78261281c565b60005b83811015612861578181015183820152602001612849565b838111156124c65750506000910152565b601f01601f191690565b6003811061288657fe5b50565b61289281612801565b811461288657600080fd5b6128928161280c565b61289281612811565b6003811061288657600080fd5b61289281612832565b6128928161283556fea365627a7a72315820eef397349815284f014bb84b04388eaceebda969d9d42447a36a732988d45ced6c6578706572696d656e74616cf564736f6c63430005100040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
