{
  "_format": "hh-sol-artifact-1",
  "contractName": "ForwarderMockV1",
  "sourceName": "contracts/mocks/ForwarderMockV1.sol",
  "abi": [
    {
      "inputs": [],
      "name": "ForwarderDeprecatedFactory",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderErrorDeploying",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderErrorRemoving",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderFactoryAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderFactoryAlreadyAdded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderNotDeprecatedFactory",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderNotSupportedInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderUnableToRetrieveFactryInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderUnexistentFactory",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ForwarderUnknownVenue",
      "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": true,
          "internalType": "address",
          "name": "venue",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "deployed",
          "type": "address"
        }
      ],
      "name": "Deployment",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bool",
          "name": "deprecate",
          "type": "bool"
        }
      ],
      "name": "DeprecateFactory",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "factoriesCount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "NewFactory",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "venue",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_event",
          "type": "address"
        }
      ],
      "name": "Removed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "addfactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "typeOf",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "mainData",
          "type": "bytes"
        }
      ],
      "name": "deploy",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "deprecate",
          "type": "bool"
        }
      ],
      "name": "deprecateFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "deprecated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factoriesCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "position",
          "type": "uint256"
        }
      ],
      "name": "getFactoryAt",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "getFactoryPosition",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "venueRegistar",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_event",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "typeOf",
          "type": "uint256"
        }
      ],
      "name": "removeEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "setValue",
      "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": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "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": [],
      "name": "value",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "versionForwarder",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161198c61004c600039600081816104260152818161046f01528181610890015281816108d00152610963015261198c6000f3fe6080604052600436106101145760003560e01c806355241077116100a05780638da5cb5b116100645780638da5cb5b1461035157806393a1bfe51461036f578063c4d66de814610385578063db97d1b6146103a5578063f2fde38b146103c557600080fd5b8063552410771461027a5780636822ee771461029a578063715018a6146102e65780637ad5757b146102fb5780637bc2fca61461031b57600080fd5b80633a07d203116100e75780633a07d203146101c05780633fa4f2451461020e578063412579ac146102325780634f1ef2861461025257806352d1902d1461026557600080fd5b806301ffc9a714610119578063266f803a1461014e5780633659cfe61461017e5780633820cc48146101a0575b600080fd5b34801561012557600080fd5b50610139610134366004611479565b6103e5565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b506101396101693660046114b8565b60cd6020526000908152604090205460ff1681565b34801561018a57600080fd5b5061019e6101993660046114b8565b61041c565b005b3480156101ac57600080fd5b5061019e6101bb3660046114e3565b610504565b3480156101cc57600080fd5b506101f66101db36600461151c565b600090815260cb60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610145565b34801561021a57600080fd5b5061022460ce5481565b604051908152602001610145565b34801561023e57600080fd5b506101f661024d3660046115d8565b610655565b61019e61026036600461166a565b610886565b34801561027157600080fd5b50610224610956565b34801561028657600080fd5b5061019e61029536600461151c565b60ce55565b3480156102a657600080fd5b50604080518082018252601f81527f312e302e312d626574612e302b666f622e7273762e69466f727761726465720060208201529051610145919061170a565b3480156102f257600080fd5b5061019e610a09565b34801561030757600080fd5b5061019e61031636600461171d565b610a1d565b34801561032757600080fd5b506102246103363660046114b8565b6001600160a01b0316600090815260cc602052604090205490565b34801561035d57600080fd5b506097546001600160a01b03166101f6565b34801561037b57600080fd5b5061022460ca5481565b34801561039157600080fd5b5061019e6103a03660046114b8565b610bf5565b3480156103b157600080fd5b5061019e6103c03660046114b8565b610d29565b3480156103d157600080fd5b5061019e6103e03660046114b8565b610f14565b60006001600160e01b0319821663f1a0d1fb60e01b148061041657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361046d5760405162461bcd60e51b815260040161046490611749565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104b6600080516020611910833981519152546001600160a01b031690565b6001600160a01b0316146104dc5760405162461bcd60e51b815260040161046490611795565b6104e581610f8a565b6040805160008082526020820190925261050191839190610f92565b50565b61050c611102565b6001600160a01b03821661053357604051630a44b07160e21b815260040160405180910390fd5b6001600160a01b038216600090815260cc602052604090205480158061055a575060ca5481115b1561057857604051639475325d60e01b815260040160405180910390fd5b81801561059d57506001600160a01b038316600090815260cd602052604090205460ff165b156105bb576040516332e034cf60e01b815260040160405180910390fd5b811580156105e257506001600160a01b038316600090815260cd602052604090205460ff16155b1561060057604051631c1317d160e21b815260040160405180910390fd5b6001600160a01b038316600081815260cd6020526040808220805460ff191686151590811790915590519092917f95b7e67c4c8ccc15e4223462307eba617548b8a88514e92b3d0caf612fca5d5391a3505050565b6000803360c9546040516331135b1560e21b81526001600160a01b038084166004830152929350911690819063c44d6c5490602401602060405180830381865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb91906117e1565b6106e8576040516376c78e2560e01b815260040160405180910390fd5b600087815260cb60205260409020546001600160a01b03168061071e57604051639475325d60e01b815260040160405180910390fd5b6001600160a01b038116600090815260cd602052604090205460ff1615610758576040516332e034cf60e01b815260040160405180910390fd5b600080826001600160a01b03168989878a60405160240161077c94939291906117fe565b60408051601f198184030181529181526020820180516001600160e01b031663a1c0271560e01b179052516107b19190611851565b6000604051808303816000865af19150503d80600081146107ee576040519150601f19603f3d011682016040523d82523d6000602084013e6107f3565b606091505b509150915081610816576040516356400c6760e11b815260040160405180910390fd5b60008180602001905181019061082c919061186d565b9050806001600160a01b0316846001600160a01b0316876001600160a01b03167fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b60405160405180910390a49a9950505050505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108ce5760405162461bcd60e51b815260040161046490611749565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610917600080516020611910833981519152546001600160a01b031690565b6001600160a01b03161461093d5760405162461bcd60e51b815260040161046490611795565b61094682610f8a565b61095282826001610f92565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610464565b5060008051602061191083398151915290565b610a11611102565b610a1b600061115c565b565b60003360c9546040516331135b1560e21b81526001600160a01b038084166004830152929350911690819063c44d6c5490602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9291906117e1565b610aaf576040516376c78e2560e01b815260040160405180910390fd5b600083815260cb60205260409020546001600160a01b031680610ae557604051639475325d60e01b815260040160405180910390fd5b6040516001600160a01b03848116602483015286811660448301526000919083169060640160408051601f198184030181529181526020820180516001600160e01b0316632125b64d60e01b17905251610b3f9190611851565b6000604051808303816000865af19150503d8060008114610b7c576040519150601f19603f3d011682016040523d82523d6000602084013e610b81565b606091505b5050905080610ba3576040516313c3bc5d60e31b815260040160405180910390fd5b856001600160a01b0316826001600160a01b0316856001600160a01b03167f4368d6582144a94c357dcbd8b4e4c77492a67a7fc024956667589cd143cfe21660405160405180910390a4505050505050565b600054610100900460ff1615808015610c155750600054600160ff909116105b80610c2f5750303b158015610c2f575060005460ff166001145b610c925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610464565b6000805460ff191660011790558015610cb5576000805461ff0019166101001790555b60c980546001600160a01b0319166001600160a01b038416179055610cd86111ae565b610ce06111dd565b8015610952576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610d31611102565b6001600160a01b038116610d5857604051630a44b07160e21b815260040160405180910390fd5b6001600160a01b038116600090815260cc602052604090205415610d8f576040516307e1365f60e11b815260040160405180910390fd5b604051634beaa77b60e11b602482018190529060009081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610dea9190611851565b6000604051808303816000865af19150503d8060008114610e27576040519150601f19603f3d011682016040523d82523d6000602084013e610e2c565b606091505b509150915081610e4f576040516371545f7f60e01b815260040160405180910390fd5b600081806020019051810190610e6591906117e1565b905080610e855760405163e24dc2ed60e01b815260040160405180910390fd5b600160ca6000828254610e98919061188a565b909155505060ca8054600090815260cb6020908152604080832080546001600160a01b0319166001600160a01b038b16908117909155935484845260cc835292819020839055519182527f2551370c57e1800a705167539e79ebcfb5dd65791d231c9f5827f7876a632986910160405180910390a25050505050565b610f1c611102565b6001600160a01b038116610f815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610464565b6105018161115c565b610501611102565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610fca57610fc583611204565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611024575060408051601f3d908101601f19168201909252611021918101906118ab565b60015b6110875760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610464565b60008051602061191083398151915281146110f65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610464565b50610fc58383836112a0565b6097546001600160a01b03163314610a1b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610464565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166111d55760405162461bcd60e51b8152600401610464906118c4565b610a1b6112cb565b600054610100900460ff16610a1b5760405162461bcd60e51b8152600401610464906118c4565b6001600160a01b0381163b6112715760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610464565b60008051602061191083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6112a9836112fb565b6000825111806112b65750805b15610fc5576112c5838361133b565b50505050565b600054610100900460ff166112f25760405162461bcd60e51b8152600401610464906118c4565b610a1b3361115c565b61130481611204565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6113a35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610464565b600080846001600160a01b0316846040516113be9190611851565b600060405180830381855af49150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b509150915061142682826040518060600160405280602781526020016119306027913961142f565b95945050505050565b6060831561143e575081611448565b611448838361144f565b9392505050565b81511561145f5781518083602001fd5b8060405162461bcd60e51b8152600401610464919061170a565b60006020828403121561148b57600080fd5b81356001600160e01b03198116811461144857600080fd5b6001600160a01b038116811461050157600080fd5b6000602082840312156114ca57600080fd5b8135611448816114a3565b801515811461050157600080fd5b600080604083850312156114f657600080fd5b8235611501816114a3565b91506020830135611511816114d5565b809150509250929050565b60006020828403121561152e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261155c57600080fd5b813567ffffffffffffffff8082111561157757611577611535565b604051601f8301601f19908116603f0116810190828211818310171561159f5761159f611535565b816040528381528660208588010111156115b857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156115ee57600080fd5b84359350602085013567ffffffffffffffff8082111561160d57600080fd5b6116198883890161154b565b9450604087013591508082111561162f57600080fd5b61163b8883890161154b565b9350606087013591508082111561165157600080fd5b5061165e8782880161154b565b91505092959194509250565b6000806040838503121561167d57600080fd5b8235611688816114a3565b9150602083013567ffffffffffffffff8111156116a457600080fd5b6116b08582860161154b565b9150509250929050565b60005b838110156116d55781810151838201526020016116bd565b50506000910152565b600081518084526116f68160208601602086016116ba565b601f01601f19169290920160200192915050565b60208152600061144860208301846116de565b6000806040838503121561173057600080fd5b823561173b816114a3565b946020939093013593505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156117f357600080fd5b8151611448816114d5565b60808152600061181160808301876116de565b828103602084015261182381876116de565b6001600160a01b03861660408501528381036060850152905061184681856116de565b979650505050505050565b600082516118638184602087016116ba565b9190910192915050565b60006020828403121561187f57600080fd5b8151611448816114a3565b8082018082111561041657634e487b7160e01b600052601160045260246000fd5b6000602082840312156118bd57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122026ead963e02d4a0db2be3f08cf014441839e4de08a6beaf18aacfbf964992df264736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106101145760003560e01c806355241077116100a05780638da5cb5b116100645780638da5cb5b1461035157806393a1bfe51461036f578063c4d66de814610385578063db97d1b6146103a5578063f2fde38b146103c557600080fd5b8063552410771461027a5780636822ee771461029a578063715018a6146102e65780637ad5757b146102fb5780637bc2fca61461031b57600080fd5b80633a07d203116100e75780633a07d203146101c05780633fa4f2451461020e578063412579ac146102325780634f1ef2861461025257806352d1902d1461026557600080fd5b806301ffc9a714610119578063266f803a1461014e5780633659cfe61461017e5780633820cc48146101a0575b600080fd5b34801561012557600080fd5b50610139610134366004611479565b6103e5565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b506101396101693660046114b8565b60cd6020526000908152604090205460ff1681565b34801561018a57600080fd5b5061019e6101993660046114b8565b61041c565b005b3480156101ac57600080fd5b5061019e6101bb3660046114e3565b610504565b3480156101cc57600080fd5b506101f66101db36600461151c565b600090815260cb60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610145565b34801561021a57600080fd5b5061022460ce5481565b604051908152602001610145565b34801561023e57600080fd5b506101f661024d3660046115d8565b610655565b61019e61026036600461166a565b610886565b34801561027157600080fd5b50610224610956565b34801561028657600080fd5b5061019e61029536600461151c565b60ce55565b3480156102a657600080fd5b50604080518082018252601f81527f312e302e312d626574612e302b666f622e7273762e69466f727761726465720060208201529051610145919061170a565b3480156102f257600080fd5b5061019e610a09565b34801561030757600080fd5b5061019e61031636600461171d565b610a1d565b34801561032757600080fd5b506102246103363660046114b8565b6001600160a01b0316600090815260cc602052604090205490565b34801561035d57600080fd5b506097546001600160a01b03166101f6565b34801561037b57600080fd5b5061022460ca5481565b34801561039157600080fd5b5061019e6103a03660046114b8565b610bf5565b3480156103b157600080fd5b5061019e6103c03660046114b8565b610d29565b3480156103d157600080fd5b5061019e6103e03660046114b8565b610f14565b60006001600160e01b0319821663f1a0d1fb60e01b148061041657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361046d5760405162461bcd60e51b815260040161046490611749565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104b6600080516020611910833981519152546001600160a01b031690565b6001600160a01b0316146104dc5760405162461bcd60e51b815260040161046490611795565b6104e581610f8a565b6040805160008082526020820190925261050191839190610f92565b50565b61050c611102565b6001600160a01b03821661053357604051630a44b07160e21b815260040160405180910390fd5b6001600160a01b038216600090815260cc602052604090205480158061055a575060ca5481115b1561057857604051639475325d60e01b815260040160405180910390fd5b81801561059d57506001600160a01b038316600090815260cd602052604090205460ff165b156105bb576040516332e034cf60e01b815260040160405180910390fd5b811580156105e257506001600160a01b038316600090815260cd602052604090205460ff16155b1561060057604051631c1317d160e21b815260040160405180910390fd5b6001600160a01b038316600081815260cd6020526040808220805460ff191686151590811790915590519092917f95b7e67c4c8ccc15e4223462307eba617548b8a88514e92b3d0caf612fca5d5391a3505050565b6000803360c9546040516331135b1560e21b81526001600160a01b038084166004830152929350911690819063c44d6c5490602401602060405180830381865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb91906117e1565b6106e8576040516376c78e2560e01b815260040160405180910390fd5b600087815260cb60205260409020546001600160a01b03168061071e57604051639475325d60e01b815260040160405180910390fd5b6001600160a01b038116600090815260cd602052604090205460ff1615610758576040516332e034cf60e01b815260040160405180910390fd5b600080826001600160a01b03168989878a60405160240161077c94939291906117fe565b60408051601f198184030181529181526020820180516001600160e01b031663a1c0271560e01b179052516107b19190611851565b6000604051808303816000865af19150503d80600081146107ee576040519150601f19603f3d011682016040523d82523d6000602084013e6107f3565b606091505b509150915081610816576040516356400c6760e11b815260040160405180910390fd5b60008180602001905181019061082c919061186d565b9050806001600160a01b0316846001600160a01b0316876001600160a01b03167fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b60405160405180910390a49a9950505050505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108ce5760405162461bcd60e51b815260040161046490611749565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610917600080516020611910833981519152546001600160a01b031690565b6001600160a01b03161461093d5760405162461bcd60e51b815260040161046490611795565b61094682610f8a565b61095282826001610f92565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610464565b5060008051602061191083398151915290565b610a11611102565b610a1b600061115c565b565b60003360c9546040516331135b1560e21b81526001600160a01b038084166004830152929350911690819063c44d6c5490602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9291906117e1565b610aaf576040516376c78e2560e01b815260040160405180910390fd5b600083815260cb60205260409020546001600160a01b031680610ae557604051639475325d60e01b815260040160405180910390fd5b6040516001600160a01b03848116602483015286811660448301526000919083169060640160408051601f198184030181529181526020820180516001600160e01b0316632125b64d60e01b17905251610b3f9190611851565b6000604051808303816000865af19150503d8060008114610b7c576040519150601f19603f3d011682016040523d82523d6000602084013e610b81565b606091505b5050905080610ba3576040516313c3bc5d60e31b815260040160405180910390fd5b856001600160a01b0316826001600160a01b0316856001600160a01b03167f4368d6582144a94c357dcbd8b4e4c77492a67a7fc024956667589cd143cfe21660405160405180910390a4505050505050565b600054610100900460ff1615808015610c155750600054600160ff909116105b80610c2f5750303b158015610c2f575060005460ff166001145b610c925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610464565b6000805460ff191660011790558015610cb5576000805461ff0019166101001790555b60c980546001600160a01b0319166001600160a01b038416179055610cd86111ae565b610ce06111dd565b8015610952576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610d31611102565b6001600160a01b038116610d5857604051630a44b07160e21b815260040160405180910390fd5b6001600160a01b038116600090815260cc602052604090205415610d8f576040516307e1365f60e11b815260040160405180910390fd5b604051634beaa77b60e11b602482018190529060009081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610dea9190611851565b6000604051808303816000865af19150503d8060008114610e27576040519150601f19603f3d011682016040523d82523d6000602084013e610e2c565b606091505b509150915081610e4f576040516371545f7f60e01b815260040160405180910390fd5b600081806020019051810190610e6591906117e1565b905080610e855760405163e24dc2ed60e01b815260040160405180910390fd5b600160ca6000828254610e98919061188a565b909155505060ca8054600090815260cb6020908152604080832080546001600160a01b0319166001600160a01b038b16908117909155935484845260cc835292819020839055519182527f2551370c57e1800a705167539e79ebcfb5dd65791d231c9f5827f7876a632986910160405180910390a25050505050565b610f1c611102565b6001600160a01b038116610f815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610464565b6105018161115c565b610501611102565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610fca57610fc583611204565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611024575060408051601f3d908101601f19168201909252611021918101906118ab565b60015b6110875760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610464565b60008051602061191083398151915281146110f65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610464565b50610fc58383836112a0565b6097546001600160a01b03163314610a1b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610464565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166111d55760405162461bcd60e51b8152600401610464906118c4565b610a1b6112cb565b600054610100900460ff16610a1b5760405162461bcd60e51b8152600401610464906118c4565b6001600160a01b0381163b6112715760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610464565b60008051602061191083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6112a9836112fb565b6000825111806112b65750805b15610fc5576112c5838361133b565b50505050565b600054610100900460ff166112f25760405162461bcd60e51b8152600401610464906118c4565b610a1b3361115c565b61130481611204565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6113a35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610464565b600080846001600160a01b0316846040516113be9190611851565b600060405180830381855af49150503d80600081146113f9576040519150601f19603f3d011682016040523d82523d6000602084013e6113fe565b606091505b509150915061142682826040518060600160405280602781526020016119306027913961142f565b95945050505050565b6060831561143e575081611448565b611448838361144f565b9392505050565b81511561145f5781518083602001fd5b8060405162461bcd60e51b8152600401610464919061170a565b60006020828403121561148b57600080fd5b81356001600160e01b03198116811461144857600080fd5b6001600160a01b038116811461050157600080fd5b6000602082840312156114ca57600080fd5b8135611448816114a3565b801515811461050157600080fd5b600080604083850312156114f657600080fd5b8235611501816114a3565b91506020830135611511816114d5565b809150509250929050565b60006020828403121561152e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261155c57600080fd5b813567ffffffffffffffff8082111561157757611577611535565b604051601f8301601f19908116603f0116810190828211818310171561159f5761159f611535565b816040528381528660208588010111156115b857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156115ee57600080fd5b84359350602085013567ffffffffffffffff8082111561160d57600080fd5b6116198883890161154b565b9450604087013591508082111561162f57600080fd5b61163b8883890161154b565b9350606087013591508082111561165157600080fd5b5061165e8782880161154b565b91505092959194509250565b6000806040838503121561167d57600080fd5b8235611688816114a3565b9150602083013567ffffffffffffffff8111156116a457600080fd5b6116b08582860161154b565b9150509250929050565b60005b838110156116d55781810151838201526020016116bd565b50506000910152565b600081518084526116f68160208601602086016116ba565b601f01601f19169290920160200192915050565b60208152600061144860208301846116de565b6000806040838503121561173057600080fd5b823561173b816114a3565b946020939093013593505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156117f357600080fd5b8151611448816114d5565b60808152600061181160808301876116de565b828103602084015261182381876116de565b6001600160a01b03861660408501528381036060850152905061184681856116de565b979650505050505050565b600082516118638184602087016116ba565b9190910192915050565b60006020828403121561187f57600080fd5b8151611448816114a3565b8082018082111561041657634e487b7160e01b600052601160045260246000fd5b6000602082840312156118bd57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122026ead963e02d4a0db2be3f08cf014441839e4de08a6beaf18aacfbf964992df264736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
