{
  "_format": "hh-sol-artifact-1",
  "contractName": "WarperManager",
  "sourceName": "contracts/warper/warper-manager/WarperManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "AccountIsNotAuthorizedOperatorForWarperManagement",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "AccountIsNotAuthorizedWizardForWarperManagement",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "AccountIsNotWarperAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidContractEntityInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidWarperInterface",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "MissingWarpersForAssetInUniverse",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        }
      ],
      "name": "MissingWarpersForUniverse",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MultipleWarpersNotSupported",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "provided",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "required",
          "type": "address"
        }
      ],
      "name": "WarperHasIncorrectMetahubReference",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "WarperIsAlreadyRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "WarperIsNotPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "WarperIsNotRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "WarperIsPaused",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "WarperDeregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "WarperPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "warper",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "assetClass",
          "type": "bytes4"
        }
      ],
      "name": "WarperRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "WarperUnpaused",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "checkIsAuthorizedWizardForWarperManagement",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "checkRegisteredWarper",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        }
      ],
      "name": "checkUniverseHasWarper",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "checkUniverseHasWarperForAsset",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "checkWarperAdmin",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractKey",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "deregisterWarper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IACL",
              "name": "acl",
              "type": "address"
            },
            {
              "internalType": "contract IMetahub",
              "name": "metahub",
              "type": "address"
            }
          ],
          "internalType": "struct WarperManager.WarperManagerInitParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isWarperAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metahub",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "pauseWarper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "internalType": "struct IWarperManager.WarperRegistrationParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "registerWarper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "warpers",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "setWarperController",
      "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": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "universeAssetWarperCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        }
      ],
      "name": "universeAssetWarpers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "components": [
            {
              "internalType": "bytes4",
              "name": "assetClass",
              "type": "bytes4"
            },
            {
              "internalType": "address",
              "name": "original",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            },
            {
              "internalType": "contract IWarperController",
              "name": "controller",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            }
          ],
          "internalType": "struct Warpers.Warper[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        }
      ],
      "name": "universeWarperCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "universeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        }
      ],
      "name": "universeWarpers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "components": [
            {
              "internalType": "bytes4",
              "name": "assetClass",
              "type": "bytes4"
            },
            {
              "internalType": "address",
              "name": "original",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            },
            {
              "internalType": "contract IWarperController",
              "name": "controller",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            }
          ],
          "internalType": "struct Warpers.Warper[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "unpauseWarper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "warperController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "warper",
          "type": "address"
        }
      ],
      "name": "warperInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes4",
              "name": "assetClass",
              "type": "bytes4"
            },
            {
              "internalType": "address",
              "name": "original",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            },
            {
              "internalType": "contract IWarperController",
              "name": "controller",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            }
          ],
          "internalType": "struct Warpers.Warper",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161317c61004c600039600081816106270152818161066701528181610734015281816107740152610891015261317c6000f3fe6080604052600436106101665760003560e01c80638468d228116100d1578063cda24eef1161008a578063ebf03f4911610064578063ebf03f4914610452578063ec21896d14610472578063f2c3e83e146104ad578063fee5f37f146104cd57600080fd5b8063cda24eef146103e4578063d42350ab14610412578063e528b0811461043257600080fd5b80638468d22814610317578063882080d314610337578063890e886a14610357578063ac9650d814610377578063b6a597dd146103a4578063c1e58a21146103c457600080fd5b80634ce892f4116101235780634ce892f4146102545780634f1ef28614610274578063506cf01e1461028757806352d1902d146102a757806355431024146102ca578063795b0826146102f757600080fd5b8063015eef691461016b57806301ffc9a71461018d578063183a7a05146101c25780631f180dfd146101f45780633253d503146102145780633659cfe614610234575b600080fd5b34801561017757600080fd5b5061018b61018636600461282c565b6104ed565b005b34801561019957600080fd5b506101ad6101a836600461285f565b6104f9565b60405190151581526020015b60405180910390f35b3480156101ce57600080fd5b506065546001600160a01b03165b6040516001600160a01b0390911681526020016101b9565b34801561020057600080fd5b5061018b61020f36600461287c565b610524565b34801561022057600080fd5b5061018b61022f36600461282c565b610567565b34801561024057600080fd5b5061018b61024f36600461282c565b61061d565b34801561026057600080fd5b5061018b61026f36600461282c565b6106f9565b61018b61028236600461296a565b61072a565b34801561029357600080fd5b5061018b6102a236600461282c565b6107f6565b3480156102b357600080fd5b506102bc610884565b6040519081526020016101b9565b3480156102d657600080fd5b506102ea6102e536600461282c565b610937565b6040516101b99190612a90565b34801561030357600080fd5b5061018b610312366004612aef565b610a5d565b34801561032357600080fd5b506102bc610332366004612b46565b610bb8565b34801561034357600080fd5b506101ad61035236600461287c565b610bc5565b34801561036357600080fd5b506102bc610372366004612b5f565b610bd8565b34801561038357600080fd5b50610397610392366004612b84565b610be6565b6040516101b99190612bc6565b3480156103b057600080fd5b5061018b6103bf366004612c28565b610cdb565b3480156103d057600080fd5b5061018b6103df36600461282c565b610e49565b3480156103f057600080fd5b506104046103ff366004612c3a565b610e9f565b6040516101b9929190612c77565b34801561041e57600080fd5b5061018b61042d366004612b46565b610ebe565b34801561043e57600080fd5b5061018b61044d366004612d26565b610ec9565b34801561045e57600080fd5b506101dc61046d36600461282c565b610fad565b34801561047e57600080fd5b507fa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b86040516101b99190612ddd565b3480156104b957600080fd5b5061018b6104c8366004612b5f565b610fdc565b3480156104d957600080fd5b506104046104e8366004612df2565b610fe8565b6104f681611004565b50565b60006001600160e01b03198216635b6fed0760e01b148061051e575061051e8261100f565b92915050565b61052e8282611044565b61056357604051638743ea5f60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b5050565b8061057181611004565b8161057b33611171565b15801561058f575061058d8133611044565b155b156105c35780335b60405163b0c76fc760e01b81526001600160a01b0392831660048201529116602482015260440161055a565b6001600160a01b0383166000908152609f602052604090206105e490611309565b6040516001600160a01b038416907f2a08260ffc9feb9cd743cb3dd526a959666260abda15ed904061f3babce487ba90600090a2505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106655760405162461bcd60e51b815260040161055a90612e1e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106ae600080516020613100833981519152546001600160a01b031690565b6001600160a01b0316146106d45760405162461bcd60e51b815260040161055a90612e6a565b6106dd81611346565b604080516000808252602082019092526104f6918391906113c3565b61070281611171565b6104f657604051631f1b510b60e11b81526001600160a01b038216600482015260240161055a565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107725760405162461bcd60e51b815260040161055a90612e1e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107bb600080516020613100833981519152546001600160a01b031690565b6001600160a01b0316146107e15760405162461bcd60e51b815260040161055a90612e6a565b6107ea82611346565b610563828260016113c3565b8061080081611004565b8161080a33611171565b15801561081e575061081c8133611044565b155b1561082a578033610597565b6001600160a01b0383166000908152609f6020526040902061084b90611533565b6040516001600160a01b038416907f1eaf28a93e1ad5dabb8e3983d0abb01359e7eafa0982af55e81d715704d25f4e90600090a2505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109245760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161055a565b5060008051602061310083398151915290565b61093f612710565b8161094981611004565b6001600160a01b038381166000908152609f6020908152604091829020825160c081018452815460e081901b6001600160e01b03191682526401000000008104861693820193909352600160c01b90920460ff16151592820192909252600182015490921660608301526002810180546080840191906109c890612eb6565b80601f01602080910402602001604051908101604052809291908181526020018280546109f490612eb6565b8015610a415780601f10610a1657610100808354040283529160200191610a41565b820191906000526020600020905b815481529060010190602001808311610a2457829003601f168201915b5050505050815260200160038201548152505091505b50919050565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610abf57600080fd5b505afa158015610ad3573d6000803e3d6000fd5b5050505060005b82811015610bb2576000848483818110610af657610af6612eea565b9050602002016020810190610b0b919061282c565b9050610b1681611004565b604051637aa9c1d760e11b81526001600160a01b03828116600483015284169063f55383ae9060240160006040518083038186803b158015610b5757600080fd5b505afa158015610b6b573d6000803e3d6000fd5b505050506001600160a01b039081166000908152609f6020526040902060010180546001600160a01b03191691841691909117905580610baa81612f16565b915050610ada565b50505050565b600061051e609983611569565b6000610bd18383611044565b9392505050565b6000610bd160998484611582565b60608167ffffffffffffffff811115610c0157610c016128b5565b604051908082528060200260200182016040528015610c3457816020015b6060815260200190600190039081610c1f5790505b50905060005b82811015610cd457610ca430858584818110610c5857610c58612eea565b9050602002810190610c6a9190612f2f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b828281518110610cb657610cb6612eea565b60200260200101819052508080610ccc90612f16565b915050610c3a565b5092915050565b600054610100900460ff1615808015610cfb5750600054600160ff909116105b80610d155750303b158015610d15575060005460ff166001145b610d785760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161055a565b6000805460ff191660011790558015610d9b576000805461ff0019166101001790555b610da36115d4565b610db0602083018361282c565b609880546001600160a01b0319166001600160a01b0392909216919091179055610de0604083016020840161282c565b606580546001600160a01b0319166001600160a01b03929092169190911790558015610563576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b80610e5381611004565b610e5c336106f9565b610e67609983611641565b6040516001600160a01b038316907f752612ff761620ec780457bda227d89213d24d8914934d4e45c16bcb4d2b158c90600090a25050565b606080610eb0609987878787611749565b915091505b94509492505050565b6104f660998261178d565b610ed2336106f9565b600080610ee1609985856117c9565b6065546040516320ffc53d60e01b81526001600160e01b0319841660048201526001600160a01b03808416602483015293955091935091909116906320ffc53d90604401600060405180830381600087803b158015610f3f57600080fd5b505af1158015610f53573d6000803e3d6000fd5b50505050806001600160a01b0316846001600160a01b031684602001517fa6cbfe7c4f79b32395aff92e401d4d426b6a28e6eee944f19634791ad32dd2fd85604051610f9f9190612ddd565b60405180910390a450505050565b600081610fb981611004565b50506001600160a01b039081166000908152609f60205260409020600101541690565b61056360998383611cdf565b606080610ff86099868686611d3e565b91509150935093915050565b6104f6609982611d60565b60006001600160e01b0319821663ec21896d60e01b148061051e57506301ffc9a760e01b6001600160e01b031983161461051e565b60008261105081611004565b60655460405163e3dedd6b60e01b81526001600160a01b039091169063e3dedd6b906110a0907f80e923a5a548bf8cd1c0d5679e7fb52a28d9fd42e9642a412b581817718d9aa490600401612ddd565b602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190612f76565b6001600160a01b038581166000908152609f60205260409081902060030154905163c8cb083f60e01b81526004810191909152858216602482015291169063c8cb083f90604401602060405180830381865afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111699190612f93565b949350505050565b60655460405163e3dedd6b60e01b81526000916001600160a01b03169063e3dedd6b906111c2907f80e923a5a548bf8cd1c0d5679e7fb52a28d9fd42e9642a412b581817718d9aa490600401612ddd565b602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190612f76565b604051631b28936360e21b81526001600160a01b0384811660048301529190911690636ca24d8c90602401602060405180830381865afa15801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f9190612f93565b8061051e5750609854604051632474521560e21b81527f7b33fcd4a576fb243b3745879da79a929c7783304788bd4b864a5f3c69e01d7360048201526001600160a01b038481166024830152909116906391d1485490604401602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e9190612f93565b8054600160c01b900460ff16156113335760405163651c69e160e01b815260040160405180910390fd5b805460ff60c01b1916600160c01b179055565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b5050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156113fb576113f683611d92565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611455575060408051601f3d908101601f1916820190925261145291810190612fb0565b60015b6114b85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161055a565b60008051602061310083398151915281146115275760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161055a565b506113f6838383611e2e565b8054600160c01b900460ff1661155c57604051633587233b60e11b815260040160405180910390fd5b805460ff60c01b19169055565b60008181526003830160205260408120610bd190611e53565b600082815260058401602090815260408083206001600160a01b0385168452909152812061116990611e53565b6060610bd1838360405180606001604052806027815260200161312060279139611e5d565b600054610100900460ff1661163f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161055a565b565b6001600160a01b03811660009081526006830160209081526040808320600380820154855286019092529091206116789083611efb565b50805464010000000090046001600160a01b0316600090815260048401602052604090206116a69083611efb565b506116b46001840183611efb565b50600381015460009081526005840160209081526040808320845464010000000090046001600160a01b0316845290915290206116f19083611efb565b506001600160a01b0382166000908152600684016020526040812080546001600160c81b03191681556001810180546001600160a01b03191690559061173a6002830182612744565b60038201600090555050505050565b600084815260058601602090815260408083206001600160a01b03871684529091529020606090819061177f9088908686611f10565b915091509550959350505050565b600081815260038301602052604090206117a690611e53565b60000361056357604051637675aa8560e01b81526004810182905260240161055a565b6000806001600160a01b0384163b15806117fa57506117f86001600160a01b038516630b3888fd60e31b6121e4565b155b1561181b5760405160016217fc1360e31b0319815260040160405180910390fd5b60016118c2866005016000866020015181526020019081526020016000206000876001600160a01b031663f46c73c66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190612f76565b6001600160a01b03166001600160a01b03168152602001908152602001600020611e53565b106118e057604051631e90b94d60e11b815260040160405180910390fd5b6000846001600160a01b0316635a70a2836040518163ffffffff1660e01b8152600401602060405180830381865afa158015611920573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119449190612f76565b9050306001600160a01b031663183a7a056040518163ffffffff1660e01b8152600401602060405180830381865afa158015611984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a89190612f76565b6001600160a01b0316816001600160a01b031614611a4f5780306001600160a01b031663183a7a056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a239190612f76565b604051630391492160e41b81526001600160a01b0392831660048201529116602482015260440161055a565b846001600160a01b031663e846a5a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab19190612fc9565b92506000816001600160a01b031663e3dedd6b7fda246e099bfd3225b66de35bb15cd704f64f5ee132a2e7197c0b7a2a05d6cd0b6040518263ffffffff1660e01b8152600401611b019190612ddd565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190612f76565b6001600160a01b031663b4214470856040518263ffffffff1660e01b8152600401611b6d9190612ddd565b6040805180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad9190612fe6565b60200151604051637aa9c1d760e11b81526001600160a01b038881166004830152919250829182169063f55383ae9060240160006040518083038186803b158015611bf757600080fd5b505afa158015611c0b573d6000803e3d6000fd5b50505050866001600160a01b031663f46c73c66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c719190612f76565b9350611cd488886040518060c00160405280896001600160e01b0319168152602001886001600160a01b031681526020018a6040015115158152602001856001600160a01b031681526020018a6000015181526020018a60200151815250612200565b505050935093915050565b600082815260058401602090815260408083206001600160a01b03851684529091529020611d0c90611e53565b6000036113f6576040516361f85a9960e11b8152600481018390526001600160a01b038216602482015260440161055a565b600083815260038501602052604090206060908190610eb09087908686611f10565b611d6a828261235d565b61056357604051634f59bc1f60e11b81526001600160a01b038216600482015260240161055a565b6001600160a01b0381163b611dff5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161055a565b60008051602061310083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611e378361236c565b600082511180611e445750805b156113f657610bb283836123ac565b600061051e825490565b60606001600160a01b0384163b611e865760405162461bcd60e51b815260040161055a90613045565b600080856001600160a01b031685604051611ea1919061308b565b600060405180830381855af49150503d8060008114611edc576040519150601f19603f3d011682016040523d82523d6000602084013e611ee1565b606091505b5091509150611ef1828286612461565b9695505050505050565b6000610bd1836001600160a01b03841661249a565b6060806000611f1e86611e53565b9050808510611f6b5760408051600080825260208201818152828401909352909190611f60565b611f4d612710565b815260200190600190039081611f455790505b509250925050610eb5565b611f7585826130a7565b841115611f8957611f8685826130a7565b93505b60008467ffffffffffffffff811115611fa457611fa46128b5565b604051908082528060200260200182016040528015611fdd57816020015b611fca612710565b815260200190600190039081611fc25790505b50905060008567ffffffffffffffff811115611ffb57611ffb6128b5565b604051908082528060200260200182016040528015612024578160200160208202803683370190505b50905060005b868110156121d65761204661203f828a6130be565b8a9061258d565b82828151811061205857612058612eea565b60200260200101906001600160a01b031690816001600160a01b03168152505089600601600083838151811061209057612090612eea565b6020908102919091018101516001600160a01b039081168352828201939093526040918201600020825160c081018452815460e081901b6001600160e01b03191682526401000000008104861693820193909352600160c01b90920460ff161515928201929092526001820154909216606083015260028101805460808401919061211a90612eb6565b80601f016020809104026020016040519081016040528092919081815260200182805461214690612eb6565b80156121935780601f1061216857610100808354040283529160200191612193565b820191906000526020600020905b81548152906001019060200180831161217657829003601f168201915b505050505081526020016003820154815250508382815181106121b8576121b8612eea565b602002602001018190525080806121ce90612f16565b91505061202a565b509890975095505050505050565b60006121ef83612599565b8015610bd15750610bd183836125cc565b61220d6001840183612660565b61223557604051632ccbd64f60e01b81526001600160a01b038316600482015260240161055a565b6001600160a01b0380831660009081526006850160209081526040918290208451815483870151948701511515600160c01b0260ff60c01b19958716640100000000026001600160c01b031990921660e09390931c9290921717939093169290921782556060840151600183018054919094166001600160a01b0319909116179092556080830151805184936122d292600285019291019061277e565b5060a091820151600391820155908201516000908152908401602052604090206122fc9083612660565b506020808201516001600160a01b0316600090815260048501909152604090206123269083612660565b5060a081015160009081526005840160209081526040808320828501516001600160a01b031684529091529020610bb29083612660565b6000610bd16001840183612675565b61237581611d92565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6123d55760405162461bcd60e51b815260040161055a90613045565b600080846001600160a01b0316846040516123f0919061308b565b600060405180830381855af49150503d806000811461242b576040519150601f19603f3d011682016040523d82523d6000602084013e612430565b606091505b5091509150612458828260405180606001604052806027815260200161312060279139612461565b95945050505050565b60608315612470575081610bd1565b8251156124805782518084602001fd5b8160405162461bcd60e51b815260040161055a91906130d6565b600081815260018301602052604081205480156125835760006124be6001836130a7565b85549091506000906124d2906001906130a7565b90508181146125375760008660000182815481106124f2576124f2612eea565b906000526020600020015490508087600001848154811061251557612515612eea565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612548576125486130e9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061051e565b600091505061051e565b6000610bd18383612697565b60006125ac826301ffc9a760e01b6125cc565b801561051e57506125c5826001600160e01b03196125cc565b1592915050565b6000806301ffc9a760e01b836040516024016125e89190612ddd565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015612649575060208210155b80156126555750600081115b979650505050505050565b6000610bd1836001600160a01b0384166126c1565b6001600160a01b03811660009081526001830160205260408120541515610bd1565b60008260000182815481106126ae576126ae612eea565b9060005260206000200154905092915050565b60008181526001830160205260408120546127085750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561051e565b50600061051e565b6040805160c0810182526000808252602082018190529181018290526060808201839052608082015260a081019190915290565b50805461275090612eb6565b6000825580601f10612760575050565b601f0160209004906000526020600020908101906104f69190612802565b82805461278a90612eb6565b90600052602060002090601f0160209004810192826127ac57600085556127f2565b82601f106127c557805160ff19168380011785556127f2565b828001600101855582156127f2579182015b828111156127f25782518255916020019190600101906127d7565b506127fe929150612802565b5090565b5b808211156127fe5760008155600101612803565b6001600160a01b03811681146104f657600080fd5b60006020828403121561283e57600080fd5b8135610bd181612817565b6001600160e01b0319811681146104f657600080fd5b60006020828403121561287157600080fd5b8135610bd181612849565b6000806040838503121561288f57600080fd5b823561289a81612817565b915060208301356128aa81612817565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156128ee576128ee6128b5565b60405290565b600067ffffffffffffffff8084111561290f5761290f6128b5565b604051601f8501601f19908116603f01168101908282118183101715612937576129376128b5565b8160405280935085815286868601111561295057600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561297d57600080fd5b823561298881612817565b9150602083013567ffffffffffffffff8111156129a457600080fd5b8301601f810185136129b557600080fd5b6129c4858235602084016128f4565b9150509250929050565b60005b838110156129e95781810151838201526020016129d1565b83811115610bb25750506000910152565b60008151808452612a128160208601602086016129ce565b601f01601f19169290920160200192915050565b63ffffffff60e01b81511682526000602082015160018060a01b0380821660208601526040840151151560408601528060608501511660608601525050608082015160c06080850152612a7c60c08501826129fa565b60a093840151949093019390935250919050565b602081526000610bd16020830184612a26565b60008083601f840112612ab557600080fd5b50813567ffffffffffffffff811115612acd57600080fd5b6020830191508360208260051b8501011115612ae857600080fd5b9250929050565b600080600060408486031215612b0457600080fd5b833567ffffffffffffffff811115612b1b57600080fd5b612b2786828701612aa3565b9094509250506020840135612b3b81612817565b809150509250925092565b600060208284031215612b5857600080fd5b5035919050565b60008060408385031215612b7257600080fd5b8235915060208301356128aa81612817565b60008060208385031215612b9757600080fd5b823567ffffffffffffffff811115612bae57600080fd5b612bba85828601612aa3565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612c1b57603f19888603018452612c098583516129fa565b94509285019290850190600101612bed565b5092979650505050505050565b600060408284031215610a5757600080fd5b60008060008060808587031215612c5057600080fd5b843593506020850135612c6281612817565b93969395505050506040820135916060013590565b604080825283519082018190526000906020906060840190828701845b82811015612cb95781516001600160a01b031684529284019290840190600101612c94565b50505083810382850152845180825282820190600581901b8301840187850160005b83811015612d0957601f19868403018552612cf7838351612a26565b94870194925090860190600101612cdb565b50909998505050505050505050565b80151581146104f657600080fd5b60008060408385031215612d3957600080fd5b8235612d4481612817565b9150602083013567ffffffffffffffff80821115612d6157600080fd5b9084019060608287031215612d7557600080fd5b612d7d6128cb565b823582811115612d8c57600080fd5b83019150601f82018713612d9f57600080fd5b612dae878335602085016128f4565b81526020830135602082015260408301359250612dca83612d18565b8260408201528093505050509250929050565b6001600160e01b031991909116815260200190565b600080600060608486031215612e0757600080fd5b505081359360208301359350604090920135919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600181811c90821680612eca57607f821691505b602082108103610a5757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612f2857612f28612f00565b5060010190565b6000808335601e19843603018112612f4657600080fd5b83018035915067ffffffffffffffff821115612f6157600080fd5b602001915036819003821315612ae857600080fd5b600060208284031215612f8857600080fd5b8151610bd181612817565b600060208284031215612fa557600080fd5b8151610bd181612d18565b600060208284031215612fc257600080fd5b5051919050565b600060208284031215612fdb57600080fd5b8151610bd181612849565b600060408284031215612ff857600080fd5b6040516040810181811067ffffffffffffffff8211171561301b5761301b6128b5565b604052825161302981612817565b8152602083015161303981612817565b60208201529392505050565b60208082526026908201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6040820152651b9d1c9858dd60d21b606082015260800190565b6000825161309d8184602087016129ce565b9190910192915050565b6000828210156130b9576130b9612f00565b500390565b600082198211156130d1576130d1612f00565b500190565b602081526000610bd160208301846129fa565b634e487b7160e01b600052603160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bf5a70cd8bd4025d063033e166f43e6dac2027f0d998ff27c207e74e1179173f64736f6c634300080d0033",
  "deployedBytecode": "0x6080604052600436106101665760003560e01c80638468d228116100d1578063cda24eef1161008a578063ebf03f4911610064578063ebf03f4914610452578063ec21896d14610472578063f2c3e83e146104ad578063fee5f37f146104cd57600080fd5b8063cda24eef146103e4578063d42350ab14610412578063e528b0811461043257600080fd5b80638468d22814610317578063882080d314610337578063890e886a14610357578063ac9650d814610377578063b6a597dd146103a4578063c1e58a21146103c457600080fd5b80634ce892f4116101235780634ce892f4146102545780634f1ef28614610274578063506cf01e1461028757806352d1902d146102a757806355431024146102ca578063795b0826146102f757600080fd5b8063015eef691461016b57806301ffc9a71461018d578063183a7a05146101c25780631f180dfd146101f45780633253d503146102145780633659cfe614610234575b600080fd5b34801561017757600080fd5b5061018b61018636600461282c565b6104ed565b005b34801561019957600080fd5b506101ad6101a836600461285f565b6104f9565b60405190151581526020015b60405180910390f35b3480156101ce57600080fd5b506065546001600160a01b03165b6040516001600160a01b0390911681526020016101b9565b34801561020057600080fd5b5061018b61020f36600461287c565b610524565b34801561022057600080fd5b5061018b61022f36600461282c565b610567565b34801561024057600080fd5b5061018b61024f36600461282c565b61061d565b34801561026057600080fd5b5061018b61026f36600461282c565b6106f9565b61018b61028236600461296a565b61072a565b34801561029357600080fd5b5061018b6102a236600461282c565b6107f6565b3480156102b357600080fd5b506102bc610884565b6040519081526020016101b9565b3480156102d657600080fd5b506102ea6102e536600461282c565b610937565b6040516101b99190612a90565b34801561030357600080fd5b5061018b610312366004612aef565b610a5d565b34801561032357600080fd5b506102bc610332366004612b46565b610bb8565b34801561034357600080fd5b506101ad61035236600461287c565b610bc5565b34801561036357600080fd5b506102bc610372366004612b5f565b610bd8565b34801561038357600080fd5b50610397610392366004612b84565b610be6565b6040516101b99190612bc6565b3480156103b057600080fd5b5061018b6103bf366004612c28565b610cdb565b3480156103d057600080fd5b5061018b6103df36600461282c565b610e49565b3480156103f057600080fd5b506104046103ff366004612c3a565b610e9f565b6040516101b9929190612c77565b34801561041e57600080fd5b5061018b61042d366004612b46565b610ebe565b34801561043e57600080fd5b5061018b61044d366004612d26565b610ec9565b34801561045e57600080fd5b506101dc61046d36600461282c565b610fad565b34801561047e57600080fd5b507fa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b86040516101b99190612ddd565b3480156104b957600080fd5b5061018b6104c8366004612b5f565b610fdc565b3480156104d957600080fd5b506104046104e8366004612df2565b610fe8565b6104f681611004565b50565b60006001600160e01b03198216635b6fed0760e01b148061051e575061051e8261100f565b92915050565b61052e8282611044565b61056357604051638743ea5f60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b5050565b8061057181611004565b8161057b33611171565b15801561058f575061058d8133611044565b155b156105c35780335b60405163b0c76fc760e01b81526001600160a01b0392831660048201529116602482015260440161055a565b6001600160a01b0383166000908152609f602052604090206105e490611309565b6040516001600160a01b038416907f2a08260ffc9feb9cd743cb3dd526a959666260abda15ed904061f3babce487ba90600090a2505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106655760405162461bcd60e51b815260040161055a90612e1e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106ae600080516020613100833981519152546001600160a01b031690565b6001600160a01b0316146106d45760405162461bcd60e51b815260040161055a90612e6a565b6106dd81611346565b604080516000808252602082019092526104f6918391906113c3565b61070281611171565b6104f657604051631f1b510b60e11b81526001600160a01b038216600482015260240161055a565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107725760405162461bcd60e51b815260040161055a90612e1e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107bb600080516020613100833981519152546001600160a01b031690565b6001600160a01b0316146107e15760405162461bcd60e51b815260040161055a90612e6a565b6107ea82611346565b610563828260016113c3565b8061080081611004565b8161080a33611171565b15801561081e575061081c8133611044565b155b1561082a578033610597565b6001600160a01b0383166000908152609f6020526040902061084b90611533565b6040516001600160a01b038416907f1eaf28a93e1ad5dabb8e3983d0abb01359e7eafa0982af55e81d715704d25f4e90600090a2505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109245760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161055a565b5060008051602061310083398151915290565b61093f612710565b8161094981611004565b6001600160a01b038381166000908152609f6020908152604091829020825160c081018452815460e081901b6001600160e01b03191682526401000000008104861693820193909352600160c01b90920460ff16151592820192909252600182015490921660608301526002810180546080840191906109c890612eb6565b80601f01602080910402602001604051908101604052809291908181526020018280546109f490612eb6565b8015610a415780601f10610a1657610100808354040283529160200191610a41565b820191906000526020600020905b815481529060010190602001808311610a2457829003601f168201915b5050505050815260200160038201548152505091505b50919050565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015610abf57600080fd5b505afa158015610ad3573d6000803e3d6000fd5b5050505060005b82811015610bb2576000848483818110610af657610af6612eea565b9050602002016020810190610b0b919061282c565b9050610b1681611004565b604051637aa9c1d760e11b81526001600160a01b03828116600483015284169063f55383ae9060240160006040518083038186803b158015610b5757600080fd5b505afa158015610b6b573d6000803e3d6000fd5b505050506001600160a01b039081166000908152609f6020526040902060010180546001600160a01b03191691841691909117905580610baa81612f16565b915050610ada565b50505050565b600061051e609983611569565b6000610bd18383611044565b9392505050565b6000610bd160998484611582565b60608167ffffffffffffffff811115610c0157610c016128b5565b604051908082528060200260200182016040528015610c3457816020015b6060815260200190600190039081610c1f5790505b50905060005b82811015610cd457610ca430858584818110610c5857610c58612eea565b9050602002810190610c6a9190612f2f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115af92505050565b828281518110610cb657610cb6612eea565b60200260200101819052508080610ccc90612f16565b915050610c3a565b5092915050565b600054610100900460ff1615808015610cfb5750600054600160ff909116105b80610d155750303b158015610d15575060005460ff166001145b610d785760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161055a565b6000805460ff191660011790558015610d9b576000805461ff0019166101001790555b610da36115d4565b610db0602083018361282c565b609880546001600160a01b0319166001600160a01b0392909216919091179055610de0604083016020840161282c565b606580546001600160a01b0319166001600160a01b03929092169190911790558015610563576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b80610e5381611004565b610e5c336106f9565b610e67609983611641565b6040516001600160a01b038316907f752612ff761620ec780457bda227d89213d24d8914934d4e45c16bcb4d2b158c90600090a25050565b606080610eb0609987878787611749565b915091505b94509492505050565b6104f660998261178d565b610ed2336106f9565b600080610ee1609985856117c9565b6065546040516320ffc53d60e01b81526001600160e01b0319841660048201526001600160a01b03808416602483015293955091935091909116906320ffc53d90604401600060405180830381600087803b158015610f3f57600080fd5b505af1158015610f53573d6000803e3d6000fd5b50505050806001600160a01b0316846001600160a01b031684602001517fa6cbfe7c4f79b32395aff92e401d4d426b6a28e6eee944f19634791ad32dd2fd85604051610f9f9190612ddd565b60405180910390a450505050565b600081610fb981611004565b50506001600160a01b039081166000908152609f60205260409020600101541690565b61056360998383611cdf565b606080610ff86099868686611d3e565b91509150935093915050565b6104f6609982611d60565b60006001600160e01b0319821663ec21896d60e01b148061051e57506301ffc9a760e01b6001600160e01b031983161461051e565b60008261105081611004565b60655460405163e3dedd6b60e01b81526001600160a01b039091169063e3dedd6b906110a0907f80e923a5a548bf8cd1c0d5679e7fb52a28d9fd42e9642a412b581817718d9aa490600401612ddd565b602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190612f76565b6001600160a01b038581166000908152609f60205260409081902060030154905163c8cb083f60e01b81526004810191909152858216602482015291169063c8cb083f90604401602060405180830381865afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111699190612f93565b949350505050565b60655460405163e3dedd6b60e01b81526000916001600160a01b03169063e3dedd6b906111c2907f80e923a5a548bf8cd1c0d5679e7fb52a28d9fd42e9642a412b581817718d9aa490600401612ddd565b602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190612f76565b604051631b28936360e21b81526001600160a01b0384811660048301529190911690636ca24d8c90602401602060405180830381865afa15801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f9190612f93565b8061051e5750609854604051632474521560e21b81527f7b33fcd4a576fb243b3745879da79a929c7783304788bd4b864a5f3c69e01d7360048201526001600160a01b038481166024830152909116906391d1485490604401602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e9190612f93565b8054600160c01b900460ff16156113335760405163651c69e160e01b815260040160405180910390fd5b805460ff60c01b1916600160c01b179055565b6098546001600160a01b03166001600160a01b03166312d9a6ad6000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b5050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156113fb576113f683611d92565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611455575060408051601f3d908101601f1916820190925261145291810190612fb0565b60015b6114b85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161055a565b60008051602061310083398151915281146115275760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161055a565b506113f6838383611e2e565b8054600160c01b900460ff1661155c57604051633587233b60e11b815260040160405180910390fd5b805460ff60c01b19169055565b60008181526003830160205260408120610bd190611e53565b600082815260058401602090815260408083206001600160a01b0385168452909152812061116990611e53565b6060610bd1838360405180606001604052806027815260200161312060279139611e5d565b600054610100900460ff1661163f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161055a565b565b6001600160a01b03811660009081526006830160209081526040808320600380820154855286019092529091206116789083611efb565b50805464010000000090046001600160a01b0316600090815260048401602052604090206116a69083611efb565b506116b46001840183611efb565b50600381015460009081526005840160209081526040808320845464010000000090046001600160a01b0316845290915290206116f19083611efb565b506001600160a01b0382166000908152600684016020526040812080546001600160c81b03191681556001810180546001600160a01b03191690559061173a6002830182612744565b60038201600090555050505050565b600084815260058601602090815260408083206001600160a01b03871684529091529020606090819061177f9088908686611f10565b915091509550959350505050565b600081815260038301602052604090206117a690611e53565b60000361056357604051637675aa8560e01b81526004810182905260240161055a565b6000806001600160a01b0384163b15806117fa57506117f86001600160a01b038516630b3888fd60e31b6121e4565b155b1561181b5760405160016217fc1360e31b0319815260040160405180910390fd5b60016118c2866005016000866020015181526020019081526020016000206000876001600160a01b031663f46c73c66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190612f76565b6001600160a01b03166001600160a01b03168152602001908152602001600020611e53565b106118e057604051631e90b94d60e11b815260040160405180910390fd5b6000846001600160a01b0316635a70a2836040518163ffffffff1660e01b8152600401602060405180830381865afa158015611920573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119449190612f76565b9050306001600160a01b031663183a7a056040518163ffffffff1660e01b8152600401602060405180830381865afa158015611984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a89190612f76565b6001600160a01b0316816001600160a01b031614611a4f5780306001600160a01b031663183a7a056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a239190612f76565b604051630391492160e41b81526001600160a01b0392831660048201529116602482015260440161055a565b846001600160a01b031663e846a5a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab19190612fc9565b92506000816001600160a01b031663e3dedd6b7fda246e099bfd3225b66de35bb15cd704f64f5ee132a2e7197c0b7a2a05d6cd0b6040518263ffffffff1660e01b8152600401611b019190612ddd565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190612f76565b6001600160a01b031663b4214470856040518263ffffffff1660e01b8152600401611b6d9190612ddd565b6040805180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad9190612fe6565b60200151604051637aa9c1d760e11b81526001600160a01b038881166004830152919250829182169063f55383ae9060240160006040518083038186803b158015611bf757600080fd5b505afa158015611c0b573d6000803e3d6000fd5b50505050866001600160a01b031663f46c73c66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c719190612f76565b9350611cd488886040518060c00160405280896001600160e01b0319168152602001886001600160a01b031681526020018a6040015115158152602001856001600160a01b031681526020018a6000015181526020018a60200151815250612200565b505050935093915050565b600082815260058401602090815260408083206001600160a01b03851684529091529020611d0c90611e53565b6000036113f6576040516361f85a9960e11b8152600481018390526001600160a01b038216602482015260440161055a565b600083815260038501602052604090206060908190610eb09087908686611f10565b611d6a828261235d565b61056357604051634f59bc1f60e11b81526001600160a01b038216600482015260240161055a565b6001600160a01b0381163b611dff5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161055a565b60008051602061310083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611e378361236c565b600082511180611e445750805b156113f657610bb283836123ac565b600061051e825490565b60606001600160a01b0384163b611e865760405162461bcd60e51b815260040161055a90613045565b600080856001600160a01b031685604051611ea1919061308b565b600060405180830381855af49150503d8060008114611edc576040519150601f19603f3d011682016040523d82523d6000602084013e611ee1565b606091505b5091509150611ef1828286612461565b9695505050505050565b6000610bd1836001600160a01b03841661249a565b6060806000611f1e86611e53565b9050808510611f6b5760408051600080825260208201818152828401909352909190611f60565b611f4d612710565b815260200190600190039081611f455790505b509250925050610eb5565b611f7585826130a7565b841115611f8957611f8685826130a7565b93505b60008467ffffffffffffffff811115611fa457611fa46128b5565b604051908082528060200260200182016040528015611fdd57816020015b611fca612710565b815260200190600190039081611fc25790505b50905060008567ffffffffffffffff811115611ffb57611ffb6128b5565b604051908082528060200260200182016040528015612024578160200160208202803683370190505b50905060005b868110156121d65761204661203f828a6130be565b8a9061258d565b82828151811061205857612058612eea565b60200260200101906001600160a01b031690816001600160a01b03168152505089600601600083838151811061209057612090612eea565b6020908102919091018101516001600160a01b039081168352828201939093526040918201600020825160c081018452815460e081901b6001600160e01b03191682526401000000008104861693820193909352600160c01b90920460ff161515928201929092526001820154909216606083015260028101805460808401919061211a90612eb6565b80601f016020809104026020016040519081016040528092919081815260200182805461214690612eb6565b80156121935780601f1061216857610100808354040283529160200191612193565b820191906000526020600020905b81548152906001019060200180831161217657829003601f168201915b505050505081526020016003820154815250508382815181106121b8576121b8612eea565b602002602001018190525080806121ce90612f16565b91505061202a565b509890975095505050505050565b60006121ef83612599565b8015610bd15750610bd183836125cc565b61220d6001840183612660565b61223557604051632ccbd64f60e01b81526001600160a01b038316600482015260240161055a565b6001600160a01b0380831660009081526006850160209081526040918290208451815483870151948701511515600160c01b0260ff60c01b19958716640100000000026001600160c01b031990921660e09390931c9290921717939093169290921782556060840151600183018054919094166001600160a01b0319909116179092556080830151805184936122d292600285019291019061277e565b5060a091820151600391820155908201516000908152908401602052604090206122fc9083612660565b506020808201516001600160a01b0316600090815260048501909152604090206123269083612660565b5060a081015160009081526005840160209081526040808320828501516001600160a01b031684529091529020610bb29083612660565b6000610bd16001840183612675565b61237581611d92565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6123d55760405162461bcd60e51b815260040161055a90613045565b600080846001600160a01b0316846040516123f0919061308b565b600060405180830381855af49150503d806000811461242b576040519150601f19603f3d011682016040523d82523d6000602084013e612430565b606091505b5091509150612458828260405180606001604052806027815260200161312060279139612461565b95945050505050565b60608315612470575081610bd1565b8251156124805782518084602001fd5b8160405162461bcd60e51b815260040161055a91906130d6565b600081815260018301602052604081205480156125835760006124be6001836130a7565b85549091506000906124d2906001906130a7565b90508181146125375760008660000182815481106124f2576124f2612eea565b906000526020600020015490508087600001848154811061251557612515612eea565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612548576125486130e9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061051e565b600091505061051e565b6000610bd18383612697565b60006125ac826301ffc9a760e01b6125cc565b801561051e57506125c5826001600160e01b03196125cc565b1592915050565b6000806301ffc9a760e01b836040516024016125e89190612ddd565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015612649575060208210155b80156126555750600081115b979650505050505050565b6000610bd1836001600160a01b0384166126c1565b6001600160a01b03811660009081526001830160205260408120541515610bd1565b60008260000182815481106126ae576126ae612eea565b9060005260206000200154905092915050565b60008181526001830160205260408120546127085750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561051e565b50600061051e565b6040805160c0810182526000808252602082018190529181018290526060808201839052608082015260a081019190915290565b50805461275090612eb6565b6000825580601f10612760575050565b601f0160209004906000526020600020908101906104f69190612802565b82805461278a90612eb6565b90600052602060002090601f0160209004810192826127ac57600085556127f2565b82601f106127c557805160ff19168380011785556127f2565b828001600101855582156127f2579182015b828111156127f25782518255916020019190600101906127d7565b506127fe929150612802565b5090565b5b808211156127fe5760008155600101612803565b6001600160a01b03811681146104f657600080fd5b60006020828403121561283e57600080fd5b8135610bd181612817565b6001600160e01b0319811681146104f657600080fd5b60006020828403121561287157600080fd5b8135610bd181612849565b6000806040838503121561288f57600080fd5b823561289a81612817565b915060208301356128aa81612817565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156128ee576128ee6128b5565b60405290565b600067ffffffffffffffff8084111561290f5761290f6128b5565b604051601f8501601f19908116603f01168101908282118183101715612937576129376128b5565b8160405280935085815286868601111561295057600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561297d57600080fd5b823561298881612817565b9150602083013567ffffffffffffffff8111156129a457600080fd5b8301601f810185136129b557600080fd5b6129c4858235602084016128f4565b9150509250929050565b60005b838110156129e95781810151838201526020016129d1565b83811115610bb25750506000910152565b60008151808452612a128160208601602086016129ce565b601f01601f19169290920160200192915050565b63ffffffff60e01b81511682526000602082015160018060a01b0380821660208601526040840151151560408601528060608501511660608601525050608082015160c06080850152612a7c60c08501826129fa565b60a093840151949093019390935250919050565b602081526000610bd16020830184612a26565b60008083601f840112612ab557600080fd5b50813567ffffffffffffffff811115612acd57600080fd5b6020830191508360208260051b8501011115612ae857600080fd5b9250929050565b600080600060408486031215612b0457600080fd5b833567ffffffffffffffff811115612b1b57600080fd5b612b2786828701612aa3565b9094509250506020840135612b3b81612817565b809150509250925092565b600060208284031215612b5857600080fd5b5035919050565b60008060408385031215612b7257600080fd5b8235915060208301356128aa81612817565b60008060208385031215612b9757600080fd5b823567ffffffffffffffff811115612bae57600080fd5b612bba85828601612aa3565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612c1b57603f19888603018452612c098583516129fa565b94509285019290850190600101612bed565b5092979650505050505050565b600060408284031215610a5757600080fd5b60008060008060808587031215612c5057600080fd5b843593506020850135612c6281612817565b93969395505050506040820135916060013590565b604080825283519082018190526000906020906060840190828701845b82811015612cb95781516001600160a01b031684529284019290840190600101612c94565b50505083810382850152845180825282820190600581901b8301840187850160005b83811015612d0957601f19868403018552612cf7838351612a26565b94870194925090860190600101612cdb565b50909998505050505050505050565b80151581146104f657600080fd5b60008060408385031215612d3957600080fd5b8235612d4481612817565b9150602083013567ffffffffffffffff80821115612d6157600080fd5b9084019060608287031215612d7557600080fd5b612d7d6128cb565b823582811115612d8c57600080fd5b83019150601f82018713612d9f57600080fd5b612dae878335602085016128f4565b81526020830135602082015260408301359250612dca83612d18565b8260408201528093505050509250929050565b6001600160e01b031991909116815260200190565b600080600060608486031215612e0757600080fd5b505081359360208301359350604090920135919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600181811c90821680612eca57607f821691505b602082108103610a5757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612f2857612f28612f00565b5060010190565b6000808335601e19843603018112612f4657600080fd5b83018035915067ffffffffffffffff821115612f6157600080fd5b602001915036819003821315612ae857600080fd5b600060208284031215612f8857600080fd5b8151610bd181612817565b600060208284031215612fa557600080fd5b8151610bd181612d18565b600060208284031215612fc257600080fd5b5051919050565b600060208284031215612fdb57600080fd5b8151610bd181612849565b600060408284031215612ff857600080fd5b6040516040810181811067ffffffffffffffff8211171561301b5761301b6128b5565b604052825161302981612817565b8152602083015161303981612817565b60208201529392505050565b60208082526026908201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6040820152651b9d1c9858dd60d21b606082015260800190565b6000825161309d8184602087016129ce565b9190910192915050565b6000828210156130b9576130b9612f00565b500390565b600082198211156130d1576130d1612f00565b500190565b602081526000610bd160208301846129fa565b634e487b7160e01b600052603160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bf5a70cd8bd4025d063033e166f43e6dac2027f0d998ff27c207e74e1179173f64736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
