{
  "_format": "hh-sol-artifact-1",
  "contractName": "Desmo",
  "sourceName": "contracts/Desmo.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "desmoHubAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "iexecproxy",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": "id",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "requestID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "taskID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes1[]",
              "name": "scores",
              "type": "bytes1[]"
            },
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "indexed": false,
          "internalType": "struct Desmo.QueryResult",
          "name": "result",
          "type": "tuple"
        }
      ],
      "name": "QueryCompleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "QueryFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "requestID",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "string[]",
              "name": "selectedTDDsURLs",
              "type": "string[]"
            },
            {
              "internalType": "address[]",
              "name": "selectedAddresses",
              "type": "address[]"
            }
          ],
          "indexed": false,
          "internalType": "struct Desmo.Request",
          "name": "request",
          "type": "tuple"
        }
      ],
      "name": "RequestCreated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "generateNewRequestID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "taskID",
          "type": "bytes32"
        }
      ],
      "name": "getQueryResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "requestID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "taskID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes1[]",
              "name": "scores",
              "type": "bytes1[]"
            },
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "internalType": "struct Desmo.QueryResult",
          "name": "result",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "requestID",
          "type": "bytes32"
        }
      ],
      "name": "getQueryResultByRequestID",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "requestID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "taskID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes1[]",
              "name": "scores",
              "type": "bytes1[]"
            },
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "internalType": "struct Desmo.QueryResult",
          "name": "result",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "iexecproxy",
      "outputs": [
        {
          "internalType": "contract IexecInterfaceToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_authorizedApp",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_authorizedDataset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_authorizedWorkerpool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_requiredtag",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_requiredtrust",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "taskID",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "receiveResult",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "authorizedApp",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "authorizedDataset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "authorizedWorkerpool",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "requiredtag",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "requiredtrust",
          "type": "uint256"
        }
      ],
      "name": "updateEnv",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000600755600460085560006009553480156200002057600080fd5b506040516200351c3803806200351c83398181016040528101906200004691906200032e565b808060006200005a620002f660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200010981620002fe60201b60201c565b15620001565780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200021a565b6200017b733eca1b216a7df1c7689aeb259ffb83adfb894e7f620002fe60201b60201c565b15620001dc57733eca1b216a7df1c7689aeb259ffb83adfb894e7f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000219565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021090620003df565b60405180910390fd5b5b505081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350783931306040518263ffffffff1660e01b8152600401620002ba9190620003c2565b600060405180830381600087803b158015620002d557600080fd5b505af1158015620002ea573d6000803e3d6000fd5b50505050505062000460565b600033905090565b600080823b905060008163ffffffff1611915050919050565b600081519050620003288162000446565b92915050565b600080604083850312156200034257600080fd5b6000620003528582860162000317565b9250506020620003658582860162000317565b9150509250929050565b6200037a8162000412565b82525050565b60006200038f601a8362000401565b91507f696e76616c69642d696578656370726f78792d616464726573730000000000006000830152602082019050919050565b6000602082019050620003d960008301846200036f565b92915050565b60006020820190508181036000830152620003fa8162000380565b9050919050565b600082825260208201905092915050565b60006200041f8262000426565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620004518162000412565b81146200045d57600080fd5b50565b6130ac80620004706000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806387ecbf591161008c578063e73482a211610066578063e73482a214610227578063f075b66614610245578063f2fde38b14610263578063f6eba5471461027f576100ea565b806387ecbf59146101bb5780638da5cb5b146101eb578063ca2ef3c414610209576100ea565b80635dd80855116100c85780635dd8085514610159578063715018a614610175578063745ec3a51461017f57806378dd4ae51461019d576100ea565b806318a4b2d0146100ef57806330d95cc21461010b578063482fb13e1461013b575b600080fd5b61010960048036038101906101049190612551565b61029d565b005b610125600480360381019061012091906125f1565b61032d565b6040516101329190612ce7565b60405180910390f35b610143610429565b6040516101509190612bc2565b60405180910390f35b610173600480360381019061016e9190612643565b61044f565b005b61017d61077e565b005b6101876108b8565b6040516101949190612c06565b60405180910390f35b6101a5610d38565b6040516101b29190612bc2565b60405180910390f35b6101d560048036038101906101d091906125f1565b610d5e565b6040516101e29190612ce7565b60405180910390f35b6101f3610e71565b6040516102009190612bc2565b60405180910390f35b610211610e9a565b60405161021e9190612bc2565b60405180910390f35b61022f610ec0565b60405161023c9190612d2b565b60405180910390f35b61024d610ec6565b60405161025a9190612c4a565b60405180910390f35b61027d60048036038101906102789190612528565b610eec565b005b610287611095565b6040516102949190612c06565b60405180910390f35b6102a561109b565b73ffffffffffffffffffffffffffffffffffffffff166102c3610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031090612ca7565b60405180910390fd5b61032685858585856110a3565b5050505050565b610335611acc565b60606103408361117b565b905060008151141561040a5760405180608001604052806000801b8152602001848152602001600067ffffffffffffffff8111801561037e57600080fd5b506040519080825280602002602001820160405280156103ad5781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff811180156103cb57600080fd5b506040519080825280601f01601f1916602001820160405280156103fe5781602001600182028036833780820191505090505b50815250915050610424565b610412611acc565b61041c84836111dc565b905080925050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061045a8361117b565b905060008151141561049957827feb5aa58d1e67e9901d4047208dd47e9ce1c853f98552ac3c9f8a618787ca19e660405160405180910390a25061077a565b6104a1611acc565b6104ab84836111dc565b90506060816040015190506104be611afa565b600a6000846000015181526020019081526020016000206040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156105cb578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105b75780601f1061058c576101008083540402835291602001916105b7565b820191906000526020600020905b81548152906001019060200180831161059a57829003601f168201915b50505050508152602001906001019061050f565b5050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561065857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161060e575b505050505081525050905060005b81604001515181101561073c57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db2ebdad836040015183815181106106c157fe5b60200260200101518584815181106106d557fe5b602002602001015160f81c6040518363ffffffff1660e01b81526004016106fd929190612bdd565b600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b505050508080600101915050610666565b50857f7ca910b273d9b3d1d24a628abe3b80aa058fb47c8cc762bc0d4839aefe43621a8460405161076d9190612ce7565b60405180910390a2505050505b5050565b61078661109b565b73ffffffffffffffffffffffffffffffffffffffff166107a4610e71565b73ffffffffffffffffffffffffffffffffffffffff16146107fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f190612ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060075460001b9050600060085490506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb7b608c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093457600080fd5b505afa158015610948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096c919061275a565b905060018110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990612cc7565b60405180910390fd5b600081600954816109bf57fe5b069050818311156109ce578192505b60008390506109db611afa565b60405180606001604052808781526020018367ffffffffffffffff81118015610a0357600080fd5b50604051908082528060200260200182016040528015610a3757816020015b6060815260200190600190039081610a225790505b5081526020018367ffffffffffffffff81118015610a5457600080fd5b50604051908082528060200260200182016040528015610a835781602001602082028036833780820191505090505b5081525090505b6000851115610c8157600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610aee9190612d2b565b60006040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b4391906126d8565b60200151816040015186840381518110610b5957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610bee9190612d2b565b60006040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4391906126d8565b60000151816020015186840381518110610c5957fe5b6020026020010181905250836001840181610c7057fe5b069250848060019003955050610a8a565b82600981905550600160076000828254019250508190555080600a6000888152602001908152602001600020600082015181600001556020820151816001019080519060200190610cd3929190611b1e565b506040820151816002019080519060200190610cf0929190611b7e565b50905050857f056ae828068d78df7bc67a1f01305cd45513887ee9abeed6b2b77eeb10d533d882604051610d249190612d09565b60405180910390a285965050505050505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d66611acc565b6000600b60008481526020019081526020016000205490506060610d898261117b565b9050600081511415610e51576040518060800160405280858152602001838152602001600067ffffffffffffffff81118015610dc457600080fd5b50604051908082528060200260200182016040528015610df35781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff81118015610e1157600080fd5b506040519080825280601f01601f191660200182016040528015610e445781602001600182028036833780820191505090505b5081525092505050610e6c565b610e59611acc565b610e6383836111dc565b90508093505050505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ef461109b565b73ffffffffffffffffffffffffffffffffffffffff16610f12610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90612c87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600033905090565b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600581905550806006819055505050505050565b60606000606061118a8461141c565b915091508181906111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c89190612c65565b60405180910390fd5b508092505050919050565b6111e4611acc565b60006020905060008084806020019051810190611201919061261a565b9050848360ff168151811061121257fe5b602001015160f81c60f81b60f81c915060608260ff1667ffffffffffffffff8111801561123e57600080fd5b5060405190808252806020026020018201604052801561126d5781602001602082028036833780820191505090505b50905060005b8360ff168160ff1610156113145760008760018388010160ff168151811061129757fe5b602001015160f81c60f81b905080838360ff16815181106112b457fe5b60200260200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050508080600101915050611273565b5060608360ff168560ff166001895103030367ffffffffffffffff8111801561133c57600080fd5b506040519080825280601f01601f19166020018201604052801561136f5781602001600182028036833780820191505090505b50905060005b81518160ff1610156113ed5787600182878901010160ff168151811061139757fe5b602001015160f81c60f81b828260ff16815181106113b157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050611375565b506040518060800160405280848152602001898152602001838152602001828152509550505050505092915050565b60006060611428611c08565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adccf0d5856040518263ffffffff1660e01b81526004016114839190612c06565b60006040518083038186803b15801561149b57600080fd5b505afa1580156114af573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114d89190612719565b90506114e2611c92565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b74861b283602001516040518263ffffffff1660e01b81526004016115419190612c06565b60006040518083038186803b15801561155957600080fd5b505afa15801561156d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115969190612697565b9050600360048111156115a557fe5b826000015160048111156115b557fe5b146115fd5760006040518060400160405280601481526020017f726573756c742d6e6f742d617661696c61626c6500000000000000000000000081525093509350505061199f565b3073ffffffffffffffffffffffffffffffffffffffff1681610100015173ffffffffffffffffffffffffffffffffffffffff161461165b5760006040518060600160405280602181526020016130566021913993509350505061199f565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156116ed57506116eb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600001516000015160046119a4565b155b156117355760006040518060400160405280601081526020017f756e617574686f72697a65642d6170700000000000000000000000000000000081525093509350505061199f565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156117c757506117c5600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682602001516000015160046119a4565b155b1561180f5760006040518060400160405280601481526020017f756e617574686f72697a65642d6461746173657400000000000000000000000081525093509350505061199f565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156118a1575061189f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604001516000015160046119a4565b155b156118e95760006040518060400160405280601781526020017f756e617574686f72697a65642d776f726b6572706f6f6c00000000000000000081525093509350505061199f565b6000801b8160a0015119600554161461193f5760006040518060400160405280600b81526020017f696e76616c69642d74616700000000000000000000000000000000000000000081525093509350505061199f565b806060015160065411156119905760006040518060400160405280600d81526020017f696e76616c69642d74727573740000000000000000000000000000000000000081525093509350505061199f565b6001826101c001519350935050505b915091565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119e35760019050611ac5565b8373ffffffffffffffffffffffffffffffffffffffff1663d202158d8473ffffffffffffffffffffffffffffffffffffffff1660001b846040518363ffffffff1660e01b8152600401611a37929190612c21565b60206040518083038186803b158015611a4f57600080fd5b505afa925050508015611a8057506040513d601f19601f82011682018060405250810190611a7d91906125c8565b60015b611ac0573d8060008114611ab0576040519150601f19603f3d011682016040523d82523d6000602084013e611ab5565b606091505b506000915050611ac5565b809150505b9392505050565b6040518060800160405280600080191681526020016000801916815260200160608152602001606081525090565b60405180606001604052806000801916815260200160608152602001606081525090565b828054828255906000526020600020908101928215611b6d579160200282015b82811115611b6c578251829080519060200190611b5c929190611d5f565b5091602001919060010190611b3e565b5b509050611b7a9190611ddf565b5090565b828054828255906000526020600020908101928215611bf7579160200282015b82811115611bf65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611b9e565b5b509050611c049190611e03565b5090565b604051806101e0016040528060006004811115611c2157fe5b815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815260200160008019168152602001600081526020016000815260200160608152602001600080191681526020016060815260200160008152602001606081525090565b604051806101e00160405280611ca6611e3e565b8152602001611cb3611e3e565b8152602001611cc0611e3e565b8152602001600081526020016000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611da057805160ff1916838001178555611dce565b82800160010185558215611dce579182015b82811115611dcd578251825591602001919060010190611db2565b5b509050611ddb9190611e8b565b5090565b5b80821115611dff5760008181611df69190611ea8565b50600101611de0565b5090565b5b80821115611e3a57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611e04565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b5b80821115611ea4576000816000905550600101611e8c565b5090565b50805460018160011615610100020316600290046000825580601f10611ece5750611eed565b601f016020900490600052602060002090810190611eec9190611e8b565b5b50565b600081359050611eff81612fe9565b92915050565b600081519050611f1481612fe9565b92915050565b600082601f830112611f2b57600080fd5b8151611f3e611f3982612d73565b612d46565b91508181835260208401935060208101905083856020840282011115611f6357600080fd5b60005b83811015611f935781611f798882611f05565b845260208401935060208301925050600181019050611f66565b5050505092915050565b600081519050611fac81613000565b92915050565b600081359050611fc181613017565b92915050565b600081519050611fd681613017565b92915050565b600082601f830112611fed57600080fd5b8135612000611ffb82612d9b565b612d46565b9150808252602083016020830185838301111561201c57600080fd5b612027838284612f96565b50505092915050565b600082601f83011261204157600080fd5b815161205461204f82612d9b565b612d46565b9150808252602083016020830185838301111561207057600080fd5b61207b838284612fa5565b50505092915050565b6000815190506120938161302e565b92915050565b600082601f8301126120aa57600080fd5b81516120bd6120b882612dc7565b612d46565b915080825260208301602083018583830111156120d957600080fd5b6120e4838284612fa5565b50505092915050565b60006102a0828403121561210057600080fd5b61210b6101e0612d46565b9050600061211b8482850161226a565b600083015250606061212f8482850161226a565b60208301525060c06121438482850161226a565b60408301525061012061215884828501612513565b60608301525061014061216d84828501612513565b60808301525061016061218284828501611fc7565b60a08301525061018061219784828501611f05565b60c0830152506101a06121ac84828501611f05565b60e0830152506101c06121c184828501611f05565b610100830152506101e082015167ffffffffffffffff8111156121e357600080fd5b6121ef84828501612099565b6101208301525061020061220584828501612513565b6101408301525061022061221b84828501612513565b6101608301525061024061223184828501612513565b6101808301525061026061224784828501612513565b6101a08301525061028061225d84828501612513565b6101c08301525092915050565b60006060828403121561227c57600080fd5b6122866060612d46565b9050600061229684828501611f05565b60008301525060206122aa84828501611f05565b60208301525060406122be84828501612513565b60408301525092915050565b6000608082840312156122dc57600080fd5b6122e66080612d46565b9050600082015167ffffffffffffffff81111561230257600080fd5b61230e84828501612099565b600083015250602061232284828501611f05565b602083015250604061233684828501611f9d565b604083015250606061234a84828501612513565b60608301525092915050565b60006101e0828403121561236957600080fd5b6123746101e0612d46565b9050600061238484828501612084565b600083015250602061239884828501611fc7565b60208301525060406123ac84828501612513565b60408301525060606123c084828501612513565b60608301525060806123d484828501612513565b60808301525060a06123e884828501612513565b60a08301525060c06123fc84828501612513565b60c08301525060e061241084828501611fc7565b60e08301525061010061242584828501612513565b6101008301525061012061243b84828501612513565b6101208301525061014082015167ffffffffffffffff81111561245d57600080fd5b61246984828501611f1a565b6101408301525061016061247f84828501611fc7565b6101608301525061018082015167ffffffffffffffff8111156124a157600080fd5b6124ad84828501612030565b610180830152506101a06124c384828501612513565b6101a0830152506101c082015167ffffffffffffffff8111156124e557600080fd5b6124f184828501612030565b6101c08301525092915050565b60008135905061250d8161303e565b92915050565b6000815190506125228161303e565b92915050565b60006020828403121561253a57600080fd5b600061254884828501611ef0565b91505092915050565b600080600080600060a0868803121561256957600080fd5b600061257788828901611ef0565b955050602061258888828901611ef0565b945050604061259988828901611ef0565b93505060606125aa88828901611fb2565b92505060806125bb888289016124fe565b9150509295509295909350565b6000602082840312156125da57600080fd5b60006125e884828501611f9d565b91505092915050565b60006020828403121561260357600080fd5b600061261184828501611fb2565b91505092915050565b60006020828403121561262c57600080fd5b600061263a84828501611fc7565b91505092915050565b6000806040838503121561265657600080fd5b600061266485828601611fb2565b925050602083013567ffffffffffffffff81111561268157600080fd5b61268d85828601611fdc565b9150509250929050565b6000602082840312156126a957600080fd5b600082015167ffffffffffffffff8111156126c357600080fd5b6126cf848285016120ed565b91505092915050565b6000602082840312156126ea57600080fd5b600082015167ffffffffffffffff81111561270457600080fd5b612710848285016122ca565b91505092915050565b60006020828403121561272b57600080fd5b600082015167ffffffffffffffff81111561274557600080fd5b61275184828501612356565b91505092915050565b60006020828403121561276c57600080fd5b600061277a84828501612513565b91505092915050565b600061278f83836127c7565b60208301905092915050565b60006127a78383612916565b60208301905092915050565b60006127bf838361298b565b905092915050565b6127d081612ee7565b82525050565b6127df81612ee7565b82525050565b60006127f082612e23565b6127fa8185612e81565b935061280583612df3565b8060005b8381101561283657815161281d8882612783565b975061282883612e5a565b925050600181019050612809565b5085935050505092915050565b600061284e82612e2e565b6128588185612e92565b935061286383612e03565b8060005b8381101561289457815161287b888261279b565b975061288683612e67565b925050600181019050612867565b5085935050505092915050565b60006128ac82612e39565b6128b68185612ea3565b9350836020820285016128c885612e13565b8060005b8581101561290457848403895281516128e585826127b3565b94506128f083612e74565b925060208a019950506001810190506128cc565b50829750879550505050505092915050565b61291f81612f05565b82525050565b61292e81612f31565b82525050565b61293d81612f31565b82525050565b600061294e82612e44565b6129588185612eb4565b9350612968818560208601612fa5565b61297181612fd8565b840191505092915050565b61298581612f72565b82525050565b600061299682612e4f565b6129a08185612ec5565b93506129b0818560208601612fa5565b6129b981612fd8565b840191505092915050565b60006129cf82612e4f565b6129d98185612ed6565b93506129e9818560208601612fa5565b6129f281612fd8565b840191505092915050565b6000612a0a602683612ed6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a70602083612ed6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612ab0601183612ed6565b91507f4e6f205444447320617661696c61626c650000000000000000000000000000006000830152602082019050919050565b6000608083016000830151612afb6000860182612925565b506020830151612b0e6020860182612925565b5060408301518482036040860152612b268282612843565b91505060608301518482036060860152612b408282612943565b9150508091505092915050565b6000606083016000830151612b656000860182612925565b5060208301518482036020860152612b7d82826128a1565b91505060408301518482036040860152612b9782826127e5565b9150508091505092915050565b612bad81612f5b565b82525050565b612bbc81612f65565b82525050565b6000602082019050612bd760008301846127d6565b92915050565b6000604082019050612bf260008301856127d6565b612bff6020830184612bb3565b9392505050565b6000602082019050612c1b6000830184612934565b92915050565b6000604082019050612c366000830185612934565b612c436020830184612ba4565b9392505050565b6000602082019050612c5f600083018461297c565b92915050565b60006020820190508181036000830152612c7f81846129c4565b905092915050565b60006020820190508181036000830152612ca0816129fd565b9050919050565b60006020820190508181036000830152612cc081612a63565b9050919050565b60006020820190508181036000830152612ce081612aa3565b9050919050565b60006020820190508181036000830152612d018184612ae3565b905092915050565b60006020820190508181036000830152612d238184612b4d565b905092915050565b6000602082019050612d406000830184612ba4565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612d6957600080fd5b8060405250919050565b600067ffffffffffffffff821115612d8a57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612db257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612dde57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ef282612f3b565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612f7d82612f84565b9050919050565b6000612f8f82612f3b565b9050919050565b82818337600083830152505050565b60005b83811015612fc3578082015181840152602081019050612fa8565b83811115612fd2576000848401525b50505050565b6000601f19601f8301169050919050565b612ff281612ee7565b8114612ffd57600080fd5b50565b61300981612ef9565b811461301457600080fd5b50565b61302081612f31565b811461302b57600080fd5b50565b6005811061303b57600080fd5b50565b61304781612f5b565b811461305257600080fd5b5056fe726573756c742d6e6f742d76616c6964617465642d666f722d63616c6c6261636ba2646970667358221220122aa44e03a439ef91cd709f6070b8e44022528424cc10a78c214c18eb83fc0a64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806387ecbf591161008c578063e73482a211610066578063e73482a214610227578063f075b66614610245578063f2fde38b14610263578063f6eba5471461027f576100ea565b806387ecbf59146101bb5780638da5cb5b146101eb578063ca2ef3c414610209576100ea565b80635dd80855116100c85780635dd8085514610159578063715018a614610175578063745ec3a51461017f57806378dd4ae51461019d576100ea565b806318a4b2d0146100ef57806330d95cc21461010b578063482fb13e1461013b575b600080fd5b61010960048036038101906101049190612551565b61029d565b005b610125600480360381019061012091906125f1565b61032d565b6040516101329190612ce7565b60405180910390f35b610143610429565b6040516101509190612bc2565b60405180910390f35b610173600480360381019061016e9190612643565b61044f565b005b61017d61077e565b005b6101876108b8565b6040516101949190612c06565b60405180910390f35b6101a5610d38565b6040516101b29190612bc2565b60405180910390f35b6101d560048036038101906101d091906125f1565b610d5e565b6040516101e29190612ce7565b60405180910390f35b6101f3610e71565b6040516102009190612bc2565b60405180910390f35b610211610e9a565b60405161021e9190612bc2565b60405180910390f35b61022f610ec0565b60405161023c9190612d2b565b60405180910390f35b61024d610ec6565b60405161025a9190612c4a565b60405180910390f35b61027d60048036038101906102789190612528565b610eec565b005b610287611095565b6040516102949190612c06565b60405180910390f35b6102a561109b565b73ffffffffffffffffffffffffffffffffffffffff166102c3610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031090612ca7565b60405180910390fd5b61032685858585856110a3565b5050505050565b610335611acc565b60606103408361117b565b905060008151141561040a5760405180608001604052806000801b8152602001848152602001600067ffffffffffffffff8111801561037e57600080fd5b506040519080825280602002602001820160405280156103ad5781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff811180156103cb57600080fd5b506040519080825280601f01601f1916602001820160405280156103fe5781602001600182028036833780820191505090505b50815250915050610424565b610412611acc565b61041c84836111dc565b905080925050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061045a8361117b565b905060008151141561049957827feb5aa58d1e67e9901d4047208dd47e9ce1c853f98552ac3c9f8a618787ca19e660405160405180910390a25061077a565b6104a1611acc565b6104ab84836111dc565b90506060816040015190506104be611afa565b600a6000846000015181526020019081526020016000206040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156105cb578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105b75780601f1061058c576101008083540402835291602001916105b7565b820191906000526020600020905b81548152906001019060200180831161059a57829003601f168201915b50505050508152602001906001019061050f565b5050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561065857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161060e575b505050505081525050905060005b81604001515181101561073c57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db2ebdad836040015183815181106106c157fe5b60200260200101518584815181106106d557fe5b602002602001015160f81c6040518363ffffffff1660e01b81526004016106fd929190612bdd565b600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b505050508080600101915050610666565b50857f7ca910b273d9b3d1d24a628abe3b80aa058fb47c8cc762bc0d4839aefe43621a8460405161076d9190612ce7565b60405180910390a2505050505b5050565b61078661109b565b73ffffffffffffffffffffffffffffffffffffffff166107a4610e71565b73ffffffffffffffffffffffffffffffffffffffff16146107fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f190612ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060075460001b9050600060085490506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb7b608c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093457600080fd5b505afa158015610948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096c919061275a565b905060018110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990612cc7565b60405180910390fd5b600081600954816109bf57fe5b069050818311156109ce578192505b60008390506109db611afa565b60405180606001604052808781526020018367ffffffffffffffff81118015610a0357600080fd5b50604051908082528060200260200182016040528015610a3757816020015b6060815260200190600190039081610a225790505b5081526020018367ffffffffffffffff81118015610a5457600080fd5b50604051908082528060200260200182016040528015610a835781602001602082028036833780820191505090505b5081525090505b6000851115610c8157600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610aee9190612d2b565b60006040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b4391906126d8565b60200151816040015186840381518110610b5957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610bee9190612d2b565b60006040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4391906126d8565b60000151816020015186840381518110610c5957fe5b6020026020010181905250836001840181610c7057fe5b069250848060019003955050610a8a565b82600981905550600160076000828254019250508190555080600a6000888152602001908152602001600020600082015181600001556020820151816001019080519060200190610cd3929190611b1e565b506040820151816002019080519060200190610cf0929190611b7e565b50905050857f056ae828068d78df7bc67a1f01305cd45513887ee9abeed6b2b77eeb10d533d882604051610d249190612d09565b60405180910390a285965050505050505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d66611acc565b6000600b60008481526020019081526020016000205490506060610d898261117b565b9050600081511415610e51576040518060800160405280858152602001838152602001600067ffffffffffffffff81118015610dc457600080fd5b50604051908082528060200260200182016040528015610df35781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff81118015610e1157600080fd5b506040519080825280601f01601f191660200182016040528015610e445781602001600182028036833780820191505090505b5081525092505050610e6c565b610e59611acc565b610e6383836111dc565b90508093505050505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ef461109b565b73ffffffffffffffffffffffffffffffffffffffff16610f12610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90612c87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600033905090565b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600581905550806006819055505050505050565b60606000606061118a8461141c565b915091508181906111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c89190612c65565b60405180910390fd5b508092505050919050565b6111e4611acc565b60006020905060008084806020019051810190611201919061261a565b9050848360ff168151811061121257fe5b602001015160f81c60f81b60f81c915060608260ff1667ffffffffffffffff8111801561123e57600080fd5b5060405190808252806020026020018201604052801561126d5781602001602082028036833780820191505090505b50905060005b8360ff168160ff1610156113145760008760018388010160ff168151811061129757fe5b602001015160f81c60f81b905080838360ff16815181106112b457fe5b60200260200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050508080600101915050611273565b5060608360ff168560ff166001895103030367ffffffffffffffff8111801561133c57600080fd5b506040519080825280601f01601f19166020018201604052801561136f5781602001600182028036833780820191505090505b50905060005b81518160ff1610156113ed5787600182878901010160ff168151811061139757fe5b602001015160f81c60f81b828260ff16815181106113b157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050611375565b506040518060800160405280848152602001898152602001838152602001828152509550505050505092915050565b60006060611428611c08565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adccf0d5856040518263ffffffff1660e01b81526004016114839190612c06565b60006040518083038186803b15801561149b57600080fd5b505afa1580156114af573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114d89190612719565b90506114e2611c92565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b74861b283602001516040518263ffffffff1660e01b81526004016115419190612c06565b60006040518083038186803b15801561155957600080fd5b505afa15801561156d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115969190612697565b9050600360048111156115a557fe5b826000015160048111156115b557fe5b146115fd5760006040518060400160405280601481526020017f726573756c742d6e6f742d617661696c61626c6500000000000000000000000081525093509350505061199f565b3073ffffffffffffffffffffffffffffffffffffffff1681610100015173ffffffffffffffffffffffffffffffffffffffff161461165b5760006040518060600160405280602181526020016130566021913993509350505061199f565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156116ed57506116eb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600001516000015160046119a4565b155b156117355760006040518060400160405280601081526020017f756e617574686f72697a65642d6170700000000000000000000000000000000081525093509350505061199f565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156117c757506117c5600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682602001516000015160046119a4565b155b1561180f5760006040518060400160405280601481526020017f756e617574686f72697a65642d6461746173657400000000000000000000000081525093509350505061199f565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156118a1575061189f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604001516000015160046119a4565b155b156118e95760006040518060400160405280601781526020017f756e617574686f72697a65642d776f726b6572706f6f6c00000000000000000081525093509350505061199f565b6000801b8160a0015119600554161461193f5760006040518060400160405280600b81526020017f696e76616c69642d74616700000000000000000000000000000000000000000081525093509350505061199f565b806060015160065411156119905760006040518060400160405280600d81526020017f696e76616c69642d74727573740000000000000000000000000000000000000081525093509350505061199f565b6001826101c001519350935050505b915091565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119e35760019050611ac5565b8373ffffffffffffffffffffffffffffffffffffffff1663d202158d8473ffffffffffffffffffffffffffffffffffffffff1660001b846040518363ffffffff1660e01b8152600401611a37929190612c21565b60206040518083038186803b158015611a4f57600080fd5b505afa925050508015611a8057506040513d601f19601f82011682018060405250810190611a7d91906125c8565b60015b611ac0573d8060008114611ab0576040519150601f19603f3d011682016040523d82523d6000602084013e611ab5565b606091505b506000915050611ac5565b809150505b9392505050565b6040518060800160405280600080191681526020016000801916815260200160608152602001606081525090565b60405180606001604052806000801916815260200160608152602001606081525090565b828054828255906000526020600020908101928215611b6d579160200282015b82811115611b6c578251829080519060200190611b5c929190611d5f565b5091602001919060010190611b3e565b5b509050611b7a9190611ddf565b5090565b828054828255906000526020600020908101928215611bf7579160200282015b82811115611bf65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611b9e565b5b509050611c049190611e03565b5090565b604051806101e0016040528060006004811115611c2157fe5b815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815260200160008019168152602001600081526020016000815260200160608152602001600080191681526020016060815260200160008152602001606081525090565b604051806101e00160405280611ca6611e3e565b8152602001611cb3611e3e565b8152602001611cc0611e3e565b8152602001600081526020016000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611da057805160ff1916838001178555611dce565b82800160010185558215611dce579182015b82811115611dcd578251825591602001919060010190611db2565b5b509050611ddb9190611e8b565b5090565b5b80821115611dff5760008181611df69190611ea8565b50600101611de0565b5090565b5b80821115611e3a57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611e04565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b5b80821115611ea4576000816000905550600101611e8c565b5090565b50805460018160011615610100020316600290046000825580601f10611ece5750611eed565b601f016020900490600052602060002090810190611eec9190611e8b565b5b50565b600081359050611eff81612fe9565b92915050565b600081519050611f1481612fe9565b92915050565b600082601f830112611f2b57600080fd5b8151611f3e611f3982612d73565b612d46565b91508181835260208401935060208101905083856020840282011115611f6357600080fd5b60005b83811015611f935781611f798882611f05565b845260208401935060208301925050600181019050611f66565b5050505092915050565b600081519050611fac81613000565b92915050565b600081359050611fc181613017565b92915050565b600081519050611fd681613017565b92915050565b600082601f830112611fed57600080fd5b8135612000611ffb82612d9b565b612d46565b9150808252602083016020830185838301111561201c57600080fd5b612027838284612f96565b50505092915050565b600082601f83011261204157600080fd5b815161205461204f82612d9b565b612d46565b9150808252602083016020830185838301111561207057600080fd5b61207b838284612fa5565b50505092915050565b6000815190506120938161302e565b92915050565b600082601f8301126120aa57600080fd5b81516120bd6120b882612dc7565b612d46565b915080825260208301602083018583830111156120d957600080fd5b6120e4838284612fa5565b50505092915050565b60006102a0828403121561210057600080fd5b61210b6101e0612d46565b9050600061211b8482850161226a565b600083015250606061212f8482850161226a565b60208301525060c06121438482850161226a565b60408301525061012061215884828501612513565b60608301525061014061216d84828501612513565b60808301525061016061218284828501611fc7565b60a08301525061018061219784828501611f05565b60c0830152506101a06121ac84828501611f05565b60e0830152506101c06121c184828501611f05565b610100830152506101e082015167ffffffffffffffff8111156121e357600080fd5b6121ef84828501612099565b6101208301525061020061220584828501612513565b6101408301525061022061221b84828501612513565b6101608301525061024061223184828501612513565b6101808301525061026061224784828501612513565b6101a08301525061028061225d84828501612513565b6101c08301525092915050565b60006060828403121561227c57600080fd5b6122866060612d46565b9050600061229684828501611f05565b60008301525060206122aa84828501611f05565b60208301525060406122be84828501612513565b60408301525092915050565b6000608082840312156122dc57600080fd5b6122e66080612d46565b9050600082015167ffffffffffffffff81111561230257600080fd5b61230e84828501612099565b600083015250602061232284828501611f05565b602083015250604061233684828501611f9d565b604083015250606061234a84828501612513565b60608301525092915050565b60006101e0828403121561236957600080fd5b6123746101e0612d46565b9050600061238484828501612084565b600083015250602061239884828501611fc7565b60208301525060406123ac84828501612513565b60408301525060606123c084828501612513565b60608301525060806123d484828501612513565b60808301525060a06123e884828501612513565b60a08301525060c06123fc84828501612513565b60c08301525060e061241084828501611fc7565b60e08301525061010061242584828501612513565b6101008301525061012061243b84828501612513565b6101208301525061014082015167ffffffffffffffff81111561245d57600080fd5b61246984828501611f1a565b6101408301525061016061247f84828501611fc7565b6101608301525061018082015167ffffffffffffffff8111156124a157600080fd5b6124ad84828501612030565b610180830152506101a06124c384828501612513565b6101a0830152506101c082015167ffffffffffffffff8111156124e557600080fd5b6124f184828501612030565b6101c08301525092915050565b60008135905061250d8161303e565b92915050565b6000815190506125228161303e565b92915050565b60006020828403121561253a57600080fd5b600061254884828501611ef0565b91505092915050565b600080600080600060a0868803121561256957600080fd5b600061257788828901611ef0565b955050602061258888828901611ef0565b945050604061259988828901611ef0565b93505060606125aa88828901611fb2565b92505060806125bb888289016124fe565b9150509295509295909350565b6000602082840312156125da57600080fd5b60006125e884828501611f9d565b91505092915050565b60006020828403121561260357600080fd5b600061261184828501611fb2565b91505092915050565b60006020828403121561262c57600080fd5b600061263a84828501611fc7565b91505092915050565b6000806040838503121561265657600080fd5b600061266485828601611fb2565b925050602083013567ffffffffffffffff81111561268157600080fd5b61268d85828601611fdc565b9150509250929050565b6000602082840312156126a957600080fd5b600082015167ffffffffffffffff8111156126c357600080fd5b6126cf848285016120ed565b91505092915050565b6000602082840312156126ea57600080fd5b600082015167ffffffffffffffff81111561270457600080fd5b612710848285016122ca565b91505092915050565b60006020828403121561272b57600080fd5b600082015167ffffffffffffffff81111561274557600080fd5b61275184828501612356565b91505092915050565b60006020828403121561276c57600080fd5b600061277a84828501612513565b91505092915050565b600061278f83836127c7565b60208301905092915050565b60006127a78383612916565b60208301905092915050565b60006127bf838361298b565b905092915050565b6127d081612ee7565b82525050565b6127df81612ee7565b82525050565b60006127f082612e23565b6127fa8185612e81565b935061280583612df3565b8060005b8381101561283657815161281d8882612783565b975061282883612e5a565b925050600181019050612809565b5085935050505092915050565b600061284e82612e2e565b6128588185612e92565b935061286383612e03565b8060005b8381101561289457815161287b888261279b565b975061288683612e67565b925050600181019050612867565b5085935050505092915050565b60006128ac82612e39565b6128b68185612ea3565b9350836020820285016128c885612e13565b8060005b8581101561290457848403895281516128e585826127b3565b94506128f083612e74565b925060208a019950506001810190506128cc565b50829750879550505050505092915050565b61291f81612f05565b82525050565b61292e81612f31565b82525050565b61293d81612f31565b82525050565b600061294e82612e44565b6129588185612eb4565b9350612968818560208601612fa5565b61297181612fd8565b840191505092915050565b61298581612f72565b82525050565b600061299682612e4f565b6129a08185612ec5565b93506129b0818560208601612fa5565b6129b981612fd8565b840191505092915050565b60006129cf82612e4f565b6129d98185612ed6565b93506129e9818560208601612fa5565b6129f281612fd8565b840191505092915050565b6000612a0a602683612ed6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a70602083612ed6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612ab0601183612ed6565b91507f4e6f205444447320617661696c61626c650000000000000000000000000000006000830152602082019050919050565b6000608083016000830151612afb6000860182612925565b506020830151612b0e6020860182612925565b5060408301518482036040860152612b268282612843565b91505060608301518482036060860152612b408282612943565b9150508091505092915050565b6000606083016000830151612b656000860182612925565b5060208301518482036020860152612b7d82826128a1565b91505060408301518482036040860152612b9782826127e5565b9150508091505092915050565b612bad81612f5b565b82525050565b612bbc81612f65565b82525050565b6000602082019050612bd760008301846127d6565b92915050565b6000604082019050612bf260008301856127d6565b612bff6020830184612bb3565b9392505050565b6000602082019050612c1b6000830184612934565b92915050565b6000604082019050612c366000830185612934565b612c436020830184612ba4565b9392505050565b6000602082019050612c5f600083018461297c565b92915050565b60006020820190508181036000830152612c7f81846129c4565b905092915050565b60006020820190508181036000830152612ca0816129fd565b9050919050565b60006020820190508181036000830152612cc081612a63565b9050919050565b60006020820190508181036000830152612ce081612aa3565b9050919050565b60006020820190508181036000830152612d018184612ae3565b905092915050565b60006020820190508181036000830152612d238184612b4d565b905092915050565b6000602082019050612d406000830184612ba4565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612d6957600080fd5b8060405250919050565b600067ffffffffffffffff821115612d8a57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612db257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612dde57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ef282612f3b565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612f7d82612f84565b9050919050565b6000612f8f82612f3b565b9050919050565b82818337600083830152505050565b60005b83811015612fc3578082015181840152602081019050612fa8565b83811115612fd2576000848401525b50505050565b6000601f19601f8301169050919050565b612ff281612ee7565b8114612ffd57600080fd5b50565b61300981612ef9565b811461301457600080fd5b50565b61302081612f31565b811461302b57600080fd5b50565b6005811061303b57600080fd5b50565b61304781612f5b565b811461305257600080fd5b5056fe726573756c742d6e6f742d76616c6964617465642d666f722d63616c6c6261636ba2646970667358221220122aa44e03a439ef91cd709f6070b8e44022528424cc10a78c214c18eb83fc0a64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
