Files

1369 lines
81 KiB
JSON
Raw Permalink Normal View History

{
"_format": "hh-sol-artifact-1",
"contractName": "CommodityCCIPBridge",
"sourceName": "contracts/bridge/CommodityCCIPBridge.sol",
"abi": [
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint64",
"name": "destinationChain",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "usedPMM",
"type": "bool"
}
],
"name": "BridgeExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "certificateHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "custodian",
"type": "address"
}
],
"name": "CertificateRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "deliveryId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "enum CommodityCCIPBridge.DeliveryStatus",
"name": "status",
"type": "uint8"
}
],
"name": "DeliveryStatusUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "receiverBridge",
"type": "address"
}
],
"name": "DestinationAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "DestinationRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint64",
"name": "sourceChainSelector",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "MessageReceived",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "deliveryId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "PhysicalDeliveryRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "BRIDGE_OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
},
{
"internalType": "address",
"name": "receiverBridge",
"type": "address"
}
],
"name": "addDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "custodian",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "approveCustodian",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "approvedCustodians",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "assetRegistry",
"outputs": [
{
"internalType": "contract UniversalAssetRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "destinationChain",
"type": "uint64"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "bytes32",
"name": "assetType",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "usePMM",
"type": "bool"
},
{
"internalType": "bool",
"name": "useVault",
"type": "bool"
},
{
"internalType": "bytes",
"name": "complianceProof",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "vaultInstructions",
"type": "bytes"
}
],
"internalType": "struct UniversalCCIPBridge.BridgeOperation",
"name": "op",
"type": "tuple"
}
],
"name": "bridge",
"outputs": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "destinationChain",
"type": "uint64"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "bytes32",
"name": "certificateHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "custodianSignature",
"type": "bytes"
}
],
"name": "bridgeCommodity",
"outputs": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "ccipRouter",
"outputs": [
{
"internalType": "contract IRouterClient",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "certificates",
"outputs": [
{
"internalType": "bytes32",
"name": "certificateHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "custodian",
"type": "address"
},
{
"internalType": "uint256",
"name": "quantity",
"type": "uint256"
},
{
"internalType": "string",
"name": "commodityType",
"type": "string"
},
{
"internalType": "uint256",
"name": "issuedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiresAt",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isValid",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "deliveryIds",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "deliveryRequests",
"outputs": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "requester",
"type": "address"
},
{
"internalType": "string",
"name": "deliveryAddress",
"type": "string"
},
{
"internalType": "uint256",
"name": "requestedAt",
"type": "uint256"
},
{
"internalType": "enum CommodityCCIPBridge.DeliveryStatus",
"name": "status",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"name": "destinations",
"outputs": [
{
"internalType": "address",
"name": "receiverBridge",
"type": "address"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "addedAt",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "getDestination",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "receiverBridge",
"type": "address"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "addedAt",
"type": "uint256"
}
],
"internalType": "struct UniversalCCIPBridge.Destination",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserVault",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_assetRegistry",
"type": "address"
},
{
"internalType": "address",
"name": "_ccipRouter",
"type": "address"
},
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"internalType": "string",
"name": "deliveryAddress",
"type": "string"
}
],
"name": "initiatePhysicalDelivery",
"outputs": [
{
"internalType": "bytes32",
"name": "deliveryId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "liquidityManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "processedMessages",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "bytes32",
"name": "certificateHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "custodian",
"type": "address"
},
{
"internalType": "uint256",
"name": "quantity",
"type": "uint256"
},
{
"internalType": "string",
"name": "commodityType",
"type": "string"
},
{
"internalType": "uint256",
"name": "expiresAt",
"type": "uint256"
}
],
"name": "registerCertificate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint64",
"name": "chainSelector",
"type": "uint64"
}
],
"name": "removeDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "bytes32",
"name": "certificateHash",
"type": "bytes32"
}
],
"name": "revokeCertificate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_ccipRouter",
"type": "address"
}
],
"name": "setCCIPRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_liquidityManager",
"type": "address"
}
],
"name": "setLiquidityManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_vaultFactory",
"type": "address"
}
],
"name": "setVaultFactory",
"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": "",
"type": "address"
}
],
"name": "tokenCustodians",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "deliveryId",
"type": "bytes32"
},
{
"internalType": "enum CommodityCCIPBridge.DeliveryStatus",
"name": "status",
"type": "uint8"
}
],
"name": "updateDeliveryStatus",
"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": "",
"type": "address"
}
],
"name": "userVaults",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "validCertificates",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vaultFactory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a08060405234620000d157306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c16620000c257506001600160401b036002600160401b0319828216016200007c575b6040516133df9081620000d7823960805181818161111801526111d20152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880806200005c565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816301ffc9a714612544575080630b189b92146124ca5780630de22984146124a15780630fe3472c14611d5357806315886a5514611d065780631e3357fc14611772578063248a9ca3146117365780632958d031146103955780632f2ff15d146116ea57806331c1e16a1461166f578063338274381461164657806336568abe146115ff578063377631d7146115395780633c1624d4146114f65780633ccfd60b146114b05780633ea7fbdb1461146d5780634b3192dd1461142e5780634be40fd1146113f35780634f1ef2861461118257806352d1902d1461110557806363673e50146110925780636834e3a814610c8d5780636f739c7a1461103b578063704f884814610fb157806378387c0414610cfe57806378835dd914610cc75780637ecebe0014610c8d57806388ba16ab14610c5c5780638a1856c21461093757806391d14854146108dd578063979d7e86146108b45780639833ca2014610809578063a217fddf146107ed578063a6425c311461074e578063ad3cb1cc14610708578063c0c53b8b1461051c578063c45d6f9914610480578063cad3642f14610445578063d547741f146103f9578063d8a06f73146103d0578063f2380a0814610395578063f72c0d8b1461035a5763fa29f52614610203573861000f565b346103555760603660031901126103555761021c612597565b6102246125d9565b9061022d6125c3565b90610236612bc7565b6001600160a01b039081169182156103235781169081156102ee577f204fe11fb8c7a51e768e894685e74e8fe9e8741492ea62d715826577a7a40eb5916020916001604051916102858361261c565b838352848301828152604084019142835288600052600487526001600160401b0360406000209a16998a6000528752604060002094511684549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717835551910155604051908152a3005b60405162461bcd60e51b815260206004820152600d60248201526c2d32b937903932b1b2b4bb32b960991b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b6044820152606490fd5b600080fd5b346103555760003660031901126103555760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346103555760203660031901126103555760206001600160a01b03806103b9612597565b166000526005825260406000205416604051908152f35b34610355576000366003190112610355576003546040516001600160a01b039091168152602090f35b346103555760403660031901126103555761001b6004356104186125ad565b908060005260008051602061336a833981519152602052610440600160406000200154612c7b565b613222565b346103555760203660031901126103555760206001600160a01b0380610469612597565b16600052600a825260406000205416604051908152f35b3461035557602036600319011261035557600435600052600c6020526040600020805460018060a01b039161051883600183015416936105086002840154916003850154166104d1600486016127b8565b9060ff600660058801549701541693604051988998895260208901526040880152606087015260e0608087015260e0860190612880565b9260a085015260c08401906128a5565b0390f35b3461035557606036600319011261035557610535612597565b61053d6125ad565b6105456125c3565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549360ff8560401c1615926001600160401b03861695861580610701575b600180981490816106f7575b1590816106ee575b506106dc5767ffffffffffffffff19811687178655846106bd575b506105bf6132a5565b6105c76132a5565b6105cf6132a5565b8560008051602061338a833981519152556105e86132a5565b6001600160a01b0390811690811561068857610636936001600160601b0360a01b9283600054161760005516908161067b575b505061062681612fc5565b5061063081613053565b50613103565b5061063d57005b805468ff0000000000000000191690556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b865416178555858061061b565b60405162461bcd60e51b815260206004820152600d60248201526c5a65726f20726567697374727960981b6044820152606490fd5b68ffffffffffffffffff191668010000000000000001178555866105b6565b60405163f92ee8a960e01b8152600490fd5b9050158861059b565b303b159150610593565b5084610587565b3461035557600036600319011261035557610518604051
"deployedBytecode": "0x608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816301ffc9a714612544575080630b189b92146124ca5780630de22984146124a15780630fe3472c14611d5357806315886a5514611d065780631e3357fc14611772578063248a9ca3146117365780632958d031146103955780632f2ff15d146116ea57806331c1e16a1461166f578063338274381461164657806336568abe146115ff578063377631d7146115395780633c1624d4146114f65780633ccfd60b146114b05780633ea7fbdb1461146d5780634b3192dd1461142e5780634be40fd1146113f35780634f1ef2861461118257806352d1902d1461110557806363673e50146110925780636834e3a814610c8d5780636f739c7a1461103b578063704f884814610fb157806378387c0414610cfe57806378835dd914610cc75780637ecebe0014610c8d57806388ba16ab14610c5c5780638a1856c21461093757806391d14854146108dd578063979d7e86146108b45780639833ca2014610809578063a217fddf146107ed578063a6425c311461074e578063ad3cb1cc14610708578063c0c53b8b1461051c578063c45d6f9914610480578063cad3642f14610445578063d547741f146103f9578063d8a06f73146103d0578063f2380a0814610395578063f72c0d8b1461035a5763fa29f52614610203573861000f565b346103555760603660031901126103555761021c612597565b6102246125d9565b9061022d6125c3565b90610236612bc7565b6001600160a01b039081169182156103235781169081156102ee577f204fe11fb8c7a51e768e894685e74e8fe9e8741492ea62d715826577a7a40eb5916020916001604051916102858361261c565b838352848301828152604084019142835288600052600487526001600160401b0360406000209a16998a6000528752604060002094511684549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717835551910155604051908152a3005b60405162461bcd60e51b815260206004820152600d60248201526c2d32b937903932b1b2b4bb32b960991b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152692d32b937903a37b5b2b760b11b6044820152606490fd5b600080fd5b346103555760003660031901126103555760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346103555760203660031901126103555760206001600160a01b03806103b9612597565b166000526005825260406000205416604051908152f35b34610355576000366003190112610355576003546040516001600160a01b039091168152602090f35b346103555760403660031901126103555761001b6004356104186125ad565b908060005260008051602061336a833981519152602052610440600160406000200154612c7b565b613222565b346103555760203660031901126103555760206001600160a01b0380610469612597565b16600052600a825260406000205416604051908152f35b3461035557602036600319011261035557600435600052600c6020526040600020805460018060a01b039161051883600183015416936105086002840154916003850154166104d1600486016127b8565b9060ff600660058801549701541693604051988998895260208901526040880152606087015260e0608087015260e0860190612880565b9260a085015260c08401906128a5565b0390f35b3461035557606036600319011261035557610535612597565b61053d6125ad565b6105456125c3565b917ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549360ff8560401c1615926001600160401b03861695861580610701575b600180981490816106f7575b1590816106ee575b506106dc5767ffffffffffffffff19811687178655846106bd575b506105bf6132a5565b6105c76132a5565b6105cf6132a5565b8560008051602061338a833981519152556105e86132a5565b6001600160a01b0390811690811561068857610636936001600160601b0360a01b9283600054161760005516908161067b575b505061062681612fc5565b5061063081613053565b50613103565b5061063d57005b805468ff0000000000000000191690556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b865416178555858061061b565b60405162461bcd60e51b815260206004820152600d60248201526c5a65726f20726567697374727960981b6044820152606490fd5b68ffffffffffffffffff191668010000000000000001178555866105b6565b60405163f92ee8a960e01b8152600490fd5b9050158861059b565b303b159150610593565b5084610587565b34610355576000366003190112610355576105186040516107288161266d565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612880565b34610355576040366003190112610355576060610769612597565b6107716125d9565b610779612ba8565b5060018060a01b0380921660005260046020526001600160401b0360406000209116600052602052604060002090604051906107b48261261c565b6040600184549283169485855260ff602086019460a01c1615158452015492019182526040519283525115156020830152516040820152f35b3461035557
"linkReferences": {},
"deployedLinkReferences": {}
}