{
  "_format": "hh-sol-artifact-1",
  "contractName": "SequencerChainlinkOracle",
  "sourceName": "contracts/oracles/SequencerChainlinkOracle.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract AggregatorV3Interface",
          "name": "_sequencer",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "calledContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "methodSignature",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccessControlManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccessControlManager",
          "type": "address"
        }
      ],
      "name": "NewAccessControlManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousPriceMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPriceMantissa",
          "type": "uint256"
        }
      ],
      "name": "PricePosted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "feed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "name": "TokenConfigAdded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "GRACE_PERIOD_TIME",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "NATIVE_TOKEN_ADDR",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accessControlManager",
      "outputs": [
        {
          "internalType": "contract IAccessControlManagerV8",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "prices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sequencer",
      "outputs": [
        {
          "internalType": "contract AggregatorV3Interface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "setAccessControlManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setDirectPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feed",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxStalePeriod",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChainlinkOracle.TokenConfig",
          "name": "tokenConfig",
          "type": "tuple"
        }
      ],
      "name": "setTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feed",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxStalePeriod",
              "type": "uint256"
            }
          ],
          "internalType": "struct ChainlinkOracle.TokenConfig[]",
          "name": "tokenConfigs_",
          "type": "tuple[]"
        }
      ],
      "name": "setTokenConfigs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokenConfigs",
      "outputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "feed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561000f575f80fd5b506040516118cb3803806118cb83398101604081905261002e9161012e565b610036610076565b6001600160a01b0381166100655760405162461bcd60e51b815260040161005c90610154565b60405180910390fd5b6001600160a01b03166080526101d8565b5f54610100900460ff161561009d5760405162461bcd60e51b815260040161005c9061017e565b5f5460ff908116146100ef575f805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498916100e6916101c9565b60405180910390a15b565b5f6001600160a01b0382165b92915050565b5f6100fd826100f1565b61011681610103565b8114610120575f80fd5b50565b80516100fd8161010d565b5f60208284031215610141576101415f80fd5b5f61014c8484610123565b949350505050565b602080825281016100fd81600c81526b7a65726f206164647265737360a01b602082015260400190565b602080825281016100fd81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff82168152602081016100fd565b6080516116d46101f75f395f81816101d0015261083101526116d45ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c806379ba50971161009e578063c4d66de81161006e578063c4d66de814610255578063cfed246b14610268578063e30c397814610287578063ed2f860314610298578063f2fde38b146102a1575f80fd5b806379ba5097146102075780638da5cb5b1461020f578063a9534f8a14610229578063b4a0bdf314610244575f80fd5b8063392787d2116100d9578063392787d21461019857806341976e09146101ab5780635c1bba38146101cb578063715018a6146101ff575f80fd5b80630431710e1461010a57806309a8acb01461011f5780630e32cb86146101325780631b69dc5f14610145575b5f80fd5b61011d610118366004610e93565b6102b4565b005b61011d61012d366004610ecb565b610318565b61011d610140366004610f05565b6103de565b610180610153366004610f05565b60ca6020525f90815260409020805460018201546002909201546001600160a01b03918216929091169083565b60405161018f93929190610f38565b60405180910390f35b61011d6101a6366004610f60565b6103f2565b6101be6101b9366004610f05565b61053a565b60405161018f9190610f7e565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405161018f9190610fa9565b61011d61056e565b61011d610581565b6033546001600160a01b03165b60405161018f9190610fb7565b61021c73bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6097546001600160a01b03166101f2565b61011d610263366004610f05565b6105b6565b6101be610276366004610f05565b60c96020525f908152604090205481565b6065546001600160a01b031661021c565b6101be610e1081565b61011d6102af366004610f05565b610681565b80515f036102dd5760405162461bcd60e51b81526004016102d490610fef565b60405180910390fd5b80515f5b818110156103135761030b8382815181106102fe576102fe610fff565b60200260200101516103f2565b6001016102e1565b505050565b816001600160a01b03811661033f5760405162461bcd60e51b81526004016102d49061103e565b61037d6040518060400160405280601f81526020017f736574446972656374507269636528616464726573732c75696e7432353629008152506106f2565b6001600160a01b0383165f81815260c960205260409081902080549085905590519091907fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee906103d0908490879061104e565b60405180910390a250505050565b6103e6610789565b6103ef816107b3565b50565b80516001600160a01b03811661041a5760405162461bcd60e51b81526004016102d49061103e565b60208201516001600160a01b0381166104455760405162461bcd60e51b81526004016102d49061103e565b6104836040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e6669672900000000008152506106f2565b82604001515f036104a65760405162461bcd60e51b81526004016102d49061109c565b82516001600160a01b039081165f90815260ca6020908152604091829020865181549085166001600160a01b0319918216811783559288015160018301805496821696909216959095179055828701516002909101819055915190927f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f9261052d926110ac565b60405180910390a2505050565b5f61054361082c565b61055f5760405162461bcd60e51b81526004016102d4906110ed565b610568826108e8565b92915050565b610576610789565b61057f5f610993565b565b60655433906001600160a01b031681146105ad5760405162461bcd60e51b81526004016102d490611145565b6103ef81610993565b5f54610100900460ff16158080156105d457505f54600160ff909116105b806105ed5750303b1580156105ed57505f5460ff166001145b6106095760405162461bcd60e51b81526004016102d49061119f565b5f805460ff19166001179055801561062a575f805461ff0019166101001790555b610633826109ac565b801561067d575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610674906001906111c2565b60405180910390a15b5050565b610689610789565b606580546001600160a01b0383166001600160a01b031990911681179091556106ba6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab90610724903390869060040161120c565b602060405180830381865afa15801561073f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610763919061123f565b90508061067d57333083604051634a3fa29360e01b81526004016102d49392919061125d565b6033546001600160a01b0316331461057f5760405162461bcd60e51b81526004016102d4906112bb565b6001600160a01b0381166107d95760405162461bcd60e51b81526004016102d49061130c565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090610674908390859061131c565b5f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561088b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108af919061135f565b50509250925050610e1081426108c591906113e6565b1115806108d25750816001145b156108df575f9250505090565b60019250505090565b5f8073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0384160161091757506012610982565b5f839050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b919061140d565b60ff169150505b61098c83826109e3565b9392505050565b606580546001600160a01b03191690556103ef81610a41565b5f54610100900460ff166109d25760405162461bcd60e51b81526004016102d490611472565b6109da610a92565b6103ef81610ac0565b6001600160a01b0382165f90815260c960205260408120548015610a0957809150610a15565b610a1284610ae6565b91505b5f610a218460126113e6565b9050610a2e81600a61158e565b610a38908461159b565b95945050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610ab85760405162461bcd60e51b81526004016102d490611472565b61057f610cc1565b5f54610100900460ff166103e65760405162461bcd60e51b81526004016102d490611472565b6001600160a01b038082165f90815260ca602052604081205490911680610b1f5760405162461bcd60e51b81526004016102d49061103e565b6001600160a01b038084165f90815260ca6020908152604080832081516060810183528154861681526001820154909516858401819052600290910154858301819052825163313ce56760e01b81529251919490939092859263313ce567926004808401939192918290030181865afa158015610b9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc2919061140d565b610bcd9060126115ba565b60ff1690505f80846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c34919061135f565b509350509250505f8213610c5a5760405162461bcd60e51b81526004016102d490611608565b80421015610c7a5760405162461bcd60e51b81526004016102d49061164b565b4281900384811115610c9e5760405162461bcd60e51b81526004016102d49061168e565b610ca984600a61158e565b610cb3908461159b565b9a9950505050505050505050565b5f54610100900460ff16610ce75760405162461bcd60e51b81526004016102d490611472565b61057f33610993565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff82111715610d2a57610d2a610cf0565b6040525050565b5f610d3b60405190565b9050610d478282610d04565b919050565b5f67ffffffffffffffff821115610d6557610d65610cf0565b5060209081020190565b5f6001600160a01b038216610568565b610d8881610d6f565b81146103ef575f80fd5b803561056881610d7f565b80610d88565b803561056881610d9d565b5f60608284031215610dc157610dc15f80fd5b610dcb6060610d31565b90505f610dd88484610d92565b8252506020610de984848301610d92565b6020830152506040610dfd84828501610da3565b60408301525092915050565b5f610e1b610e1684610d4c565b610d31565b83815290506020810160608402830185811115610e3957610e395f80fd5b835b81811015610e5f5780610e4e8882610dae565b845250602090920191606001610e3b565b5050509392505050565b5f82601f830112610e7b57610e7b5f80fd5b8135610e8b848260208601610e09565b949350505050565b5f60208284031215610ea657610ea65f80fd5b813567ffffffffffffffff811115610ebf57610ebf5f80fd5b610e8b84828501610e69565b5f8060408385031215610edf57610edf5f80fd5b5f610eea8585610d92565b9250506020610efb85828601610da3565b9150509250929050565b5f60208284031215610f1857610f185f80fd5b5f610e8b8484610d92565b610f2c81610d6f565b82525050565b80610f2c565b60608101610f468286610f23565b610f536020830185610f23565b610e8b6040830184610f32565b5f60608284031215610f7357610f735f80fd5b5f610e8b8484610dae565b602081016105688284610f32565b5f61056882610d6f565b5f61056882610f8c565b610f2c81610f96565b602081016105688284610fa0565b602081016105688284610f23565b601181525f602082017006c656e6774682063616e2774206265203607c1b815291505b5060200190565b6020808252810161056881610fc5565b634e487b7160e01b5f52603260045260245ffd5b601581525f602082017463616e2774206265207a65726f206164647265737360581b81529150610fe8565b6020808252810161056881611013565b6040810161105c8285610f32565b61098c6020830184610f32565b601a81525f602082017f7374616c6520706572696f642063616e2774206265207a65726f00000000000081529150610fe8565b6020808252810161056881611069565b6040810161105c8285610f23565b601881525f602082017f4c322073657175656e63657220756e617661696c61626c65000000000000000081529150610fe8565b60208082528101610568816110ba565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b60208082528101610568816110fd565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061113e565b6020808252810161056881611155565b5f60ff8216610568565b610f2c816111af565b6020810161056882846111b9565b8281835e505f910152565b5f6111e4825190565b8084526020840193506111fb8185602086016111d0565b601f01601f19169290920192915050565b6040810161121a8285610f23565b8181036020830152610e8b81846111db565b801515610d88565b80516105688161122c565b5f60208284031215611252576112525f80fd5b5f610e8b8484611234565b6060810161126b8286610f23565b6112786020830185610f23565b8181036040830152610a3881846111db565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f610fe8565b602080825281016105688161128a565b602581525f602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061113e565b60208082528101610568816112cb565b6040810161132a8285610f23565b61098c6020830184610f23565b69ffffffffffffffffffff8116610d88565b805161056881611337565b805161056881610d9d565b5f805f805f60a08688031215611376576113765f80fd5b5f6113818888611349565b955050602061139288828901611354565b94505060406113a388828901611354565b93505060606113b488828901611354565b92505060806113c588828901611349565b9150509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610568576105686113d2565b60ff8116610d88565b8051610568816113f9565b5f60208284031215611420576114205f80fd5b5f610e8b8484611402565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061113e565b602080825281016105688161142b565b80825b60018511156114c1578086048111156114a0576114a06113d2565b60018516156114ae57908102905b80026114ba8560011c90565b9450611485565b94509492505050565b5f826114d85750600161098c565b816114e457505f61098c565b81600181146114fa576002811461150457611531565b600191505061098c565b60ff841115611515576115156113d2565b8360020a91508482111561152b5761152b6113d2565b5061098c565b5060208310610133831016604e8410600b8410161715611564575081810a8381111561155f5761155f6113d2565b61098c565b6115718484846001611482565b92509050818404811115611587576115876113d2565b0292915050565b5f61098c5f1984846114ca565b8181028082158382048514176115b3576115b36113d2565b5092915050565b60ff918216919081169082820390811115610568576105686113d2565b60208082527f636861696e6c696e6b207072696365206d75737420626520706f73697469766591019081525f610fe8565b60208082528101610568816115d7565b601c81525f602082017f757064617465644174206578636565647320626c6f636b2074696d650000000081529150610fe8565b6020808252810161056881611618565b601781525f602082017f636861696e6c696e6b207072696365206578706972656400000000000000000081529150610fe8565b602080825281016105688161165b56fea2646970667358221220e39bd41ebe25c13a22bacd86e087a69771fd8673e3645e265210555b7293cc5464736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806379ba50971161009e578063c4d66de81161006e578063c4d66de814610255578063cfed246b14610268578063e30c397814610287578063ed2f860314610298578063f2fde38b146102a1575f80fd5b806379ba5097146102075780638da5cb5b1461020f578063a9534f8a14610229578063b4a0bdf314610244575f80fd5b8063392787d2116100d9578063392787d21461019857806341976e09146101ab5780635c1bba38146101cb578063715018a6146101ff575f80fd5b80630431710e1461010a57806309a8acb01461011f5780630e32cb86146101325780631b69dc5f14610145575b5f80fd5b61011d610118366004610e93565b6102b4565b005b61011d61012d366004610ecb565b610318565b61011d610140366004610f05565b6103de565b610180610153366004610f05565b60ca6020525f90815260409020805460018201546002909201546001600160a01b03918216929091169083565b60405161018f93929190610f38565b60405180910390f35b61011d6101a6366004610f60565b6103f2565b6101be6101b9366004610f05565b61053a565b60405161018f9190610f7e565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b60405161018f9190610fa9565b61011d61056e565b61011d610581565b6033546001600160a01b03165b60405161018f9190610fb7565b61021c73bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6097546001600160a01b03166101f2565b61011d610263366004610f05565b6105b6565b6101be610276366004610f05565b60c96020525f908152604090205481565b6065546001600160a01b031661021c565b6101be610e1081565b61011d6102af366004610f05565b610681565b80515f036102dd5760405162461bcd60e51b81526004016102d490610fef565b60405180910390fd5b80515f5b818110156103135761030b8382815181106102fe576102fe610fff565b60200260200101516103f2565b6001016102e1565b505050565b816001600160a01b03811661033f5760405162461bcd60e51b81526004016102d49061103e565b61037d6040518060400160405280601f81526020017f736574446972656374507269636528616464726573732c75696e7432353629008152506106f2565b6001600160a01b0383165f81815260c960205260409081902080549085905590519091907fa0844d44570b5ec5ac55e9e7d1e7fc8149b4f33b4b61f3c8fc08bacce058faee906103d0908490879061104e565b60405180910390a250505050565b6103e6610789565b6103ef816107b3565b50565b80516001600160a01b03811661041a5760405162461bcd60e51b81526004016102d49061103e565b60208201516001600160a01b0381166104455760405162461bcd60e51b81526004016102d49061103e565b6104836040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e6669672900000000008152506106f2565b82604001515f036104a65760405162461bcd60e51b81526004016102d49061109c565b82516001600160a01b039081165f90815260ca6020908152604091829020865181549085166001600160a01b0319918216811783559288015160018301805496821696909216959095179055828701516002909101819055915190927f3cc8d9cb9370a23a8b9ffa75efa24cecb65c4693980e58260841adc474983c5f9261052d926110ac565b60405180910390a2505050565b5f61054361082c565b61055f5760405162461bcd60e51b81526004016102d4906110ed565b610568826108e8565b92915050565b610576610789565b61057f5f610993565b565b60655433906001600160a01b031681146105ad5760405162461bcd60e51b81526004016102d490611145565b6103ef81610993565b5f54610100900460ff16158080156105d457505f54600160ff909116105b806105ed5750303b1580156105ed57505f5460ff166001145b6106095760405162461bcd60e51b81526004016102d49061119f565b5f805460ff19166001179055801561062a575f805461ff0019166101001790555b610633826109ac565b801561067d575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610674906001906111c2565b60405180910390a15b5050565b610689610789565b606580546001600160a01b0383166001600160a01b031990911681179091556106ba6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab90610724903390869060040161120c565b602060405180830381865afa15801561073f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610763919061123f565b90508061067d57333083604051634a3fa29360e01b81526004016102d49392919061125d565b6033546001600160a01b0316331461057f5760405162461bcd60e51b81526004016102d4906112bb565b6001600160a01b0381166107d95760405162461bcd60e51b81526004016102d49061130c565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090610674908390859061131c565b5f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561088b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108af919061135f565b50509250925050610e1081426108c591906113e6565b1115806108d25750816001145b156108df575f9250505090565b60019250505090565b5f8073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0384160161091757506012610982565b5f839050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b919061140d565b60ff169150505b61098c83826109e3565b9392505050565b606580546001600160a01b03191690556103ef81610a41565b5f54610100900460ff166109d25760405162461bcd60e51b81526004016102d490611472565b6109da610a92565b6103ef81610ac0565b6001600160a01b0382165f90815260c960205260408120548015610a0957809150610a15565b610a1284610ae6565b91505b5f610a218460126113e6565b9050610a2e81600a61158e565b610a38908461159b565b95945050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610ab85760405162461bcd60e51b81526004016102d490611472565b61057f610cc1565b5f54610100900460ff166103e65760405162461bcd60e51b81526004016102d490611472565b6001600160a01b038082165f90815260ca602052604081205490911680610b1f5760405162461bcd60e51b81526004016102d49061103e565b6001600160a01b038084165f90815260ca6020908152604080832081516060810183528154861681526001820154909516858401819052600290910154858301819052825163313ce56760e01b81529251919490939092859263313ce567926004808401939192918290030181865afa158015610b9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc2919061140d565b610bcd9060126115ba565b60ff1690505f80846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c34919061135f565b509350509250505f8213610c5a5760405162461bcd60e51b81526004016102d490611608565b80421015610c7a5760405162461bcd60e51b81526004016102d49061164b565b4281900384811115610c9e5760405162461bcd60e51b81526004016102d49061168e565b610ca984600a61158e565b610cb3908461159b565b9a9950505050505050505050565b5f54610100900460ff16610ce75760405162461bcd60e51b81526004016102d490611472565b61057f33610993565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff82111715610d2a57610d2a610cf0565b6040525050565b5f610d3b60405190565b9050610d478282610d04565b919050565b5f67ffffffffffffffff821115610d6557610d65610cf0565b5060209081020190565b5f6001600160a01b038216610568565b610d8881610d6f565b81146103ef575f80fd5b803561056881610d7f565b80610d88565b803561056881610d9d565b5f60608284031215610dc157610dc15f80fd5b610dcb6060610d31565b90505f610dd88484610d92565b8252506020610de984848301610d92565b6020830152506040610dfd84828501610da3565b60408301525092915050565b5f610e1b610e1684610d4c565b610d31565b83815290506020810160608402830185811115610e3957610e395f80fd5b835b81811015610e5f5780610e4e8882610dae565b845250602090920191606001610e3b565b5050509392505050565b5f82601f830112610e7b57610e7b5f80fd5b8135610e8b848260208601610e09565b949350505050565b5f60208284031215610ea657610ea65f80fd5b813567ffffffffffffffff811115610ebf57610ebf5f80fd5b610e8b84828501610e69565b5f8060408385031215610edf57610edf5f80fd5b5f610eea8585610d92565b9250506020610efb85828601610da3565b9150509250929050565b5f60208284031215610f1857610f185f80fd5b5f610e8b8484610d92565b610f2c81610d6f565b82525050565b80610f2c565b60608101610f468286610f23565b610f536020830185610f23565b610e8b6040830184610f32565b5f60608284031215610f7357610f735f80fd5b5f610e8b8484610dae565b602081016105688284610f32565b5f61056882610d6f565b5f61056882610f8c565b610f2c81610f96565b602081016105688284610fa0565b602081016105688284610f23565b601181525f602082017006c656e6774682063616e2774206265203607c1b815291505b5060200190565b6020808252810161056881610fc5565b634e487b7160e01b5f52603260045260245ffd5b601581525f602082017463616e2774206265207a65726f206164647265737360581b81529150610fe8565b6020808252810161056881611013565b6040810161105c8285610f32565b61098c6020830184610f32565b601a81525f602082017f7374616c6520706572696f642063616e2774206265207a65726f00000000000081529150610fe8565b6020808252810161056881611069565b6040810161105c8285610f23565b601881525f602082017f4c322073657175656e63657220756e617661696c61626c65000000000000000081529150610fe8565b60208082528101610568816110ba565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b60208082528101610568816110fd565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061113e565b6020808252810161056881611155565b5f60ff8216610568565b610f2c816111af565b6020810161056882846111b9565b8281835e505f910152565b5f6111e4825190565b8084526020840193506111fb8185602086016111d0565b601f01601f19169290920192915050565b6040810161121a8285610f23565b8181036020830152610e8b81846111db565b801515610d88565b80516105688161122c565b5f60208284031215611252576112525f80fd5b5f610e8b8484611234565b6060810161126b8286610f23565b6112786020830185610f23565b8181036040830152610a3881846111db565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f610fe8565b602080825281016105688161128a565b602581525f602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061113e565b60208082528101610568816112cb565b6040810161132a8285610f23565b61098c6020830184610f23565b69ffffffffffffffffffff8116610d88565b805161056881611337565b805161056881610d9d565b5f805f805f60a08688031215611376576113765f80fd5b5f6113818888611349565b955050602061139288828901611354565b94505060406113a388828901611354565b93505060606113b488828901611354565b92505060806113c588828901611349565b9150509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610568576105686113d2565b60ff8116610d88565b8051610568816113f9565b5f60208284031215611420576114205f80fd5b5f610e8b8484611402565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061113e565b602080825281016105688161142b565b80825b60018511156114c1578086048111156114a0576114a06113d2565b60018516156114ae57908102905b80026114ba8560011c90565b9450611485565b94509492505050565b5f826114d85750600161098c565b816114e457505f61098c565b81600181146114fa576002811461150457611531565b600191505061098c565b60ff841115611515576115156113d2565b8360020a91508482111561152b5761152b6113d2565b5061098c565b5060208310610133831016604e8410600b8410161715611564575081810a8381111561155f5761155f6113d2565b61098c565b6115718484846001611482565b92509050818404811115611587576115876113d2565b0292915050565b5f61098c5f1984846114ca565b8181028082158382048514176115b3576115b36113d2565b5092915050565b60ff918216919081169082820390811115610568576105686113d2565b60208082527f636861696e6c696e6b207072696365206d75737420626520706f73697469766591019081525f610fe8565b60208082528101610568816115d7565b601c81525f602082017f757064617465644174206578636565647320626c6f636b2074696d650000000081529150610fe8565b6020808252810161056881611618565b601781525f602082017f636861696e6c696e6b207072696365206578706972656400000000000000000081529150610fe8565b602080825281016105688161165b56fea2646970667358221220e39bd41ebe25c13a22bacd86e087a69771fd8673e3645e265210555b7293cc5464736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
