{
  "_format": "hh-sol-artifact-1",
  "contractName": "PreCoordinator",
  "sourceName": "contracts/v0.6/PreCoordinator.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_link",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkFulfilled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "saId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "payment",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "minresponses",
          "type": "uint256"
        }
      ],
      "name": "NewServiceAgreement",
      "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": "bytes32",
          "name": "saId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "answer",
          "type": "int256"
        }
      ],
      "name": "ServiceAgreementAnswerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "saId",
          "type": "bytes32"
        }
      ],
      "name": "ServiceAgreementDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "saId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "payment",
          "type": "uint256"
        }
      ],
      "name": "ServiceAgreementRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "saId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "requestId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oracle",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "answer",
          "type": "int256"
        }
      ],
      "name": "ServiceAgreementResponseReceived",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_payment",
          "type": "uint256"
        },
        {
          "internalType": "bytes4",
          "name": "_callbackFunctionId",
          "type": "bytes4"
        },
        {
          "internalType": "uint256",
          "name": "_expiration",
          "type": "uint256"
        }
      ],
      "name": "cancelOracleRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_data",
          "type": "int256"
        }
      ],
      "name": "chainlinkCallback",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_minResponses",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_oracles",
          "type": "address[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_jobIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_payments",
          "type": "uint256[]"
        }
      ],
      "name": "createServiceAgreement",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "saId",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getChainlinkToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_saId",
          "type": "bytes32"
        }
      ],
      "name": "getServiceAgreement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalPayment",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minResponses",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "oracles",
          "type": "address[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "jobIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256[]",
          "name": "payments",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "onTokenTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_payment",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_saId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_callbackAddress",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "_callbackFunctionId",
          "type": "bytes4"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "oracleRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawLink",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260016004553480156200001657600080fd5b506040516200385738038062003857833981810160405260208110156200003c57600080fd5b5051600680546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b038116620000b257620000ac6001600160e01b03620000cd16565b620000c6565b620000c6816001600160e01b036200015e16565b5062000180565b6200015c73c89bd4e1632d3a43cb03aaad5262cbe4038bc5716001600160a01b03166338cc48316040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011f57600080fd5b505afa15801562000134573d6000803e3d6000fd5b505050506040513d60208110156200014b57600080fd5b50516001600160e01b036200015e16565b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6136c780620001906000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638da5cb5b11610081578063a4c0ed361161005b578063a4c0ed36146103a4578063af52c9811461046c578063f2fde38b14610575576100c9565b80638da5cb5b1461038c5780638dc654a2146103945780638f32d59b1461039c576100c9565b80636a9705b4116100b25780636a9705b4146101d75780636ee4d5531461020e578063834b55e01461025f576100c9565b8063165d35e1146100ce57806340429946146100ff575b600080fd5b6100d66105a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101d5600480360361010081101561011657600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013592604082013592606083013516917fffffffff000000000000000000000000000000000000000000000000000000006080820135169160a08201359160c081013591810190610100810160e082013564010000000081111561019657600080fd5b8201836020820111156101a857600080fd5b803590602001918460018302840111640100000000831117156101ca57600080fd5b5090925090506105b8565b005b6101fa600480360360408110156101ed57600080fd5b5080359060200135610a77565b604080519115158252519081900360200190f35b6101d56004803603608081101561022457600080fd5b508035906020810135907fffffffff000000000000000000000000000000000000000000000000000000006040820135169060600135611033565b61037a6004803603608081101561027557600080fd5b8135919081019060408101602082013564010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b9193909290916020810190356401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184602083028401116401000000008311171561031d57600080fd5b91939092909160208101903564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184602083028401116401000000008311171561036f57600080fd5b509092509050611379565b60408051918252519081900360200190f35b6100d6611728565b6101d5611744565b6101fa611974565b6101d5600480360360608110156103ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611992945050505050565b6104896004803603602081101561048257600080fd5b5035611ca5565b60405180868152602001858152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156104dd5781810151838201526020016104c5565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561051c578181015183820152602001610504565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561055b578181015183820152602001610543565b505050509050019850505050505050505060405180910390f35b6101d56004803603602081101561058b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611df1565b60006105b2611e6d565b90505b90565b6105c06105a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d75737420757365204c494e4b20746f6b656e00000000000000000000000000604482015290519081900360640190fd5b85610662611e6d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742063616c6c6261636b20746f204c494e4b000000000000000000604482015290519081900360640190fd5b600088815260086020526040902054808a101561077a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e74207061796d656e74000000000000000000000000604482015290519081900360640190fd5b604080517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608e901b1660208083019190915260348083018a905283518084039091018152605490920183528151918101919091206000818152600a90925291902054640100000000900473ffffffffffffffffffffffffffffffffffffffff161561086857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f6e636520616c726561647920696e2d757365000000000000000000000000604482015290519081900360640190fd5b87600a600083815260200190815260200160002060000160006101000a81548163ffffffff021916908360e01c021790555088600a600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600a600083815260200190815260200160002060000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109858a8287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e8992505050565b818b1115610a6957600061099f8c8463ffffffff61213816565b905060006109ab611e6d565b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8f846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b5051610a6657fe5b50505b505050505050505050505050565b600082815260056020526040812054839073ffffffffffffffffffffffffffffffffffffffff163314610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061366a6028913960400191505060405180910390fd5b60008181526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555182917f7cc135e0cebb02c3480ae5d74d377283180a2601f8f644edf7987b009316c63a91a2610b58613416565b60008581526009602090815260408083205483526008825291829020825160a0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015610beb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bc0575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610c4357602002820191906000526020600020905b815481526020019060010190808311610c2f575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015610c9b57602002820191906000526020600020905b815481526020019060010190808311610c87575b505050919092525050506000868152600b60209081526040808320805460098452828520805492869055949094558151898152915194955092933392859285927f6bd4bffa5426494ba16814dba4b1994c92f88f7664ad231cf8aa811fff6e925e929181900390910190a46000828152600a6020908152604082206002018054600181018255908352912001869055610d32613445565b6000838152600a6020908152604091829020825160808101845281547fffffffff0000000000000000000000000000000000000000000000000000000060e082901b16825273ffffffffffffffffffffffffffffffffffffffff640100000000909104811682850152600183015416818501526002820180548551818602810186019096528086529194929360608601939290830182828015610df457602002820191906000526020600020905b815481526020019060010190808311610de0575b50505050508152505090508360400151518160600151511415610e80576000838152600a6020526040812080547fffffffffffffffff0000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590610e7d600283018261346b565b50505b60208401516060820151516001911415611027576000610ea383606001516121b4565b905084847fe991444bc589ce1a82e7cbe4e5ebaa8aaa2a5c44964bd32d2af07dd846a638ba836040518082815260200191505060405180910390a36040808401518451825160248101899052604480820186905284518083039091018152606490910184526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921782529251835173ffffffffffffffffffffffffffffffffffffffff9093169392909182918083835b60208310610fb957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f7c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461101b576040519150601f19603f3d011682016040523d82523d6000602084013e611020565b606091505b5090925050505b98975050505050505050565b6000848152600b60209081526040808320805490849055600990925282209190915561105d613445565b6000828152600a6020908152604091829020825160808101845281547fffffffff0000000000000000000000000000000000000000000000000000000060e082901b16825273ffffffffffffffffffffffffffffffffffffffff64010000000090910481168285015260018301541681850152600282018054855181860281018601909652808652919492936060860193929083018282801561111f57602002820191906000526020600020905b81548152602001906001019080831161110b575b50505050508152505090503373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16146111c857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f6e6c79207265717565737465722063616e2063616e63656c00000000000000604482015290519081900360640190fd5b6000828152600a6020526040812080547fffffffffffffffff0000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590611234600283018261346b565b5050611242868686866121cf565b600061124c611e6d565b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8360200151886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112d957600080fd5b505af11580156112ed573d6000803e3d6000fd5b505050506040513d602081101561130357600080fd5b505161137057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e61626c6520746f207472616e736665720000000000000000000000000000604482015290519081900360640190fd5b50505050505050565b60008088116113e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4d696e20726573706f6e736573206d757374206265203e203000000000000000604482015290519081900360640190fd5b85841480156113f757508582145b61146257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e6d6574206c656e6774680000000000000000000000000000000000000000604482015290519081900360640190fd5b602d8611156114d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f43616e6e6f742068617665206d6f7265207468616e203435206f7261636c6573604482015290519081900360640190fd5b8786101561154157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c6964206d696e20726573706f6e7365730000000000000000000000604482015290519081900360640190fd5b6000805b8381101561157c5761157285858381811061155c57fe5b905060200201358361230a90919063ffffffff16565b9150600101611545565b5060078054604080516020808201849052428284015282518083038401815260608301808552815191830191909120600190950190955561010082018352858552608082018e905282518c820281810183019094528c815293965060a090910192918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a9182918501908490808284376000920191909152505050908252506040805160208781028281018201909352878252928301929091889188918291850190849080828437600092018290525093909452505084815260086020908152604091829020845181558482015160018201559184015180519293506116a49260028501929190910190613489565b50606082015180516116c0916003840191602090910190613513565b50608082015180516116dc916004840191602090910190613513565b505060408051838152602081018c905281518593507f1df950b8dca286fff2ebb83642851b5a9db00ff4bc87815828e845b45d183eaf929181900390910190a250979650505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b61174c611974565b6117b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006117c1611e6d565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925073ffffffffffffffffffffffffffffffffffffffff83169163a9059cbb91339184916370a08231916024808301926020929190829003018186803b15801561183a57600080fd5b505afa15801561184e573d6000803e3d6000fd5b505050506040513d602081101561186457600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091525160448083019260209291908290030181600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b505050506040513d602081101561190457600080fd5b505161197157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e61626c6520746f207472616e736665720000000000000000000000000000604482015290519081900360640190fd5b50565b60065473ffffffffffffffffffffffffffffffffffffffff16331490565b61199a6105a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d75737420757365204c494e4b20746f6b656e00000000000000000000000000604482015290519081900360640190fd5b8051819060441115611aa657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c69642072657175657374206c656e67746800000000000000000000604482015290519081900360640190fd5b602082015182907fffffffff0000000000000000000000000000000000000000000000000000000081167f404299460000000000000000000000000000000000000000000000000000000014611b5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d757374207573652077686974656c69737465642066756e6374696f6e730000604482015290519081900360640190fd5b85602485015284604485015260003073ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b60208310611bd057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b93565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611c30576040519150601f19603f3d011682016040523d82523d6000602084013e611c35565b606091505b505090508061137057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e61626c6520746f2063726561746520726571756573740000000000000000604482015290519081900360640190fd5b600081815260086020908152604080832080546001820154600283018054855181880281018801909652808652879660609687968796959493600382019360049092019291859190830182828015611d3357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611d08575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015611d8557602002820191906000526020600020905b815481526020019060010190808311611d71575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611dd757602002820191906000526020600020905b815481526020019060010190808311611dc3575b505050505090509450945094509450945091939590929450565b611df9611974565b611e6457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61197181612385565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b611e91613416565b600084815260086020908152604091829020825160a0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611f1a57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611eef575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611f7257602002820191906000526020600020905b815481526020019060010190808311611f5e575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611fca57602002820191906000526020600020905b815481526020019060010190808311611fb6575b5050505050815250509050600081602001511161204857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420736572766963652061677265656d656e7400000000000000604482015290519081900360640190fd5b61205061355a565b81516040805191825251600091869188917f0d3e7811af83862cbc3778c66d787596cdb580e0dbc448d99f21c865770a8432919081900360200190a360005b836040015151811015611370576120c5846060015182815181106120af57fe5b602002602001015130636a9705b460e01b61247f565b92506120d7838663ffffffff6124aa16565b612110846040015182815181106120ea57fe5b6020026020010151848660800151848151811061210357fe5b60200260200101516124cd565b6000818152600b602090815260408083208a905560099091529020889055915060010161208f565b6000828211156121a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60006121c76121c28361270a565b612798565b90505b919050565b60008481526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909155905173ffffffffffffffffffffffffffffffffffffffff9091169186917fe1fe3afa0f7f761ff0a8b89086790efd5140d2907ebd5b7ff6bfcb5e075fd4c59190a2604080517f6ee4d55300000000000000000000000000000000000000000000000000000000815260048101879052602481018690527fffffffff000000000000000000000000000000000000000000000000000000008516604482015260648101849052905173ffffffffffffffffffffffffffffffffffffffff831691636ee4d55391608480830192600092919082900301818387803b1580156122eb57600080fd5b505af11580156122ff573d6000803e3d6000fd5b505050505050505050565b60008282018381101561237e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166123f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136006026913960400191505060405180910390fd5b60065460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61248761355a565b61248f61355a565b6124a18186868663ffffffff61286216565b95945050505050565b6124b9826080015182516128cd565b506124c8826080015182612907565b505050565b6004546040805130606090811b60208084019190915260348084018690528451808503909101815260549093018452825192810192909220908601939093526000838152600590915281812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055905182917fb5e6e01e79f91267dc17b4e6314d5d4d03593d2ceee0fbb452b750bd70ea5af991a260025473ffffffffffffffffffffffffffffffffffffffff16634000aea085846125a787612921565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561262b578181015183820152602001612613565b50505050905090810190601f1680156126585780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561267957600080fd5b505af115801561268d573d6000803e3d6000fd5b505050506040513d60208110156126a357600080fd5b50516126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136266023913960400191505060405180910390fd5b6004805460010190559392505050565b606080825167ffffffffffffffff8111801561272557600080fd5b5060405190808252806020026020018201604052801561274f578160200160208202803683370190505b50905060005b83518110156127915783818151811061276a57fe5b602002602001015182828151811061277e57fe5b6020908102919091010152600101612755565b5092915050565b6000815160001061280a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6c697374206d757374206e6f7420626520656d70747900000000000000000000604482015290519081900360640190fd5b815160028104600182166128495760008061282f866000600187036001870387612b0a565b909250905061283e8282612be8565b9450505050506121ca565b6128598460006001850384612c56565b925050506121ca565b61286a61355a565b61287a85608001516101006128cd565b505082845273ffffffffffffffffffffffffffffffffffffffff821660208501527fffffffff0000000000000000000000000000000000000000000000000000000081166040850152835b949350505050565b6128d561358f565b60208206156128ea5760208206602003820191505b506020828101829052604080518085526000815290920101905290565b61290f61358f565b61237e83846000015151848551612ce7565b6060634042994660e01b60008084600001518560200151866040015187606001516001896080015160000151604051602401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a4d578181015183820152602001612a35565b50505050905090810190601f168015612a7a5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c17909b5250989950505050505050505050919050565b600080828410612b1957600080fd5b838611158015612b295750848411155b612b3257600080fd5b828611158015612b425750848311155b612b4b57600080fd5b60078686031015612b6c57612b638787878787612dcf565b91509150612bde565b6000612b79888888613286565b9050808411612b8a57809550612bd8565b84811015612b9d57806001019650612bd8565b808511158015612bac57508381105b612bb257fe5b612bbe88888388612c56565b9250612bcf88826001018887612c56565b9150612bde9050565b50612b4b565b9550959350505050565b60008083128015612bf95750600082135b80612c0f5750600083138015612c0f5750600082125b15612c2f576002612c208484613363565b81612c2757fe5b0590506121ae565b60006002808507818507010590506128c5612c506002860560028605613363565b82613363565b600081841115612c6557600080fd5b82821115612c7257600080fd5b82841015612cc95760078484031015612c9e576000612c948686868687612dcf565b5091506128c59050565b6000612cab868686613286565b9050808311612cbc57809350612cc3565b8060010194505b50612c72565b848481518110612cd557fe5b60200260200101519050949350505050565b612cef61358f565b8251821115612cfd57600080fd5b84602001518285011115612d2757612d2785612d1f87602001518786016133e2565b6002026133f9565b600080865180518760208301019350808887011115612d465787860182525b505050602084015b60208410612d8b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101612d4e565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b600080600086866001010390506000888860000181518110612ded57fe5b60200260200101519050600082600110612e27577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e3f565b898960010181518110612e3657fe5b60200260200101515b9050600083600210612e71577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e89565b8a8a60020181518110612e8057fe5b60200260200101515b9050600084600310612ebb577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612ed3565b8b8b60030181518110612eca57fe5b60200260200101515b9050600085600410612f05577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612f1d565b8c8c60040181518110612f1457fe5b60200260200101515b9050600086600510612f4f577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612f67565b8d8d60050181518110612f5e57fe5b60200260200101515b9050600087600610612f99577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612fb1565b8e8e60060181518110612fa857fe5b60200260200101515b905085871315612fbf579495945b83851315612fcb579293925b81831315612fd7579091905b84871315612fe3579395935b83861315612fef579294925b80831315612ff957915b84861315613005579394935b8082131561300f57905b8287131561301b579195915b81861315613027579094905b8085131561303157935b8286131561303d579194915b8084131561304757925b82851315613053579193915b8184131561305f579092905b8284131561306b579192915b8d8c038061307b57879a50613148565b806001141561308c57869a50613148565b806002141561309d57859a50613148565b80600314156130ae57849a50613148565b80600414156130bf57839a50613148565b80600514156130d057829a50613148565b80600614156130e157819a50613148565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6b31206f7574206f6620626f756e647300000000000000000000000000000000604482015290519081900360640190fd5b8e8c038d8d141561316657508a9950612bde98505050505050505050565b8061317d5750969850612bde975050505050505050565b80600114156131985750959850612bde975050505050505050565b80600214156131b35750949850612bde975050505050505050565b80600314156131ce5750939850612bde975050505050505050565b80600414156131e95750929850612bde975050505050505050565b80600514156132045750919850612bde975050505050505050565b806006141561321f5750909850612bde975050505050505050565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6b32206f7574206f6620626f756e647300000000000000000000000000000000604482015290519081900360640190fd5b600080846002858501048151811061329a57fe5b602002602001015190506001840393506001830192505b600184019350808585815181106132c457fe5b6020026020010151126132b1575b600183039250808584815181106132e557fe5b6020026020010151136132d257828410156133555784838151811061330657fe5b602002602001015185858151811061331a57fe5b602002602001015186868151811061332e57fe5b6020026020010187868151811061334157fe5b60209081029190910101919091525261335e565b8291505061237e565b6132b1565b60008282018183128015906133785750838112155b8061338d575060008312801561338d57508381125b61237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136496021913960400191505060405180910390fd5b6000818311156133f35750816121ae565b50919050565b815161340583836128cd565b506134108382612907565b50505050565b6040518060a0016040528060008152602001600081526020016060815260200160608152602001606081525090565b604080516080810182526000808252602082018190529181019190915260608082015290565b508054600082559060005260206000209081019061197191906135a9565b828054828255906000526020600020908101928215613503579160200282015b8281111561350357825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906134a9565b5061350f9291506135c3565b5090565b82805482825590600052602060002090810192821561354e579160200282015b8281111561354e578251825591602001919060010190613533565b5061350f9291506135a9565b6040805160a08101825260008082526020820181905291810182905260608101919091526080810161358a61358f565b905290565b604051806040016040528060608152602001600081525090565b6105b591905b8082111561350f57600081556001016135af565b6105b591905b8082111561350f5780547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001016135c956fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373756e61626c6520746f207472616e73666572416e6443616c6c20746f206f7261636c655369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77536f75726365206d75737420626520746865206f7261636c65206f66207468652072657175657374a264697066735822122032a19a624362ce6f9859a9c94237a1ab6348a192a92e391fdf194e6dfc2a5e7e64736f6c63430006060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80638da5cb5b11610081578063a4c0ed361161005b578063a4c0ed36146103a4578063af52c9811461046c578063f2fde38b14610575576100c9565b80638da5cb5b1461038c5780638dc654a2146103945780638f32d59b1461039c576100c9565b80636a9705b4116100b25780636a9705b4146101d75780636ee4d5531461020e578063834b55e01461025f576100c9565b8063165d35e1146100ce57806340429946146100ff575b600080fd5b6100d66105a8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101d5600480360361010081101561011657600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013592604082013592606083013516917fffffffff000000000000000000000000000000000000000000000000000000006080820135169160a08201359160c081013591810190610100810160e082013564010000000081111561019657600080fd5b8201836020820111156101a857600080fd5b803590602001918460018302840111640100000000831117156101ca57600080fd5b5090925090506105b8565b005b6101fa600480360360408110156101ed57600080fd5b5080359060200135610a77565b604080519115158252519081900360200190f35b6101d56004803603608081101561022457600080fd5b508035906020810135907fffffffff000000000000000000000000000000000000000000000000000000006040820135169060600135611033565b61037a6004803603608081101561027557600080fd5b8135919081019060408101602082013564010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b9193909290916020810190356401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184602083028401116401000000008311171561031d57600080fd5b91939092909160208101903564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184602083028401116401000000008311171561036f57600080fd5b509092509050611379565b60408051918252519081900360200190f35b6100d6611728565b6101d5611744565b6101fa611974565b6101d5600480360360608110156103ba57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611992945050505050565b6104896004803603602081101561048257600080fd5b5035611ca5565b60405180868152602001858152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156104dd5781810151838201526020016104c5565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561051c578181015183820152602001610504565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561055b578181015183820152602001610543565b505050509050019850505050505050505060405180910390f35b6101d56004803603602081101561058b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611df1565b60006105b2611e6d565b90505b90565b6105c06105a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d75737420757365204c494e4b20746f6b656e00000000000000000000000000604482015290519081900360640190fd5b85610662611e6d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742063616c6c6261636b20746f204c494e4b000000000000000000604482015290519081900360640190fd5b600088815260086020526040902054808a101561077a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e74207061796d656e74000000000000000000000000604482015290519081900360640190fd5b604080517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608e901b1660208083019190915260348083018a905283518084039091018152605490920183528151918101919091206000818152600a90925291902054640100000000900473ffffffffffffffffffffffffffffffffffffffff161561086857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f6e636520616c726561647920696e2d757365000000000000000000000000604482015290519081900360640190fd5b87600a600083815260200190815260200160002060000160006101000a81548163ffffffff021916908360e01c021790555088600a600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600a600083815260200190815260200160002060000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109858a8287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e8992505050565b818b1115610a6957600061099f8c8463ffffffff61213816565b905060006109ab611e6d565b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8f846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b5051610a6657fe5b50505b505050505050505050505050565b600082815260056020526040812054839073ffffffffffffffffffffffffffffffffffffffff163314610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061366a6028913960400191505060405180910390fd5b60008181526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555182917f7cc135e0cebb02c3480ae5d74d377283180a2601f8f644edf7987b009316c63a91a2610b58613416565b60008581526009602090815260408083205483526008825291829020825160a0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015610beb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bc0575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610c4357602002820191906000526020600020905b815481526020019060010190808311610c2f575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015610c9b57602002820191906000526020600020905b815481526020019060010190808311610c87575b505050919092525050506000868152600b60209081526040808320805460098452828520805492869055949094558151898152915194955092933392859285927f6bd4bffa5426494ba16814dba4b1994c92f88f7664ad231cf8aa811fff6e925e929181900390910190a46000828152600a6020908152604082206002018054600181018255908352912001869055610d32613445565b6000838152600a6020908152604091829020825160808101845281547fffffffff0000000000000000000000000000000000000000000000000000000060e082901b16825273ffffffffffffffffffffffffffffffffffffffff640100000000909104811682850152600183015416818501526002820180548551818602810186019096528086529194929360608601939290830182828015610df457602002820191906000526020600020905b815481526020019060010190808311610de0575b50505050508152505090508360400151518160600151511415610e80576000838152600a6020526040812080547fffffffffffffffff0000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590610e7d600283018261346b565b50505b60208401516060820151516001911415611027576000610ea383606001516121b4565b905084847fe991444bc589ce1a82e7cbe4e5ebaa8aaa2a5c44964bd32d2af07dd846a638ba836040518082815260200191505060405180910390a36040808401518451825160248101899052604480820186905284518083039091018152606490910184526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921782529251835173ffffffffffffffffffffffffffffffffffffffff9093169392909182918083835b60208310610fb957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f7c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461101b576040519150601f19603f3d011682016040523d82523d6000602084013e611020565b606091505b5090925050505b98975050505050505050565b6000848152600b60209081526040808320805490849055600990925282209190915561105d613445565b6000828152600a6020908152604091829020825160808101845281547fffffffff0000000000000000000000000000000000000000000000000000000060e082901b16825273ffffffffffffffffffffffffffffffffffffffff64010000000090910481168285015260018301541681850152600282018054855181860281018601909652808652919492936060860193929083018282801561111f57602002820191906000526020600020905b81548152602001906001019080831161110b575b50505050508152505090503373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16146111c857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f6e6c79207265717565737465722063616e2063616e63656c00000000000000604482015290519081900360640190fd5b6000828152600a6020526040812080547fffffffffffffffff0000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590611234600283018261346b565b5050611242868686866121cf565b600061124c611e6d565b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8360200151886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112d957600080fd5b505af11580156112ed573d6000803e3d6000fd5b505050506040513d602081101561130357600080fd5b505161137057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e61626c6520746f207472616e736665720000000000000000000000000000604482015290519081900360640190fd5b50505050505050565b60008088116113e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4d696e20726573706f6e736573206d757374206265203e203000000000000000604482015290519081900360640190fd5b85841480156113f757508582145b61146257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e6d6574206c656e6774680000000000000000000000000000000000000000604482015290519081900360640190fd5b602d8611156114d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f43616e6e6f742068617665206d6f7265207468616e203435206f7261636c6573604482015290519081900360640190fd5b8786101561154157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c6964206d696e20726573706f6e7365730000000000000000000000604482015290519081900360640190fd5b6000805b8381101561157c5761157285858381811061155c57fe5b905060200201358361230a90919063ffffffff16565b9150600101611545565b5060078054604080516020808201849052428284015282518083038401815260608301808552815191830191909120600190950190955561010082018352858552608082018e905282518c820281810183019094528c815293965060a090910192918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a9182918501908490808284376000920191909152505050908252506040805160208781028281018201909352878252928301929091889188918291850190849080828437600092018290525093909452505084815260086020908152604091829020845181558482015160018201559184015180519293506116a49260028501929190910190613489565b50606082015180516116c0916003840191602090910190613513565b50608082015180516116dc916004840191602090910190613513565b505060408051838152602081018c905281518593507f1df950b8dca286fff2ebb83642851b5a9db00ff4bc87815828e845b45d183eaf929181900390910190a250979650505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b61174c611974565b6117b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006117c1611e6d565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925073ffffffffffffffffffffffffffffffffffffffff83169163a9059cbb91339184916370a08231916024808301926020929190829003018186803b15801561183a57600080fd5b505afa15801561184e573d6000803e3d6000fd5b505050506040513d602081101561186457600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091525160448083019260209291908290030181600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b505050506040513d602081101561190457600080fd5b505161197157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e61626c6520746f207472616e736665720000000000000000000000000000604482015290519081900360640190fd5b50565b60065473ffffffffffffffffffffffffffffffffffffffff16331490565b61199a6105a8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d75737420757365204c494e4b20746f6b656e00000000000000000000000000604482015290519081900360640190fd5b8051819060441115611aa657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c69642072657175657374206c656e67746800000000000000000000604482015290519081900360640190fd5b602082015182907fffffffff0000000000000000000000000000000000000000000000000000000081167f404299460000000000000000000000000000000000000000000000000000000014611b5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d757374207573652077686974656c69737465642066756e6374696f6e730000604482015290519081900360640190fd5b85602485015284604485015260003073ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b60208310611bd057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b93565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611c30576040519150601f19603f3d011682016040523d82523d6000602084013e611c35565b606091505b505090508061137057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e61626c6520746f2063726561746520726571756573740000000000000000604482015290519081900360640190fd5b600081815260086020908152604080832080546001820154600283018054855181880281018801909652808652879660609687968796959493600382019360049092019291859190830182828015611d3357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611d08575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015611d8557602002820191906000526020600020905b815481526020019060010190808311611d71575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611dd757602002820191906000526020600020905b815481526020019060010190808311611dc3575b505050505090509450945094509450945091939590929450565b611df9611974565b611e6457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61197181612385565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b611e91613416565b600084815260086020908152604091829020825160a0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611f1a57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611eef575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611f7257602002820191906000526020600020905b815481526020019060010190808311611f5e575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611fca57602002820191906000526020600020905b815481526020019060010190808311611fb6575b5050505050815250509050600081602001511161204857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420736572766963652061677265656d656e7400000000000000604482015290519081900360640190fd5b61205061355a565b81516040805191825251600091869188917f0d3e7811af83862cbc3778c66d787596cdb580e0dbc448d99f21c865770a8432919081900360200190a360005b836040015151811015611370576120c5846060015182815181106120af57fe5b602002602001015130636a9705b460e01b61247f565b92506120d7838663ffffffff6124aa16565b612110846040015182815181106120ea57fe5b6020026020010151848660800151848151811061210357fe5b60200260200101516124cd565b6000818152600b602090815260408083208a905560099091529020889055915060010161208f565b6000828211156121a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60006121c76121c28361270a565b612798565b90505b919050565b60008481526005602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909155905173ffffffffffffffffffffffffffffffffffffffff9091169186917fe1fe3afa0f7f761ff0a8b89086790efd5140d2907ebd5b7ff6bfcb5e075fd4c59190a2604080517f6ee4d55300000000000000000000000000000000000000000000000000000000815260048101879052602481018690527fffffffff000000000000000000000000000000000000000000000000000000008516604482015260648101849052905173ffffffffffffffffffffffffffffffffffffffff831691636ee4d55391608480830192600092919082900301818387803b1580156122eb57600080fd5b505af11580156122ff573d6000803e3d6000fd5b505050505050505050565b60008282018381101561237e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166123f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136006026913960400191505060405180910390fd5b60065460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61248761355a565b61248f61355a565b6124a18186868663ffffffff61286216565b95945050505050565b6124b9826080015182516128cd565b506124c8826080015182612907565b505050565b6004546040805130606090811b60208084019190915260348084018690528451808503909101815260549093018452825192810192909220908601939093526000838152600590915281812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055905182917fb5e6e01e79f91267dc17b4e6314d5d4d03593d2ceee0fbb452b750bd70ea5af991a260025473ffffffffffffffffffffffffffffffffffffffff16634000aea085846125a787612921565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561262b578181015183820152602001612613565b50505050905090810190601f1680156126585780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561267957600080fd5b505af115801561268d573d6000803e3d6000fd5b505050506040513d60208110156126a357600080fd5b50516126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136266023913960400191505060405180910390fd5b6004805460010190559392505050565b606080825167ffffffffffffffff8111801561272557600080fd5b5060405190808252806020026020018201604052801561274f578160200160208202803683370190505b50905060005b83518110156127915783818151811061276a57fe5b602002602001015182828151811061277e57fe5b6020908102919091010152600101612755565b5092915050565b6000815160001061280a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6c697374206d757374206e6f7420626520656d70747900000000000000000000604482015290519081900360640190fd5b815160028104600182166128495760008061282f866000600187036001870387612b0a565b909250905061283e8282612be8565b9450505050506121ca565b6128598460006001850384612c56565b925050506121ca565b61286a61355a565b61287a85608001516101006128cd565b505082845273ffffffffffffffffffffffffffffffffffffffff821660208501527fffffffff0000000000000000000000000000000000000000000000000000000081166040850152835b949350505050565b6128d561358f565b60208206156128ea5760208206602003820191505b506020828101829052604080518085526000815290920101905290565b61290f61358f565b61237e83846000015151848551612ce7565b6060634042994660e01b60008084600001518560200151866040015187606001516001896080015160000151604051602401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a4d578181015183820152602001612a35565b50505050905090810190601f168015612a7a5780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c17909b5250989950505050505050505050919050565b600080828410612b1957600080fd5b838611158015612b295750848411155b612b3257600080fd5b828611158015612b425750848311155b612b4b57600080fd5b60078686031015612b6c57612b638787878787612dcf565b91509150612bde565b6000612b79888888613286565b9050808411612b8a57809550612bd8565b84811015612b9d57806001019650612bd8565b808511158015612bac57508381105b612bb257fe5b612bbe88888388612c56565b9250612bcf88826001018887612c56565b9150612bde9050565b50612b4b565b9550959350505050565b60008083128015612bf95750600082135b80612c0f5750600083138015612c0f5750600082125b15612c2f576002612c208484613363565b81612c2757fe5b0590506121ae565b60006002808507818507010590506128c5612c506002860560028605613363565b82613363565b600081841115612c6557600080fd5b82821115612c7257600080fd5b82841015612cc95760078484031015612c9e576000612c948686868687612dcf565b5091506128c59050565b6000612cab868686613286565b9050808311612cbc57809350612cc3565b8060010194505b50612c72565b848481518110612cd557fe5b60200260200101519050949350505050565b612cef61358f565b8251821115612cfd57600080fd5b84602001518285011115612d2757612d2785612d1f87602001518786016133e2565b6002026133f9565b600080865180518760208301019350808887011115612d465787860182525b505050602084015b60208410612d8b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101612d4e565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b600080600086866001010390506000888860000181518110612ded57fe5b60200260200101519050600082600110612e27577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e3f565b898960010181518110612e3657fe5b60200260200101515b9050600083600210612e71577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e89565b8a8a60020181518110612e8057fe5b60200260200101515b9050600084600310612ebb577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612ed3565b8b8b60030181518110612eca57fe5b60200260200101515b9050600085600410612f05577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612f1d565b8c8c60040181518110612f1457fe5b60200260200101515b9050600086600510612f4f577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612f67565b8d8d60050181518110612f5e57fe5b60200260200101515b9050600087600610612f99577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612fb1565b8e8e60060181518110612fa857fe5b60200260200101515b905085871315612fbf579495945b83851315612fcb579293925b81831315612fd7579091905b84871315612fe3579395935b83861315612fef579294925b80831315612ff957915b84861315613005579394935b8082131561300f57905b8287131561301b579195915b81861315613027579094905b8085131561303157935b8286131561303d579194915b8084131561304757925b82851315613053579193915b8184131561305f579092905b8284131561306b579192915b8d8c038061307b57879a50613148565b806001141561308c57869a50613148565b806002141561309d57859a50613148565b80600314156130ae57849a50613148565b80600414156130bf57839a50613148565b80600514156130d057829a50613148565b80600614156130e157819a50613148565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6b31206f7574206f6620626f756e647300000000000000000000000000000000604482015290519081900360640190fd5b8e8c038d8d141561316657508a9950612bde98505050505050505050565b8061317d5750969850612bde975050505050505050565b80600114156131985750959850612bde975050505050505050565b80600214156131b35750949850612bde975050505050505050565b80600314156131ce5750939850612bde975050505050505050565b80600414156131e95750929850612bde975050505050505050565b80600514156132045750919850612bde975050505050505050565b806006141561321f5750909850612bde975050505050505050565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6b32206f7574206f6620626f756e647300000000000000000000000000000000604482015290519081900360640190fd5b600080846002858501048151811061329a57fe5b602002602001015190506001840393506001830192505b600184019350808585815181106132c457fe5b6020026020010151126132b1575b600183039250808584815181106132e557fe5b6020026020010151136132d257828410156133555784838151811061330657fe5b602002602001015185858151811061331a57fe5b602002602001015186868151811061332e57fe5b6020026020010187868151811061334157fe5b60209081029190910101919091525261335e565b8291505061237e565b6132b1565b60008282018183128015906133785750838112155b8061338d575060008312801561338d57508381125b61237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136496021913960400191505060405180910390fd5b6000818311156133f35750816121ae565b50919050565b815161340583836128cd565b506134108382612907565b50505050565b6040518060a0016040528060008152602001600081526020016060815260200160608152602001606081525090565b604080516080810182526000808252602082018190529181019190915260608082015290565b508054600082559060005260206000209081019061197191906135a9565b828054828255906000526020600020908101928215613503579160200282015b8281111561350357825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906134a9565b5061350f9291506135c3565b5090565b82805482825590600052602060002090810192821561354e579160200282015b8281111561354e578251825591602001919060010190613533565b5061350f9291506135a9565b6040805160a08101825260008082526020820181905291810182905260608101919091526080810161358a61358f565b905290565b604051806040016040528060608152602001600081525090565b6105b591905b8082111561350f57600081556001016135af565b6105b591905b8082111561350f5780547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001016135c956fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373756e61626c6520746f207472616e73666572416e6443616c6c20746f206f7261636c655369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77536f75726365206d75737420626520746865206f7261636c65206f66207468652072657175657374a264697066735822122032a19a624362ce6f9859a9c94237a1ab6348a192a92e391fdf194e6dfc2a5e7e64736f6c63430006060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
