@settlemint/solidity-token-erc721a
Version:
Smart contract set to build an ERC721a token in SettleMint
492 lines (491 loc) • 30.3 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC721A",
"sourceName": "erc721a/contracts/ERC721A.sol",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "ApprovalCallerNotOwnerNorApproved",
"type": "error"
},
{
"inputs": [],
"name": "ApprovalQueryForNonexistentToken",
"type": "error"
},
{
"inputs": [],
"name": "BalanceQueryForZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "MintERC2309QuantityExceedsLimit",
"type": "error"
},
{
"inputs": [],
"name": "MintToZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "MintZeroQuantity",
"type": "error"
},
{
"inputs": [],
"name": "NotCompatibleWithSpotMints",
"type": "error"
},
{
"inputs": [],
"name": "OwnerQueryForNonexistentToken",
"type": "error"
},
{
"inputs": [],
"name": "OwnershipNotInitializedForExtraData",
"type": "error"
},
{
"inputs": [],
"name": "SequentialMintExceedsLimit",
"type": "error"
},
{
"inputs": [],
"name": "SequentialUpToTooSmall",
"type": "error"
},
{
"inputs": [],
"name": "SpotMintTokenIdTooSmall",
"type": "error"
},
{
"inputs": [],
"name": "TokenAlreadyExists",
"type": "error"
},
{
"inputs": [],
"name": "TransferCallerNotOwnerNorApproved",
"type": "error"
},
{
"inputs": [],
"name": "TransferFromIncorrectOwner",
"type": "error"
},
{
"inputs": [],
"name": "TransferToNonERC721ReceiverImplementer",
"type": "error"
},
{
"inputs": [],
"name": "TransferToZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "URIQueryForNonexistentToken",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "fromTokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "toTokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "ConsecutiveTransfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "result",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": "0x60806040523461007f576115a7803803806100198161009a565b92833981019060408183031261007f5780516001600160401b03811161007f57826100459183016100c4565b6020820151929091906001600160401b03841161007f576100709361006a92016100c4565b906102f8565b6040516111bc90816103eb8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176100bf57604052565b610084565b81601f8201121561007f578051906001600160401b0382116100bf576100f3601f8301601f191660200161009a565b928284526020838301011161007f5760005b82811061011a57505060206000918301015290565b80602080928401015182828701015201610105565b90600182811c9216801561015f575b602083101461014957565b634e487b7160e01b600052602260045260246000fd5b91607f169161013e565b601f8111610175575050565b60026000526020600020906020601f840160051c830193106101b2575b601f0160051c01905b8181106101a6575050565b6000815560010161019b565b9091508190610192565b601f82116101c957505050565b6000526020600020906020601f840160051c83019310610204575b601f0160051c01905b8181106101f8575050565b600081556001016101ed565b90915081906101e4565b80519091906001600160401b0381116100bf576102378161023060035461012f565b60036101bc565b602092601f8211600114610279576102699293829160009261026e575b50508160011b916000199060031b1c19161790565b600355565b015190503880610254565b6003600052601f198216937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9160005b8681106102e057508360019596106102c7575b505050811b01600355565b015160001960f88460031b161c191690553880806102bc565b919260206001819286850151815501940192016102a9565b8051906001600160401b0382116100bf5761031d8261031860025461012f565b610169565b602090601f83116001146103605791806103529261035a959460009261026e5750508160011b916000199060031b1c19161790565b60025561020e565b60008055565b6002600052601f19831691907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9260005b8181106103d2575091600193918561035a979694106103b9575b505050811b0160025561020e565b015160001960f88460031b161c191690553880806103ab565b9293602060018192878601518155019501930161039156fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146100f757806306fdde03146100f2578063081812fc146100ed578063095ea7b3146100e857806318160ddd146100e357806323b872dd146100de57806342842e0e146100d95780636352211e146100d457806370a08231146100cf57806395d89b41146100ca578063a22cb465146100c5578063b88d4fde146100c0578063c87b56dd146100bb5763e985e9c5146100b657600080fd5b610a48565b6109c0565b61093c565b6107be565b610706565b610685565b610649565b610624565b610610565b610599565b610459565b610399565b61026c565b61012b565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361012657565b600080fd5b346101265760206003193601126101265760207fffffffff0000000000000000000000000000000000000000000000000000000060043561016b816100fc565b167f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156101d3575b81156101a9575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150143861019e565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610197565b8051908183526020808401910160005b838110610248575050600090820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160200190565b818101518382015260200161020d565b9060206102699281815201906101fd565b90565b346101265760006003193601126101265760405160006002548060011c906001811690811561038f575b60208310821461036257828552602085019190811561032b57506001146102d8575b6102d4846102c8818603826108bc565b60405191829182610258565b0390f35b600260009081529250907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b818410610317575050016102c8826102b8565b805484840152602090930192600101610304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506102c8826102b8565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f1691610296565b34610126576020600319360112610126576004356103b681610dad565b156103e9576000526006602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b7fcf4700e40000000000000000000000000000000000000000000000000000000060005260046000fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012657565b60406003193601126101265761046d610413565b6024359073ffffffffffffffffffffffffffffffffffffffff61048f83610f00565b1690813303610530575b8061050773ffffffffffffffffffffffffffffffffffffffff926104c7866000526006602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b81600052600760205260ff6105693360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5416610499577fcfb3b9420000000000000000000000000000000000000000000000000000000060005260046000fd5b346101265760006003193601126101265760206000546001549003604051908152f35b60031960609101126101265760043573ffffffffffffffffffffffffffffffffffffffff81168103610126579060243573ffffffffffffffffffffffffffffffffffffffff81168103610126579060443590565b61062261061c366105bc565b91610ac4565b005b610622610630366105bc565b90604051926106406020856108bc565b60008452610d51565b3461012657602060031936011261012657602073ffffffffffffffffffffffffffffffffffffffff61067c600435610f00565b16604051908152f35b346101265760206003193601126101265773ffffffffffffffffffffffffffffffffffffffff6106b3610413565b1680156106dc576000526005602052602067ffffffffffffffff60406000205416604051908152f35b7f8f4eb6040000000000000000000000000000000000000000000000000000000060005260046000fd5b346101265760006003193601126101265760405160006003548060011c90600181169081156107b4575b60208310821461036257828552602085019190811561032b5750600114610761576102d4846102c8818603826108bc565b600360009081529250907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8184106107a0575050016102c8826102b8565b80548484015260209093019260010161078d565b91607f1691610730565b34610126576040600319360112610126576107d7610413565b602435908115158092036101265773ffffffffffffffffffffffffffffffffffffffff903360005260076020526108328160406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108fd57604052565b61088d565b67ffffffffffffffff81116108fd57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b608060031936011261012657610950610413565b610958610436565b906044356064359267ffffffffffffffff841161012657366023850112156101265783600401359261098984610902565b9361099760405195866108bc565b808552366024828801011161012657602081600092602461062299018389013786010152610d51565b346101265760006020600319360112610a45576109de600435610dad565b15610a1d57806040516109f26020826108bc565b52506102d4604051610a056020826108bc565b600081526040519182916020835260208301906101fd565b807fa14c4b500000000000000000000000000000000000000000000000000000000060049252fd5b80fd5b3461012657604060031936011261012657602060ff610ab8610a68610413565b73ffffffffffffffffffffffffffffffffffffffff610a85610436565b91166000526007845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b91909173ffffffffffffffffffffffffffffffffffffffff610ae583610f00565b9116928373ffffffffffffffffffffffffffffffffffffffff831603610d4c57600083815260066020526040902080549290610b4173ffffffffffffffffffffffffffffffffffffffff871633908114908614171590565b1590565b610ce2575b73ffffffffffffffffffffffffffffffffffffffff93610cd8575b50610b8c8573ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bdc8273ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b8054600101905573ffffffffffffffffffffffffffffffffffffffff82164260a01b177c020000000000000000000000000000000000000000000000000000000017610c32856000526004602052604060002090565b557c0200000000000000000000000000000000000000000000000000000000811615610c8e575b501680927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a415610c8957565b610eac565b60018401610ca6816000526004602052604060002090565b5415610cb3575b50610c59565b6000548114610cad57610cd0906000526004602052604060002090565b553880610cad565b6000905538610b61565b610d42610b3d610d3b33610d168a73ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460ff1690565b15610b4657610e82565b610e58565b929190610d5f828286610ac4565b803b610d6c575b50505050565b610d7593611088565b15610d835738808080610d66565b7fd1a57ed60000000000000000000000000000000000000000000000000000000060005260046000fd5b906000916000548110610dbd5750565b9091505b80600052600460205260406000205480610e33575060008115610e0657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610dc1565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b7c01000000000000000000000000000000000000000000000000000000009150161590565b7fa11481000000000000000000000000000000000000000000000000000000000060005260046000fd5b7f59c896be0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fea553b340000000000000000000000000000000000000000000000000000000060005260046000fd5b7fdf2d9b420000000000000000000000000000000000000000000000000000000060005260046000fd5b610f14816000526004602052604060002090565b54908115610f4457507c01000000000000000000000000000000000000000000000000000000008116610ed65790565b9050600054811015610ed6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905b01610f88816000526004602052604060002090565b54908115610fe057507c0100000000000000000000000000000000000000000000000000000000811615610269577fdf2d9b420000000000000000000000000000000000000000000000000000000060005260046000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150610f73565b908160209103126101265751610269816100fc565b909273ffffffffffffffffffffffffffffffffffffffff608093816102699796168452166020830152604082015281606082015201906101fd565b3d15611083573d9061106982610902565b9161107760405193846108bc565b82523d6000602084013e565b606090565b90602092600073ffffffffffffffffffffffffffffffffffffffff6110df9694604051978896879586937f150b7a02000000000000000000000000000000000000000000000000000000008552336004860161101d565b0393165af160009181611155575b5061110e576110fa611058565b80511561110957805190602001fd5b610d83565b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490565b61117891925060203d60201161117f575b61117081836108bc565b810190611008565b90386110ed565b503d61116656fea26469706673582212207e66f6e58064817ddd0ed5f10aed74e62daefbb347db8942732886de011e079264736f6c634300081b0033",
"deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a7146100f757806306fdde03146100f2578063081812fc146100ed578063095ea7b3146100e857806318160ddd146100e357806323b872dd146100de57806342842e0e146100d95780636352211e146100d457806370a08231146100cf57806395d89b41146100ca578063a22cb465146100c5578063b88d4fde146100c0578063c87b56dd146100bb5763e985e9c5146100b657600080fd5b610a48565b6109c0565b61093c565b6107be565b610706565b610685565b610649565b610624565b610610565b610599565b610459565b610399565b61026c565b61012b565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361012657565b600080fd5b346101265760206003193601126101265760207fffffffff0000000000000000000000000000000000000000000000000000000060043561016b816100fc565b167f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156101d3575b81156101a9575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150143861019e565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610197565b8051908183526020808401910160005b838110610248575050600090820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160200190565b818101518382015260200161020d565b9060206102699281815201906101fd565b90565b346101265760006003193601126101265760405160006002548060011c906001811690811561038f575b60208310821461036257828552602085019190811561032b57506001146102d8575b6102d4846102c8818603826108bc565b60405191829182610258565b0390f35b600260009081529250907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b818410610317575050016102c8826102b8565b805484840152602090930192600101610304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506102c8826102b8565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b91607f1691610296565b34610126576020600319360112610126576004356103b681610dad565b156103e9576000526006602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b7fcf4700e40000000000000000000000000000000000000000000000000000000060005260046000fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012657565b60406003193601126101265761046d610413565b6024359073ffffffffffffffffffffffffffffffffffffffff61048f83610f00565b1690813303610530575b8061050773ffffffffffffffffffffffffffffffffffffffff926104c7866000526006602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b81600052600760205260ff6105693360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5416610499577fcfb3b9420000000000000000000000000000000000000000000000000000000060005260046000fd5b346101265760006003193601126101265760206000546001549003604051908152f35b60031960609101126101265760043573ffffffffffffffffffffffffffffffffffffffff81168103610126579060243573ffffffffffffffffffffffffffffffffffffffff81168103610126579060443590565b61062261061c366105bc565b91610ac4565b005b610622610630366105bc565b90604051926106406020856108bc565b60008452610d51565b3461012657602060031936011261012657602073ffffffffffffffffffffffffffffffffffffffff61067c600435610f00565b16604051908152f35b346101265760206003193601126101265773ffffffffffffffffffffffffffffffffffffffff6106b3610413565b1680156106dc576000526005602052602067ffffffffffffffff60406000205416604051908152f35b7f8f4eb6040000000000000000000000000000000000000000000000000000000060005260046000fd5b346101265760006003193601126101265760405160006003548060011c90600181169081156107b4575b60208310821461036257828552602085019190811561032b5750600114610761576102d4846102c8818603826108bc565b600360009081529250907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8184106107a0575050016102c8826102b8565b80548484015260209093019260010161078d565b91607f1691610730565b34610126576040600319360112610126576107d7610413565b602435908115158092036101265773ffffffffffffffffffffffffffffffffffffffff903360005260076020526108328160406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108fd57604052565b61088d565b67ffffffffffffffff81116108fd57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b608060031936011261012657610950610413565b610958610436565b906044356064359267ffffffffffffffff841161012657366023850112156101265783600401359261098984610902565b9361099760405195866108bc565b808552366024828801011161012657602081600092602461062299018389013786010152610d51565b346101265760006020600319360112610a45576109de600435610dad565b15610a1d57806040516109f26020826108bc565b52506102d4604051610a056020826108bc565b600081526040519182916020835260208301906101fd565b807fa14c4b500000000000000000000000000000000000000000000000000000000060049252fd5b80fd5b3461012657604060031936011261012657602060ff610ab8610a68610413565b73ffffffffffffffffffffffffffffffffffffffff610a85610436565b91166000526007845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b91909173ffffffffffffffffffffffffffffffffffffffff610ae583610f00565b9116928373ffffffffffffffffffffffffffffffffffffffff831603610d4c57600083815260066020526040902080549290610b4173ffffffffffffffffffffffffffffffffffffffff871633908114908614171590565b1590565b610ce2575b73ffffffffffffffffffffffffffffffffffffffff93610cd8575b50610b8c8573ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bdc8273ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b8054600101905573ffffffffffffffffffffffffffffffffffffffff82164260a01b177c020000000000000000000000000000000000000000000000000000000017610c32856000526004602052604060002090565b557c0200000000000000000000000000000000000000000000000000000000811615610c8e575b501680927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a415610c8957565b610eac565b60018401610ca6816000526004602052604060002090565b5415610cb3575b50610c59565b6000548114610cad57610cd0906000526004602052604060002090565b553880610cad565b6000905538610b61565b610d42610b3d610d3b33610d168a73ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460ff1690565b15610b4657610e82565b610e58565b929190610d5f828286610ac4565b803b610d6c575b50505050565b610d7593611088565b15610d835738808080610d66565b7fd1a57ed60000000000000000000000000000000000000000000000000000000060005260046000fd5b906000916000548110610dbd5750565b9091505b80600052600460205260406000205480610e33575060008115610e0657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610dc1565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b7c01000000000000000000000000000000000000000000000000000000009150161590565b7fa11481000000000000000000000000000000000000000000000000000000000060005260046000fd5b7f59c896be0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fea553b340000000000000000000000000000000000000000000000000000000060005260046000fd5b7fdf2d9b420000000000000000000000000000000000000000000000000000000060005260046000fd5b610f14816000526004602052604060002090565b54908115610f4457507c01000000000000000000000000000000000000000000000000000000008116610ed65790565b9050600054811015610ed6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905b01610f88816000526004602052604060002090565b54908115610fe057507c0100000000000000000000000000000000000000000000000000000000811615610269577fdf2d9b420000000000000000000000000000000000000000000000000000000060005260046000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150610f73565b908160209103126101265751610269816100fc565b909273ffffffffffffffffffffffffffffffffffffffff608093816102699796168452166020830152604082015281606082015201906101fd565b3d15611083573d9061106982610902565b9161107760405193846108bc565b82523d6000602084013e565b606090565b90602092600073ffffffffffffffffffffffffffffffffffffffff6110df9694604051978896879586937f150b7a02000000000000000000000000000000000000000000000000000000008552336004860161101d565b0393165af160009181611155575b5061110e576110fa611058565b80511561110957805190602001fd5b610d83565b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490565b61117891925060203d60201161117f575b61117081836108bc565b810190611008565b90386110ed565b503d61116656fea26469706673582212207e66f6e58064817ddd0ed5f10aed74e62daefbb347db8942732886de011e079264736f6c634300081b0033",
"linkReferences": {},
"deployedLinkReferences": {}
}