{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721ConfigurablePreset",
  "sourceName": "contracts/warper/ERC721/v1-controller/presets/ERC721ConfigurablePreset.sol",
  "abi": [
    {
      "inputs": [],
      "name": "BalanceQueryForZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallForwardToZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotRentingManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotWarperAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractIsAlreadyInitialized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractIsNotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAvailabilityPeriodEnd",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAvailabilityPeriodStart",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidMaxRentalPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidMinRentalPeriod",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "requiredInterfaceId",
          "type": "bytes4"
        }
      ],
      "name": "InvalidOriginalTokenInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MethodNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintToTheZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "OperatorQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "OwnerQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "TokenIsAlreadyMinted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "TransferToNonERC721ReceiverImplementer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferToTheZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTime",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "availabilityPeriodStart",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "availabilityPeriodEnd",
          "type": "uint32"
        }
      ],
      "name": "WarperIsNotAvailableForRenting",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "requestedRentalPeriod",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "minRentalPeriod",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "maxRentalPeriod",
          "type": "uint32"
        }
      ],
      "name": "WarperRentalPeriodIsOutOfRange",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "__assetClass",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__availabilityPeriodEnd",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__availabilityPeriodRange",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "availabilityPeriodStart",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "availabilityPeriodEnd",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__availabilityPeriodStart",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "config",
          "type": "bytes"
        }
      ],
      "name": "__initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__maxRentalPeriod",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__metahub",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__minRentalPeriod",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__original",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__rentalPeriodRange",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "minRentalPeriod",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "maxRentalPeriod",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "availabilityPeriodEnd",
          "type": "uint32"
        }
      ],
      "name": "__setAvailabilityPeriodEnd",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "availabilityPeriodStart",
          "type": "uint32"
        }
      ],
      "name": "__setAvailabilityPeriodStart",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "maxRentalPeriod",
          "type": "uint32"
        }
      ],
      "name": "__setMaxRentalPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "minRentalPeriod",
          "type": "uint32"
        }
      ],
      "name": "__setMinRentalPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4[]",
          "name": "interfaceIds",
          "type": "bytes4[]"
        }
      ],
      "name": "__supportedInterfaces",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "",
          "type": "bool[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506126ba806100206000396000f3fe60806040526004361061019f5760003560e01c80638993dafd116100ec578063b88d4fde1161008a578063e846a5a911610064578063e846a5a9146104d6578063e985e9c514610511578063f46c73c614610531578063ffd5b31714610546576101ae565b8063b88d4fde14610481578063c566b080146104a1578063d1958f2c146104c1576101ae565b8063986e9115116100c6578063986e91151461040f578063a22cb46514610424578063ab9a8dcd1461043f578063ac9650d814610454576101ae565b80638993dafd146103af5780638d796a37146103cf57806394d008ef146103ef576101ae565b80632a58f7ac116101595780635a70a283116101335780635a70a283146103225780635e88e74a146103375780636352211e1461036157806370a0823114610381576101ae565b80632a58f7ac146102c257806342842e0e146102e257806356a872bd14610302576101ae565b8062eb6ac7146101b657806301ffc9a7146101ed578063081812fc1461021d578063095ea7b3146102555780631f9e33041461027557806323b872dd146102a2576101ae565b366101ae576101ac61055b565b005b6101ac61055b565b3480156101c257600080fd5b506101cb61056d565b6040805163ffffffff9384168152929091166020830152015b60405180910390f35b3480156101f957600080fd5b5061020d610208366004611ede565b610581565b60405190151581526020016101e4565b34801561022957600080fd5b5061023d610238366004611efb565b6105ca565b6040516001600160a01b0390911681526020016101e4565b34801561026157600080fd5b506101ac610270366004611f29565b6106ad565b34801561028157600080fd5b50610295610290366004611f9c565b6106c6565b6040516101e4919061204e565b3480156102ae57600080fd5b506101ac6102bd366004612094565b6106d2565b3480156102ce57600080fd5b506101ac6102dd3660046120d5565b6106e2565b3480156102ee57600080fd5b506101ac6102fd366004612094565b610846565b34801561030e57600080fd5b506101ac61031d3660046120d5565b610861565b34801561032e57600080fd5b5061023d6109c2565b34801561034357600080fd5b5061034c6109d1565b60405163ffffffff90911681526020016101e4565b34801561036d57600080fd5b5061023d61037c366004611efb565b6109e3565b34801561038d57600080fd5b506103a161039c3660046120fb565b610a81565b6040519081526020016101e4565b3480156103bb57600080fd5b506101ac6103ca366004612188565b610b43565b3480156103db57600080fd5b506101ac6103ea3660046120d5565b610cce565b3480156103fb57600080fd5b506101ac61040a3660046121bd565b610e2e565b34801561041b57600080fd5b5061034c610f23565b34801561043057600080fd5b506101ac610270366004612224565b34801561044b57600080fd5b5061034c610f2e565b34801561046057600080fd5b5061047461046f36600461225d565b610f39565b6040516101e4919061232a565b34801561048d57600080fd5b506101ac61049c36600461238c565b611027565b3480156104ad57600080fd5b506101ac6104bc3660046120d5565b611039565b3480156104cd57600080fd5b506101cb61119a565b3480156104e257600080fd5b507f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a6040516101e491906123f8565b34801561051d57600080fd5b5061020d61052c36600461240d565b6111a5565b34801561053d57600080fd5b5061023d611257565b34801561055257600080fd5b5061034c611261565b61056b61056661126c565b6112ab565b565b6000806105786112f8565b90939092509050565b60006001600160e01b03198216638993dafd60e01b14806105a657506105a682611341565b806105b557506105b582611381565b806105c457506105c4826113c1565b92915050565b6000806105d683611401565b905060008160028111156105ec576105ec61243b565b036106125760405163e4c0734760e01b8152600481018490526024015b60405180910390fd5b61061a61149a565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b815260040161066591906123f8565b602060405180830381865afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190612451565b9392505050565b6040516341f8b8eb60e11b815260040160405180910390fd5b60606105c430836114ca565b6106dd83838361158d565b505050565b6106ea61149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b815260040161072391906123f8565b602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107649190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e3919061246e565b6107ff57604051621c9ee960e91b815260040160405180910390fd5b6000610809611653565b9150508063ffffffff168263ffffffff16106108385760405163e652891d60e01b815260040160405180910390fd5b6108428282611685565b5050565b6106dd83838360405180602001604052806000815250611027565b61086961149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b81526004016108a291906123f8565b602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610962919061246e565b61097e57604051621c9ee960e91b815260040160405180910390fd5b60006109886112f8565b9150508063ffffffff168263ffffffff1611156109b85760405163dea1d81f60e01b815260040160405180910390fd5b61084282826116d1565b60006109cc61149a565b905090565b6000806109dc611653565b5092915050565b6000806109ef83611401565b90506000816002811115610a0557610a0561243b565b03610a265760405163e4c0734760e01b815260048101849052602401610609565b6001816002811115610a3a57610a3a61243b565b03610a47576106a661149a565b506000828152602081905260409020546001600160a01b0316806105c45760405163e4c0734760e01b815260048101849052602401610609565b60006001600160a01b038216610aaa576040516323d3ad8160e21b815260040160405180910390fd5b6000610ab4611717565b9050806001600160a01b031663bfe0af99610acd61149a565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201523060248201529086166044820152606401602060405180830381865afa158015610b1f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a6919061248b565b6000610b64610b6160016000805160206126458339815191526124ba565b90565b5460ff16610ba457610b9a610b6160017f37e69e8e563db672cb7e105d3e1915d10ef53975d285d458a13e70818bf53d276124ba565b5460ff1615610ba8565b303b155b1590508015610bc95760405162ea7fe560e71b815260040160405180910390fd5b6000610be7610b6160016000805160206126458339815191526124ba565b5460ff161590508015610c5f576001610c11610b61826000805160206126458339815191526124ba565b805460ff19169115159190911790556001610c4f610b61827f37e69e8e563db672cb7e105d3e1915d10ef53975d285d458a13e70818bf53d276124ba565b805460ff19169115159190911790555b60008084806020019051810190610c7691906124d1565b91509150610c848282611805565b610c8c61185d565b610c946118a9565b505080156106dd576000610cba610b6160016000805160206126458339815191526124ba565b805460ff1916911515919091179055505050565b610cd661149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b8152600401610d0f91906123f8565b602060405180830381865afa158015610d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d509190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf919061246e565b610deb57604051621c9ee960e91b815260040160405180910390fd5b6000610df5611653565b5090508163ffffffff168163ffffffff1610610e2457604051636b97294960e11b815260040160405180910390fd5b6108428183611685565b6001600160a01b038316610e555760405163c96c2a0b60e01b815260040160405180910390fd5b6000828152602081905260409020546001600160a01b031615610e8e576040516376b78f6560e01b815260048101839052602401610609565b610e9a600084846118f5565b60008281526020819052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610efc60008484846119ba565b6106dd5760405162aae5b760e01b81526001600160a01b0384166004820152602401610609565b6000806106a66112f8565b6000806109dc6112f8565b60608167ffffffffffffffff811115610f5457610f54611f55565b604051908082528060200260200182016040528015610f8757816020015b6060815260200190600190039081610f725790505b50905060005b828110156109dc57610ff730858584818110610fab57610fab612500565b9050602002810190610fbd9190612516565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ac692505050565b82828151811061100957611009612500565b6020026020010181905250808061101f90612564565b915050610f8d565b61103384848484611aeb565b50505050565b61104161149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b815260040161107a91906123f8565b602060405180830381865afa158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a919061246e565b61115657604051621c9ee960e91b815260040160405180910390fd5b60006111606112f8565b5090508163ffffffff168163ffffffff1611156111905760405163077f3cbd60e11b815260040160405180910390fd5b61084281836116d1565b600080610578611653565b60006111af61149a565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b81526004016111fa91906123f8565b602060405180830381865afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612451565b6001600160a01b0316826001600160a01b031614905092915050565b60006109cc61126c565b6000806106a6611653565b600061129c610b6160017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d1446124ba565b546001600160a01b0316919050565b6001600160a01b0381166112d25760405163eb0308d160e01b815260040160405180910390fd5b34366000803760008036600084865af13d6000803e8080156112f3573d6000f35b3d6000fd5b6000808061132a610b6160017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae466124ba565b5463ffffffff602082901c81169591169350915050565b60006001600160e01b031982166394d008ef60e01b148061137257506001600160e01b031982166380ac58cd60e01b145b806105c457506105c482611b29565b60006001600160e01b0319821663a7219d9b60e01b14806113b257506001600160e01b031982166370c8db7160e01b145b806105c457506105c482611341565b60006001600160e01b031982166393cec23d60e01b14806113f257506001600160e01b0319821663331f761f60e01b145b806105c457506105c482611381565b60008061140c611717565b9050806001600160a01b0316633f09518c61142561149a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606401602060405180830381865afa158015611476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a6919061257d565b600061129c610b6160017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf006124ba565b60606000825167ffffffffffffffff8111156114e8576114e8611f55565b604051908082528060200260200182016040528015611511578160200160208202803683370190505b50905061151d84611b7b565b156106a65760005b8351811015611585576115518585838151811061154457611544612500565b6020026020010151611bae565b82828151811061156357611563612500565b911515602092830291909101909101528061157d81612564565b915050611525565b509392505050565b6000818152602081905260409020546001600160a01b03166115c55760405163074fede760e51b815260048101829052602401610609565b6001600160a01b0382166115ec5760405163671d1add60e11b815260040160405180910390fd5b6115f78383836118f5565b60008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000808061132a610b6160017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d8466124ba565b67ffffffff00000000602083901b1663ffffffff821617806116cb610b6160017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d8466124ba565b55505050565b67ffffffff00000000602083901b1663ffffffff821617806116cb610b6160017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae466124ba565b600061172161149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b815260040161175a91906123f8565b602060405180830381865afa158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612451565b60405163ebf03f4960e01b81523060048201526001600160a01b03919091169063ebf03f4990602401602060405180830381865afa1580156117e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cc9190612451565b611821610b6160016000805160206126458339815191526124ba565b5460ff16611842576040516369be8d9360e11b815260040160405180910390fd5b61184b82611c42565b61185482611c4e565b61084281611cdb565b611879610b6160016000805160206126458339815191526124ba565b5460ff1661189a576040516369be8d9360e11b815260040160405180910390fd5b61056b600063ffffffff611685565b6118c5610b6160016000805160206126458339815191526124ba565b5460ff166118e6576040516369be8d9360e11b815260040160405180910390fd5b61056b600063ffffffff6116d1565b6118fd61149a565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b815260040161194891906123f8565b602060405180830381865afa158015611965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119899190612451565b6001600160a01b0316336001600160a01b0316146106dd57604051630fd6440760e01b815260040160405180910390fd5b60006001600160a01b0384163b6119d357506001611abe565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611a0590339089908890889060040161259e565b6020604051808303816000875af1925050508015611a40575060408051601f3d908101601f19168201909252611a3d918101906125d1565b60015b611aa8573d808015611a6e576040519150601f19603f3d011682016040523d82523d6000602084013e611a73565b606091505b508051600003611aa05760405162aae5b760e01b81526001600160a01b0386166004820152602401610609565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606106a6838360405180606001604052806027815260200161261e60279139611d47565b611af684848461158d565b611b02848484846119ba565b6110335760405162aae5b760e01b81526001600160a01b0384166004820152602401610609565b60006001600160e01b03198216630b3888fd60e31b1480611b5a57506001600160e01b031982166301ffc9a760e01b145b806105c457506105c482611b6c61126c565b6001600160a01b031690611e24565b6000611b8e826301ffc9a760e01b611bae565b80156105c45750611ba7826001600160e01b0319611bae565b1592915050565b6000806301ffc9a760e01b83604051602401611bca91906123f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015611c2b575060208210155b8015611c375750600081115b979650505050505050565b611c4b81611e40565b50565b611c6a610b6160016000805160206126458339815191526124ba565b5460ff16611c8b576040516369be8d9360e11b815260040160405180910390fd5b80611cba610b6160017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d1446124ba565b80546001600160a01b0319166001600160a01b039290921691909117905550565b611cf7610b6160016000805160206126458339815191526124ba565b5460ff16611d18576040516369be8d9360e11b815260040160405180910390fd5b80611cba610b6160017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf006124ba565b60606001600160a01b0384163b611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610609565b600080856001600160a01b031685604051611dca91906125ee565b600060405180830381855af49150503d8060008114611e05576040519150601f19603f3d011682016040523d82523d6000602084013e611e0a565b606091505b5091509150611e1a828286611e8f565b9695505050505050565b6000611e2f83611b7b565b80156106a657506106a68383611bae565b611e5a6001600160a01b038216635b5e139f60e01b611e24565b611c4b5760405163c30175c560e01b81526001600160a01b0382166004820152635b5e139f60e01b6024820152604401610609565b60608315611e9e5750816106a6565b825115611eae5782518084602001fd5b8160405162461bcd60e51b8152600401610609919061260a565b6001600160e01b031981168114611c4b57600080fd5b600060208284031215611ef057600080fd5b81356106a681611ec8565b600060208284031215611f0d57600080fd5b5035919050565b6001600160a01b0381168114611c4b57600080fd5b60008060408385031215611f3c57600080fd5b8235611f4781611f14565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611f9457611f94611f55565b604052919050565b60006020808385031215611faf57600080fd5b823567ffffffffffffffff80821115611fc757600080fd5b818501915085601f830112611fdb57600080fd5b813581811115611fed57611fed611f55565b8060051b9150611ffe848301611f6b565b818152918301840191848101908884111561201857600080fd5b938501935b83851015612042578435925061203283611ec8565b828252938501939085019061201d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561208857835115158352928401929184019160010161206a565b50909695505050505050565b6000806000606084860312156120a957600080fd5b83356120b481611f14565b925060208401356120c481611f14565b929592945050506040919091013590565b6000602082840312156120e757600080fd5b813563ffffffff811681146106a657600080fd5b60006020828403121561210d57600080fd5b81356106a681611f14565b600082601f83011261212957600080fd5b813567ffffffffffffffff81111561214357612143611f55565b612156601f8201601f1916602001611f6b565b81815284602083860101111561216b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561219a57600080fd5b813567ffffffffffffffff8111156121b157600080fd5b611abe84828501612118565b6000806000606084860312156121d257600080fd5b83356121dd81611f14565b925060208401359150604084013567ffffffffffffffff81111561220057600080fd5b61220c86828701612118565b9150509250925092565b8015158114611c4b57600080fd5b6000806040838503121561223757600080fd5b823561224281611f14565b9150602083013561225281612216565b809150509250929050565b6000806020838503121561227057600080fd5b823567ffffffffffffffff8082111561228857600080fd5b818501915085601f83011261229c57600080fd5b8135818111156122ab57600080fd5b8660208260051b85010111156122c057600080fd5b60209290920196919550909350505050565b60005b838110156122ed5781810151838201526020016122d5565b838111156110335750506000910152565b600081518084526123168160208601602086016122d2565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561237f57603f1988860301845261236d8583516122fe565b94509285019290850190600101612351565b5092979650505050505050565b600080600080608085870312156123a257600080fd5b84356123ad81611f14565b935060208501356123bd81611f14565b925060408501359150606085013567ffffffffffffffff8111156123e057600080fd5b6123ec87828801612118565b91505092959194509250565b6001600160e01b031991909116815260200190565b6000806040838503121561242057600080fd5b823561242b81611f14565b9150602083013561225281611f14565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561246357600080fd5b81516106a681611f14565b60006020828403121561248057600080fd5b81516106a681612216565b60006020828403121561249d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156124cc576124cc6124a4565b500390565b600080604083850312156124e457600080fd5b82516124ef81611f14565b602084015190925061225281611f14565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261252d57600080fd5b83018035915067ffffffffffffffff82111561254857600080fd5b60200191503681900382131561255d57600080fd5b9250929050565b600060018201612576576125766124a4565b5060010190565b60006020828403121561258f57600080fd5b8151600381106106a657600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e1a908301846122fe565b6000602082840312156125e357600080fd5b81516106a681611ec8565b600082516126008184602087016122d2565b9190910192915050565b6020815260006106a660208301846122fe56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564c2221768d9692f01d28cc433c84b2dc197fbcc867663b61d61e17ca4877697faa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b8a2646970667358221220e7fb5d9e0a5d8537892a4e0c5356f433e797000102cc48f9be626fd8429f0f3e64736f6c634300080d0033",
  "deployedBytecode": "0x60806040526004361061019f5760003560e01c80638993dafd116100ec578063b88d4fde1161008a578063e846a5a911610064578063e846a5a9146104d6578063e985e9c514610511578063f46c73c614610531578063ffd5b31714610546576101ae565b8063b88d4fde14610481578063c566b080146104a1578063d1958f2c146104c1576101ae565b8063986e9115116100c6578063986e91151461040f578063a22cb46514610424578063ab9a8dcd1461043f578063ac9650d814610454576101ae565b80638993dafd146103af5780638d796a37146103cf57806394d008ef146103ef576101ae565b80632a58f7ac116101595780635a70a283116101335780635a70a283146103225780635e88e74a146103375780636352211e1461036157806370a0823114610381576101ae565b80632a58f7ac146102c257806342842e0e146102e257806356a872bd14610302576101ae565b8062eb6ac7146101b657806301ffc9a7146101ed578063081812fc1461021d578063095ea7b3146102555780631f9e33041461027557806323b872dd146102a2576101ae565b366101ae576101ac61055b565b005b6101ac61055b565b3480156101c257600080fd5b506101cb61056d565b6040805163ffffffff9384168152929091166020830152015b60405180910390f35b3480156101f957600080fd5b5061020d610208366004611ede565b610581565b60405190151581526020016101e4565b34801561022957600080fd5b5061023d610238366004611efb565b6105ca565b6040516001600160a01b0390911681526020016101e4565b34801561026157600080fd5b506101ac610270366004611f29565b6106ad565b34801561028157600080fd5b50610295610290366004611f9c565b6106c6565b6040516101e4919061204e565b3480156102ae57600080fd5b506101ac6102bd366004612094565b6106d2565b3480156102ce57600080fd5b506101ac6102dd3660046120d5565b6106e2565b3480156102ee57600080fd5b506101ac6102fd366004612094565b610846565b34801561030e57600080fd5b506101ac61031d3660046120d5565b610861565b34801561032e57600080fd5b5061023d6109c2565b34801561034357600080fd5b5061034c6109d1565b60405163ffffffff90911681526020016101e4565b34801561036d57600080fd5b5061023d61037c366004611efb565b6109e3565b34801561038d57600080fd5b506103a161039c3660046120fb565b610a81565b6040519081526020016101e4565b3480156103bb57600080fd5b506101ac6103ca366004612188565b610b43565b3480156103db57600080fd5b506101ac6103ea3660046120d5565b610cce565b3480156103fb57600080fd5b506101ac61040a3660046121bd565b610e2e565b34801561041b57600080fd5b5061034c610f23565b34801561043057600080fd5b506101ac610270366004612224565b34801561044b57600080fd5b5061034c610f2e565b34801561046057600080fd5b5061047461046f36600461225d565b610f39565b6040516101e4919061232a565b34801561048d57600080fd5b506101ac61049c36600461238c565b611027565b3480156104ad57600080fd5b506101ac6104bc3660046120d5565b611039565b3480156104cd57600080fd5b506101cb61119a565b3480156104e257600080fd5b507f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a6040516101e491906123f8565b34801561051d57600080fd5b5061020d61052c36600461240d565b6111a5565b34801561053d57600080fd5b5061023d611257565b34801561055257600080fd5b5061034c611261565b61056b61056661126c565b6112ab565b565b6000806105786112f8565b90939092509050565b60006001600160e01b03198216638993dafd60e01b14806105a657506105a682611341565b806105b557506105b582611381565b806105c457506105c4826113c1565b92915050565b6000806105d683611401565b905060008160028111156105ec576105ec61243b565b036106125760405163e4c0734760e01b8152600481018490526024015b60405180910390fd5b61061a61149a565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b815260040161066591906123f8565b602060405180830381865afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190612451565b9392505050565b6040516341f8b8eb60e11b815260040160405180910390fd5b60606105c430836114ca565b6106dd83838361158d565b505050565b6106ea61149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b815260040161072391906123f8565b602060405180830381865afa158015610740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107649190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e3919061246e565b6107ff57604051621c9ee960e91b815260040160405180910390fd5b6000610809611653565b9150508063ffffffff168263ffffffff16106108385760405163e652891d60e01b815260040160405180910390fd5b6108428282611685565b5050565b6106dd83838360405180602001604052806000815250611027565b61086961149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b81526004016108a291906123f8565b602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610962919061246e565b61097e57604051621c9ee960e91b815260040160405180910390fd5b60006109886112f8565b9150508063ffffffff168263ffffffff1611156109b85760405163dea1d81f60e01b815260040160405180910390fd5b61084282826116d1565b60006109cc61149a565b905090565b6000806109dc611653565b5092915050565b6000806109ef83611401565b90506000816002811115610a0557610a0561243b565b03610a265760405163e4c0734760e01b815260048101849052602401610609565b6001816002811115610a3a57610a3a61243b565b03610a47576106a661149a565b506000828152602081905260409020546001600160a01b0316806105c45760405163e4c0734760e01b815260048101849052602401610609565b60006001600160a01b038216610aaa576040516323d3ad8160e21b815260040160405180910390fd5b6000610ab4611717565b9050806001600160a01b031663bfe0af99610acd61149a565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201523060248201529086166044820152606401602060405180830381865afa158015610b1f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a6919061248b565b6000610b64610b6160016000805160206126458339815191526124ba565b90565b5460ff16610ba457610b9a610b6160017f37e69e8e563db672cb7e105d3e1915d10ef53975d285d458a13e70818bf53d276124ba565b5460ff1615610ba8565b303b155b1590508015610bc95760405162ea7fe560e71b815260040160405180910390fd5b6000610be7610b6160016000805160206126458339815191526124ba565b5460ff161590508015610c5f576001610c11610b61826000805160206126458339815191526124ba565b805460ff19169115159190911790556001610c4f610b61827f37e69e8e563db672cb7e105d3e1915d10ef53975d285d458a13e70818bf53d276124ba565b805460ff19169115159190911790555b60008084806020019051810190610c7691906124d1565b91509150610c848282611805565b610c8c61185d565b610c946118a9565b505080156106dd576000610cba610b6160016000805160206126458339815191526124ba565b805460ff1916911515919091179055505050565b610cd661149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b8152600401610d0f91906123f8565b602060405180830381865afa158015610d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d509190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf919061246e565b610deb57604051621c9ee960e91b815260040160405180910390fd5b6000610df5611653565b5090508163ffffffff168163ffffffff1610610e2457604051636b97294960e11b815260040160405180910390fd5b6108428183611685565b6001600160a01b038316610e555760405163c96c2a0b60e01b815260040160405180910390fd5b6000828152602081905260409020546001600160a01b031615610e8e576040516376b78f6560e01b815260048101839052602401610609565b610e9a600084846118f5565b60008281526020819052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610efc60008484846119ba565b6106dd5760405162aae5b760e01b81526001600160a01b0384166004820152602401610609565b6000806106a66112f8565b6000806109dc6112f8565b60608167ffffffffffffffff811115610f5457610f54611f55565b604051908082528060200260200182016040528015610f8757816020015b6060815260200190600190039081610f725790505b50905060005b828110156109dc57610ff730858584818110610fab57610fab612500565b9050602002810190610fbd9190612516565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ac692505050565b82828151811061100957611009612500565b6020026020010181905250808061101f90612564565b915050610f8d565b61103384848484611aeb565b50505050565b61104161149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b815260040161107a91906123f8565b602060405180830381865afa158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190612451565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a919061246e565b61115657604051621c9ee960e91b815260040160405180910390fd5b60006111606112f8565b5090508163ffffffff168163ffffffff1611156111905760405163077f3cbd60e11b815260040160405180910390fd5b61084281836116d1565b600080610578611653565b60006111af61149a565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b81526004016111fa91906123f8565b602060405180830381865afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612451565b6001600160a01b0316826001600160a01b031614905092915050565b60006109cc61126c565b6000806106a6611653565b600061129c610b6160017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d1446124ba565b546001600160a01b0316919050565b6001600160a01b0381166112d25760405163eb0308d160e01b815260040160405180910390fd5b34366000803760008036600084865af13d6000803e8080156112f3573d6000f35b3d6000fd5b6000808061132a610b6160017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae466124ba565b5463ffffffff602082901c81169591169350915050565b60006001600160e01b031982166394d008ef60e01b148061137257506001600160e01b031982166380ac58cd60e01b145b806105c457506105c482611b29565b60006001600160e01b0319821663a7219d9b60e01b14806113b257506001600160e01b031982166370c8db7160e01b145b806105c457506105c482611341565b60006001600160e01b031982166393cec23d60e01b14806113f257506001600160e01b0319821663331f761f60e01b145b806105c457506105c482611381565b60008061140c611717565b9050806001600160a01b0316633f09518c61142561149a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606401602060405180830381865afa158015611476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a6919061257d565b600061129c610b6160017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf006124ba565b60606000825167ffffffffffffffff8111156114e8576114e8611f55565b604051908082528060200260200182016040528015611511578160200160208202803683370190505b50905061151d84611b7b565b156106a65760005b8351811015611585576115518585838151811061154457611544612500565b6020026020010151611bae565b82828151811061156357611563612500565b911515602092830291909101909101528061157d81612564565b915050611525565b509392505050565b6000818152602081905260409020546001600160a01b03166115c55760405163074fede760e51b815260048101829052602401610609565b6001600160a01b0382166115ec5760405163671d1add60e11b815260040160405180910390fd5b6115f78383836118f5565b60008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000808061132a610b6160017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d8466124ba565b67ffffffff00000000602083901b1663ffffffff821617806116cb610b6160017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d8466124ba565b55505050565b67ffffffff00000000602083901b1663ffffffff821617806116cb610b6160017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae466124ba565b600061172161149a565b6001600160a01b031663e3dedd6b6000805160206126658339815191526040518263ffffffff1660e01b815260040161175a91906123f8565b602060405180830381865afa158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612451565b60405163ebf03f4960e01b81523060048201526001600160a01b03919091169063ebf03f4990602401602060405180830381865afa1580156117e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cc9190612451565b611821610b6160016000805160206126458339815191526124ba565b5460ff16611842576040516369be8d9360e11b815260040160405180910390fd5b61184b82611c42565b61185482611c4e565b61084281611cdb565b611879610b6160016000805160206126458339815191526124ba565b5460ff1661189a576040516369be8d9360e11b815260040160405180910390fd5b61056b600063ffffffff611685565b6118c5610b6160016000805160206126458339815191526124ba565b5460ff166118e6576040516369be8d9360e11b815260040160405180910390fd5b61056b600063ffffffff6116d1565b6118fd61149a565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b815260040161194891906123f8565b602060405180830381865afa158015611965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119899190612451565b6001600160a01b0316336001600160a01b0316146106dd57604051630fd6440760e01b815260040160405180910390fd5b60006001600160a01b0384163b6119d357506001611abe565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611a0590339089908890889060040161259e565b6020604051808303816000875af1925050508015611a40575060408051601f3d908101601f19168201909252611a3d918101906125d1565b60015b611aa8573d808015611a6e576040519150601f19603f3d011682016040523d82523d6000602084013e611a73565b606091505b508051600003611aa05760405162aae5b760e01b81526001600160a01b0386166004820152602401610609565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606106a6838360405180606001604052806027815260200161261e60279139611d47565b611af684848461158d565b611b02848484846119ba565b6110335760405162aae5b760e01b81526001600160a01b0384166004820152602401610609565b60006001600160e01b03198216630b3888fd60e31b1480611b5a57506001600160e01b031982166301ffc9a760e01b145b806105c457506105c482611b6c61126c565b6001600160a01b031690611e24565b6000611b8e826301ffc9a760e01b611bae565b80156105c45750611ba7826001600160e01b0319611bae565b1592915050565b6000806301ffc9a760e01b83604051602401611bca91906123f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015611c2b575060208210155b8015611c375750600081115b979650505050505050565b611c4b81611e40565b50565b611c6a610b6160016000805160206126458339815191526124ba565b5460ff16611c8b576040516369be8d9360e11b815260040160405180910390fd5b80611cba610b6160017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d1446124ba565b80546001600160a01b0319166001600160a01b039290921691909117905550565b611cf7610b6160016000805160206126458339815191526124ba565b5460ff16611d18576040516369be8d9360e11b815260040160405180910390fd5b80611cba610b6160017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf006124ba565b60606001600160a01b0384163b611daf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610609565b600080856001600160a01b031685604051611dca91906125ee565b600060405180830381855af49150503d8060008114611e05576040519150601f19603f3d011682016040523d82523d6000602084013e611e0a565b606091505b5091509150611e1a828286611e8f565b9695505050505050565b6000611e2f83611b7b565b80156106a657506106a68383611bae565b611e5a6001600160a01b038216635b5e139f60e01b611e24565b611c4b5760405163c30175c560e01b81526001600160a01b0382166004820152635b5e139f60e01b6024820152604401610609565b60608315611e9e5750816106a6565b825115611eae5782518084602001fd5b8160405162461bcd60e51b8152600401610609919061260a565b6001600160e01b031981168114611c4b57600080fd5b600060208284031215611ef057600080fd5b81356106a681611ec8565b600060208284031215611f0d57600080fd5b5035919050565b6001600160a01b0381168114611c4b57600080fd5b60008060408385031215611f3c57600080fd5b8235611f4781611f14565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611f9457611f94611f55565b604052919050565b60006020808385031215611faf57600080fd5b823567ffffffffffffffff80821115611fc757600080fd5b818501915085601f830112611fdb57600080fd5b813581811115611fed57611fed611f55565b8060051b9150611ffe848301611f6b565b818152918301840191848101908884111561201857600080fd5b938501935b83851015612042578435925061203283611ec8565b828252938501939085019061201d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561208857835115158352928401929184019160010161206a565b50909695505050505050565b6000806000606084860312156120a957600080fd5b83356120b481611f14565b925060208401356120c481611f14565b929592945050506040919091013590565b6000602082840312156120e757600080fd5b813563ffffffff811681146106a657600080fd5b60006020828403121561210d57600080fd5b81356106a681611f14565b600082601f83011261212957600080fd5b813567ffffffffffffffff81111561214357612143611f55565b612156601f8201601f1916602001611f6b565b81815284602083860101111561216b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561219a57600080fd5b813567ffffffffffffffff8111156121b157600080fd5b611abe84828501612118565b6000806000606084860312156121d257600080fd5b83356121dd81611f14565b925060208401359150604084013567ffffffffffffffff81111561220057600080fd5b61220c86828701612118565b9150509250925092565b8015158114611c4b57600080fd5b6000806040838503121561223757600080fd5b823561224281611f14565b9150602083013561225281612216565b809150509250929050565b6000806020838503121561227057600080fd5b823567ffffffffffffffff8082111561228857600080fd5b818501915085601f83011261229c57600080fd5b8135818111156122ab57600080fd5b8660208260051b85010111156122c057600080fd5b60209290920196919550909350505050565b60005b838110156122ed5781810151838201526020016122d5565b838111156110335750506000910152565b600081518084526123168160208601602086016122d2565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561237f57603f1988860301845261236d8583516122fe565b94509285019290850190600101612351565b5092979650505050505050565b600080600080608085870312156123a257600080fd5b84356123ad81611f14565b935060208501356123bd81611f14565b925060408501359150606085013567ffffffffffffffff8111156123e057600080fd5b6123ec87828801612118565b91505092959194509250565b6001600160e01b031991909116815260200190565b6000806040838503121561242057600080fd5b823561242b81611f14565b9150602083013561225281611f14565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561246357600080fd5b81516106a681611f14565b60006020828403121561248057600080fd5b81516106a681612216565b60006020828403121561249d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156124cc576124cc6124a4565b500390565b600080604083850312156124e457600080fd5b82516124ef81611f14565b602084015190925061225281611f14565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261252d57600080fd5b83018035915067ffffffffffffffff82111561254857600080fd5b60200191503681900382131561255d57600080fd5b9250929050565b600060018201612576576125766124a4565b5060010190565b60006020828403121561258f57600080fd5b8151600381106106a657600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e1a908301846122fe565b6000602082840312156125e357600080fd5b81516106a681611ec8565b600082516126008184602087016122d2565b9190910192915050565b6020815260006106a660208301846122fe56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564c2221768d9692f01d28cc433c84b2dc197fbcc867663b61d61e17ca4877697faa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b8a2646970667358221220e7fb5d9e0a5d8537892a4e0c5356f433e797000102cc48f9be626fd8429f0f3e64736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
