{
  "_format": "hh-sol-artifact-1",
  "contractName": "OracleAggregator",
  "sourceName": "solidity/contracts/OracleAggregator.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_initialOracles",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "_superAdmin",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_initialAdmins",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "notOracle",
          "type": "address"
        }
      ],
      "name": "AddressIsNotOracle",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "PairCannotBeSupported",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "PairNotSupportedYet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract ITokenPriceOracle",
          "name": "oracle",
          "type": "address"
        }
      ],
      "name": "OracleAssigned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "oracles",
          "type": "address[]"
        }
      ],
      "name": "OracleListUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SUPER_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "addOrModifySupportForPair",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "addSupportForPairIfNeeded",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        }
      ],
      "name": "assignedOracle",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract ITokenPriceOracle",
              "name": "oracle",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "forced",
              "type": "bool"
            }
          ],
          "internalType": "struct IOracleAggregator.OracleAssignment",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "availableOracles",
      "outputs": [
        {
          "internalType": "contract ITokenPriceOracle[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        }
      ],
      "name": "canSupportPair",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_oracle",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "forceOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        }
      ],
      "name": "isPairAlreadySupported",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        }
      ],
      "name": "previewAddOrModifySupportForPair",
      "outputs": [
        {
          "internalType": "contract ITokenPriceOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenIn",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amountIn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_tokenOut",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "quote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_oracles",
          "type": "address[]"
        }
      ],
      "name": "setAvailableOracles",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002a7538038062002a75833981016040819052620000349162000515565b6001600160a01b0382166200005c5760405163d92e233d60e01b815260040160405180910390fd5b6200007760008051602062002a358339815191528062000209565b620000a160008051602062002a5583398151915260008051602062002a3583398151915262000209565b620000bc60008051602062002a358339815191528362000254565b60005b81518110156200011b576200010660008051602062002a55833981519152838381518110620000f257620000f262000591565b60200260200101516200025460201b60201c565b806200011281620005a7565b915050620000bf565b50825115620002005760005b8351811015620001c5576200015e8482815181106200014a576200014a62000591565b60200260200101516200026460201b60201c565b600184828151811062000175576200017562000591565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905580620001bc81620005a7565b91505062000127565b507f4efb62009eb193dd19be50e5c6da31fc1215a76d6f0f3fd7d34f3b867d1e48bb83604051620001f79190620005cf565b60405180910390a15b5050506200061e565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b620002608282620002b4565b5050565b60006200028482633d7499ff60e01b6200035460201b62000d801760201c565b905080620002605760405163559f975560e01b81526001600160a01b038316600482015260240160405180910390fd5b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000260576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003103390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000361836200037c565b8015620003755750620003758383620003b5565b9392505050565b600062000391826301ffc9a760e01b620003b5565b8015620003af5750620003ad826001600160e01b0319620003b5565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801562000428575060208210155b8015620004355750600081115b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200046e57600080fd5b919050565b600082601f8301126200048557600080fd5b815160206001600160401b0380831115620004a457620004a462000440565b8260051b604051601f19603f83011681018181108482111715620004cc57620004cc62000440565b604052938452858101830193838101925087851115620004eb57600080fd5b83870191505b848210156200043557620005058262000456565b83529183019190830190620004f1565b6000806000606084860312156200052b57600080fd5b83516001600160401b03808211156200054357600080fd5b620005518783880162000473565b9450620005616020870162000456565b935060408601519150808211156200057857600080fd5b50620005878682870162000473565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201620005c857634e487b7160e01b600052601160045260246000fd5b5060010190565b6020808252825182820181905260009190848201906040850190845b81811015620006125783516001600160a01b031683529284019291840191600101620005eb565b50909695505050505050565b612407806200062e6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806376d1c875116100cd578063ac9650d811610081578063d0a26eb311610066578063d0a26eb31461039e578063d547741f146103b1578063dd7de37e146103c457600080fd5b8063ac9650d81461036b578063d08a8a191461038b57600080fd5b806391d14854116100b257806391d148541461030c5780639363edd614610350578063a217fddf1461036357600080fd5b806376d1c875146102c157806390407de2146102d457600080fd5b806336568abe116101245780635da1ac92116101095780635da1ac9214610272578063734273fd1461028757806375b238fc1461029a57600080fd5b806336568abe146102385780634460bdd61461024b57600080fd5b8063248a9ca311610155578063248a9ca3146101ae57806326c6df95146101df5780632f2ff15d1461022557600080fd5b806301ffc9a71461017157806314369fb414610199575b600080fd5b61018461017f366004611bab565b6103d7565b60405190151581526020015b60405180910390f35b6101ac6101a7366004611c5f565b610442565b005b6101d16101bc366004611cd5565b60009081526020819052604090206001015490565b604051908152602001610190565b6101f26101ed366004611cee565b61048c565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260209283015115159281019290925201610190565b6101ac610233366004611d21565b61050f565b6101ac610246366004611d21565b610539565b6101d17f7613a25ecc738585a232ad50a301178f12b3ba8887d13e138b523c4269c4768981565b61027a6105f1565b6040516101909190611d44565b610184610295366004611cee565b610660565b6101d17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6101ac6102cf366004611de3565b610755565b6102e76102e2366004611cee565b6109f3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b61018461031a366004611d21565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61018461035e366004611cee565b610a2a565b6101d1600081565b61037e610379366004611de3565b610af2565b6040516101909190611e93565b6101d1610399366004611f13565b610be7565b6101ac6103ac366004611f49565b610d0a565b6101ac6103bf366004611d21565b610d2a565b6101ac6103d2366004611f49565b610d4f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f89c0592400000000000000000000000000000000000000000000000000000000148061042d575061042d82610da3565b8061043c575061043c82610e3a565b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561046c81610edc565b61047584610ee9565b61048486868686866001610f66565b505050505050565b6040805180820190915260008082526020820152600260006104ae8585611103565b8152602080820192909252604090810160002081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900460ff16151591810191909152905092915050565b60008281526020819052604090206001015461052a81610edc565b6105348383611173565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146105e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6105ed8282611263565b5050565b6060600180548060200260200160405190810160405280929190818152602001828054801561065657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161062b575b5050505050905090565b600154600090815b8181101561074a576001818154811061068357610683611faa565b6000918252602090912001546040517f734273fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015286811660248301529091169063734273fd90604401602060405180830381865afa158015610704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107289190611fd9565b156107385760019250505061043c565b806107428161202a565b915050610668565b506000949350505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561077f81610edc565b60015460008382106107915783610793565b815b905060005b81811015610869576107cf8686838181106107b5576107b5611faa565b90506020020160208101906107ca9190612062565b610ee9565b8585828181106107e1576107e1611faa565b90506020020160208101906107f69190612062565b6001828154811061080957610809611faa565b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055806108618161202a565b915050610798565b84831015610926575b848110156109215761088f8686838181106107b5576107b5611faa565b60018686838181106108a3576108a3611faa565b90506020020160208101906108b89190612062565b81546001810183556000928352602090922090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055806109198161202a565b915050610872565b6109b2565b848311156109b2575b828110156109b25760018054806109485761094861207d565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055806109aa8161202a565b91505061092f565b7f4efb62009eb193dd19be50e5c6da31fc1215a76d6f0f3fd7d34f3b867d1e48bb86866040516109e39291906120ac565b60405180910390a1505050505050565b600080610a00848461048c565b9050610a0d84848361131a565b610a18578051610a22565b610a228484611405565b949350505050565b600080610a37848461048c565b51905073ffffffffffffffffffffffffffffffffffffffff811615801590610a2257506040517f9363edd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152821690639363edd690604401602060405180830381865afa158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190611fd9565b60608167ffffffffffffffff811115610b0d57610b0d612105565b604051908082528060200260200182016040528015610b4057816020015b6060815260200190600190039081610b2b5790505b50905060005b82811015610be057610bb030858584818110610b6457610b64611faa565b9050602002810190610b769190612134565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114f492505050565b828281518110610bc257610bc2611faa565b60200260200101819052508080610bd89061202a565b915050610b46565b5092915050565b600080610bf4878661048c565b51905073ffffffffffffffffffffffffffffffffffffffff8116610c64576040517f75fcccb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8089166004830152861660248201526044016105da565b6040517fd08a8a1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063d08a8a1990610cbe908a908a908a908a908a906004016121e2565b602060405180830381865afa158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cff9190612222565b979650505050505050565b610d148484610a2a565b610d2457610d2484848484611519565b50505050565b600082815260208190526040902060010154610d4581610edc565b6105348383611263565b6000610d5b858561048c565b9050610d6885858361131a565b15610d7957610d7985858585611519565b5050505050565b6000610d8b836115a3565b8015610d9c5750610d9c8383611607565b9392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061043c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461043c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3d7499ff000000000000000000000000000000000000000000000000000000001480610ecd57507fffffffff0000000000000000000000000000000000000000000000000000000082167fac9650d800000000000000000000000000000000000000000000000000000000145b8061043c575061043c82610da3565b610ee681336116d2565b50565b6000610f15827f3d7499ff00000000000000000000000000000000000000000000000000000000610d80565b9050806105ed576040517f559f975500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105da565b6040517fdd7de37e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063dd7de37e90610fbe90899089908890889060040161223b565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018215158152506002600061102b8989611103565b81526020808201929092526040908101600020835181549490930151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941673ffffffffffffffffffffffffffffffffffffffff90931692909217929092179055517f0b22bdddf68b857630a7f1ff73afdb37c8179f2627c91e8351e59cdeb222e7f2906109e39088908890889073ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b600080600061111285856117a2565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b1660348201529193509150604801604051602081830303815290604052805190602001209250505092915050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166105ed5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112053390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105ed5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008160200151158061135b57503360009081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff165b80610a22575081516040517f9363edd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152858116602483015290911690639363edd690604401602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc9190611fd9565b15949350505050565b600154600090815b8181101561074a5760006001828154811061142a5761142a611faa565b6000918252602090912001546040517f734273fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529091169150819063734273fd90604401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190611fd9565b156114e157925061043c915050565b50806114ec8161202a565b91505061140d565b6060610d9c83836040518060600160405280602781526020016123ab602791396117ed565b60006115258585611405565b905073ffffffffffffffffffffffffffffffffffffffff8116611594576040517f2eb4e23d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8087166004830152851660248201526044016105da565b610d7985858386866000610f66565b60006115cf827f01ffc9a700000000000000000000000000000000000000000000000000000000611607565b801561043c5750611600827fffffffff00000000000000000000000000000000000000000000000000000000611607565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156116bf575060208210155b8015610cff575015159695505050505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166105ed576117288173ffffffffffffffffffffffffffffffffffffffff166014611915565b611733836020611915565b604051602001611744929190612275565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526105da916004016122f6565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106117df5782846117e2565b83835b909590945092505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016105da565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516118bb9190612309565b600060405180830381855af49150503d80600081146118f6576040519150601f19603f3d011682016040523d82523d6000602084013e6118fb565b606091505b509150915061190b828286611b58565b9695505050505050565b60606000611924836002612325565b61192f906002612362565b67ffffffffffffffff81111561194757611947612105565b6040519080825280601f01601f191660200182016040528015611971576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106119a8576119a8611faa565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611a0b57611a0b611faa565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611a47846002612325565b611a52906001612362565b90505b6001811115611aef577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a9357611a93611faa565b1a60f81b828281518110611aa957611aa9611faa565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611ae881612375565b9050611a55565b508315610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105da565b60608315611b67575081610d9c565b825115611b775782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da91906122f6565b600060208284031215611bbd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9c57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611c1157600080fd5b919050565b60008083601f840112611c2857600080fd5b50813567ffffffffffffffff811115611c4057600080fd5b602083019150836020828501011115611c5857600080fd5b9250929050565b600080600080600060808688031215611c7757600080fd5b611c8086611bed565b9450611c8e60208701611bed565b9350611c9c60408701611bed565b9250606086013567ffffffffffffffff811115611cb857600080fd5b611cc488828901611c16565b969995985093965092949392505050565b600060208284031215611ce757600080fd5b5035919050565b60008060408385031215611d0157600080fd5b611d0a83611bed565b9150611d1860208401611bed565b90509250929050565b60008060408385031215611d3457600080fd5b82359150611d1860208401611bed565b6020808252825182820181905260009190848201906040850190845b81811015611d9257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611d60565b50909695505050505050565b60008083601f840112611db057600080fd5b50813567ffffffffffffffff811115611dc857600080fd5b6020830191508360208260051b8501011115611c5857600080fd5b60008060208385031215611df657600080fd5b823567ffffffffffffffff811115611e0d57600080fd5b611e1985828601611d9e565b90969095509350505050565b60005b83811015611e40578181015183820152602001611e28565b50506000910152565b60008151808452611e61816020860160208601611e25565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f06577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611ef4858351611e49565b94509285019290850190600101611eba565b5092979650505050505050565b600080600080600060808688031215611f2b57600080fd5b611f3486611bed565b945060208601359350611c9c60408701611bed565b60008060008060608587031215611f5f57600080fd5b611f6885611bed565b9350611f7660208601611bed565b9250604085013567ffffffffffffffff811115611f9257600080fd5b611f9e87828801611c16565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611feb57600080fd5b81518015158114610d9c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361205b5761205b611ffb565b5060010190565b60006020828403121561207457600080fd5b610d9c82611bed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60208082528181018390526000908460408401835b868110156120fa5773ffffffffffffffffffffffffffffffffffffffff6120e784611bed565b16825291830191908301906001016120c1565b509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261216957600080fd5b83018035915067ffffffffffffffff82111561218457600080fd5b602001915036819003821315611c5857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835286602084015280861660408401525060806060830152610cff608083018486612199565b60006020828403121561223457600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506060604083015261190b606083018486612199565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516122ad816017850160208801611e25565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516122ea816028840160208801611e25565b01602801949350505050565b602081526000610d9c6020830184611e49565b6000825161231b818460208701611e25565b9190910192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561235d5761235d611ffb565b500290565b8082018082111561043c5761043c611ffb565b60008161238457612384611ffb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220542c82d60fff29dcaa3a4d556ec84559632061f0257621b7aae0f56b11b1c9ec64736f6c634300081000337613a25ecc738585a232ad50a301178f12b3ba8887d13e138b523c4269c47689a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c806376d1c875116100cd578063ac9650d811610081578063d0a26eb311610066578063d0a26eb31461039e578063d547741f146103b1578063dd7de37e146103c457600080fd5b8063ac9650d81461036b578063d08a8a191461038b57600080fd5b806391d14854116100b257806391d148541461030c5780639363edd614610350578063a217fddf1461036357600080fd5b806376d1c875146102c157806390407de2146102d457600080fd5b806336568abe116101245780635da1ac92116101095780635da1ac9214610272578063734273fd1461028757806375b238fc1461029a57600080fd5b806336568abe146102385780634460bdd61461024b57600080fd5b8063248a9ca311610155578063248a9ca3146101ae57806326c6df95146101df5780632f2ff15d1461022557600080fd5b806301ffc9a71461017157806314369fb414610199575b600080fd5b61018461017f366004611bab565b6103d7565b60405190151581526020015b60405180910390f35b6101ac6101a7366004611c5f565b610442565b005b6101d16101bc366004611cd5565b60009081526020819052604090206001015490565b604051908152602001610190565b6101f26101ed366004611cee565b61048c565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260209283015115159281019290925201610190565b6101ac610233366004611d21565b61050f565b6101ac610246366004611d21565b610539565b6101d17f7613a25ecc738585a232ad50a301178f12b3ba8887d13e138b523c4269c4768981565b61027a6105f1565b6040516101909190611d44565b610184610295366004611cee565b610660565b6101d17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6101ac6102cf366004611de3565b610755565b6102e76102e2366004611cee565b6109f3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b61018461031a366004611d21565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61018461035e366004611cee565b610a2a565b6101d1600081565b61037e610379366004611de3565b610af2565b6040516101909190611e93565b6101d1610399366004611f13565b610be7565b6101ac6103ac366004611f49565b610d0a565b6101ac6103bf366004611d21565b610d2a565b6101ac6103d2366004611f49565b610d4f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f89c0592400000000000000000000000000000000000000000000000000000000148061042d575061042d82610da3565b8061043c575061043c82610e3a565b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561046c81610edc565b61047584610ee9565b61048486868686866001610f66565b505050505050565b6040805180820190915260008082526020820152600260006104ae8585611103565b8152602080820192909252604090810160002081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900460ff16151591810191909152905092915050565b60008281526020819052604090206001015461052a81610edc565b6105348383611173565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146105e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6105ed8282611263565b5050565b6060600180548060200260200160405190810160405280929190818152602001828054801561065657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161062b575b5050505050905090565b600154600090815b8181101561074a576001818154811061068357610683611faa565b6000918252602090912001546040517f734273fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015286811660248301529091169063734273fd90604401602060405180830381865afa158015610704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107289190611fd9565b156107385760019250505061043c565b806107428161202a565b915050610668565b506000949350505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561077f81610edc565b60015460008382106107915783610793565b815b905060005b81811015610869576107cf8686838181106107b5576107b5611faa565b90506020020160208101906107ca9190612062565b610ee9565b8585828181106107e1576107e1611faa565b90506020020160208101906107f69190612062565b6001828154811061080957610809611faa565b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055806108618161202a565b915050610798565b84831015610926575b848110156109215761088f8686838181106107b5576107b5611faa565b60018686838181106108a3576108a3611faa565b90506020020160208101906108b89190612062565b81546001810183556000928352602090922090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055806109198161202a565b915050610872565b6109b2565b848311156109b2575b828110156109b25760018054806109485761094861207d565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055806109aa8161202a565b91505061092f565b7f4efb62009eb193dd19be50e5c6da31fc1215a76d6f0f3fd7d34f3b867d1e48bb86866040516109e39291906120ac565b60405180910390a1505050505050565b600080610a00848461048c565b9050610a0d84848361131a565b610a18578051610a22565b610a228484611405565b949350505050565b600080610a37848461048c565b51905073ffffffffffffffffffffffffffffffffffffffff811615801590610a2257506040517f9363edd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152821690639363edd690604401602060405180830381865afa158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190611fd9565b60608167ffffffffffffffff811115610b0d57610b0d612105565b604051908082528060200260200182016040528015610b4057816020015b6060815260200190600190039081610b2b5790505b50905060005b82811015610be057610bb030858584818110610b6457610b64611faa565b9050602002810190610b769190612134565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114f492505050565b828281518110610bc257610bc2611faa565b60200260200101819052508080610bd89061202a565b915050610b46565b5092915050565b600080610bf4878661048c565b51905073ffffffffffffffffffffffffffffffffffffffff8116610c64576040517f75fcccb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8089166004830152861660248201526044016105da565b6040517fd08a8a1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063d08a8a1990610cbe908a908a908a908a908a906004016121e2565b602060405180830381865afa158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cff9190612222565b979650505050505050565b610d148484610a2a565b610d2457610d2484848484611519565b50505050565b600082815260208190526040902060010154610d4581610edc565b6105348383611263565b6000610d5b858561048c565b9050610d6885858361131a565b15610d7957610d7985858585611519565b5050505050565b6000610d8b836115a3565b8015610d9c5750610d9c8383611607565b9392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061043c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461043c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3d7499ff000000000000000000000000000000000000000000000000000000001480610ecd57507fffffffff0000000000000000000000000000000000000000000000000000000082167fac9650d800000000000000000000000000000000000000000000000000000000145b8061043c575061043c82610da3565b610ee681336116d2565b50565b6000610f15827f3d7499ff00000000000000000000000000000000000000000000000000000000610d80565b9050806105ed576040517f559f975500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016105da565b6040517fdd7de37e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063dd7de37e90610fbe90899089908890889060040161223b565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018215158152506002600061102b8989611103565b81526020808201929092526040908101600020835181549490930151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941673ffffffffffffffffffffffffffffffffffffffff90931692909217929092179055517f0b22bdddf68b857630a7f1ff73afdb37c8179f2627c91e8351e59cdeb222e7f2906109e39088908890889073ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b600080600061111285856117a2565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b1660348201529193509150604801604051602081830303815290604052805190602001209250505092915050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166105ed5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112053390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156105ed5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008160200151158061135b57503360009081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff165b80610a22575081516040517f9363edd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152858116602483015290911690639363edd690604401602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc9190611fd9565b15949350505050565b600154600090815b8181101561074a5760006001828154811061142a5761142a611faa565b6000918252602090912001546040517f734273fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529091169150819063734273fd90604401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190611fd9565b156114e157925061043c915050565b50806114ec8161202a565b91505061140d565b6060610d9c83836040518060600160405280602781526020016123ab602791396117ed565b60006115258585611405565b905073ffffffffffffffffffffffffffffffffffffffff8116611594576040517f2eb4e23d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8087166004830152851660248201526044016105da565b610d7985858386866000610f66565b60006115cf827f01ffc9a700000000000000000000000000000000000000000000000000000000611607565b801561043c5750611600827fffffffff00000000000000000000000000000000000000000000000000000000611607565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156116bf575060208210155b8015610cff575015159695505050505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166105ed576117288173ffffffffffffffffffffffffffffffffffffffff166014611915565b611733836020611915565b604051602001611744929190612275565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526105da916004016122f6565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106117df5782846117e2565b83835b909590945092505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016105da565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516118bb9190612309565b600060405180830381855af49150503d80600081146118f6576040519150601f19603f3d011682016040523d82523d6000602084013e6118fb565b606091505b509150915061190b828286611b58565b9695505050505050565b60606000611924836002612325565b61192f906002612362565b67ffffffffffffffff81111561194757611947612105565b6040519080825280601f01601f191660200182016040528015611971576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106119a8576119a8611faa565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611a0b57611a0b611faa565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611a47846002612325565b611a52906001612362565b90505b6001811115611aef577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a9357611a93611faa565b1a60f81b828281518110611aa957611aa9611faa565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611ae881612375565b9050611a55565b508315610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105da565b60608315611b67575081610d9c565b825115611b775782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da91906122f6565b600060208284031215611bbd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9c57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611c1157600080fd5b919050565b60008083601f840112611c2857600080fd5b50813567ffffffffffffffff811115611c4057600080fd5b602083019150836020828501011115611c5857600080fd5b9250929050565b600080600080600060808688031215611c7757600080fd5b611c8086611bed565b9450611c8e60208701611bed565b9350611c9c60408701611bed565b9250606086013567ffffffffffffffff811115611cb857600080fd5b611cc488828901611c16565b969995985093965092949392505050565b600060208284031215611ce757600080fd5b5035919050565b60008060408385031215611d0157600080fd5b611d0a83611bed565b9150611d1860208401611bed565b90509250929050565b60008060408385031215611d3457600080fd5b82359150611d1860208401611bed565b6020808252825182820181905260009190848201906040850190845b81811015611d9257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611d60565b50909695505050505050565b60008083601f840112611db057600080fd5b50813567ffffffffffffffff811115611dc857600080fd5b6020830191508360208260051b8501011115611c5857600080fd5b60008060208385031215611df657600080fd5b823567ffffffffffffffff811115611e0d57600080fd5b611e1985828601611d9e565b90969095509350505050565b60005b83811015611e40578181015183820152602001611e28565b50506000910152565b60008151808452611e61816020860160208601611e25565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f06577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611ef4858351611e49565b94509285019290850190600101611eba565b5092979650505050505050565b600080600080600060808688031215611f2b57600080fd5b611f3486611bed565b945060208601359350611c9c60408701611bed565b60008060008060608587031215611f5f57600080fd5b611f6885611bed565b9350611f7660208601611bed565b9250604085013567ffffffffffffffff811115611f9257600080fd5b611f9e87828801611c16565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611feb57600080fd5b81518015158114610d9c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361205b5761205b611ffb565b5060010190565b60006020828403121561207457600080fd5b610d9c82611bed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60208082528181018390526000908460408401835b868110156120fa5773ffffffffffffffffffffffffffffffffffffffff6120e784611bed565b16825291830191908301906001016120c1565b509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261216957600080fd5b83018035915067ffffffffffffffff82111561218457600080fd5b602001915036819003821315611c5857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835286602084015280861660408401525060806060830152610cff608083018486612199565b60006020828403121561223457600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506060604083015261190b606083018486612199565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516122ad816017850160208801611e25565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516122ea816028840160208801611e25565b01602801949350505050565b602081526000610d9c6020830184611e49565b6000825161231b818460208701611e25565b9190910192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561235d5761235d611ffb565b500290565b8082018082111561043c5761043c611ffb565b60008161238457612384611ffb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220542c82d60fff29dcaa3a4d556ec84559632061f0257621b7aae0f56b11b1c9ec64736f6c63430008100033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
