{"version":3,"sources":["../node_modules/svgo/lib sync","../node_modules/svgo/lib lazy groupOptions: {} namespace object","cards/BalanceCard.tsx","cards/ConfigureForkCard.tsx","editor/util/useInputChange.ts","Constsnts.ts","typechain/factories/Ownable__factory.ts","typechain/factories/ERC1155__factory.ts","typechain/factories/IERC1155MetadataURI__factory.ts","typechain/factories/IERC1155__factory.ts","typechain/factories/IERC1155Receiver__factory.ts","typechain/factories/ERC721__factory.ts","typechain/factories/ERC721Enumerable__factory.ts","typechain/factories/IERC721Enumerable__factory.ts","typechain/factories/IERC721Metadata__factory.ts","typechain/factories/IERC721__factory.ts","typechain/factories/IERC721Receiver__factory.ts","typechain/factories/ERC165__factory.ts","typechain/factories/IERC165__factory.ts","typechain/factories/AutonomousSubArt__factory.ts","typechain/factories/CollectiveCanvas__factory.ts","MembersOnly.tsx","cards/CanvasCard.tsx","HistoryLog.tsx","ConnectWalletForm.tsx","connectors.ts","assets/logos/metamask.svg","assets/logos/walletconnect.svg","assets/logos/coinbase.png","NetworkConnector.ts","MintButton.tsx","cards/PriceCard.tsx","editor/util/Tools.ts","editor/ShapeToolbar.tsx","editor/elements/PolygonElement.ts","editor/elements/Element.ts","editor/ShapeInspector.tsx","editor/util/ViewPort.ts","editor/decorators/HoverBox.tsx","editor/elements/Rectangle.tsx","editor/elements/Circle.tsx","editor/elements/Polygon.tsx","editor/SvgCanvas.tsx","editor/SvgDesigner.tsx","cards/RevisionsCard.tsx","cards/FundedCard.tsx","cards/ForkedRevisionsCard.tsx","assets/icons/code-fork-solid.svg","assets/icons/play.svg","assets/icons/pause.svg","cards/HistoricalCanvasCard.tsx","util/useInterval.ts","cards/ForkBasePriceCard.tsx","DynamicContent.tsx","cards/FaqCard.tsx","StaticContent.tsx","util/AutoConnectingInjectedProvider.tsx","cards/TopForksCard.tsx","firestore/FirestoreTopForks.ts","util/Firebase.ts","ForkLeaderBoard.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","module","exports","id","webpackEmptyAsyncContext","Promise","then","BalanceCard","props","Card","Header","className","header","Body","Row","Col","colSpan","title","style","cursor","tokens","map","token","tokenId","formatEther","balance","icon","Button","size","variant","onClick","onWithdraw","disabled","isZero","withdrawing","includes","role","ConfigureForkCard","useState","input","setInput","name","value","useInputChange","handleInputChange","rawBasePriceFor","price","myForks","find","fork","basePrice","priceIncrementFor","priceIncrement","incrementInterval","htmlFor","type","toString","onChange","event","currentTarget","onSave","updating","CANVAS_CONTRACT_ADDRESS","SUB_ART_CONTRACT_ADDRESS","_abi","anonymous","inputs","indexed","internalType","outputs","stateMutability","utils","Interface","address","signerOrProvider","Contract","abi","_bytecode","isSuperArgs","xs","length","ERC1155__factory","args","uri_","overrides","signer","ContractFactory","bytecode","ERC721__factory","name_","symbol_","components","AutonomousSubArt__factory","symbol","parentAddress","CollectiveCanvas__factory","MembersOnly","hasMinted","setHasMinted","myTokens","setMyTokens","setMyForks","mySubArtTokens","setMySubArtTokens","rootBalance","setRootBalance","setWithdrawing","forkWithdrawing","setForkWithdrawing","subArtWithdrawing","setSubArtWithdrawing","rootWithdrawing","setRootWithdrawing","setUpdating","useWeb3React","active","library","updateBalance","a","contract","connect","getSigner","subArt","myBalances","subArtBalances","listAccounts","account","balanceOf","toNumber","layerCount","i","ownerOf","balanceOfToken","push","subArtBalance","j","tokenOfOwnerByIndex","all","myToken","balanceOfParent","getForkBasePrice","priceInterval","getForkPriceIncrementInterval","balanceOfRoot","amount","withdraw","BigNumber","from","tx","wait","removeFromArray","console","error","withdrawForParent","withdrawForToken","withdrawForRoot","priceIncrementInterval","setForkConfiguration","array","element","state","index","indexOf","splice","useEffect","filter","filters","Transfer","subArtFilter","listener","on","off","lg","md","xl","incrementPriceInterval","onSaveForkConfiguration","CanvasCard","isImageLoaded","setImageLoaded","svg","display","viewBox","x","y","rx","ry","width","height","Image","src","fluid","alt","onLoad","HistoryLog","getTimeStringFromEpoch","epochTime","date","Date","setUTCSeconds","toLocaleString","renderLink","item","history","to","forkAdditions","OverlayTrigger","placement","delay","show","hide","overlay","Tooltip","maxHeight","overflowY","Table","striped","hover","forksEnabled","onSelectedHistoryIndex","selected","author","timestamp","loading","onLoadMore","ConnectionType","injected","InjectedConnector","supportedChainIds","network","NetworkConnector","urls","defaultChainId","walletconnect","WalletConnectConnector","rpc","qrcode","ConnectWalletForm","activate","connectingMetamask","setConnectingMetamask","connectingWalletConnect","setConnectingWalletConnect","connectingLedger","setConnectingLedger","connectingCoinbase","setConnectingCoinbase","errorStatus","setErrorStatus","handleConnect","METAMASK","WALLET_CONNECT","LEDGER","COINBASE","provider","walletConnect","log","message","renderConnectingStatus","connecting","sm","metamask","useEthNetwork","setTimeout","MintButton","showModal","setShowModal","estimatedGas","setEstimatedGas","signerActive","signerLibrary","isMinting","setIsMinting","mintingStatus","setMintingStatus","updateEstimate","useCallback","debounce","serializedLayer","gasPrice","parentId","currentPriceToMint","estimateGas","mint","toUtf8Bytes","mul","dispatch","isMintable","color","Modal","onHide","centered","closeButton","Title","Footer","PriceCard","forkId","useParams","Tools","ShapeToolbar","ListGroup","Item","updateSelectedTool","CURSOR","action","selectedTool","preserveAspectRatio","fill","verticalAlign","points","transform","RECTANGLE","CIRCLE","r","cx","cy","POLYGON","d","PolygonPointType","Element","_x","_y","_width","_height","radius","rotation","fillColor","strokeColor","strokeWidth","this","editing","PolygonElement","_editing","closed","diffX","valueOf","diffY","point","cx1","cy1","cx2","cy2","Math","min","max","selectedPoint","ShapeInspector","isFillPickerVisible","setFillPickerVisible","isStrokePickerVisible","setStrokePickerVisible","swatchStyle","padding","background","borderRadius","boxShadow","colorStyle","popoverStyle","position","zIndex","coverStyle","top","right","bottom","left","InputGroup","Text","FormControl","readOnly","supportsScale","onElementChanged","withUpdatedDimensions","Number","target","withUpdatedCoordinates","withUpdatedRotation","horizontal","getPointType","LINE","withPointType","CURVE","withUpdatedFillColor","hex","withUpdatedStrokeColor","withUpdatedStrokeWidth","supportsRadius","withUpdatedRadius","onBringForward","onSendBackward","getViewPortClickPosition","canvas","createSVGPoint","clientX","clientY","transformation","matrixTransform","getScreenCTM","inverse","hoverBoxStyle","border","scaleAnchorStyle","borderRight","borderBottom","rotateAnchorStyle","borderTop","borderTopRightRadius","ScaleAnchor","isHover","setHover","borderColor","onPointerOver","onPointerOut","onMouseDown","onMouseUp","RotateAnchor","HoverBox","isDragging","setDragging","isResizing","setResizing","isRotating","setRotating","dragOffset","setDragOffset","resizeOffset","setResizeOffset","rotateOffset","setRotateOffset","getViewPortScale","dimension","rootPoint","current","handleMouseMove","mouseX","mouseY","onUpdate","targetX","targetY","atan2","PI","handleMouseUp","window","addEventListener","removeEventListener","scrollY","getElementAbsoluteYPosition","scrollX","getElementAbsoluteXPosition","onMouseLeave","onMouseOut","onSelect","offsetX","offsetY","onDoubleClick","onEdit","stopPropagation","Rectangle","centerX","centerY","stroke","onMouseOver","onSelected","Circle","Polygon","hoverNode","setHoverNode","draggingPoint","setDraggingPoint","document","handleKeyPress","instructions","slice","onPointMouseDown","subIndex","withSelectedPoint","onClosed","withPoints","key","join","source","strokeDasharray","x1","y1","x2","y2","renderEditingItems","SvgCanvas","canvasElement","useRef","layerElement","hoverElement","setHoverElement","creatingElement","setCreatingElement","setScrollX","setScrollY","handlePolygonClosed","currentTool","onElementAdded","editingElement","elements","onElementChange","withEditing","handleScroll","serialized","XMLSerializer","serializeToString","optimized","optimize","plugins","params","convertPathData","data","layerMatch","match","onSerialized","ref","newDefault","onMouseMove","backgroundSize","backgroundImage","backgroundUri","xmlns","onElementSelected","isEditing","undefined","updated","getHoverElement","SvgDesigner","setElements","activeElement","setActiveElement","setSelectedTool","deletable","useBus","changedElementIndex","newElementIndex","reorderedElements","existingElement","RevisionsCard","count","FundedCard","ForkedRevisionsCard","HistoricalCanvasCard","baseSvgObject","setBaseSvgObject","displaySvgObject","setDisplaySvgObject","sliderMax","setSliderMax","trimmedSvgUri","setTrimmedSvgUri","visibleLayerCount","setVisibleLayerCount","isPlaying","setIsPlaying","encodedSection","decodedSvg","atob","svgObject","DOMParser","parseFromString","getElementsByTagName","cloneNode","children","isFork","selectedLayer","callback","savedCallback","setInterval","clearInterval","useInterval","replaceChildren","Array","btoa","faCodeFork","flexDirection","justifyContent","alignItems","pauseButton","playButton","defaultShow","parseFloat","ForkBasePriceCard","interval","DynamicContent","setHistory","setSvg","trimmedSvg","setTrimmedSvg","selectedHistory","setSelectedHistory","isLoading","setIsLoading","isLoadingPage","setIsLoadingPage","isEditable","setIsEditable","setSerialized","currentPrice","setCurrentPrice","totalFunded","setTotalFunded","totalContributions","setTotalContributions","totalSubContributions","setTotalSubContributions","forkBasePrice","setForkBasePrice","forkPriceInterval","setForkPriceInterval","pages","setPages","remove","updateMainHistory","totalSubFunded","totalSubTokens","tokenCount","historicalImageAt","catch","historyPending","historyEvent","creatorAt","authorName","resolvedAuthor","lookupAddress","timestampAt","timestampString","forkedAdditions","resolvedHistory","reverse","add","updateForkHistory","parentContract","totalForkFunded","imageForFork","isForkEditable","isForkActivated","parentAuthor","parentAuthorName","resolvedParentAuthor","parentTimestamp","parentRecord","layerIndex","layer","layerAt","creator","resolvedForkHistory","resolvedParentRecord","href","span","order","offset","FaqCard","question","answer","StaticContent","AutoConnectingInjectedProvider","networkActive","networkError","activateNetwork","isAuthorized","TopForksCard","responsive","funded","topForks","sort","b","desc","open","focus","image","pricetoMint","converter","toFirestore","fromFirestore","snap","app","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","db","getAnalytics","getFirestore","ForkLeaderBoard","topForksByLayers","setTopForksByLayers","topForksByFunds","setTopForksByFunds","topForksByCost","setTopForksByCost","onSnapshot","doc","withConverter","forks","getLibrary","ethers","providers","Web3Provider","faEthereum","NetworkWeb3ReactRoot","createWeb3ReactRoot","AppBody","App","Container","path","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.49aca7fa.chunk.js","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 325;","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 689;","import { formatEther } from \"@ethersproject/units\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { BigNumber } from \"ethers\";\nimport { Button, Card, Col, Row } from \"react-bootstrap\";\nimport MyToken from \"../util/MyToken\";\n\ninterface BalanceCardProps {\n header: string;\n tokens: MyToken[];\n withdrawing: number[];\n onWithdraw: (tokenId: number, amount: BigNumber) => void;\n}\n\nexport default function BalanceCard(props: BalanceCardProps) {\n\n return (\n \n

{props.header}

\n \n \n \n
\n \n \n \n \n \n \n \n \n \n { props.tokens.map((token) => {\n return (\n \n \n \n );\n\n })}\n \n
Token IDRewards
{token.tokenId}\n {formatEther(token.balance)}\n \n \n \n
\n
\n \n
\n
\n
\n );\n\n\n}","import { BigNumber } from \"ethers\";\nimport { formatEther } from \"ethers/lib/utils\";\nimport { Button, Card, Col, Row } from \"react-bootstrap\";\nimport useInputChange from \"../editor/util/useInputChange\";\nimport MyFork from \"../util/MyFork\";\n\ninterface ConfigureForkCardProps {\n myForks : MyFork[]\n onSave: (tokenId : number, basePrice : BigNumber, incrementInterval: number) => void;\n updating: number[];\n}\n\nexport default function ConfigureForkCard(props: ConfigureForkCardProps) {\n\n const [input, handleInputChange] = useInputChange();\n\n function rawBasePriceFor(tokenId: number) {\n var price = input[tokenId + \"-basePrice\"] as BigNumber | null;\n \n if (price == null) price = props.myForks.find((fork) => fork.tokenId === tokenId)!.basePrice;\n\n return price;\n }\n\n function formattedBasePriceFor(tokenId: number) {\n return formatEther(rawBasePriceFor(tokenId));\n }\n\n function priceIncrementFor(tokenId: number) {\n var priceIncrement = input[tokenId + \"-priceIncrement\"] as number | null;\n\n if (priceIncrement == null) priceIncrement = props.myForks.find((fork) => fork.tokenId === tokenId)!.incrementInterval;\n\n return priceIncrement;\n }\n\n return (\n \n

Configure forks

\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n { props.myForks.map((fork) => {\n return (\n \n \n \n \n );\n\n })}\n \n
Token IDBase pricePrice increment interval
{fork.tokenId}\n \n {handleInputChange(fork.tokenId + \"-basePrice\", event.currentTarget.value)}} />\n \n \n {handleInputChange(fork.tokenId + \"-priceIncrement\", event.currentTarget.value)}} />\n \n \n
\n
\n \n
\n
\n
\n );\n\n}","import { useState } from 'react'\n\nexport default function useInputChange() {\n const [input, setInput] = useState<{[key: string]: any}>({});\n\n function handleInputChange(name: string, value: any) {\n setInput({...input, [name]: value});\n }\n\n /*\n const handleInputChange = (name: string, value: any) => setInput({\n ...input,\n [name]: value\n })\n*/\n\n return [input, handleInputChange] as const;\n}","export const CANVAS_CONTRACT_ADDRESS = '0x3a56AB63c7ef4f07fe353bEb132e0Fd5AD270Ca0';\nexport const SUB_ART_CONTRACT_ADDRESS = '0xEE7EA2E41d8E130346DFDF5B55E1A36283AA9cd9';\nexport const TRIM_SVG_LAYERS = 613;\n//export const TRIM_SVG_LAYERS = -1;\nexport const ACTIVATION_GAP_SIZE = 10;\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Ownable, OwnableInterface } from \"../Ownable\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class Ownable__factory {\n static readonly abi = _abi;\n static createInterface(): OwnableInterface {\n return new utils.Interface(_abi) as OwnableInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Ownable {\n return new Contract(address, _abi, signerOrProvider) as Ownable;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { ERC1155, ERC1155Interface } from \"../ERC1155\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b506040516200181a3803806200181a833981016040819052620000349162000105565b6200003f8162000046565b5062000227565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001d4565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b6000602080838503121562000118578182fd5b82516001600160401b03808211156200012f578384fd5b818501915085601f83011262000143578384fd5b81518181111562000158576200015862000211565b604051601f8201601f19168101850183811182821017156200017e576200017e62000211565b604052818152838201850188101562000195578586fd5b8592505b81831015620001b8578383018501518184018601529184019162000199565b81831115620001c957858583830101525b979650505050505050565b600281046001821680620001e957607f821691505b602082108114156200020b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6115e380620002376000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461015057610087565b8062fdd58e1461008c57806301ffc9a7146100b55780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610d85565b610163565b6040516100ac91906113ea565b60405180910390f35b6100c86100c3366004610e6c565b6101ba565b6040516100ac919061102a565b6100e86100e3366004610eab565b610234565b6040516100ac9190611035565b610108610103366004610c42565b6102c8565b005b61011d610118366004610dae565b610326565b6040516100ac9190610fe9565b610108610138366004610d4b565b610446565b6100c861014b366004610c10565b610514565b61010861015e366004610ce8565b610542565b60006001600160a01b0383166101945760405162461bcd60e51b815260040161018b90611102565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000148061021d57506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061022c575061022c82610599565b90505b919050565b60606002805461024390611467565b80601f016020809104026020016040519081016040528092919081815260200182805461026f90611467565b80156102bc5780601f10610291576101008083540402835291602001916102bc565b820191906000526020600020905b81548152906001019060200180831161029f57829003601f168201915b50505050509050919050565b6102d06105cb565b6001600160a01b0316856001600160a01b031614806102f657506102f68561014b6105cb565b6103125760405162461bcd60e51b815260040161018b90611219565b61031f85858585856105d0565b5050505050565b606081518351146103495760405162461bcd60e51b815260040161018b90611330565b6000835167ffffffffffffffff81111561037357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561039c578160200160208202803683370190505b50905060005b845181101561043e576104038582815181106103ce57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106103f657634e487b7160e01b600052603260045260246000fd5b6020026020010151610163565b82828151811061042357634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610437816114a2565b90506103a2565b509392505050565b816001600160a01b03166104586105cb565b6001600160a01b0316141561047f5760405162461bcd60e51b815260040161018b906112d3565b806001600061048c6105cb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556104d06105cb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610508919061102a565b60405180910390a35050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61054a6105cb565b6001600160a01b0316856001600160a01b0316148061057057506105708561014b6105cb565b61058c5760405162461bcd60e51b815260040161018b9061115f565b61031f85858585856107a1565b6001600160e01b031981167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b335b90565b81518351146105f15760405162461bcd60e51b815260040161018b9061138d565b6001600160a01b0384166106175760405162461bcd60e51b815260040161018b906111bc565b60006106216105cb565b9050610631818787878787610799565b60005b845181101561073357600085828151811061065f57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061068b57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156106db5760405162461bcd60e51b815260040161018b90611276565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061071890849061144f565b925050819055505050508061072c906114a2565b9050610634565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610783929190610ffc565b60405180910390a46107998187878787876108e4565b505050505050565b6001600160a01b0384166107c75760405162461bcd60e51b815260040161018b906111bc565b60006107d16105cb565b90506107f18187876107e2886109f2565b6107eb886109f2565b87610799565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156108325760405162461bcd60e51b815260040161018b90611276565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061086f90849061144f565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516108c59291906113f3565b60405180910390a46108db828888888888610a4b565b50505050505050565b6108f6846001600160a01b0316610b1c565b156107995760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061092f9089908990889088908890600401610f48565b602060405180830381600087803b15801561094957600080fd5b505af1925050508015610979575060408051601f3d908101601f1916820190925261097691810190610e8f565b60015b6109c2576109856114ef565b8061099057506109aa565b8060405162461bcd60e51b815260040161018b9190611035565b60405162461bcd60e51b815260040161018b90611048565b6001600160e01b0319811663bc197c8160e01b146108db5760405162461bcd60e51b815260040161018b906110a5565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a3a57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b610a5d846001600160a01b0316610b1c565b156107995760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610a969089908990889088908890600401610fa6565b602060405180830381600087803b158015610ab057600080fd5b505af1925050508015610ae0575060408051601f3d908101601f19168201909252610add91810190610e8f565b60015b610aec576109856114ef565b6001600160e01b0319811663f23a6e6160e01b146108db5760405162461bcd60e51b815260040161018b906110a5565b3b151590565b80356001600160a01b038116811461022f57600080fd5b600082601f830112610b49578081fd5b81356020610b5e610b598361142b565b611401565b8281528181019085830183850287018401881015610b7a578586fd5b855b85811015610b9857813584529284019290840190600101610b7c565b5090979650505050505050565b600082601f830112610bb5578081fd5b813567ffffffffffffffff811115610bcf57610bcf6114d3565b610be2601f8201601f1916602001611401565b818152846020838601011115610bf6578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215610c22578182fd5b610c2b83610b22565b9150610c3960208401610b22565b90509250929050565b600080600080600060a08688031215610c59578081fd5b610c6286610b22565b9450610c7060208701610b22565b9350604086013567ffffffffffffffff80821115610c8c578283fd5b610c9889838a01610b39565b94506060880135915080821115610cad578283fd5b610cb989838a01610b39565b93506080880135915080821115610cce578283fd5b50610cdb88828901610ba5565b9150509295509295909350565b600080600080600060a08688031215610cff578081fd5b610d0886610b22565b9450610d1660208701610b22565b93506040860135925060608601359150608086013567ffffffffffffffff811115610d3f578182fd5b610cdb88828901610ba5565b60008060408385031215610d5d578182fd5b610d6683610b22565b915060208301358015158114610d7a578182fd5b809150509250929050565b60008060408385031215610d97578182fd5b610da083610b22565b946020939093013593505050565b60008060408385031215610dc0578182fd5b823567ffffffffffffffff80821115610dd7578384fd5b818501915085601f830112610dea578384fd5b81356020610dfa610b598361142b565b82815281810190858301838502870184018b1015610e16578889fd5b8896505b84871015610e3f57610e2b81610b22565b835260019690960195918301918301610e1a565b5096505086013592505080821115610e55578283fd5b50610e6285828601610b39565b9150509250929050565b600060208284031215610e7d578081fd5b8135610e8881611594565b9392505050565b600060208284031215610ea0578081fd5b8151610e8881611594565b600060208284031215610ebc578081fd5b5035919050565b6000815180845260208085019450808401835b83811015610ef257815187529582019590820190600101610ed6565b509495945050505050565b60008151808452815b81811015610f2257602081850181015186830182015201610f06565b81811115610f335782602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a06040830152610f7460a0830186610ec3565b8281036060840152610f868186610ec3565b90508281036080840152610f9a8185610efd565b98975050505050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152610fde60a0830184610efd565b979650505050505050565b600060208252610e886020830184610ec3565b60006040825261100f6040830185610ec3565b82810360208401526110218185610ec3565b95945050505050565b901515815260200190565b600060208252610e886020830184610efd565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560408201527f526563656976657220696d706c656d656e746572000000000000000000000000606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a6563746560408201527f6420746f6b656e73000000000000000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201527f65726f2061646472657373000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201527f20617070726f7665640000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060408201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201527f72207472616e7366657200000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360408201527f20666f722073656c660000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860408201527f206d69736d617463680000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060408201527f6d69736d61746368000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611423576114236114d3565b604052919050565b600067ffffffffffffffff821115611445576114456114d3565b5060209081020190565b60008219821115611462576114626114bd565b500190565b60028104600182168061147b57607f821691505b6020821081141561149c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156114b6576114b66114bd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d10156114ff576105cd565b600481823e6308c379a061151382516114e9565b1461151d576105cd565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561154d57505050506105cd565b8284019250825191508082111561156757505050506105cd565b503d8301602082840101111561157f575050506105cd565b601f01601f1916810160200160405291505090565b6001600160e01b0319811681146115aa57600080fd5b5056fea26469706673582212205c08922487317bcaa9820a6741b9e1c4c84a8b1f6f2a1313fcea10ee415ffa1964736f6c63430008000033\";\n\ntype ERC1155ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: ERC1155ConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class ERC1155__factory extends ContractFactory {\n constructor(...args: ERC1155ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n uri_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(uri_, overrides || {}) as Promise;\n }\n getDeployTransaction(\n uri_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(uri_, overrides || {});\n }\n attach(address: string): ERC1155 {\n return super.attach(address) as ERC1155;\n }\n connect(signer: Signer): ERC1155__factory {\n return super.connect(signer) as ERC1155__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): ERC1155Interface {\n return new utils.Interface(_abi) as ERC1155Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ERC1155 {\n return new Contract(address, _abi, signerOrProvider) as ERC1155;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC1155MetadataURI,\n IERC1155MetadataURIInterface,\n} from \"../IERC1155MetadataURI\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC1155MetadataURI__factory {\n static readonly abi = _abi;\n static createInterface(): IERC1155MetadataURIInterface {\n return new utils.Interface(_abi) as IERC1155MetadataURIInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC1155MetadataURI {\n return new Contract(address, _abi, signerOrProvider) as IERC1155MetadataURI;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC1155, IERC1155Interface } from \"../IERC1155\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC1155__factory {\n static readonly abi = _abi;\n static createInterface(): IERC1155Interface {\n return new utils.Interface(_abi) as IERC1155Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC1155 {\n return new Contract(address, _abi, signerOrProvider) as IERC1155;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC1155Receiver,\n IERC1155ReceiverInterface,\n} from \"../IERC1155Receiver\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"onERC1155BatchReceived\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"onERC1155Received\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC1155Receiver__factory {\n static readonly abi = _abi;\n static createInterface(): IERC1155ReceiverInterface {\n return new utils.Interface(_abi) as IERC1155ReceiverInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC1155Receiver {\n return new Contract(address, _abi, signerOrProvider) as IERC1155Receiver;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { ERC721, ERC721Interface } from \"../ERC721\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"name_\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"symbol_\",\n type: \"string\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b50604051620016d8380380620016d88339810160408190526200003491620001b9565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000273565b828054620000769062000220565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b600082601f8301126200011f578081fd5b81516001600160401b03808211156200013c576200013c6200025d565b6040516020601f8401601f19168201810183811183821017156200016457620001646200025d565b60405283825285840181018710156200017b578485fd5b8492505b838310156200019e57858301810151828401820152918201916200017f565b83831115620001af57848185840101525b5095945050505050565b60008060408385031215620001cc578182fd5b82516001600160401b0380821115620001e3578384fd5b620001f1868387016200010e565b9350602085015191508082111562000207578283fd5b5062000216858286016200010e565b9150509250929050565b6002810460018216806200023557607f821691505b602082108114156200025757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61145580620002836000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b8578063b88d4fde146101cb578063c87b56dd146101de578063e985e9c5146101f1576100df565b80636352211e1461017d57806370a082311461019057806395d89b41146101b0576100df565b8063095ea7b3116100bd578063095ea7b31461014257806323b872dd1461015757806342842e0e1461016a576100df565b806301ffc9a7146100e457806306fdde031461010d578063081812fc14610122575b600080fd5b6100f76100f2366004610db5565b610204565b6040516101049190610eb0565b60405180910390f35b61011561027e565b6040516101049190610ebb565b610135610130366004610ded565b610310565b6040516101049190610e60565b610155610150366004610d8c565b61035c565b005b610155610165366004610c4b565b6103f4565b610155610178366004610c4b565b61042c565b61013561018b366004610ded565b610447565b6101a361019e366004610bff565b61047c565b60405161010491906112e2565b6101156104c0565b6101556101c6366004610d52565b6104cf565b6101556101d9366004610c86565b61059d565b6101156101ec366004610ded565b6105dc565b6100f76101ff366004610c19565b61065f565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061026757506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061027657506102768261068d565b90505b919050565b60606000805461028d9061135a565b80601f01602080910402602001604051908101604052809291908181526020018280546102b99061135a565b80156103065780601f106102db57610100808354040283529160200191610306565b820191906000526020600020905b8154815290600101906020018083116102e957829003601f168201915b5050505050905090565b600061031b826106bf565b6103405760405162461bcd60e51b815260040161033790611122565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061036782610447565b9050806001600160a01b0316836001600160a01b0316141561039b5760405162461bcd60e51b815260040161033790611228565b806001600160a01b03166103ad6106dc565b6001600160a01b031614806103c957506103c9816101ff6106dc565b6103e55760405162461bcd60e51b81526004016103379061100b565b6103ef83836106e0565b505050565b6104056103ff6106dc565b8261075b565b6104215760405162461bcd60e51b815260040161033790611285565b6103ef8383836107e0565b6103ef8383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102765760405162461bcd60e51b8152600401610337906110c5565b60006001600160a01b0382166104a45760405162461bcd60e51b815260040161033790611068565b506001600160a01b031660009081526003602052604090205490565b60606001805461028d9061135a565b6104d76106dc565b6001600160a01b0316826001600160a01b031614156105085760405162461bcd60e51b815260040161033790610f88565b80600560006105156106dc565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556105596106dc565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516105919190610eb0565b60405180910390a35050565b6105ae6105a86106dc565b8361075b565b6105ca5760405162461bcd60e51b815260040161033790611285565b6105d68484848461091a565b50505050565b60606105e7826106bf565b6106035760405162461bcd60e51b8152600401610337906111cb565b600061060d61094d565b9050600081511161062d5760405180602001604052806000815250610658565b806106378461095f565b604051602001610648929190610e31565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6001600160e01b031981167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b6000908152600260205260409020546001600160a01b0316151590565b3390565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061072282610447565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610766826106bf565b6107825760405162461bcd60e51b815260040161033790610fbf565b600061078d83610447565b9050806001600160a01b0316846001600160a01b031614806107c85750836001600160a01b03166107bd84610310565b6001600160a01b0316145b806107d857506107d8818561065f565b949350505050565b826001600160a01b03166107f382610447565b6001600160a01b0316146108195760405162461bcd60e51b81526004016103379061116e565b6001600160a01b03821661083f5760405162461bcd60e51b815260040161033790610f2b565b61084a8383836103ef565b6108556000826106e0565b6001600160a01b038316600090815260036020526040812080546001929061087e908490611317565b90915550506001600160a01b03821660009081526003602052604081208054600192906108ac9084906112eb565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109258484846107e0565b61093184848484610aae565b6105d65760405162461bcd60e51b815260040161033790610ece565b60408051602081019091526000815290565b6060816109a0575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610279565b8160005b81156109ca57806109b481611395565b91506109c39050600a83611303565b91506109a4565b60008167ffffffffffffffff8111156109f357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610a1d576020820181803683370190505b5090505b84156107d857610a32600183611317565b9150610a3f600a866113b0565b610a4a9060306112eb565b60f81b818381518110610a6d57634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610aa7600a86611303565b9450610a21565b6000610ac2846001600160a01b0316610be2565b15610bd757836001600160a01b031663150b7a02610ade6106dc565b8786866040518563ffffffff1660e01b8152600401610b009493929190610e74565b602060405180830381600087803b158015610b1a57600080fd5b505af1925050508015610b4a575060408051601f3d908101601f19168201909252610b4791810190610dd1565b60015b610ba4573d808015610b78576040519150601f19603f3d011682016040523d82523d6000602084013e610b7d565b606091505b508051610b9c5760405162461bcd60e51b815260040161033790610ece565b805181602001fd5b6001600160e01b0319167f150b7a02000000000000000000000000000000000000000000000000000000001490506107d8565b506001949350505050565b3b151590565b80356001600160a01b038116811461027957600080fd5b600060208284031215610c10578081fd5b61065882610be8565b60008060408385031215610c2b578081fd5b610c3483610be8565b9150610c4260208401610be8565b90509250929050565b600080600060608486031215610c5f578081fd5b610c6884610be8565b9250610c7660208501610be8565b9150604084013590509250925092565b60008060008060808587031215610c9b578081fd5b610ca485610be8565b93506020610cb3818701610be8565b935060408601359250606086013567ffffffffffffffff80821115610cd6578384fd5b818801915088601f830112610ce9578384fd5b813581811115610cfb57610cfb6113f0565b604051601f8201601f1916810185018381118282101715610d1e57610d1e6113f0565b60405281815283820185018b1015610d34578586fd5b81858501868301379081019093019390935250939692955090935050565b60008060408385031215610d64578182fd5b610d6d83610be8565b915060208301358015158114610d81578182fd5b809150509250929050565b60008060408385031215610d9e578182fd5b610da783610be8565b946020939093013593505050565b600060208284031215610dc6578081fd5b813561065881611406565b600060208284031215610de2578081fd5b815161065881611406565b600060208284031215610dfe578081fd5b5035919050565b60008151808452610e1d81602086016020860161132e565b601f01601f19169290920160200192915050565b60008351610e4381846020880161132e565b835190830190610e5781836020880161132e565b01949350505050565b6001600160a01b0391909116815260200190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152610ea66080830184610e05565b9695505050505050565b901515815260200190565b6000602082526106586020830184610e05565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527f63656976657220696d706c656d656e7465720000000000000000000000000000606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606082015260800190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560408201527f7200000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60408201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606082015260800190565b90815260200190565b600082198211156112fe576112fe6113c4565b500190565b600082611312576113126113da565b500490565b600082821015611329576113296113c4565b500390565b60005b83811015611349578181015183820152602001611331565b838111156105d65750506000910152565b60028104600182168061136e57607f821691505b6020821081141561138f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156113a9576113a96113c4565b5060010190565b6000826113bf576113bf6113da565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461141c57600080fd5b5056fea2646970667358221220a6da42f9ce0cba90d3d989783ab2f5b75039bf8b69af009690539dfb95fb509364736f6c63430008000033\";\n\ntype ERC721ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: ERC721ConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class ERC721__factory extends ContractFactory {\n constructor(...args: ERC721ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n name_: string,\n symbol_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(name_, symbol_, overrides || {}) as Promise;\n }\n getDeployTransaction(\n name_: string,\n symbol_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(name_, symbol_, overrides || {});\n }\n attach(address: string): ERC721 {\n return super.attach(address) as ERC721;\n }\n connect(signer: Signer): ERC721__factory {\n return super.connect(signer) as ERC721__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): ERC721Interface {\n return new utils.Interface(_abi) as ERC721Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ERC721 {\n return new Contract(address, _abi, signerOrProvider) as ERC721;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n ERC721Enumerable,\n ERC721EnumerableInterface,\n} from \"../ERC721Enumerable\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class ERC721Enumerable__factory {\n static readonly abi = _abi;\n static createInterface(): ERC721EnumerableInterface {\n return new utils.Interface(_abi) as ERC721EnumerableInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ERC721Enumerable {\n return new Contract(address, _abi, signerOrProvider) as ERC721Enumerable;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC721Enumerable,\n IERC721EnumerableInterface,\n} from \"../IERC721Enumerable\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721Enumerable__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721EnumerableInterface {\n return new utils.Interface(_abi) as IERC721EnumerableInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721Enumerable {\n return new Contract(address, _abi, signerOrProvider) as IERC721Enumerable;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC721Metadata,\n IERC721MetadataInterface,\n} from \"../IERC721Metadata\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721Metadata__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721MetadataInterface {\n return new utils.Interface(_abi) as IERC721MetadataInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721Metadata {\n return new Contract(address, _abi, signerOrProvider) as IERC721Metadata;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC721, IERC721Interface } from \"../IERC721\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721Interface {\n return new utils.Interface(_abi) as IERC721Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721 {\n return new Contract(address, _abi, signerOrProvider) as IERC721;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC721Receiver,\n IERC721ReceiverInterface,\n} from \"../IERC721Receiver\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"onERC721Received\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721Receiver__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721ReceiverInterface {\n return new utils.Interface(_abi) as IERC721ReceiverInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721Receiver {\n return new Contract(address, _abi, signerOrProvider) as IERC721Receiver;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { ERC165, ERC165Interface } from \"../ERC165\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class ERC165__factory {\n static readonly abi = _abi;\n static createInterface(): ERC165Interface {\n return new utils.Interface(_abi) as ERC165Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ERC165 {\n return new Contract(address, _abi, signerOrProvider) as ERC165;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC165, IERC165Interface } from \"../IERC165\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC165__factory {\n static readonly abi = _abi;\n static createInterface(): IERC165Interface {\n return new utils.Interface(_abi) as IERC165Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC165 {\n return new Contract(address, _abi, signerOrProvider) as IERC165;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n AutonomousSubArt,\n AutonomousSubArtInterface,\n} from \"../AutonomousSubArt\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"name\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"symbol\",\n type: \"string\",\n },\n {\n internalType: \"address\",\n name: \"parentAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOfParent\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"balanceOfRoot\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOfToken\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"currentPriceToMint\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"getForkBasePrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"getForkPriceIncrementInterval\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"historicalImageAt\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"layerIndex\",\n type: \"uint256\",\n },\n ],\n name: \"historicalImageAtLayerIndex\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"imageForFork\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"isForkActivated\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"layerIndex\",\n type: \"uint256\",\n },\n ],\n name: \"layerAt\",\n outputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"creator\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"funded\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"withdrawIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct AutonomousSubArt.Layer\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"layerCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"layer\",\n type: \"bytes\",\n },\n ],\n name: \"mint\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"basePrice\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"priceIncrementInterval\",\n type: \"uint256\",\n },\n ],\n name: \"setForkConfiguration\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"tokenCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"totalForkFunded\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalFunded\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"parentId\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawForParent\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"withdrawForRoot\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawForToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b5060405162003b4438038062003b44833981016040819052620000349162000259565b8251839083906200004d90600090602085019062000108565b5080516200006390600190602084019062000108565b505050620000806200007a620000b260201b60201c565b620000b6565b600d80546001600160a01b0319166001600160a01b039290921691909117905550506000600e819055600f5562000335565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200011690620002e2565b90600052602060002090601f0160209004810192826200013a576000855562000185565b82601f106200015557805160ff191683800117855562000185565b8280016001018555821562000185579182015b828111156200018557825182559160200191906001019062000168565b506200019392915062000197565b5090565b5b8082111562000193576000815560010162000198565b600082601f830112620001bf578081fd5b81516001600160401b0380821115620001dc57620001dc6200031f565b6040516020601f8401601f19168201810183811183821017156200020457620002046200031f565b60405283825285840181018710156200021b578485fd5b8492505b838310156200023e57858301810151828401820152918201916200021f565b838311156200024f57848185840101525b5095945050505050565b6000806000606084860312156200026e578283fd5b83516001600160401b038082111562000285578485fd5b6200029387838801620001ae565b94506020860151915080821115620002a9578384fd5b50620002b886828701620001ae565b604086015190935090506001600160a01b0381168114620002d7578182fd5b809150509250925092565b600281046001821680620002f757607f821691505b602082108114156200031957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6137ff80620003456000396000f3fe6080604052600436106102a05760003560e01c80638da5cb5b1161016e578063cee61d37116100cb578063e985e9c51161007f578063f2fde38b11610064578063f2fde38b14610701578063f3cd9cf614610721578063f7eb5b9e14610741576102a0565b8063e985e9c5146106c1578063efd32692146106e1576102a0565b8063df5aed89116100b0578063df5aed891461066c578063e3ae769214610681578063e87ce156146106a1576102a0565b8063cee61d3714610639578063db7fd40814610659576102a0565b8063a3ed4c3011610122578063b88d4fde11610107578063b88d4fde146105d9578063c87b56dd146105f9578063cd7e7cfa14610619576102a0565b8063a3ed4c3014610597578063ad044f49146105c4576102a0565b80639f181b5e116101535780639f181b5e146105425780639fa5819014610557578063a22cb46514610577576102a0565b80638da5cb5b1461051857806395d89b411461052d576102a0565b806342842e0e1161021c5780636f9a5640116101d0578063715018a6116101b5578063715018a6146104c35780637d9a1143146104d85780637ff295b3146104f8576102a0565b80636f9a56401461048e57806370a08231146104a3576102a0565b80635f380fbc116102015780635f380fbc1461042e5780636352211e1461044e5780636953e3211461046e576102a0565b806342842e0e146103ee5780634f6ccce71461040e576102a0565b8063095ea7b3116102735780631bae412a116102585780631bae412a1461038e57806323b872dd146103ae5780632f745c59146103ce576102a0565b8063095ea7b31461035757806318160ddd14610379576102a0565b806301ffc9a7146102a557806306fdde03146102db5780630760a542146102fd578063081812fc1461032a575b600080fd5b3480156102b157600080fd5b506102c56102c0366004612858565b610761565b6040516102d29190612db4565b60405180910390f35b3480156102e757600080fd5b506102f06107a7565b6040516102d29190612dbf565b34801561030957600080fd5b5061031d6103183660046128fa565b610839565b6040516102d29190612dd2565b34801561033657600080fd5b5061034a6103453660046128fa565b610856565b6040516102d29190612d64565b34801561036357600080fd5b5061037761037236600461282d565b6108a2565b005b34801561038557600080fd5b5061031d61093a565b34801561039a57600080fd5b506103776103a93660046128fa565b610940565b3480156103ba57600080fd5b506103776103c9366004612752565b610a3e565b3480156103da57600080fd5b5061031d6103e936600461282d565b610a76565b3480156103fa57600080fd5b50610377610409366004612752565b610ac8565b34801561041a57600080fd5b5061031d6104293660046128fa565b610ae3565b34801561043a57600080fd5b50610377610449366004612990565b610b3e565b34801561045a57600080fd5b5061034a6104693660046128fa565b610c4a565b34801561047a57600080fd5b506102f061048936600461296f565b610c7f565b34801561049a57600080fd5b5061031d610ceb565b3480156104af57600080fd5b5061031d6104be3660046126e2565b610cf1565b3480156104cf57600080fd5b50610377610d35565b3480156104e457600080fd5b506103776104f33660046128fa565b610d80565b34801561050457600080fd5b506102c56105133660046128fa565b610e64565b34801561052457600080fd5b5061034a610f0d565b34801561053957600080fd5b506102f0610f1c565b34801561054e57600080fd5b5061031d610f2b565b34801561056357600080fd5b506102f06105723660046128fa565b610f31565b34801561058357600080fd5b506103776105923660046127fc565b610f77565b3480156105a357600080fd5b506105b76105b236600461296f565b611045565b6040516102d29190613570565b3480156105d057600080fd5b5061031d611188565b3480156105e557600080fd5b506103776105f4366004612792565b61118e565b34801561060557600080fd5b506102f06106143660046128fa565b6111c7565b34801561062557600080fd5b5061031d6106343660046128fa565b6112a5565b34801561064557600080fd5b506102f06106543660046128fa565b6112ba565b61031d61066736600461292a565b6112ea565b34801561067857600080fd5b5061037761153c565b34801561068d57600080fd5b5061031d61069c3660046128fa565b61161f565b3480156106ad57600080fd5b5061031d6106bc3660046128fa565b611642565b3480156106cd57600080fd5b506102c56106dc36600461271a565b611662565b3480156106ed57600080fd5b5061031d6106fc3660046128fa565b611690565b34801561070d57600080fd5b5061037761071c3660046126e2565b611728565b34801561072d57600080fd5b5061031d61073c3660046128fa565b611799565b34801561074d57600080fd5b5061031d61075c3660046128fa565b6117e6565b60006001600160e01b031982167f780e9d6300000000000000000000000000000000000000000000000000000000148061079f575061079f826117fb565b90505b919050565b6060600080546107b6906136b2565b80601f01602080910402602001604051908101604052809291908181526020018280546107e2906136b2565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b6000818152600b602052604081206002015461079f90839061186d565b600061086182611908565b6108865760405162461bcd60e51b815260040161087d90613255565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006108ad82610c4a565b9050806001600160a01b0316836001600160a01b031614156108e15760405162461bcd60e51b815260040161087d906133c7565b806001600160a01b03166108f3611925565b6001600160a01b0316148061090f575061090f816106dc611925565b61092b5760405162461bcd60e51b815260040161087d90613109565b6109358383611929565b505050565b60085490565b600d546040516331a9108f60e11b815233916001600160a01b031690636352211e90610970908590600401612dd2565b60206040518083038186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c091906126fe565b6001600160a01b0316146109e65760405162461bcd60e51b815260040161087d90612e12565b60006109f182610839565b6000838152600b602052604080822060048101546002820155905192935091339184156108fc02918591818181858888f19350505050158015610a38573d6000803e3d6000fd5b50505050565b610a4f610a49611925565b82611997565b610a6b5760405162461bcd60e51b815260040161087d90613481565b610935838383611a1c565b6000610a8183610cf1565b8210610a9f5760405162461bcd60e51b815260040161087d90612e47565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6109358383836040518060200160405280600081525061118e565b6000610aed61093a565b8210610b0b5760405162461bcd60e51b815260040161087d906134de565b60088281548110610b2c57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600d546040516331a9108f60e11b815233916001600160a01b031690636352211e90610b6e908790600401612dd2565b60206040518083038186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe91906126fe565b6001600160a01b031614610be45760405162461bcd60e51b815260040161087d90613424565b60008211610c045760405162461bcd60e51b815260040161087d906130d2565b6000838152600b6020526040902054821015610c325760405162461bcd60e51b815260040161087d90613390565b6000928352600b602052604090922090815560010155565b6000818152600260205260408120546001600160a01b03168061079f5760405162461bcd60e51b815260040161087d906131c3565b6000828152600b602052604081206004018054606092919084908110610cb557634e487b7160e01b600052603260045260246000fd5b60009182526020909120600690910201546001600160a01b03161415610cda57600080fd5b610ce48383611b49565b9392505050565b600f5490565b60006001600160a01b038216610d195760405162461bcd60e51b815260040161087d90613166565b506001600160a01b031660009081526003602052604090205490565b610d3d611925565b6001600160a01b0316610d4e610f0d565b6001600160a01b031614610d745760405162461bcd60e51b815260040161087d906132a1565b610d7e6000611b84565b565b33610d8a82610c4a565b6001600160a01b031614610db05760405162461bcd60e51b815260040161087d90612e12565b6000610dbb82611690565b6000838152600c6020908152604080832080548452600b909252822060018201546004909101805494955091938110610e0457634e487b7160e01b600052603260045260246000fd5b6000918252602080832085548452600b909152604080842060040154600360069094029092019283019190915551909250339185156108fc02918691818181858888f19350505050158015610e5d573d6000803e3d6000fd5b5050505050565b600080600d60009054906101000a90046001600160a01b03166001600160a01b03166356e7f6c76040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb557600080fd5b505afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed9190612912565b90508281118015610ce45750600a610f05848361366f565b119392505050565b600a546001600160a01b031690565b6060600180546107b6906136b2565b600e5490565b6060610f3c82611908565b610f585760405162461bcd60e51b815260040161087d90612ddb565b6000828152600c6020526040902080546001820154610ce49190611b49565b610f7f611925565b6001600160a01b0316826001600160a01b03161415610fb05760405162461bcd60e51b815260040161087d9061304f565b8060056000610fbd611925565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611001611925565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110399190612db4565b60405180910390a35050565b61104d6125b9565b6000838152600b6020526040902060040180548390811061107e57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016040518060c00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820180546110fe906136b2565b80601f016020809104026020016040519081016040528092919081815260200182805461112a906136b2565b80156111775780601f1061114c57610100808354040283529160200191611177565b820191906000526020600020905b81548152906001019060200180831161115a57829003601f168201915b505050505081525050905092915050565b60105490565b61119f611199611925565b83611997565b6111bb5760405162461bcd60e51b815260040161087d90613481565b610a3884848484611bd6565b60606111d282611908565b6111ee5760405162461bcd60e51b815260040161087d90613333565b6000828152600c602090815260408083208054808552600b909352908320600481015491939092909161122d91906112289060019061366f565b611b49565b905060006112756112418560000154611c09565b61124e8660010154611c09565b8460405160200161126193929190612b38565b604051602081830303815290604052611d58565b905060008160405160200161128a9190612c22565b60408051808303601f19018152919052979650505050505050565b6000908152600b602052604090206003015490565b6000818152600b6020526040902060040154606090610ce483826112df576000611228565b61122860018461366f565b60006112f583610e64565b6113115760405162461bcd60e51b815260040161087d90612ea4565b3461131b84611799565b11156113395760405162461bcd60e51b815260040161087d9061353b565b600d546040517f64d265df0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906364d265df90611382908590600401612dbf565b60006040518083038186803b15801561139a57600080fd5b505afa1580156113ae573d6000803e3d6000fd5b5050506000848152600b60209081526040808320600e5460048083018054855160c0810187523381524281890190815234978201978852606082018381526080830187815260a084018f815260018087018855968d529b8b902084516006870290910180546001600160a01b0319166001600160a01b039092169190911781559251958301959095559751600282015596516003880155915192860192909255955180519397509195909490939261146c92600585019201906125f8565b505050348360030160008282546114839190613624565b909155505060408051808201825287815260208082018481526000868152600c909252928120915182559151600191820155600e8054919290916114c8908490613624565b909155506114d99050816001613624565b6114e4906001613624565b6114ef906001613624565b6114f9903461363c565b600f600082825461150a9190613624565b9250508190555034601060008282546115239190613624565b9091555061153390503383611f04565b50949350505050565b600d546040516331a9108f60e11b815233916001600160a01b031690636352211e9061156d90600090600401612dd2565b60206040518083038186803b15801561158557600080fd5b505afa158015611599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bd91906126fe565b6001600160a01b0316146115e35760405162461bcd60e51b815260040161087d90612e12565b600f80546000918290556040519091339183156108fc0291849190818181858888f1935050505015801561161b573d6000803e3d6000fd5b5050565b6000818152600b60205260408120548061079f5750665543df729c000092915050565b6000818152600b60205260408120600101548061079f5750600a92915050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061169b82611908565b6116b75760405162461bcd60e51b815260040161087d90612ddb565b6000828152600c602090815260408083208054600190910154818552600b90935290832060040180549193918390811061170157634e487b7160e01b600052603260045260246000fd5b906000526020600020906006020160030154905061171f838261186d565b95945050505050565b611730611925565b6001600160a01b0316611741610f0d565b6001600160a01b0316146117675760405162461bcd60e51b815260040161087d906132a1565b6001600160a01b03811661178d5760405162461bcd60e51b815260040161087d90612f5e565b61179681611b84565b50565b6000806117a58361161f565b905060006117b284611642565b6000858152600b60205260409020600401549091506117d1828261363c565b6117dc906001613624565b61171f9084613650565b6000908152600b602052604090206004015490565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061185e57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061079f575061079f82611f1e565b6000828152600b6020526040812081835b600483015481101561153357611895816001613624565b6118a0906001613624565b6118ab906001613624565b8360040182815481106118ce57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600201546118ea919061363c565b6118f49083613624565b915080611900816136ed565b91505061187e565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061195e82610c4a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119a282611908565b6119be5760405162461bcd60e51b815260040161087d90613086565b60006119c983610c4a565b9050806001600160a01b0316846001600160a01b03161480611a045750836001600160a01b03166119f984610856565b6001600160a01b0316145b80611a145750611a148185611662565b949350505050565b826001600160a01b0316611a2f82610c4a565b6001600160a01b031614611a555760405162461bcd60e51b815260040161087d906132d6565b6001600160a01b038216611a7b5760405162461bcd60e51b815260040161087d90612ff2565b611a86838383611f50565b611a91600082611929565b6001600160a01b0383166000908152600360205260408120805460019290611aba90849061366f565b90915550506001600160a01b0382166000908152600360205260408120805460019290611ae8908490613624565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6060611b5d611b588484611fd9565b611d58565b604051602001611b6d9190612d1f565b604051602081830303815290604052905092915050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611be1848484611a1c565b611bed8484848461216f565b610a385760405162461bcd60e51b815260040161087d90612f01565b606081611c4a575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526107a2565b8160005b8115611c745780611c5e816136ed565b9150611c6d9050600a8361363c565b9150611c4e565b60008167ffffffffffffffff811115611c9d57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611cc7576020820181803683370190505b5090505b8415611a1457611cdc60018361366f565b9150611ce9600a86613708565b611cf4906030613624565b60f81b818381518110611d1757634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611d51600a8661363c565b9450611ccb565b6060815160001415611d7957506040805160208101909152600081526107a2565b600060405180606001604052806040815260200161378a6040913990506000600384516002611da89190613624565b611db2919061363c565b611dbd906004613650565b90506000611dcc826020613624565b67ffffffffffffffff811115611df257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e1c576020820181803683370190505b509050818152600183018586518101602084015b81831015611e88576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101611e30565b600389510660018114611ea25760028114611ece57611ef6565b7f3d3d000000000000000000000000000000000000000000000000000000000000600119830152611ef6565b7f3d000000000000000000000000000000000000000000000000000000000000006000198301525b509398975050505050505050565b61161b8282604051806020016040528060008152506122a3565b6001600160e01b031981167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b611f5b838383610935565b6001600160a01b038316611f7757611f72816122d6565b611f9a565b816001600160a01b0316836001600160a01b031614611f9a57611f9a838261231a565b6001600160a01b038216611fb657611fb1816123b7565b610935565b826001600160a01b0316826001600160a01b031614610935576109358282612490565b600d546040517f9fa581900000000000000000000000000000000000000000000000000000000081526060916000916001600160a01b0390911690639fa5819090612028908790600401612dd2565b60006040518083038186803b15801561204057600080fd5b505afa158015612054573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261207c9190810190612890565b90506000816040516020016120919190612c67565b604051602081830303815290604052905060005b8481111580156120c557506000868152600b602052604090206004015481105b15612144576000868152600b602052604090206004018054839190839081106120fe57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600501604051602001612120929190612a10565b6040516020818303038152906040529150808061213c906136ed565b9150506120a5565b50806040516020016121569190612af7565b60408051808303601f1901815291905295945050505050565b6000612183846001600160a01b03166124d4565b1561229857836001600160a01b031663150b7a0261219f611925565b8786866040518563ffffffff1660e01b81526004016121c19493929190612d78565b602060405180830381600087803b1580156121db57600080fd5b505af192505050801561220b575060408051601f3d908101601f1916820190925261220891810190612874565b60015b612265573d808015612239576040519150601f19603f3d011682016040523d82523d6000602084013e61223e565b606091505b50805161225d5760405162461bcd60e51b815260040161087d90612f01565b805181602001fd5b6001600160e01b0319167f150b7a0200000000000000000000000000000000000000000000000000000000149050611a14565b506001949350505050565b6122ad83836124da565b6122ba600084848461216f565b6109355760405162461bcd60e51b815260040161087d90612f01565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6000600161232784610cf1565b612331919061366f565b600083815260076020526040902054909150808214612384576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906123c99060019061366f565b600083815260096020526040812054600880549394509092849081106123ff57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806008838154811061242e57634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061247457634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061249b83610cf1565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b3b151590565b6001600160a01b0382166125005760405162461bcd60e51b815260040161087d90613220565b61250981611908565b156125265760405162461bcd60e51b815260040161087d90612fbb565b61253260008383611f50565b6001600160a01b038216600090815260036020526040812080546001929061255b908490613624565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001606081525090565b828054612604906136b2565b90600052602060002090601f016020900481019282612626576000855561266c565b82601f1061263f57805160ff191683800117855561266c565b8280016001018555821561266c579182015b8281111561266c578251825591602001919060010190612651565b5061267892915061267c565b5090565b5b80821115612678576000815560010161267d565b600082601f8301126126a1578081fd5b81356126b46126af826135f0565b6135c6565b8181528460208386010111156126c8578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156126f3578081fd5b8135610ce48161375e565b60006020828403121561270f578081fd5b8151610ce48161375e565b6000806040838503121561272c578081fd5b82356127378161375e565b915060208301356127478161375e565b809150509250929050565b600080600060608486031215612766578081fd5b83356127718161375e565b925060208401356127818161375e565b929592945050506040919091013590565b600080600080608085870312156127a7578081fd5b84356127b28161375e565b935060208501356127c28161375e565b925060408501359150606085013567ffffffffffffffff8111156127e4578182fd5b6127f087828801612691565b91505092959194509250565b6000806040838503121561280e578182fd5b82356128198161375e565b915060208301358015158114612747578182fd5b6000806040838503121561283f578182fd5b823561284a8161375e565b946020939093013593505050565b600060208284031215612869578081fd5b8135610ce481613773565b600060208284031215612885578081fd5b8151610ce481613773565b6000602082840312156128a1578081fd5b815167ffffffffffffffff8111156128b7578182fd5b8201601f810184136128c7578182fd5b80516128d56126af826135f0565b8181528560208385010111156128e9578384fd5b61171f826020830160208601613686565b60006020828403121561290b578081fd5b5035919050565b600060208284031215612923578081fd5b5051919050565b6000806040838503121561293c578182fd5b82359150602083013567ffffffffffffffff811115612959578182fd5b61296585828601612691565b9150509250929050565b60008060408385031215612981578081fd5b50508035926020909101359150565b6000806000606084860312156129a4578081fd5b505081359360208301359350604090920135919050565b600081518084526129d3816020860160208601613686565b601f01601f19169290920160200192915050565b7f3c2f673e00000000000000000000000000000000000000000000000000000000815260040190565b600083516020612a238285838901613686565b7f3c673e00000000000000000000000000000000000000000000000000000000009184019182528454600390849060028104600180831680612a6657607f831692505b868310811415612a8457634e487b7160e01b89526022600452602489fd5b808015612a985760018114612aad57612add565b60ff1985168988015283890187019550612add565b612ab68c613618565b8a5b85811015612ad35781548b82018a0152908401908901612ab8565b505086848a010195505b5050505050612aeb816129e7565b98975050505050505050565b60008251612b09818460208701613686565b7f3c2f7376673e0000000000000000000000000000000000000000000000000000920191825250600601919050565b60007f7b226e616d65223a224175746f6e6f6d6f75732053756220417274202300000082528451612b7081601d850160208901613686565b7f2e00000000000000000000000000000000000000000000000000000000000000601d918401918201528451612bad81601e840160208901613686565b7f222c22696d616765223a22000000000000000000000000000000000000000000601e92909101918201528351612beb816029840160208801613686565b7f227d00000000000000000000000000000000000000000000000000000000000060299290910191820152602b0195945050505050565b60007f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000082528251612c5a81601d850160208701613686565b91909101601d0192915050565b60007f3c7376672076696577426f783d2230203020353030203530302220786d6c6e7382527f3d22687474703a2f2f7777772e77332e6f72672f323030302f7376672220737460208301527f796c653d226261636b67726f756e642d696d6167653a75726c2800000000000060408301528251612ceb81605a850160208701613686565b7f29223e0000000000000000000000000000000000000000000000000000000000605a939091019283015250605d01919050565b60007f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000082528251612d5781601a850160208701613686565b91909101601a0192915050565b6001600160a01b0391909116815260200190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612daa60808301846129bb565b9695505050505050565b901515815260200190565b600060208252610ce460208301846129bb565b90815260200190565b6020808252601b908201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e0000000000604082015260600190565b6020808252818101527f556e617574686f72697a656420617474656d707420746f207769746864726177604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201527f74206f6620626f756e6473000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f496e76616c696420706172656e742c206e6f742079657420616374697661746560408201527f6400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527f63656976657220696d706c656d656e7465720000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526017908201527f426173652070726963652063616e206e6f742062652030000000000000000000604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606082015260800190565b6020808252601c908201527f426173652070726963652063616e206f6e6c7920696e63726561736500000000604082015260600190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560408201527f7200000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f556e617574686f72697a656420617474656d707420746f20636f6e666967757260408201527f6520666f726b0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60408201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201527f7574206f6620626f756e64730000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4574682076616c75652073656e74206973206e6f742073756666696369656e74604082015260600190565b6000602082526001600160a01b038351166020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c080840152611a1460e08401826129bb565b60405181810167ffffffffffffffff811182821017156135e8576135e8613748565b604052919050565b600067ffffffffffffffff82111561360a5761360a613748565b50601f01601f191660200190565b60009081526020902090565b600082198211156136375761363761371c565b500190565b60008261364b5761364b613732565b500490565b600081600019048311821515161561366a5761366a61371c565b500290565b6000828210156136815761368161371c565b500390565b60005b838110156136a1578181015183820152602001613689565b83811115610a385750506000910152565b6002810460018216806136c657607f821691505b602082108114156136e757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156137015761370161371c565b5060010190565b60008261371757613717613732565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461179657600080fd5b6001600160e01b03198116811461179657600080fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e4229ed344ded3c00bc04202a28c8b1f4199953f74901f3e7cfc4a57fb6f78c264736f6c63430008000033\";\n\ntype AutonomousSubArtConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: AutonomousSubArtConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class AutonomousSubArt__factory extends ContractFactory {\n constructor(...args: AutonomousSubArtConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n name: string,\n symbol: string,\n parentAddress: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n name,\n symbol,\n parentAddress,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n name: string,\n symbol: string,\n parentAddress: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(\n name,\n symbol,\n parentAddress,\n overrides || {}\n );\n }\n attach(address: string): AutonomousSubArt {\n return super.attach(address) as AutonomousSubArt;\n }\n connect(signer: Signer): AutonomousSubArt__factory {\n return super.connect(signer) as AutonomousSubArt__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): AutonomousSubArtInterface {\n return new utils.Interface(_abi) as AutonomousSubArtInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): AutonomousSubArt {\n return new Contract(address, _abi, signerOrProvider) as AutonomousSubArt;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n CollectiveCanvas,\n CollectiveCanvasInterface,\n} from \"../CollectiveCanvas\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"name\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"symbol\",\n type: \"string\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"layer\",\n type: \"bytes\",\n },\n ],\n name: \"_validateLayer\",\n outputs: [],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOfToken\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"basePrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"creatorAt\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"currentPriceToMint\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"historicalImageAt\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"layerCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"layer\",\n type: \"bytes\",\n },\n ],\n name: \"mint\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"updatedBasePrice\",\n type: \"uint256\",\n },\n ],\n name: \"setBasePrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"timestampAt\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalFunded\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdraw\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b506040516200399e3803806200399e83398101604081905262000034916200023a565b8151829082906200004d906000906020850190620000e9565b50805162000063906001906020840190620000e9565b505050620000806200007a6200009360201b60201c565b62000097565b5050665543df729c0000600755620002f4565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000f790620002a1565b90600052602060002090601f0160209004810192826200011b576000855562000166565b82601f106200013657805160ff191683800117855562000166565b8280016001018555821562000166579182015b828111156200016657825182559160200191906001019062000149565b506200017492915062000178565b5090565b5b8082111562000174576000815560010162000179565b600082601f830112620001a0578081fd5b81516001600160401b0380821115620001bd57620001bd620002de565b6040516020601f8401601f1916820181018381118382101715620001e557620001e5620002de565b6040528382528584018101871015620001fc578485fd5b8492505b838310156200021f578583018101518284018201529182019162000200565b838311156200023057848185840101525b5095945050505050565b600080604083850312156200024d578182fd5b82516001600160401b038082111562000264578384fd5b62000272868387016200018f565b9350602085015191508082111562000288578283fd5b5062000297858286016200018f565b9150509250929050565b600281046001821680620002b657607f821691505b60208210811415620002d857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61369a80620003046000396000f3fe6080604052600436106101b75760003560e01c806395d89b41116100ec578063c71a7d671161008a578063de4b326211610064578063de4b326214610496578063e985e9c5146104b6578063efd32692146104d6578063f2fde38b146104f6576101b7565b8063c71a7d671461044c578063c7876ea414610461578063c87b56dd14610476576101b7565b8063a5929815116100c6578063a5929815146103d7578063ad044f49146103f7578063ae198eb41461040c578063b88d4fde1461042c576101b7565b806395d89b41146103825780639fa5819014610397578063a22cb465146103b7576101b7565b806356e7f6c71161015957806370a082311161013357806370a0823114610325578063715018a6146103455780637ba0e2e71461035a5780638da5cb5b1461036d576101b7565b806356e7f6c7146102c35780636352211e146102e557806364d265df14610305576101b7565b8063095ea7b311610195578063095ea7b31461024157806323b872dd1461026357806342842e0e14610283578063441a3e70146102a3576101b7565b806301ffc9a7146101bc57806306fdde03146101f2578063081812fc14610214575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612811565b610516565b6040516101e99190612cb4565b60405180910390f35b3480156101fe57600080fd5b50610207610590565b6040516101e99190612cbf565b34801561022057600080fd5b5061023461022f36600461287c565b610622565b6040516101e99190612c64565b34801561024d57600080fd5b5061026161025c3660046127e8565b61066e565b005b34801561026f57600080fd5b5061026161027e36600461270d565b610706565b34801561028f57600080fd5b5061026161029e36600461270d565b61073e565b3480156102af57600080fd5b506102616102be366004612894565b610759565b3480156102cf57600080fd5b506102d8610856565b6040516101e9919061341b565b3480156102f157600080fd5b5061023461030036600461287c565b61085c565b34801561031157600080fd5b50610261610320366004612849565b610891565b34801561033157600080fd5b506102d86103403660046126c1565b611663565b34801561035157600080fd5b506102616116a7565b6102d8610368366004612849565b6116f2565b34801561037957600080fd5b506102346117dd565b34801561038e57600080fd5b506102076117ec565b3480156103a357600080fd5b506102076103b236600461287c565b6117fb565b3480156103c357600080fd5b506102616103d23660046127ae565b61182b565b3480156103e357600080fd5b506102346103f236600461287c565b6118f9565b34801561040357600080fd5b506102d861193c565b34801561041857600080fd5b506102d861042736600461287c565b611981565b34801561043857600080fd5b50610261610447366004612748565b6119be565b34801561045857600080fd5b506102d86119fd565b34801561046d57600080fd5b506102d8611a2c565b34801561048257600080fd5b5061020761049136600461287c565b611a32565b3480156104a257600080fd5b506102616104b136600461287c565b611ad8565b3480156104c257600080fd5b506101dc6104d13660046126db565b611b1c565b3480156104e257600080fd5b506102d86104f136600461287c565b611b4a565b34801561050257600080fd5b506102616105113660046126c1565b611be8565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061057957506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610588575061058882611c59565b90505b919050565b60606000805461059f90613502565b80601f01602080910402602001604051908101604052809291908181526020018280546105cb90613502565b80156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b5050505050905090565b600061062d82611c8b565b6106525760405162461bcd60e51b81526004016106499061315d565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106798261085c565b9050806001600160a01b0316836001600160a01b031614156106ad5760405162461bcd60e51b815260040161064990613298565b806001600160a01b03166106bf611ca8565b6001600160a01b031614806106db57506106db816104d1611ca8565b6106f75760405162461bcd60e51b815260040161064990612fda565b6107018383611cac565b505050565b610717610711611ca8565b82611d1a565b6107335760405162461bcd60e51b815260040161064990613389565b610701838383611d9f565b610701838383604051806020016040528060008152506119be565b600061076483611b4a565b9050818110156107865760405162461bcd60e51b815260040161064990612f7d565b336107908461085c565b6001600160a01b0316146107b65760405162461bcd60e51b815260040161064990612d40565b6000838152600960205260408120600381018054919285926107d9908490613456565b9091555050600084815260096020526040808220835481546001600160a01b0319166001600160a01b03909116178155600180850154908201556002808501549082015560038085015491015551339185156108fc02918691818181858888f1935050505015801561084f573d6000803e3d6000fd5b5050505050565b60085490565b6000818152600260205260408120546001600160a01b0316806105885760405162461bcd60e51b815260040161064990613094565b60408051600a8082526101608201909252600091816020015b6108b2612579565b8152602001906001900390816108aa575050604080518082019091529091506000908082815260200160008152508260008151811061090157634e487b7160e01b600052603260045260246000fd5b602002602001018190525060005b8351811015611640576000838361ffff168151811061093e57634e487b7160e01b600052603260045260246000fd5b602002602001015160000151600681111561096957634e487b7160e01b600052602160045260246000fd5b1415610a4d5783818151811061098f57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916600f60fa1b146109c15760405162461bcd60e51b815260040161064990612cd2565b82516109ce836001613430565b61ffff16106109ef5760405162461bcd60e51b815260040161064990612f46565b604080518082019091528060018152602001610a0c836001613456565b905283610a188461353d565b93508361ffff1681518110610a3d57634e487b7160e01b600052603260045260246000fd5b602002602001018190525061162e565b6001838361ffff1681518110610a7357634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516006811115610a9e57634e487b7160e01b600052602160045260246000fd5b1415610ec657838181518110610ac457634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916602f60f81b1415610b295760408051808201909152806002815260200182815250838361ffff1681518110610b1957634e487b7160e01b600052603260045260246000fd5b6020026020010181905250610ec1565b838181518110610b4957634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916601160f91b1415610bd6578251610b71836001613430565b61ffff1610610b925760405162461bcd60e51b815260040161064990612f46565b60408051808201909152806006815260200182905283610bb18461353d565b93508361ffff1681518110610b1957634e487b7160e01b600052603260045260246000fd5b838181518110610bf657634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916601f60f91b1415610c7a57604080518082019091528060038152602001848461ffff1681518110610c4757634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815250838361ffff1681518110610b1957634e487b7160e01b600052603260045260246000fd5b603060f81b848281518110610c9f57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191610801590610cee5750603960f81b848281518110610cdc57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191611155b80610d685750604160f81b848281518110610d1957634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191610801590610d685750607a60f81b848281518110610d5657634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191611155b80610da55750838181518110610d8e57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916603d60f81b145b80610dfe5750838181518110610dcb57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b0319167f2000000000000000000000000000000000000000000000000000000000000000145b80610e575750838181518110610e2457634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b0319167f2d00000000000000000000000000000000000000000000000000000000000000145b848281518110610e7757634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b604051602001610e929190612add565b60405160208183030381529060405290610ebf5760405162461bcd60e51b81526004016106499190612cbf565b505b61162e565b6002838361ffff1681518110610eec57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516006811115610f1757634e487b7160e01b600052602160045260246000fd5b1415610f8157838181518110610f3d57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916601f60f91b14610f6f5760405162461bcd60e51b8152600401610649906130f1565b81610f79816134e4565b92505061162e565b6003838361ffff1681518110610fa757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516006811115610fd257634e487b7160e01b600052602160045260246000fd5b141561109357838181518110610ff857634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916600f60fa1b1461102a5760405162461bcd60e51b815260040161064990612cd2565b604080518082019091528060048152602001848461ffff168151811061106057634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815250838361ffff1681518110610a3d57634e487b7160e01b600052603260045260246000fd5b6004838361ffff16815181106110b957634e487b7160e01b600052603260045260246000fd5b60200260200101516000015160068111156110e457634e487b7160e01b600052602160045260246000fd5b14156112f65783818151811061110a57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916602f60f81b14156111a557604080518082019091528060058152602001848461ffff168151811061115b57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518360016111749190613456565b61117e91906134a1565b815250838361ffff1681518110610b1957634e487b7160e01b600052603260045260246000fd5b604160f81b8482815181106111ca57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b031916108015906112195750607a60f81b84828151811061120757634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191611155b6112355760405162461bcd60e51b815260040161064990613352565b8251611242836001613430565b61ffff16106112635760405162461bcd60e51b815260040161064990612f46565b604080518082019091528060038152602001848461ffff168151811061129957634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815250838361ffff16815181106112cc57634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051808201909152806001815260200182905283610a188461353d565b6005838361ffff168151811061131c57634e487b7160e01b600052603260045260246000fd5b602002602001015160000151600681111561134757634e487b7160e01b600052602160045260246000fd5b14156114b45783818151811061136d57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916601f60f91b141561139a5781611392816134e4565b925050610ec1565b83838361ffff16815181106113bf57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151826113d691906134a1565b815181106113f457634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b6001600160f81b03191684828151811061142957634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b6001600160f81b0319161484848461ffff168151811061146457634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518361147b91906134a1565b8151811061149957634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b604051602001610e929190612c29565b6006838361ffff16815181106114da57634e487b7160e01b600052603260045260246000fd5b602002602001015160000151600681111561150557634e487b7160e01b600052602160045260246000fd5b141561162e5783818151811061152b57634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916601160f91b14156115505781610f79816134e4565b602060f81b84828151811061157557634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b031916108015906115c45750607e60f81b8482815181106115b257634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191611155b8482815181106115e457634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b6040516020016115ff9190612b83565b6040516020818303038152906040529061162c5760405162461bcd60e51b81526004016106499190612cbf565b505b806116388161355f565b91505061090f565b5061ffff8116156107015760405162461bcd60e51b8152600401610649906132f5565b60006001600160a01b03821661168b5760405162461bcd60e51b815260040161064990613037565b506001600160a01b031660009081526003602052604090205490565b6116af611ca8565b6001600160a01b03166116c06117dd565b6001600160a01b0316146116e65760405162461bcd60e51b8152600401610649906131a9565b6116f06000611ecc565b565b6000346116fd6119fd565b111561171b5760405162461bcd60e51b8152600401610649906133e6565b61172482610891565b600880546001810182556000919091528251611768907ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee38301906020860190612590565b506117733382611f1e565b6040805160808101825233815242602080830191825234838501908152600060608501818152878252600990935294909420925183546001600160a01b0319166001600160a01b039091161783559051600183015591516002820155905160039091015592915050565b6006546001600160a01b031690565b60606001805461059f90613502565b606061180682611c8b565b6118225760405162461bcd60e51b815260040161064990612d09565b61058882611f3c565b611833611ca8565b6001600160a01b0316826001600160a01b031614156118645760405162461bcd60e51b815260040161064990612ec3565b8060056000611871611ca8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556118b5611ca8565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118ed9190612cb4565b60405180910390a35050565b600061190482611c8b565b6119205760405162461bcd60e51b815260040161064990612d09565b506000908152600960205260409020546001600160a01b031690565b600080805b60085481101561197b576000818152600960205260409020600201546119679083613456565b9150806119738161355f565b915050611941565b50905090565b600061198c82611c8b565b6119a85760405162461bcd60e51b815260040161064990612d09565b5060009081526009602052604090206001015490565b6119cf6119c9611ca8565b83611d1a565b6119eb5760405162461bcd60e51b815260040161064990613389565b6119f784848484611f75565b50505050565b600854600090611a0f90600a9061346e565b611a1a906001613456565b600754611a279190613482565b905090565b60075481565b6060611a3d82611c8b565b611a595760405162461bcd60e51b81526004016106499061323b565b600854600090611a7490611a6f906001906134a1565b611f3c565b90506000611aaa611a8485611fa8565b83604051602001611a96929190612a32565b6040516020818303038152906040526120df565b9050600081604051602001611abf9190612b3e565b60408051808303601f1901815291905295945050505050565b611ae0611ca8565b6001600160a01b0316611af16117dd565b6001600160a01b031614611b175760405162461bcd60e51b8152600401610649906131a9565b600755565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000611b5582611c8b565b611b715760405162461bcd60e51b815260040161064990612d09565b6000825b600854811015611bc457611b8a816001613456565b600082815260096020526040902060020154611ba6919061346e565b611bb09083613456565b915080611bbc8161355f565b915050611b75565b50600083815260096020526040902060030154611be190826134a1565b9392505050565b611bf0611ca8565b6001600160a01b0316611c016117dd565b6001600160a01b031614611c275760405162461bcd60e51b8152600401610649906131a9565b6001600160a01b038116611c4d5760405162461bcd60e51b815260040161064990612dd2565b611c5681611ecc565b50565b6001600160e01b031981167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ce18261085c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611d2582611c8b565b611d415760405162461bcd60e51b815260040161064990612efa565b6000611d4c8361085c565b9050806001600160a01b0316846001600160a01b03161480611d875750836001600160a01b0316611d7c84610622565b6001600160a01b0316145b80611d975750611d978185611b1c565b949350505050565b826001600160a01b0316611db28261085c565b6001600160a01b031614611dd85760405162461bcd60e51b8152600401610649906131de565b6001600160a01b038216611dfe5760405162461bcd60e51b815260040161064990612e66565b611e09838383610701565b611e14600082611cac565b6001600160a01b0383166000908152600360205260408120805460019290611e3d9084906134a1565b90915550506001600160a01b0382166000908152600360205260408120805460019290611e6b908490613456565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611f3882826040518060200160405280600081525061226f565b5050565b6060611f4f611f4a836122a2565b6120df565b604051602001611f5f9190612be4565b6040516020818303038152906040529050919050565b611f80848484611d9f565b611f8c84848484612360565b6119f75760405162461bcd60e51b815260040161064990612d75565b606081611fe9575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261058b565b8160005b81156120135780611ffd8161355f565b915061200c9050600a8361346e565b9150611fed565b60008167ffffffffffffffff81111561203c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612066576020820181803683370190505b5090505b8415611d975761207b6001836134a1565b9150612088600a8661357a565b612093906030613456565b60f81b8183815181106120b657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506120d8600a8661346e565b945061206a565b6060815160001415612100575060408051602081019091526000815261058b565b60006040518060600160405280604081526020016135e7604091399050600060038451600261212f9190613456565b612139919061346e565b612144906004613482565b90506000612153826020613456565b67ffffffffffffffff81111561217957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121a3576020820181803683370190505b509050818152600183018586518101602084015b8183101561220f576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f81168501518253506001016121b7565b600389510660018114612229576002811461225557612261565b7f3d3d000000000000000000000000000000000000000000000000000000000000600119830152612261565b603d60f81b6000198301525b509398975050505050505050565b6122798383612494565b6122866000848484612360565b6107015760405162461bcd60e51b815260040161064990612d75565b606060006040518060600160405280603e8152602001613627603e9139905060005b6122cf846001613456565b8110156123375781600882815481106122f857634e487b7160e01b600052603260045260246000fd5b9060005260206000200160405160200161231392919061290a565b6040516020818303038152906040529150808061232f9061355f565b9150506122c4565b8160405160200161234891906129f1565b60408051808303601f19018152919052949350505050565b6000612374846001600160a01b0316612573565b1561248957836001600160a01b031663150b7a02612390611ca8565b8786866040518563ffffffff1660e01b81526004016123b29493929190612c78565b602060405180830381600087803b1580156123cc57600080fd5b505af19250505080156123fc575060408051601f3d908101601f191682019092526123f99181019061282d565b60015b612456573d80801561242a576040519150601f19603f3d011682016040523d82523d6000602084013e61242f565b606091505b50805161244e5760405162461bcd60e51b815260040161064990612d75565b805181602001fd5b6001600160e01b0319167f150b7a0200000000000000000000000000000000000000000000000000000000149050611d97565b506001949350505050565b6001600160a01b0382166124ba5760405162461bcd60e51b815260040161064990613128565b6124c381611c8b565b156124e05760405162461bcd60e51b815260040161064990612e2f565b6124ec60008383610701565b6001600160a01b0382166000908152600360205260408120805460019290612515908490613456565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b604080518082019091526000808252602082015290565b82805461259c90613502565b90600052602060002090601f0160209004810192826125be5760008555612604565b82601f106125d757805160ff1916838001178555612604565b82800160010185558215612604579182015b828111156126045782518255916020019190600101906125e9565b50612610929150612614565b5090565b5b808211156126105760008155600101612615565b80356001600160a01b038116811461058b57600080fd5b600082601f830112612650578081fd5b813567ffffffffffffffff8082111561266b5761266b6135ba565b604051601f8301601f19168101602001828111828210171561268f5761268f6135ba565b6040528281528483016020018610156126a6578384fd5b82602086016020830137918201602001929092529392505050565b6000602082840312156126d2578081fd5b611be182612629565b600080604083850312156126ed578081fd5b6126f683612629565b915061270460208401612629565b90509250929050565b600080600060608486031215612721578081fd5b61272a84612629565b925061273860208501612629565b9150604084013590509250925092565b6000806000806080858703121561275d578081fd5b61276685612629565b935061277460208601612629565b925060408501359150606085013567ffffffffffffffff811115612796578182fd5b6127a287828801612640565b91505092959194509250565b600080604083850312156127c0578182fd5b6127c983612629565b9150602083013580151581146127dd578182fd5b809150509250929050565b600080604083850312156127fa578182fd5b61280383612629565b946020939093013593505050565b600060208284031215612822578081fd5b8135611be1816135d0565b60006020828403121561283e578081fd5b8151611be1816135d0565b60006020828403121561285a578081fd5b813567ffffffffffffffff811115612870578182fd5b611d9784828501612640565b60006020828403121561288d578081fd5b5035919050565b600080604083850312156128a6578182fd5b50508035926020909101359150565b600081518084526128cd8160208601602086016134b8565b601f01601f19169290920160200192915050565b7f3c2f673e00000000000000000000000000000000000000000000000000000000815260040190565b60008351602061291d82858389016134b8565b7f3c673e0000000000000000000000000000000000000000000000000000000000918401918252845460039084906002810460018083168061296057607f831692505b86831081141561297e57634e487b7160e01b89526022600452602489fd5b80801561299257600181146129a7576129d7565b60ff19851689880152838901870195506129d7565b6129b08c613424565b8a5b858110156129cd5781548b82018a01529084019089016129b2565b505086848a010195505b50505050506129e5816128e1565b98975050505050505050565b60008251612a038184602087016134b8565b7f3c2f7376673e0000000000000000000000000000000000000000000000000000920191825250600601919050565b60007f7b226e616d65223a224175746f6e6f6d6f75732041727420230000000000000082528351612a6a8160198501602088016134b8565b7f222c22696d616765223a220000000000000000000000000000000000000000006019918401918201528351612aa78160248401602088016134b8565b7f227d00000000000000000000000000000000000000000000000000000000000060249290910191820152602601949350505050565b7f457870656374696e672027302d39272c2027612d7a412d5a272c20273d272c2081527f272d272c206f72202720272062757420676f743a20000000000000000000000060208201526001600160f81b031991909116603582015260360190565b60007f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000082528251612b7681601d8501602087016134b8565b91909101601d0192915050565b7f457870656374696e6720617363696920307832302d307837652c20627574206781527f6f743a200000000000000000000000000000000000000000000000000000000060208201526001600160f81b031991909116602482015260250190565b60007f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000082528251612c1c81601a8501602087016134b8565b91909101601a0192915050565b7f457870656374696e6720612d7a412d5a20746f206d617463683a20000000000081526001600160f81b031991909116601b820152601c0190565b6001600160a01b0391909116815260200190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612caa60808301846128b5565b9695505050505050565b901515815260200190565b600060208252611be160208301846128b5565b6020808252600d908201527f457870656374696e6720273c2700000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e0000000000604082015260600190565b6020808252818101527f556e617574686f72697a656420617474656d707420746f207769746864726177604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527f63656976657220696d706c656d656e7465720000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526014908201527f537461636b207370616365206578636565646564000000000000000000000000604082015260600190565b60208082526025908201527f417474656d707420746f207769746864726177206d6f7265207468616e20626160408201527f6c616e6365000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606082015260800190565b6020808252600d908201527f457870656374696e6720273e2700000000000000000000000000000000000000604082015260600190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560408201527f7200000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f496e76616c6964206c617965722c20656e6465642077697468206e6f6e2d7a6560408201527f726f20696e646578000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f457870656374696e6720612d7a412d5a00000000000000000000000000000000604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60408201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606082015260800190565b6020808252818101527f4574682076616c75652073656e74206973206e6f742073756666696369656e74604082015260600190565b90815260200190565b60009081526020902090565b600061ffff80831681851680830382111561344d5761344d61358e565b01949350505050565b600082198211156134695761346961358e565b500190565b60008261347d5761347d6135a4565b500490565b600081600019048311821515161561349c5761349c61358e565b500290565b6000828210156134b3576134b361358e565b500390565b60005b838110156134d35781810151838201526020016134bb565b838111156119f75750506000910152565b600061ffff8216806134f8576134f861358e565b6000190192915050565b60028104600182168061351657607f821691505b6020821081141561353757634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff808316818114156135555761355561358e565b6001019392505050565b60006000198214156135735761357361358e565b5060010190565b600082613589576135896135a4565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611c5657600080fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c7376672076696577426f783d2230203020353030203530302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223ea264697066735822122056481b716f95f7f973f134c0698b1233a76e86a9d2bf2aaaf15531bedd4e217164736f6c63430008000033\";\n\ntype CollectiveCanvasConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters;\n\nconst isSuperArgs = (\n xs: CollectiveCanvasConstructorParams\n): xs is ConstructorParameters => xs.length > 1;\n\nexport class CollectiveCanvas__factory extends ContractFactory {\n constructor(...args: CollectiveCanvasConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n deploy(\n name: string,\n symbol: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n name,\n symbol,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n name: string,\n symbol: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(name, symbol, overrides || {});\n }\n attach(address: string): CollectiveCanvas {\n return super.attach(address) as CollectiveCanvas;\n }\n connect(signer: Signer): CollectiveCanvas__factory {\n return super.connect(signer) as CollectiveCanvas__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): CollectiveCanvasInterface {\n return new utils.Interface(_abi) as CollectiveCanvasInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CollectiveCanvas {\n return new Contract(address, _abi, signerOrProvider) as CollectiveCanvas;\n }\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { BigNumber, ethers } from \"ethers\";\nimport { useEffect, useState } from \"react\";\nimport { Row, Col } from \"react-bootstrap\";\nimport BalanceCard from \"./cards/BalanceCard\";\nimport ConfigureForkCard from \"./cards/ConfigureForkCard\";\nimport { CANVAS_CONTRACT_ADDRESS, SUB_ART_CONTRACT_ADDRESS } from \"./Constsnts\";\nimport { AutonomousSubArt, AutonomousSubArt__factory, CollectiveCanvas, CollectiveCanvas__factory } from \"./typechain\";\nimport { TypedEventFilter } from \"./typechain/common\";\nimport { TransferEvent } from \"./typechain/ERC721\";\nimport MyFork from \"./util/MyFork\";\nimport MyToken from \"./util/MyToken\";\n\n\nexport default function MembersOnly() {\n\n const [hasMinted, setHasMinted] = useState(false);\n const [myTokens, setMyTokens] = useState([]);\n const [myForks, setMyForks] = useState([]);\n const [mySubArtTokens, setMySubArtTokens] = useState([]);\n const [rootBalance, setRootBalance] = useState(null);\n const [withdrawing, setWithdrawing] = useState([]);\n const [forkWithdrawing, setForkWithdrawing] = useState([]);\n const [subArtWithdrawing, setSubArtWithdrawing] = useState([]);\n const [rootWithdrawing, setRootWithdrawing] = useState([]);\n const [updating, setUpdating] = useState([]);\n\n const { active , library } = useWeb3React()\n\n useEffect(() => {\n if (active) {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library);\n const filter : TypedEventFilter = contract.filters.Transfer(null, null, null);\n const subArt : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library);\n const subArtFilter : TypedEventFilter = subArt.filters.Transfer(null, null, null);\n\n const listener = (event : any) => {updateBalance(library)};\n\n updateBalance(library);\n\n contract.on(filter, listener);\n subArt.on(subArtFilter, listener);\n\n return () => {contract.off(filter, listener); subArt.off(filter, listener);}\n }\n\n }, [active, library]);\n\n async function updateBalance(library : ethers.providers.Web3Provider) {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library.getSigner());\n const subArt : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library.getSigner());\n\n const myBalances : MyToken[] = [];\n const subArtBalances : MyToken[] = [];\n\n for (var account of await library.listAccounts()) {\n var balance : number = (await contract.balanceOf(account)).toNumber();\n const layerCount : number = (await contract.layerCount()).toNumber();\n\n for (var i=0;myBalances.length {\n const balance = subArt.balanceOfParent(myToken.tokenId);\n const basePrice = subArt.getForkBasePrice(myToken.tokenId);\n const priceInterval = subArt.getForkPriceIncrementInterval(myToken.tokenId);\n\n return Promise.all([balance, basePrice, priceInterval]).then(([balance, basePrice, priceInterval]) => {\n return {tokenId: myToken.tokenId, balance: balance, basePrice: basePrice, incrementInterval: priceInterval.toNumber()};\n });\n }));\n\n if (myBalances.find((token) => token.tokenId === 0)) {\n setRootBalance(await subArt.balanceOfRoot());\n } else {\n setRootBalance(null);\n }\n\n setMyTokens(myBalances);\n setMySubArtTokens(subArtBalances);\n setMyForks(myForks);\n setHasMinted(myBalances.length > 0 || subArtBalances.length > 0);\n }\n\n async function onWithdrawTokenRewards(tokenId: number, amount: BigNumber) {\n if (withdrawing.includes(tokenId)) return;\n setWithdrawing([...withdrawing, tokenId]);\n\n try {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library.getSigner());\n const tx = await contract.withdraw(BigNumber.from(tokenId), amount);\n \n await tx.wait(1);\n \n updateBalance(library);\n setWithdrawing(removeFromArray(withdrawing, tokenId));\n } catch (error) {\n console.error(error);\n setWithdrawing(removeFromArray(withdrawing, tokenId));\n }\n }\n\n async function onWithdrawForkRewards(tokenId: number) {\n if (forkWithdrawing.includes(tokenId)) return;\n setForkWithdrawing([...forkWithdrawing, tokenId]);\n\n try {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library.getSigner());\n const tx = await contract.withdrawForParent(tokenId);\n \n await tx.wait(1);\n \n updateBalance(library);\n setForkWithdrawing(removeFromArray(forkWithdrawing, tokenId));\n } catch (error) {\n console.error(error);\n setForkWithdrawing(removeFromArray(forkWithdrawing, tokenId));\n }\n }\n\n async function onWithdrawSubArtRewards(tokenId: number) {\n if (subArtWithdrawing.includes(tokenId)) return;\n setSubArtWithdrawing([...subArtWithdrawing, tokenId]);\n\n try {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library.getSigner());\n const tx = await contract.withdrawForToken(tokenId);\n \n await tx.wait(1);\n \n updateBalance(library);\n setSubArtWithdrawing(removeFromArray(subArtWithdrawing, tokenId));\n } catch (error) {\n console.error(error);\n setSubArtWithdrawing(removeFromArray(subArtWithdrawing, tokenId));\n }\n }\n\n async function onWithdrawRootRewards() {\n if (rootWithdrawing.includes(0)) return;\n setRootWithdrawing([...rootWithdrawing, 0]);\n\n try {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library.getSigner());\n const tx = await contract.withdrawForRoot();\n \n await tx.wait(1);\n \n updateBalance(library);\n setRootWithdrawing(removeFromArray(rootWithdrawing, 0));\n } catch (error) {\n console.error(error);\n setRootWithdrawing(removeFromArray(rootWithdrawing, 0));\n }\n }\n\n async function onSaveForkConfiguration(tokenId: number, basePrice: BigNumber, priceIncrementInterval: number) {\n if (updating.includes(tokenId)) return;\n setUpdating([...updating, tokenId]);\n\n try {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library.getSigner());\n const tx = await contract.setForkConfiguration(tokenId, basePrice, BigNumber.from(priceIncrementInterval));\n \n tx.wait(1);\n \n setUpdating(removeFromArray(updating, tokenId));\n } catch (error) {\n console.error(error);\n setUpdating(removeFromArray(updating, tokenId));\n }\n }\n\n function removeFromArray(array : T[], element : T) : T[] {\n var state = [...array];\n const index = state.indexOf(element);\n if (index !== -1) state.splice(index, 1);\n return state;\n }\n\n return (\n <>\n
\n {active && hasMinted &&\n <>\n \n \n

Members Only

\n \n
\n \n \n \n \n {rootBalance != null && \n \n }\n \n \n \n \n \n \n \n \n \n {onSaveForkConfiguration(tokenId, basePrice, incrementPriceInterval)}}/>\n \n \n \n }\n \n );\n\n}","import { useState } from \"react\";\nimport { Card, Image } from \"react-bootstrap\";\nimport ContentLoader from \"react-content-loader\";\n\ninterface CanvasCardProps {\n svg: string | null;\n isLoading: boolean;\n}\n\nexport default function CanvasCard(props: CanvasCardProps) {\n\n const [isImageLoaded, setImageLoaded] = useState(\"\");\n\n return (\n \n \n
\n \n \n \n
\n\n
\n \"Collective {setImageLoaded(props.svg ?? \"\")}}/>\n
\n\n
\n
\n );\n\n}\n\n","import { Card, OverlayTrigger, Table, Tooltip } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { ACTIVATION_GAP_SIZE } from \"./Constsnts\";\nimport { HistoryEvent } from \"./HistoryEvent\";\n\ninterface HistoryLogProps {\n history: HistoryEvent[];\n selected: number | null;\n loading: boolean;\n forksEnabled: boolean;\n onSelectedHistoryIndex: (index: number) => void;\n onLoadMore: () => void;\n}\n\nexport default function HistoryLog(props: HistoryLogProps) { \n\n function getTimeStringFromEpoch(epochTime : number) : string {\n let date : Date = new Date(0);\n date.setUTCSeconds(epochTime);\n\n return date.toLocaleString();\n }\n\n function renderLink(item: HistoryEvent, index: number) {\n if (props.history.length > 0 && props.history[0].tokenId - props.history[index].tokenId > ACTIVATION_GAP_SIZE) {\n return (
{item.forkAdditions === 0 ? \"Create fork\" : item.forkAdditions}
);\n } else {\n return (Tokens become eligible for forking after {ACTIVATION_GAP_SIZE} are subsequently minted}>\n
Pending
\n
);\n }\n }\n\n return (\n \n \n \n \n \n \n \n {props.forksEnabled && }\n \n \n \n {\n props.history.map((item, index) => {\n return (\n props.onSelectedHistoryIndex(index)} role=\"button\">\n \n \n {props.forksEnabled && }\n \n );\n })\n }\n\n {props.history.length > 0 && props.history[props.history.length-1].tokenId !== 0 && \n {if (!props.loading) props.onLoadMore()}} role=\"button\">\n \n \n \n }\n \n
#CreatorFork length
{props.history[index].tokenId}
{item.author}
{getTimeStringFromEpoch(item.timestamp)}
{renderLink(item, index)}
...
{props.loading ? \"Loading...\" : \"Load more\"}
\n
\n
\n );\n\n}","import { Row, Col } from 'react-bootstrap';\nimport { useWeb3React } from \"@web3-react/core\"\nimport { injected, walletconnect as walletConnect } from \"./connectors\"\n\nimport metamask from './assets/logos/metamask.svg';\nimport walletconnect from './assets/logos/walletconnect.svg';\nimport coinbase from './assets/logos/coinbase.png';\nimport { useEffect, useState } from 'react';\n//import ledger from '../assets/logos/ledger.png';\n\nenum ConnectionType {\n METAMASK, WALLET_CONNECT, LEDGER, COINBASE\n}\n\nexport default function ConnectWalletForm() {\n\n const { active, activate } = useWeb3React()\n\n const [connectingMetamask, setConnectingMetamask] = useState(false);\n const [connectingWalletConnect, setConnectingWalletConnect] = useState(false);\n const [connectingLedger, setConnectingLedger] = useState(false);\n const [connectingCoinbase, setConnectingCoinbase] = useState(false);\n const [errorStatus, setErrorStatus] = useState('');\n\n useEffect(() => {\n if (active) {\n setConnectingMetamask(false);\n setConnectingWalletConnect(false);\n setConnectingLedger(false);\n setConnectingCoinbase(false);\n setErrorStatus('');\n }\n }, [active]);\n\n async function handleConnect(type : ConnectionType) {\n if (connectingMetamask || connectingWalletConnect || connectingLedger || connectingCoinbase) return;\n\n setErrorStatus('');\n\n let provider;\n\n switch (type) {\n case ConnectionType.METAMASK: \n setConnectingMetamask(true); \n provider = injected;\n break;\n case ConnectionType.WALLET_CONNECT: \n setConnectingWalletConnect(true); \n provider = walletConnect;\n break;\n case ConnectionType.LEDGER: \n setConnectingLedger(true); \n provider = walletConnect;\n break;\n case ConnectionType.COINBASE:\n setConnectingCoinbase(true);\n provider = injected;\n break;\n default:\n console.log(\"Assertion failed\");\n return;\n }\n\n await activate(provider, (error: Error) => {\n setErrorStatus(error.message);\n setConnectingMetamask(false);\n setConnectingWalletConnect(false);\n setConnectingLedger(false);\n setConnectingCoinbase(false);\n });\n };\n\n function renderConnectingStatus(connecting : boolean) {\n if (connecting) return (
);\n else return (<>);\n }\n\n function renderErrorStatus() {\n if (errorStatus !== '') {\n return (
{errorStatus}
);\n } else {\n return (<>);\n }\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n { /*\n \n \"Ledger\"\n

Ledger

\n

Connect your Ledger wallet

\n {renderConnectingStatus(connectingLedger)}\n \n */ }\n
\n\n {renderErrorStatus()}\n ); \n}","import { InjectedConnector } from '@web3-react/injected-connector'\nimport { NetworkConnector } from '@web3-react/network-connector'\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector'\n//import { WalletLinkConnector } from '@web3-react/walletlink-connector'\n//import { LedgerConnector } from '@web3-react/ledger-connector'\n\n//const POLLING_INTERVAL = 12000\n//const RPC_URLS: { [chainId: number]: string } = {\n// 1: process.env.RPC_URL_1 as string,\n// 4: process.env.RPC_URL_4 as string\n//}\n\nexport const injected = new InjectedConnector({ supportedChainIds: [1, 3, 4, 5, 31337, 1337] })\n\nexport const network = new NetworkConnector({\n urls: { 31337: \"http://127.0.0.1:8545/\", 1: \"https://eth-mainnet.alchemyapi.io/v2/d8bS6AkSFaAq0gKGhBTNSZBjDjtx9L9u\" },\n defaultChainId: 1\n})\n\nexport const walletconnect = new WalletConnectConnector({\n rpc: { 1: \"https://mainnet.infura.io/v3/84842078b09946638c03157f83405213\" },\n qrcode: true\n})\n\n//export const walletlink = new WalletLinkConnector({\n// url: RPC_URLS[1],\n// appName: 'web3-react example',\n// supportedChainIds: [1, 3, 4, 5, 42, 10, 137, 69, 420, 80001]\n//})\n\n//export const ledger = new LedgerConnector({ chainId: 1, url: RPC_URLS[1], pollingInterval: POLLING_INTERVAL })\n","export default __webpack_public_path__ + \"static/media/metamask.c901ad35.svg\";","export default __webpack_public_path__ + \"static/media/walletconnect.66f98648.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABfAAAAXwAgMAAABgVILkAAAACVBMVEUGVv////8AUv+kLJrRAAAAAXRSTlMAQObYZgAAIX9JREFUeNrtnUGO5ciRRD+4GvAUAy15nyAg7tULnoLLhvZc1KwIASEweMoB1AONNCNVZzI83M3dzQ+gZL4yPrP/q7v1+fB4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PBf3H78+/3t/+E8C0bo/P//q7oNkBt+0PD+5XwlIO/P/dDTQmNA/X7u/EJUV+r/pn7is0BO/7D3fv4vURG5+Xh3B2cSe7jGN/W/Hz102saf5tUcOzQ+iHKqn65ZH5KgeO/ZcPfpVS/GDsCd97ZlD+ijsOXos2ZO+JXvSt+ha0kdgT/qW7Ll51D7Xkj4Ye9L/2c2D2fN7HkP2pK898PkNs/XQ4eC0LVvSt2fPyWNStixdy7Jl6VqWLbVvK3xq31D41L6tdKh9S+lQ+4bSofZtVibFYy8disdSOhSPoXS4Ny2lQ/FYSofi+ZiyT754Flv4qcUzGbNP3bmP+eUVz2wP/6F0KJ50bZu5c+cH49i27NyUwU8ZfRj2CTt3wYGfrnMnIPbpoo8U/GzRhwp+ts4FY59qbs5o8B8Gn9FPGfxE0Qdknyb6iMFPE31I9kk+aWEGP8knLVD2KaKPGvwU0YdlnyD6uMFPEH1g9uGjjxz88NGHZh88+tjBDx59cPaho48e/NDf8MCzD/zl5oQPP270l4fRZ/ATRn9xAf9i8Bn9bDsz8ActJ+xDftDyEvyQ0XfDPmD0/QQ/YPQXR/Cjrc3p8XQMPqOfr27jVe7sC36synXGPlT0J2/wI0V/cQf/YvC5NvPVbajoO2QfpnI9WidM5S4u4V8MPis3X92Gib5T9iEq16t1QlTu4hb+ReuwcvPVbYjoO2bvvnInz/C9V+7iGv5F67By89Wte+8szuHftA69k9E6rit3cQ/fr3emx/8dtA69k69uHXsngnXcemcJAf+idTj1M1rHqXeWIPBvWofeyTby3XpnCQP/pnXonYzWceidJRD8m9ahdzJax91XDEso+DetQ+9ktI4z7yzB4N+0Dr2T0TquvLOEg3/TOvROnr/Dcvn9zhIQ/k3r0DsZrePGO3NI+BetQ+9ktI4T78xB4bvwzhIU/k3r0DsZrePCO0tY+A6888Q9Kp/eyWgdB955HnqH1kk4NufQ8C8qn97JaB1w78zB4V+0DsdmvqEJLv0pPPyDyqd3Eiof2TvxrQPsnTkB/IvWofTzDU1g6U8p4B9UPr2TUPmw3snBHtM7UxL4F61D6We0DqT0pzTwDw5NSj+h8iGl/zyUPpWfUPpzIvg3lU/vZFQ+nHemVPAvKp/Sz6h8NOnnYo8l/SkZ/IvKp/QzKh9L+tnYI0l/Sgf/ovIp/YzKR5J+PvY40p8Swr+ofEo/o/JxpJ+RPYr0p5TwLyo/vfRTKh9F+jnZY0h/Sgr/ovKTS99K+X/9U/n7rb8klb4F+HaW/3frnk/6Bsr/F+R/uz9mk7668svPbs0l/QUk9Qb4kym/li/clkb6E4xx/uGySH8Gi71m+K88yj/LN25N0bhwytFUTxL4rXz79vCNO8HpXlP8V4a+fcVegf6doG9fslegH1/5r9mPp39EV34H++H0r+DK72I/mv4dW/mtFGT6oZXfzX7w3j8iK78UbPqR4ReRi9m4o/v2lIG/hmzcwX1bS4GnH7VvWxG7LZ70Jw/CH1y6V0zln5LwSzjpLy6EP1g8EZXfivDthG8i/KHiOeL1bZWHv4Zq3NmRdMaJ5w7Xt2XIRZK+K+mME88RS/mtDLo9jPTHwT9HwS9h4M/OpDPqo9Ydqm/LwIvSuA6DP6ZzjzjKb2Xo7SGkP7tr21HRv8PAHxz8EZ17h+nbMvwiNK7Dth0V/SNI35biMPpXDOVXDfire+nPboM/YG6G6NuqA3/1Dt9x8OWjfwTo26oFf/XduLPn4ItH//YPv+rBX11Lf3EdfPHou+/bqgl/ddy4k/PgS0f/cq78qgt/9du4s/fgC0f/9t23VRv+6rZx/Qdf+MvNw3PfNn34m9PGlYd/Ft/Rvx33rUHwZaN/O+5bi+DLRt9v35oEXzb6h1v41Qb+6rFxxfu2GN3uEP4cI/ii0b+99u1pBb84bNwlRN0KV+7hs2/tgi8Z/cNn3xqyF6zcy2XfVkv4q7fGneMEXzL6Hvu22cLfnMGPU7eilXs4hG/MXs47l7+xU63hr64adw4VfDnv3O76ttnD3zw17hKpbiWjf3jrWwD2YpV7OOvbigB/9TN3pmjWEfPO7WvsNAj2Yt7x1bcVA/7qBn60uhX0zuEJfkOBvzlp3CmedcS8c3nq2wJzu4+5Mwe0jph3HI2dEwf+6gN+SOtIeedwA78hwd88NO4U0jpS3rnc9G0p4bxze4HfsOBvDhp3iWkdKe946dtSAnrn8AG/ocHf4Bt3imodIe9cPvq2lIjeuV3Ab3jwN/TGXcJaR8g7Lvq2AB763AlsHRnvXA7GTkWEvyaBX0pQ79z4Y6dhwt+hG3eJbB0Z7+DDP0tY7xzoYwfUOiLeudD7tqLC3xLAR7WOhPRv9LFTSmDvgPdtw4W/hYdfceGvuHMnvHUkxiY2/IYMf0edO1N460hI/4YeO2cJ7R1s+NDsBbyDPHYaNvwNtHGX+MqXGJsH8Ngp4Ic5d6YM1hGQPjD8ig5/g5w7c4KhKSJ9XPilhJc+7Nhp+PB3xLmTQ/kC0oeFf5b43rlQx44D9t3euUHhNw/wNzz4cxLlC4xNUPgelN8vfdCl6YJ9t/QPyLFTfcDfQsL3YZ1u6V+QY6c4ObS5M2UZmgLSvxHHTvUCfwObO3Me5fdLH3FplpJE+gfe2Gl+4O/h4Fc/8DeorTllUn639G/Ct5P+jTd2HLHvlT4c/OYJ/oYEf0nVt93SP9Dgn4RvtzSLq0PamsmU39u4F9jSrL7gbzhbc06m/G7pg8EvJZP0scZO8wZ/h5k7Szbl90r/gBo7pzf4K8zcyaf8TulfSEuz+YO/g2zNlPA3EPhzvr7tbVwk+Kc/+CsI/CVh33Y27oEDv3mEv2PAz6j8TulfOPBPj/BXCPhTSuX3Sf8mfDvp3zBLs+WD/8DArz7hbwjwl5R929m4Bwr8UvI17gGyNJtX+DvA1kwLf7OHPyXt2z74Nwj80yv81R7+nLVv+xoXA37zC383h7/khb+Zb80la98iwE/bt32Ne0HALyVl414IS7N5hr8bb83U8Dfn8GtS+A/CzD89w1+dwy8laeMe9jO/+Ya/E75L+Jf9zK++4W+u4Z++4a+mW3NK3bc9jUv4vuHPqfu2q3HN4Vfv8DfH8E/v8FfLob8Qvlv4peRt3Mt45jf/8HfC99i4t/HMr4RvB//0D3+125pz9r7taVzCTwu/RYC/mw39JXvf9jQu4RvCv0xn/hkB/uoUfimpG/c2nfkx4O8u4TfCt4NfY8DfjIb+DAz/l7//nL+iNq4l/IFjZ931dtVqNPQX0L7V/ZMm/N+VcMNr3MsOftNmccaCj9i3u/pP3Aj/KwKuWI17283806D8KuGP69vd5HUzGfpw8Hcb2ZnAn8HGzmZUNbs7+NXKvSfO3DmsZn41e/sJXz6Au5nwXs+dKwr8zfCls4CPNHZWyz94b/Cb6e8PMnduo5nfTH/9lht+ta28E2PuhIBvXDmrPvwZZuxsxn/43uCb/+4nwtw5/MPfzRt/V4e/gIyd1V58b+Ff7uEDPMKmDh9k7GwAne8L/mlfdpK983bu3M7hbwivnzr8CWPsuH4K5/A3jOZ5O3cs4DeI4AtmQBv+jAC/7/8NWy76b5/jMIBfrROHEgIL+KfxyoB5kMPgA+6JEXy56L+FfxnARwm+XAyU4QOsjK0ffrN9Bw3gN4idKZqDl/Bvt/A3CfjV9Flu/c9YFaRuBaOfDf4qwl6oct8+jD78E8c6Ug7UhW//Get5kKLvBj6SdaQkqPoRd7Z+0Xcp+I/l4xzaH3AblHWEvOMFfgWqW7EwvHyeyyV8OevIeGfVhG/8mq+C7EXS8PKBbo/wN0n4za6D1OFj1a3tE93aH3DRrCPjnZclpAy/oVlH5pHywH+E7zTLg/IH3ApnHZFnegn/cAd/k4bfzAKhDP/Es47EQynCXxz+noNfRxfwAa0j4h297xdM4e/y8M2eyh38AewFvKMH3/IF30bAt3qs2xn8EdYReCE9wK+Q1hEYYasW/MkQ/joGvtVzqcI/IZUv4J0U8Aext3ow1W8XQK0j4B2tj7iG8EdZp3+G7fDwG+bQlIiFFvzFDv4w9t3Sf/dOXo7gr+Pg1/DwK6ryrXLhCf445XdLXwu+nVgHsrd5ttsP/HUk/BodPq7y+6WvA38ygz9S+UYP5wf+UPa9TkSH34CV3y39LTb8bSx8k6c71L7aqcjK75XiGhv+YPad0keHfyIr3yYbXuBvo+E3A/iX2lc7J7Tye6UPDh9b+SbhcAJ/HQ+/4sM3cuo2Hr7BA94+4I9XfuerSfiG0seGX8H7thP+u1LS+mqngvetyRO6gL9pwG/676YW/BNd+Z2NGxe+CnuDRzyUvtqBV36nGXfCJ3xx+JsO/Kb+jErwG37fGgTk0vlereH3bV/jRoW/eoC/AsOvHuBXwrfqW4PX89b5Xu100Ld9jRsU/kP4ZvBXPfja76cS/OICftWWo873ah76tq9xY8LffcDfYOE3F32r/4ISvkzjDv9mzQL+6gT+Ohr+6y81q4u+7XpOwjds3JDwdyfwX3XTpQH/9NG3XXNnNPwlPPyT8K3GThf8HRW+k75VLyfCF2rc0V9rGsDf3cDfBsM3+JUe5SN8woeAv2rDV95lCvCrl77tedTB8CfCTwV/14avXE8K8E83fUv4lvAfXfgHMPzVE/x9KPxZ/RcygH8SvtXYIXzDsaM9iwlfaO68gX8Nh98cjR1Y+EsG+A/hm40d5Wk2Hn51NHaUP5QQviH8Gxf+bgG/ajYU4buAr/4iP4SfDH4jfLOl2QH/jSWHw3c185W/DIGFvxF+/9+lOIN/aj4vLPyd8LvhN2fwK+FbLU1l+Afhy8BfA8E3Wpq634Afg/8iqxK+P/hGS1P3QyHhS33KGvi3Kdrwd8Lvh396g38SvtXSxIS/ZIGv+TdvoPBXws8Iv/3Qg38Phl+8wf/tfvlTYvjbg3Htx48f/+dV+OOPv53E/zrhGx4o/J3w+/8KtxE+4RO+h89Yukf4hI8182PAr4RP+K7hT7rwN8In/JTw9yTwj6HwT8InfMLnZyzCJ3zC/zr8t//kCD9jET7qXYRP+Bk/4BI+4RO+PPzGD7iE7xv+QvhZ4Gdh/8V/doTwmXwm/xtXCd8b/JXwCZ/wCV8X/kb4dv/AGuEz+Ro3Mvkn4dtp5+RXO96ST/iET/iErwz/IXzCdw6fX2oSvm/4E+EnSf6aCP6BlvyVySd8Jp/wCT8N/I3wJeA3wid8wid8wid8fp1P+D7gz4TP5Ie7i8mndph8WfiV8L1p5yF8u+QTPuETPuETPuETPuETPuGPgb8SPpPP5BM+4RM+4RO+OvyX/wL6Sfi/czeTz+Qz+Uw+k8/k9yef8Jl858nXhL8RPpPP5BM+k8/kEz6Tz+QTPpPP5BM+4RM+4RM+C5fwmXwmn/CZfCaf8Jl8Jp/wmXwmn/AJn/AJn/AJn/AJn/AJn/AJn/AJn/AJn/AJn/AJn/AJn/AJn/DzwOe/gc7kM/mEz+Qz+YSPCp//aUf+93aYfCaf/0VZJp/JJ3wmn8knfMInfMInfMInfAj4/H8FdZd8wmfyCZ/wCZ/wCZ/wY8PfCJ/wCZ/wCX/UHV+APxG+u+Q/hG+XfMJ3B38lfMInfMInfMIn/PHwC+ETvnf4J+ETPuETvgf4if4q6/OVI3wmn8knfB/wK79T9pZ8wmfyCZ/wleGvhE/4hE/4b+E3wv/p3V+Cv2jCL4Rvl3zCZ/IJn/C14e+ET/i+4T+E7w7+RviEP/wuwkdPvuq/mpLn+4WL8KPCPwnfG/xC+IRP+ISvDH8nfAH4lfB/dseX4E+EbwdfOfkb4dsln/AN4a+ELwC/ET7hEz4/ZRE+0H0+gP/UFOFLwH/5hX6WT1mE/7P78fOLCd/wU1ZVzAvhEz7O0D/jwD/TwH/xo+4vwl8IPw18w6FfCJ/wBeBXb0O/Eb4/+Gsg+GZDvyrCvwgfH/7s4C02XZqEbwh/CwTfbGsWwid8Cfivfxmjrdk0n5fwDeEfX4Q/eXiNDZcm4RO+4W42XJqvBgLhEz7M1iyaj/shfHz4HxcNZrc0V8InfCH4JluzEr5D+BskfN0X2WxpvoF/48IvhN/994i+4JdY8N//PgZzp6k+LOETPsrcqarwL8KXgf9gwj8dbc0TFP7s4xcifLfwi+pbqgC/+pk7jfDtGlcZ/kH4Io86GP7kJE42fbsRPuHLwVefO4XwzeaO9pN+xsN/CL8b/sfLy2wxdiLCV27cU7mdNOCfhN/5db4JfOW5UwjfrHGbsh+/A3/x0mOELwNfde5Uwrdr3FM5JJcG/FZ8NC4y/Dk6/EL4Zo2r/pgq8NUjpV5NQeGvPuC/+oGHCvzTBfwTGf7k59fSfj+jwldr3KYuRx341UPjVnX4H8L3Af/j6PdSduMGDL8VB41bCN+scfWf8XYAf8NXvgb8xdErTfgi8Ff8vn3XS1rwT/zGLeqPeHmAv8P3rQb82Qb+Bq/8FRp+hZf+Sfh20i/67+ahBL8Rfi/8yQj+jt63keFv4H37Mh1a8Pve6hW8b1/C/7iAX8CV//L5vgf/4ytZalqMDX/DVn5s+Cu28t893q0Gv2JLvziAv1jB36GVv4HDN/n1tKIRHP6KrPyX7+XlBX5BVr4S/NnZ76eUjOjwN2Dlv3wtDz34J7D0T8K3k34xCcZ34U92r/aOq/z48Ddc5b98tI8efKN4aRhRCf7HDn6BVf5bI3qCv6Mq/+WT3Yrwu/O1oSo/A/wVVfkvhfh9+Ivh77iDWicF/A3UOi9fyUsTfgX1zukG/mwIf9DYLEZvpCr8frfumMp/Cf/wBX+DVP7bTKjC73+/C6R19OBPHn/Nse/j20jowj8RvVPN4H+cwR8wNu0e6vvwP7Yh2wGtkwb+Bmidl89068I3TNlA62jCX0zhFzzrvFWhMnyBrSntnWoH//IHf4WzztuX8Q382fhX3dGskwn+hmadt+/ioQy/onnnJHwz74hYZ1OEP3n9ZUeF4e3zfDzCF5z6xfJN1IZv+9sOyoIm/I85/BWpbl+/iLc6/BPKO4XwzSq3mr6H7+Avbn/fIUl4+zCXU/gylStTt69fQ334xr/wgOArw5/t4Recun39Fh7q8KV+4w2lbjPCX2GC//olfAd/AhBtf+U26xh89OFXlOifhG9WuVLBf98+7+B/fP/SssF//Ry3Z/gFI/ivy8cCvtjI6Iv+6Rb+AgG/QAT/9VNcFvBPhOhXv/BnDPgF4fVbXcEXDN0GEIDXz3BYwBfUbQF4BHX4Ewr8zTz477/m+FjAF/Tty+hL/vFnhr9aB/996b+F3/cp6zQOXjP/0+/5jIUEf7V989zBr6K//ebsx/fDX1DmzvelK/zTX8O/QsBfDaXXMXbew59h5s53f/9aTN+7/s9YYPCL3VvnEL7wm/8d8ZRSMMZOB/wJaO58p/VOHPifKPC/qn35H7y5gy8u3i+qd8DP3Q3g933KeooN/QIE/44Ev6D+1AHwF6i586XqKxY/dMBnLET4v5fCQvijVsfv0W9jfuJmAn9Gmzs/r79Bf9od8I9w8P+dBs6i/ac9FP6EN3d+u1/0Yt/1Dw597OCf43iUP6qhJ/x//Qfw47/+9nN+GftjVhv4nZ+yaglx7/v2NoTfCP9jNvSDwN9NZn4v/CcG/Mcn/DM5/KML/kz4PWPHFH7N3bed8CfOnR74H0v4IRp3J3yPfds383s/ZUVo3NUt/Er4dkO/pu7byxZ+S923vfDn9I27W838fvj+G/chfI992znz+4d+Tdy35vBbYvi9S7N76LfEfWsO/0nct/3wl9yN29O3lzn8Svh2W7Om7dvumd8Pv6XtWwD4T9q+7Z75/UPfeeM6h1+z9m3/0uwf+jVr3yLAb1n79hKAv2RuXPfwz6R9KwF/Tiz9rv/fioPwzfpWBP6UuHF325kvAP8hfLut6bhxH+OZLwC/puxbwjfs20sE/pK2cfcA8J+U8A8R+HPaxn0iwK8J+1ZmaQoM/ZawbwnfUPkyS1Ngaz4JlY8D/8yn/EsI/pKzcaPAb/n69hCCP+eU/h4F/pmtb4WWpsTW9Cj9lfC9Kl9qaUpszZZN+Ujwn2zKv8TgLxkbNxD8mqxvDzH4c0Lpb4HgP7n6VmxpimxNd9J/IsGvqZQvtzRFtmZLpXww+E8q5V+C8Jd00n9iwa+JlC+4NGW2ZkukfDj4TyLlCy5Nma3pSvoPztiRmTs1j/Lx4Lc8yr9E4S+5pL/Hg39mUb7o2BGaOzWL8hHhtyzKF12aQlvzyaJ8SPhnEuXLLk2ZrelF+mtI+C2J8i9h+Esi6e9YY0do7jiR/hMTfk2hfOGxIzV3Wgrlg8J/UihfeuwIzR0X0n+iwq8ZlH+Jw1+ySH+DGztSc+dJoHxc+Gd85YuPHbG5U+MrHxf+E9868mNHau7Ae+cBHDti8Gt464yAL7M10cdm/9AcMHbE5s4TXfnQ8M/gyh8wduTmTg2ufGj4T3DrjFiaYnMH2jsP5tgRmzvI3lnDwwcemwJDc8jYkZs7T2jlD+lbQfg1snUGwRebOy2ydcaMHbm580S2Djx81LH5wI4dubmDKn0J6wwaO4Lwn7jWGQZ/Du6dB3fsCM4dTO+sSeC3sNYZNXYE5w6kdx7ksSPZuDWqdTzAb0GtM2zsSM4dQO880H0rCr/GtM5A+HJzB887MtYZN3Yk5w6cdx7wvhWFX0NaZyT8Jax3ZKwzcOyINi6Ydx70vpWFD+WdzQF8wbmD5R0h64wcO6KNC+WdB79vZeHXeNYZC3+RpB/OOkPHjmzj4nhnfRz0rTD8Fs06g+FLzh0c70j9PmPHjmzjonhHzDqXJ/gtVt0Oh78E9I7Yr3N8HDUuxtQXq9vBfSsNv4WyznD4snMHoXLF6nb42BFuXATvyFnncgb/CVS3CvCXYNGXs87wsSPduPaVK1e3w/tWHL555T6O+lZ67lh7Z3MFX7pxnzDWuRTgL5GiL1i3Cn0rD78FCb4KfOnGNa1cyd9Dgb1441p6R7BuVfpWHv4TwzoafSs/d+yiL1m3SvCXMNGXDL5K3w5oXLPKfbz17Qj4zX/d6vTtiMY1iv7jEL5849pEXzT4Sn07onEf93Wr1LdD4FfnO1MPvnzjWkRfNvhKY2dI4+pHXzj4t2f4j/Pga/XtiLmjHn3h4Kspf0jjakd/cwt/9h996af/+IbfPAf/1oM/pHFVv2OQfna9vh3TuJrR3zzDX5xHX/zRj49z6esNHvHgK/btMPjVa/BvTfhjGlcr+rtv+J/HcfRX+ee+VOEvjqMvH3zVvh0Hv7oMvmrfDmtcjegPCL6u8oc17vhPWiOCrwx/VOOO/6Q14pkvZfiL0+hvI575iAJ/cOcOeWRl9uMad2zn7k8A5Y9r3KHRX58Iyh/YuCM79wkCf5z0x3XuNuZ5j0jwR4lnHfS46uxHNu6ozt3HPOytD38aCb85ko6B8oc27hDxjJKOCfzl8SWefdSjHp9g0pcXzzbsUT/h4EuLZ5h0LPp2cOOKf9Qa95wWyh/cuMLa38c95mECfxkMv3kQvo3yh0tfUPvrEw7+aOnLaX/kM95R4T/47I36dnzjCtHfhz7hYQR/GQ+/YZetmfIVGleidAezv63gK0i/m/5g9mbKV5F+J/3R7M2UryL9PvrD2RvCnx9s+uPZm/WtGvy39BXY33bwJyX47xbnrvBgdn2r1Lgv6WuwN1S+VuO++qyr81SG7NWk/+1v2VadZ7ot4U+K8L+jnl3pkSyVryj974R/VXugwxT+oku/4djeXPm60v/a5N+fNPCnR/3+CoPetm9N4D9P+zfuX3flB7HtW+3G/Ql/dfLmfaveuP90v/zpf7j/sts8gDF7/cYFutsa/pQYvrXyzaSPcIc5/CUvfHP2iaV/28OfqHxKP6PyE0sfgH1a6d8I8Ccqn9LPqPy00odgn1T6Nwb8icqn9DMqP6n0QdinlP6NAn+i8in9jMpPKX0Y9gmlf+PAn6h8Sj+j8hNKH4h9OunfSPAnKp/Sz6j8dNKHYp9M+jcW/InKp/QzKj+Z9MHYp5L+jQZ/ovIp/YzWyST9Gw/+TOtQ+vmGZirpA7JPI/0bEf5E5dM7GZWfxjuQ7JOMTUzrJJE+pnWSSB+UfQrp36jwZyqf3smo/BTegWWfwDu41kkwNnGtk0D6wOzDS/9Ghj9T+fRORuVH9w60daJ7B9s6wccmtnWCSx+cfWjv3OjwJ1qH3slonchj88aHH1f6Fz78D61D72S0TlzveLBO2LF5fOgdWiehdy4f8Cdah2Mzo3VieufyAn+ideidbB9vo47Nyw/8idahdzJaJ553Lk/wJ1qH3slonWjeuXzBn2gdeifX9zoRvXN5gz/ROvRORutE+l758gc/jnc+Do/WoXcyWieOdz4feofWSeidwyf8idbhVwz56jaKdw6v8D+0Dr2T0ToRKtevdfx753bM3n3lXp7hT6xbVm7G4Hv3zuEb/od1S+9ktI7vyv24P1qHlZuwbj17J0Dw/VbuFQH+zLpl5Wa0jtfoHzHgTww+Kzdf3XqN/ifMMfis3Hx16zL6dyD27io3UvC9VW6o4HuL/hULvq/K/QQ7Bp/RTxl8T5V7h4PvqHKPD6PP4CeM/hER/sTgc21mDL6Xtfn5MPr8gJUw+p8Po8/gJ4z+58PoM/gJP2hFZo/+QSt08NGjH5s9dvSDBx87+tHZI0c/fPCRox+fPW70EwQfN/oZ2KNGP0XwUaP/SXIMPr/cTPA3tz6if+SBPzP4jH7G4MNFP1Xw0aKfiz3WJ60rGXyoT1rZ2CNF/0gHH6dz70/CY/AZ/euT8ha2bfLOPZLCR4j+/Ul7lE7mzr0Sw7cWz52ZvXXnHqnh24rn+iS/hdJJKZ4jPXw78VxkbyYeSsdQPARvJx4K3048lI7hdzxkbqd9SsdO+1yZdtonezvts2wNtU/Ydtpn2dppn8K30z7Z29Fn2dqVLtkb0idiu8lDwHb0idducHLg29Enezv6ZG9Hn+zt6JO9HX0itaNPoGZ7n98p2NEne7vvefgd8qvjzPFdu1SOnfipHDvxk5+Zehh7u/CTnJn5OXLM3PMrkVltfqIXvz9TOODuv4neKP4kP/z+QNEb36//8Ar85Q/kwePxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+P5uf8GDAxVNnjHBfMAAAAASUVORK5CYII=\"","import {useEffect} from 'react';\nimport { useWeb3React } from '@web3-react/core';\nimport { network } from './connectors';\n\nexport const useEthNetwork = () => {\n const { active, library, activate } = useWeb3React(\"network\");\n\n useEffect(() => {\n async function connectToWeb3Network() {\n if (!active) await activate(network);\n }\n\n console.log(\"useEthNetwork: \" + active);\n setTimeout(connectToWeb3Network, 1);\n }, [active, activate]);\n\n return [active, library];\n};\n\nexport async function fetchJson(request: string): Promise {\n if (request.startsWith(\"ipfs://ipfs\")) {\n request = \"https://ipfs.io/ipfs\" + request.substr(\"ipfs://ipfs\".length);\n } else if (request.startsWith(\"ipfs://\")) {\n request = \"https://ipfs.io/ipfs/\" + request.substr(\"ipfs://\".length);\n }\n\n if (request.startsWith(\"https://api.artblocks.io/token\")) {\n request = \"https://token.artblocks.io\" + request.substr(\"https://api.artblocks.io/token\".length);\n }\n\n const response = await fetch(request);\n const body = await response.json();\n return body;\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { Col, Row, Button, Modal } from \"react-bootstrap\";\nimport { useCallback, useEffect, useState } from 'react';\nimport ConnectWalletForm from \"./ConnectWalletForm\";\nimport { AutonomousSubArt, AutonomousSubArt__factory, CollectiveCanvas, CollectiveCanvas__factory } from \"./typechain\";\nimport { CANVAS_CONTRACT_ADDRESS, SUB_ART_CONTRACT_ADDRESS } from \"./Constsnts\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { BigNumber } from \"ethers\";\nimport { formatEther } from \"ethers/lib/utils\";\nimport { useEthNetwork } from \"./NetworkConnector\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { debounce } from \"ts-debounce\";\nimport {dispatch} from 'use-bus';\n\ninterface MintButtonProps {\n serializedLayer: string;\n parentId: string | undefined;\n isMintable: boolean;\n}\n\nexport default function MintButton(props: MintButtonProps) {\n\n const [showModal, setShowModal] = useState(false);\n const [estimatedGas, setEstimatedGas] = useState(BigNumber.from(0));\n const { active : signerActive, library : signerLibrary } = useWeb3React()\n const [active, library ] = useEthNetwork();\n const [isMinting, setIsMinting] = useState(false);\n const [mintingStatus, setMintingStatus] = useState(\"\");\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateEstimate = useCallback(debounce(async (serializedLayer: string, library: any) => {\n const gasPrice = BigNumber.from(100000000000);//await library.getSigner().getGasPrice();\n\n if (props.parentId == null) {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library);\n\n const price = await contract.currentPriceToMint();\n const estimatedGas = await contract.estimateGas.mint(toUtf8Bytes(serializedLayer), {value: price, from: \"0x73bceb1cd57c711feac4224d062b0f6ff338501e\"});\n\n setEstimatedGas(estimatedGas.mul(gasPrice));\n } else {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library);\n\n const price = await contract.currentPriceToMint(props.parentId);\n const estimatedGas = await contract.estimateGas.mint(BigNumber.from(props.parentId), toUtf8Bytes(serializedLayer), {value: price, from: \"0x73bceb1cd57c711feac4224d062b0f6ff338501e\"});\n\n setEstimatedGas(estimatedGas.mul(gasPrice));\n }\n }, 1000), []);\n\n useEffect(() => {\n if (active && props.isMintable) {\n console.log(\"Callign with layer: \" + props.serializedLayer);\n updateEstimate(props.serializedLayer, library);\n }\n }, [active, updateEstimate, library, props.serializedLayer, props.parentId, props.isMintable]);\n\n async function onMint() {\n if (isMinting) return;\n setIsMinting(true);\n setMintingStatus(\"\");\n\n console.log(\"Would mint layer: \" + props.serializedLayer);\n try {\n if (props.parentId == null) {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, signerLibrary.getSigner());\n const price = await contract.currentPriceToMint();\n const token = await contract.mint(toUtf8Bytes(props.serializedLayer), {value: price});\n await token.wait(1);\n } else {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, signerLibrary.getSigner());\n const price = await contract.currentPriceToMint(props.parentId);\n const token = await contract.mint(BigNumber.from(props.parentId), toUtf8Bytes(props.serializedLayer), {value: price});\n await token.wait(1);\n }\n\n dispatch('MintButton/onMinted'); \n } catch (error) {\n console.error(error);\n setMintingStatus(\"Minting failed!\");\n }\n\n setIsMinting(false);\n }\n\n return ( \n \n \n
\n
\n Estimated gas cost: {formatEther(estimatedGas)} \n \n
\n\n { mintingStatus !== \"\" &&

{mintingStatus}

}\n\n { signerActive ? props.isMintable ? : \n :\n \n }\n
\n\n setShowModal(false)} aria-labelledby=\"contained-modal-title-vcenter\" size=\"lg\" centered>\n \n Connect wallet\n \n \n \n \n \n \n \n \n \n
\n )\n\n}","import { BigNumber } from \"@ethersproject/bignumber\";\nimport { formatEther } from \"@ethersproject/units\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router-dom\";\n\ninterface PriceCardProps {\n price: BigNumber;\n}\n\nexport default function PriceCard(props: PriceCardProps) {\n\n const { forkId } = useParams();\n\n return (\n \n \n \n \n
Current price to mint {forkId != null && \" on fork\"}
\n {formatEther(props.price)} \n \n \n
\n
\n
\n );\n\n\n}","export enum Tools {\n CURSOR, RECTANGLE, CIRCLE, POLYGON\n}","import { ListGroup } from \"react-bootstrap\";\nimport { Tools } from \"./util/Tools\";\n\ninterface ShapeToolbarProps {\n selectedTool : Tools;\n updateSelectedTool : (selected : Tools) => void;\n}\n\n\nexport default function ShapeToolbar(props : ShapeToolbarProps) {\n\n return (\n
\n
    \n props.updateSelectedTool(Tools.CURSOR)} action variant={props.selectedTool === Tools.CURSOR ? \"secondary\" : \"light\"}>\n \n\n \n \n \n \n\n \n \n\n props.updateSelectedTool(Tools.RECTANGLE)} action variant={props.selectedTool === Tools.RECTANGLE ? \"secondary\" : \"light\"}>\n console.log(\"onClick\")}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{fill:\"#b5b5b5\", verticalAlign:\"middle\", width:\"30\", height:\"30\"}}>\n \n \n \n\n props.updateSelectedTool(Tools.CIRCLE)} action variant={props.selectedTool === Tools.CIRCLE ? \"secondary\" : \"light\"}>\n console.log(\"onClick\")}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{fill:\"#b5b5b5\", verticalAlign:\"middle\", width:\"30\", height:\"30\"}}>\n \n \n \n\n\n props.updateSelectedTool(Tools.POLYGON)} action variant={props.selectedTool === Tools.POLYGON ? \"secondary\" : \"light\"}>\n console.log(\"onClick\")}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{fill:\"#b5b5b5\", verticalAlign:\"middle\", width:\"30\", height:\"30\"}}>\n \n \n \n \n \n\n
\n\n
\n );\n}","import Element from \"./Element\";\n\nexport default class PolygonElement extends Element {\n\n constructor(readonly points: PolygonElementPoint[], \n readonly _editing: boolean, readonly closed: boolean, \n rotation: Number, fillColor: string, strokeColor: string, strokeWidth: Number) \n {\n super(\"polygon\", 0, 0, 0, 0, 0, rotation, fillColor, strokeColor, strokeWidth);\n }\n\n static newDefault(points: PolygonElementPoint[]) {\n return new PolygonElement(points, false, false, 0, \"#ffffff\", \"#000000\", 1);\n }\n\n withUpdatedCoordinates(x : Number, y: Number) : PolygonElement {\n const diffX = x.valueOf() - this.x.valueOf();\n const diffY = y.valueOf() - this.y.valueOf();\n\n const translatedPoints = this.points.map((point) => {\n return {...point, x: point.x.valueOf() + diffX, y: point.y.valueOf() + diffY, \n cx1: point.cx1 ? point.cx1.valueOf() + diffX : point.cx1,\n cy1: point.cy1 ? point.cy1.valueOf() + diffY : point.cy1,\n cx2: point.cx2 ? point.cx2.valueOf() + diffX : point.cx2,\n cy2: point.cy2 ? point.cy2.valueOf() + diffY : point.cy2};\n })\n\n return new PolygonElement(translatedPoints, this.editing, this.closed, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedDimensions(width : Number, height : Number) : PolygonElement {\n throw Error(\"Unable to scale path\");\n }\n\n withUpdatedRotation(rotation : Number) : PolygonElement {\n return new PolygonElement(this.points, this.editing, this.closed, rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedFillColor(fillColor : string): PolygonElement {\n return new PolygonElement(this.points, this.editing, this.closed, this.rotation, fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedStrokeColor(strokeColor : string) : PolygonElement {\n return new PolygonElement(this.points, this.editing, this.closed, this.rotation, this.fillColor, strokeColor, this.strokeWidth);\n }\n\n withUpdatedStrokeWidth(strokeWidth : Number) : PolygonElement {\n return new PolygonElement(this.points, this.editing, this.closed, this.rotation, this.fillColor, this.strokeColor, strokeWidth);\n }\n\n withUpdatedRadius(radius : Number) : PolygonElement {\n throw Error(\"Unable to update radius of path\");\n }\n\n withEditing(editing: boolean) : PolygonElement {\n return new PolygonElement(this.points, editing, this.closed, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withPointType(index : number, type : PolygonPointType) : PolygonElement {\n const points = this.points.map((point, i) => {\n if (index === i) return {...point, type: type};\n else return point;\n });\n\n return new PolygonElement(points, this.editing, this.closed, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withSelectedPoint(index : number) : PolygonElement {\n const points = this.points.map((point, i) => {\n if (index === i) return {...point, selected: true};\n else return {...point, selected: false};\n });\n\n return new PolygonElement(points, this.editing, this.closed, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withPoints(points : PolygonElementPoint[]) {\n return new PolygonElement(points, this.editing, this.closed, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n getPointType(index : number): PolygonPointType {\n return this.points[index].type;\n }\n\n get selectedPoint() : number {\n return this.points.map(point => point.selected).indexOf(true);\n }\n\n get x(): Number {\n return Math.min(...this.points.map((point) => point.x.valueOf()));\n }\n\n get y(): Number {\n return Math.min(...this.points.map((point) => point.y.valueOf()));\n }\n\n get width(): Number {\n const maxX = Math.max(...this.points.map((point) => point.x.valueOf()));\n return maxX - this.x.valueOf();\n }\n\n get height(): Number {\n const maxY = Math.max(...this.points.map((point) => point.y.valueOf()));\n return maxY - this.y.valueOf();\n }\n\n get supportsRadius() : boolean {\n return false;\n }\n\n get supportsScale() : boolean {\n return false;\n }\n\n get editing() : boolean {\n return this._editing;\n }\n\n get deletable() : boolean {\n return !this.editing || this.selectedPoint === -1 || this.points.length < 2;\n }\n\n}\n\nexport enum PolygonPointType {\n LINE, CURVE\n}\n\nexport interface PolygonElementPoint {\n x: Number;\n y: Number;\n\n cx1?: Number;\n cy1?: Number;\n\n cx2?: Number;\n cy2?: Number;\n\n type: PolygonPointType;\n\n selected: boolean;\n}","import { PolygonPointType } from \"./PolygonElement\";\n\nexport default class Element {\n\n constructor(readonly type: string, \n readonly _x : Number, readonly _y : Number, \n readonly _width : Number, readonly _height : Number,\n readonly radius : Number, readonly rotation : Number,\n readonly fillColor : string, readonly strokeColor : string,\n readonly strokeWidth: Number) \n {\n }\n\n get x() : Number {\n return this._x;\n }\n\n get y() : Number {\n return this._y;\n }\n\n get width() : Number {\n return this._width;\n }\n\n get height() : Number {\n return this._height;\n }\n\n get supportsRadius() : boolean {\n return true;\n }\n\n get supportsScale() : boolean {\n return true;\n }\n\n get editing() : boolean {\n return false;\n }\n\n get deletable() : boolean {\n return true;\n }\n\n getPointType(index : number) : PolygonPointType {\n throw Error(\"not supported\");\n }\n\n get selectedPoint() : number {\n return -1;\n }\n\n withUpdatedDimensions(width : Number, height : Number) : Element {\n return new Element(this.type, this.x, this.y, width, height, this.radius, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedCoordinates(x : Number, y : Number) : Element {\n return new Element(this.type, x, y, this.width, this.height, this.radius, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedRotation(rotation : Number) : Element {\n return new Element(this.type, this.x, this.y, this.width, this.height, this.radius, rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedFillColor(fillColor : string) : Element {\n return new Element(this.type, this.x, this.y, this.width, this.height, this.radius, this.rotation, fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withUpdatedStrokeColor(strokeColor : string) : Element {\n return new Element(this.type, this.x, this.y, this.width, this.height, this.radius, this.rotation, this.fillColor, strokeColor, this.strokeWidth);\n }\n \n withUpdatedStrokeWidth(strokeWidth : Number) : Element {\n return new Element(this.type, this.x, this.y, this.width, this.height, this.radius, this.rotation, this.fillColor, this.strokeColor, strokeWidth);\n }\n\n withUpdatedRadius(radius : Number) : Element {\n return new Element(this.type, this.x, this.y, this.width, this.height, radius, this.rotation, this.fillColor, this.strokeColor, this.strokeWidth);\n }\n\n withEditing(editing : boolean) : Element {\n return this;\n }\n\n withPointType(index : number, type : PolygonPointType) : Element {\n throw Error(\"assertion\");\n }\n}","import CSS from 'csstype';\nimport React, {useState} from 'react';\nimport { Row, Col, InputGroup, FormControl, Card, ListGroup, Button } from 'react-bootstrap';\nimport Element from './elements/Element';\nimport { SketchPicker } from 'react-color'\nimport { PolygonPointType } from './elements/PolygonElement';\n\ninterface ShapeInspectorProps {\n element : Element;\n onElementChanged: (element : Element) => void;\n onSendBackward: () => void;\n onBringForward: () => void;\n}\n\nexport default function ShapeInspector(props : ShapeInspectorProps) {\n\n const [isFillPickerVisible, setFillPickerVisible] = useState(false);\n const [isStrokePickerVisible, setStrokePickerVisible] = useState(false);\n\n const swatchStyle : CSS.Properties = {\n padding: \"5px\",\n background: \"#fff\",\n borderRadius: '1px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.1)',\n display: 'inline-block',\n cursor: 'pointer'\n }\n\n const colorStyle : CSS.Properties = {\n width: '36px',\n height: '14px',\n borderRadius: '2px',\n }\n\n const popoverStyle : CSS.Properties = {\n position: 'absolute',\n zIndex: '2',\n }\n\n const coverStyle : CSS.Properties = {\n position: 'fixed',\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px',\n }\n \n return (\n
\n \n \n \n \n

Size

\n \n \n \n w\n props.onElementChanged(props.element.withUpdatedDimensions(Number(value.target.value), props.element.height))} />\n \n \n \n \n h\n props.onElementChanged(props.element.withUpdatedDimensions(props.element.width, Number(value.target.value)))} aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\" />\n \n \n
\n\n \n \n

Position

\n \n \n \n x\n props.onElementChanged(props.element.withUpdatedCoordinates(Number(value.target.value), props.element.y))} aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\" />\n \n \n \n \n y\n props.onElementChanged(props.element.withUpdatedCoordinates(props.element.x, Number(value.target.value)))} aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\" />\n \n \n
\n\n \n \n

Rotation

\n \n \n \n angle\n props.onElementChanged(props.element.withUpdatedRotation(Number(value.target.value)))} aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\" />\n \n \n
\n
\n
\n\n { props.element.type === \"polygon\" && props.element.selectedPoint !== -1 && \n \n \n \n \n

Type

\n \n \n \n props.onElementChanged(props.element.withPointType(props.element.selectedPoint, PolygonPointType.LINE))} action>Line\n props.onElementChanged(props.element.withPointType(props.element.selectedPoint, PolygonPointType.CURVE))} action>Curve\n \n \n
\n\n
\n
\n }\n\n \n \n \n \n

Fill

\n \n \n
setFillPickerVisible(!isFillPickerVisible)}>\n
\n
\n { isFillPickerVisible ?
\n
setFillPickerVisible(false) }/>\n {props.onElementChanged(props.element.withUpdatedFillColor(color.hex))}} />\n
: null \n }\n \n \n\n \n \n

Stroke

\n \n \n
setStrokePickerVisible(!isStrokePickerVisible)}>\n
\n
\n { isStrokePickerVisible ?
\n
setStrokePickerVisible(false) }/>\n {props.onElementChanged(props.element.withUpdatedStrokeColor(color.hex))}} />\n
: null \n }\n \n \n\n \n \n \n \n \n width\n props.onElementChanged(props.element.withUpdatedStrokeWidth(Number(value.target.value)))} aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\" />\n \n \n \n \n radius\n props.onElementChanged(props.element.withUpdatedRadius(Number(value.target.value)))} aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\" />\n \n \n\n \n\n\n \n \n\n \n \n \n \n

Arrange

\n \n \n
\n \n \n
\n \n
\n\n
\n
\n\n\n\n\n
\n );\n}","export function getViewPortClickPosition(canvas : SVGSVGElement, event : React.MouseEvent | MouseEvent) : [number, number] {\n let point = canvas.createSVGPoint();\n point.x = event.clientX;\n point.y = event.clientY;\n\n let transformation = point.matrixTransform(canvas.getScreenCTM()!.inverse());\n\n return [transformation.x, transformation.y];\n}","import CSS from 'csstype';\nimport React, {useState, useEffect, RefObject} from 'react';\nimport Element from '../elements/Element';\nimport { getViewPortClickPosition } from '../util/ViewPort';\n\ninterface HoverBoxProps {\n element : Element\n canvas : RefObject\n scrollX : number\n scrollY : number\n onMouseOut : () => void;\n onUpdate : (element : Element) => void;\n onSelect : () => void;\n onEdit : () => void;\n}\n\ninterface AnchorProps {\n width: Number\n height: Number\n onMouseDown: (event : React.MouseEvent) => void;\n onMouseUp: (event : React.MouseEvent) => void;\n}\n\nconst hoverBoxStyle : CSS.Properties = {\n position: 'absolute',\n border: '2px solid #dedede',\n zIndex: 9999999\n}\n\nconst scaleAnchorStyle : CSS.Properties = {\n position: 'absolute',\n borderRight: '2px solid #dedede',\n borderBottom: '2px solid #dedede',\n zIndex: '-1'\n}\n\nconst rotateAnchorStyle : CSS.Properties = {\n position: 'absolute',\n borderRight: '2px solid #dedede',\n borderTop: '2px solid #dedede',\n zIndex: -1,\n borderTopRightRadius: '4px'\n}\n\nfunction ScaleAnchor(props: AnchorProps) {\n\n const [isHover, setHover] = useState(false);\n\n function anchorStyle() {\n return {...scaleAnchorStyle,\n top: props.height.valueOf() - 4,\n left: props.width.valueOf() - 4,\n width: 10,\n height: 10,\n borderColor: isHover ? 'gray' : '#dedede'\n }\n }\n\n return (
setHover(true)} onPointerOut={() => setHover(false)} onMouseDown={props.onMouseDown} onMouseUp={props.onMouseUp}/>);\n}\n\nfunction RotateAnchor(props: AnchorProps) {\n\n const [isHover, setHover] = useState(false);\n\n function anchorStyle() {\n return {...rotateAnchorStyle,\n top: -8,\n left: props.width.valueOf() - 4,\n width: 10,\n height: 10,\n borderColor: isHover ? 'gray' : '#dedede'}\n }\n\n return (
setHover(true)} onPointerOut={() => setHover(false)} onMouseDown={props.onMouseDown} onMouseUp={props.onMouseUp} />);\n}\n\nexport default function HoverBox(props : HoverBoxProps) {\n\n const [isDragging, setDragging] = useState(false);\n const [isResizing, setResizing] = useState(false);\n const [isRotating, setRotating] = useState(false);\n\n const [dragOffset, setDragOffset] = useState([0, 0]);\n const [resizeOffset, setResizeOffset] = useState([0, 0]);\n const [rotateOffset, setRotateOffset] = useState([0, 0]);\n\n useEffect(() => {\n if (isDragging || isResizing || isRotating) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDragging, isResizing, isRotating]);\n\n function getViewPortScale(dimension: number) {\n let rootPoint = props.canvas.current!.createSVGPoint();\n let point = props.canvas.current!.createSVGPoint();\n\n point.x = dimension;\n point.y = 0;\n\n rootPoint.x = 0;\n rootPoint.y = 0;\n\n let screenCoordinate = point.matrixTransform(props.canvas.current!.getScreenCTM()!).x;\n let rootCoordinate = rootPoint.matrixTransform(props.canvas.current!.getScreenCTM()!).x;\n\n return screenCoordinate - rootCoordinate;\n }\n\n function getElementAbsoluteXPosition() {\n let point = props.canvas.current!.createSVGPoint();\n point.x = props.element.x.valueOf();\n point.y = props.element.y.valueOf();\n\n return point.matrixTransform(props.canvas.current!.getScreenCTM()!).x + props.scrollX;\n }\n\n function getElementAbsoluteYPosition() {\n let point = props.canvas.current!.createSVGPoint();\n point.x = props.element.x.valueOf();\n point.y = props.element.y.valueOf();\n\n return point.matrixTransform(props.canvas.current!.getScreenCTM()!).y + props.scrollY;\n //return props.canvas.current!.getBoundingClientRect().y;\n }\n\n function handleMouseMove(event : MouseEvent) {\n if (isDragging) {\n const [clientX, clientY] = getViewPortClickPosition(props.canvas.current!, event);\n const mouseX = clientX - dragOffset[0];\n const mouseY = clientY - dragOffset[1];\n\n props.onUpdate(props.element.withUpdatedCoordinates(mouseX, mouseY));\n } else if (isResizing) {\n const [clientX, clientY] = getViewPortClickPosition(props.canvas.current!, event);\n\n const targetX = clientX - resizeOffset[0];\n const targetY = clientY - resizeOffset[1];\n\n const width = targetX - props.element.x.valueOf();\n const height = targetY - props.element.y.valueOf();\n\n props.onUpdate(props.element.withUpdatedDimensions(width, height));\n } else if (isRotating) {\n const [clientX, clientY] = getViewPortClickPosition(props.canvas.current!, event);\n\n const angle = Math.atan2(rotateOffset[0] + (props.element.width.valueOf()) / 2 - clientX,\n rotateOffset[1] + (props.element.height.valueOf()) / 2 - clientY);\n\n const asDegree = angle * 180 / Math.PI;\n const rotation = (asDegree + 45) * -1;\n\n props.onUpdate(props.element.withUpdatedRotation(rotation));\n }\n }\n\n function handleMouseUp(event : MouseEvent) {\n setDragging(false);\n setResizing(false);\n setRotating(false);\n }\n\n function handleStartDrag(event: React.MouseEvent) {\n props.onSelect();\n\n setDragging(true);\n setResizing(false);\n setRotating(false);\n\n const [clientX, clientY] = getViewPortClickPosition(props.canvas.current!, event);\n\n const offsetX = clientX - props.element.x.valueOf();\n const offsetY = clientY - props.element.y.valueOf();\n\n setDragOffset([offsetX, offsetY]);\n }\n\n function handleStartResize(event: React.MouseEvent) {\n event.stopPropagation();\n\n setResizing(true);\n setDragging(false);\n setRotating(false);\n\n const [clientX, clientY] = getViewPortClickPosition(props.canvas.current!, event);\n\n const offsetX = clientX - (props.element.x.valueOf() + props.element.width.valueOf());\n const offsetY = clientY - (props.element.y.valueOf() + props.element.height.valueOf());\n\n setResizeOffset([offsetX, offsetY]);\n }\n\n function handleStartRotate(event: React.MouseEvent) {\n event.stopPropagation();\n\n setRotating(true);\n setResizing(false);\n setDragging(false);\n\n// setRotateOffset([getElementAbsoluteXPosition(),\n// getElementAbsoluteYPosition()]);\n setRotateOffset([props.element.x.valueOf(), props.element.y.valueOf()])\n }\n\n return (
{if (!isDragging && !isResizing && !isRotating) props.onMouseOut();}}\n onMouseDown={handleStartDrag}\n onDoubleClick={() => props.onEdit()}\n >\n\n { props.element.supportsScale && \n setResizing(false)}\n />\n }\n\n setRotating(false)}\n\n />\n\n
\n )\n\n\n}","import Element from './Element';\n\ninterface RectangleProps {\n element: Element;\n onMouseOver: () => void;\n onSelected: () => void;\n}\n\nexport default function Rectangle(props : RectangleProps) {\n\n function width() {\n return props.element.width ?? 100;\n }\n\n function height() { \n return props.element.height ?? 100;\n }\n\n function x() {\n return props.element.x ?? 0;\n }\n\n function y() {\n return props.element.y ?? 0;\n }\n\n function rotation() {\n return props.element.rotation ?? 0;\n }\n\n const centerX = (width().valueOf() / 2) + x().valueOf();\n const centerY = (height().valueOf() / 2) + y().valueOf();\n\n return (\n {props.onMouseOver()}}\n onMouseDown={() => {props.onSelected()}}\n />\n );\n\n}\n","import Element from './Element';\n\ninterface CircleProps {\n element: Element;\n onMouseOver: () => void;\n onSelected: () => void;\n}\n\nexport default function Circle(props : CircleProps) {\n\n function rx() {\n return props.element.width.valueOf() / 2;\n }\n\n function ry() { \n return props.element.height.valueOf() / 2;\n }\n\n function cx() {\n return props.element.x.valueOf() + props.element.width.valueOf() / 2;\n }\n\n function cy() {\n return props.element.y.valueOf() + props.element.height.valueOf() / 2;\n }\n\n function rotation() {\n return props.element.rotation ?? 0;\n }\n\n return (\n {props.onMouseOver()}}\n onMouseDown={() => {props.onSelected()}}\n />\n );\n\n}\n","import React, { useState, useEffect } from 'react';\nimport { getViewPortClickPosition } from '../util/ViewPort';\n//import useKeyPress from '../util/useKeyPress';\nimport PolygonElement, { PolygonElementPoint, PolygonPointType } from './PolygonElement';\n\ninterface PolygonProps {\n element: PolygonElement;\n canvas: SVGSVGElement;\n onMouseOver: () => void;\n onSelected: () => void;\n onClosed: () => void;\n onUpdate: (element : PolygonElement) => void;\n}\n\nexport default function Polygon(props : PolygonProps) {\n\n const [hoverNode, setHoverNode] = useState(null);\n const [draggingPoint, setDraggingPoint] = useState<[number, number] | null>(null);\n\n useEffect(() => {\n if (draggingPoint != null) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [draggingPoint]);\n\n useEffect(() => {\n document.addEventListener('keyup', handleKeyPress)\n \n return () => {\n document.removeEventListener('keyup', handleKeyPress)\n } \n });\n\n const instructions = [\n `M ${props.element.points[0].x} ${props.element.points[0].y}`,\n props.element.points.slice(1).map((point) => {\n if (point.type === PolygonPointType.LINE) return `L ${point.x} ${point.y}`;\n else if (point.type === PolygonPointType.CURVE) return `C ${cx1(point)} ${cy1(point)} ${cx2(point)} ${cy2(point)} ${point.x} ${point.y}`;\n else throw Error(\"assertion\");\n }),\n props.element.closed ? 'Z' : \"\"\n ];\n\n function onPointMouseDown(event: React.MouseEvent, index: number, subIndex: number) {\n event.stopPropagation();\n\n if (!props.element.closed) {\n props.onClosed();\n return;\n }\n\n props.onUpdate(props.element.withSelectedPoint(index));\n setDraggingPoint([index, subIndex]);\n }\n\n function handleMouseMove(event: MouseEvent) {\n const [x, y] = getViewPortClickPosition(props.canvas, event);\n\n const points : PolygonElementPoint[] = props.element.points.map((point, index) => {\n if (draggingPoint != null && index === draggingPoint[0]) {\n if (draggingPoint[1] === 0) return {...point, x: x, y: y};\n else if (draggingPoint[1] === 1) return {...point, cx1: x, cy1: y};\n else if (draggingPoint[1] === 2) return {...point, cx2: x, cy2: y};\n else throw Error(\"Unknown point\");\n } else {\n return point;\n }\n });\n\n props.onUpdate(props.element.withPoints(points));\n }\n\n function handleMouseUp(event: MouseEvent) {\n setDraggingPoint(null);\n }\n\n function handleKeyPress(event: KeyboardEvent) {\n if (event.key === \"Delete\" || event.key === \"Backspace\") {\n if (props.element.editing && props.element.selectedPoint !== -1) {\n props.onUpdate(props.element.withPoints(props.element.points.filter((point) => !point.selected)));\n }\n }\n }\n\n function cx1(point : PolygonElementPoint) {\n return point.cx1 ?? point.x.valueOf() - 10;\n }\n\n function cy1(point : PolygonElementPoint) {\n return point.cy1 ?? point.y.valueOf();\n }\n\n function cx2(point : PolygonElementPoint) {\n return point.cx2 ?? point.x.valueOf() + 10;\n }\n\n function cy2(point : PolygonElementPoint) {\n return point.cy2 ?? point.y.valueOf();\n }\n\n function renderEditingItems() {\n const width = 10;\n let points : PolygonElementPoint[];\n\n if (!props.element.editing && props.element.closed) points = [];\n else if (props.element.editing && props.element.closed) points = props.element.points;\n else if (!props.element.editing && !props.element.closed) points = props.element.points.slice(0, 1);\n else points = props.element.points.slice(0, -1);\n\n return [...points.map((point, index) => {\n return setHoverNode(index)}\n onMouseOut={() => setHoverNode(null)}\n onMouseDown={(event) => onPointMouseDown(event, index, 0)}\n /> \n }),\n points.map((point, index, source) => {\n if (point.type !== PolygonPointType.CURVE) {\n return <>\n }\n\n return (\n \n \n \n onPointMouseDown(event, index, 1)}\n />\n onPointMouseDown(event, index, 2)}\n /> \n \n )\n })];\n }\n\n const centerX = (props.element.width.valueOf() / 2) + props.element.x.valueOf();\n const centerY = (props.element.height.valueOf() / 2) + props.element.y.valueOf();\n\n return (\n \n {props.onMouseOver()}}\n onMouseDown={() => { if (props.element.closed) props.onSelected()}}\n />\n\n {\n renderEditingItems()\n }\n \n );\n\n}\n","import React, {useRef, useState, useEffect} from 'react';\nimport HoverBox from './decorators/HoverBox';\nimport Element from './elements/Element';\nimport Rectangle from './elements/Rectangle';\nimport Circle from './elements/Circle';\nimport { Tools } from './util/Tools';\nimport PolygonElement, { PolygonPointType } from './elements/PolygonElement';\nimport Polygon from './elements/Polygon';\nimport { getViewPortClickPosition } from './util/ViewPort';\nimport { optimize } from 'svgo';\n\ninterface SvgCanvasProps {\n elements : Element[];\n currentTool : Tools;\n backgroundUri : string | null;\n onElementChange : (index : number, element : Element) => void;\n onElementSelected : (index : number) => void;\n onElementAdded : (element : Element) => void;\n onSerialized : (serialized : string) => void;\n}\n\nexport default function SvgCanvas(props : SvgCanvasProps) {\n\n const canvasElement = useRef(null);\n const layerElement = useRef(null);\n const [hoverElement, setHoverElement] = useState(null);\n const [creatingElement, setCreatingElement] = useState(null);\n\n const [scrollX, setScrollX] = useState(0);\n const [scrollY, setScrollY] = useState(0);\n\n useEffect(() => {\n document.addEventListener('keyup', handleKeyPress)\n \n return () => {\n document.removeEventListener('keyup', handleKeyPress)\n } \n });\n\n useEffect(() => {\n if (canvasElement.current != null) {\n const serialized = new XMLSerializer().serializeToString(canvasElement.current);\n const optimized = optimize(serialized, {plugins: [{name: 'preset-default', params: {overrides: {convertPathData: false}}}]}).data;\n\n console.log(\"Original: \" + serialized);\n console.log(\"Optimized: \" + optimized);\n\n const layerMatch = optimized.match(\"^(.+)<\\\\/svg>$\");\n\n if (layerMatch != null && layerMatch.length === 2) {\n console.log(\"Layer group: \" + layerMatch[1]);\n props.onSerialized(layerMatch[1]);\n } else {\n props.onSerialized(\"\");\n }\n }\n }, [canvasElement, props.elements, props]);\n\n useEffect(() => {\n window.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n }\n });\n\n function getHoverElement() {\n const isEditing = props.elements.map((element) => element.editing).indexOf(true) !== -1;\n\n if (hoverElement != null && props.elements[hoverElement] !== undefined && props.currentTool === Tools.CURSOR && !isEditing) {\n return ( props.onElementSelected(hoverElement)}\n onMouseOut={() => setHoverElement(null)} \n onUpdate={(updated : Element) => {props.onElementChange(hoverElement, updated)}}\n onEdit={() => {props.onElementChange(hoverElement, props.elements[hoverElement].withEditing(true))}}\n />);\n } else {\n return
\n }\n }\n\n function handleCanvasMouseDown(event : React.MouseEvent) {\n const [x, y] = getViewPortClickPosition(canvasElement.current!, event);\n\n if (props.currentTool === Tools.RECTANGLE) {\n setCreatingElement(new Element(\"rect\", x, y, 2, 2, 0, 0, \"#000000\", \"#ffffff\", 0));\n } else if (props.currentTool === Tools.CIRCLE) {\n setCreatingElement(new Element(\"circle\", x, y, 2, 2, 0, 0, \"#000000\", \"#ffffff\", 0));\n } else if (props.currentTool === Tools.POLYGON && creatingElement == null) {\n setCreatingElement(PolygonElement.newDefault([{x: x, y: y, type: PolygonPointType.LINE, selected: false},\n {x: x, y: y, type: PolygonPointType.LINE, selected: false}]));\n } else if (props.currentTool === Tools.POLYGON && creatingElement != null) {\n setCreatingElement(PolygonElement.newDefault([...(creatingElement as PolygonElement).points, \n {x: x, y: y, type: PolygonPointType.LINE, selected: false}]));\n } else {\n const editingElement = props.elements.map((element) => element.editing).indexOf(true);\n\n if (editingElement !== -1) {\n props.onElementChange(editingElement, props.elements[editingElement].withEditing(false));\n }\n }\n }\n\n function handleCanvasMouseMove(event : React.MouseEvent) {\n const [x, y] = getViewPortClickPosition(canvasElement.current!, event);\n\n if ((props.currentTool === Tools.RECTANGLE || props.currentTool === Tools.CIRCLE) && creatingElement != null) {\n const width = x - creatingElement.x.valueOf();\n const height = y - creatingElement.y.valueOf();\n\n setCreatingElement(creatingElement.withUpdatedDimensions(width, height));\n } else if (props.currentTool === Tools.POLYGON && creatingElement != null) { \n setCreatingElement(PolygonElement.newDefault([...(creatingElement as PolygonElement).points.slice(0, -1), \n {x: x, y: y, type: PolygonPointType.LINE, selected: false}]));\n }\n }\n\n function handleCanvasMouseUp(event : React.MouseEvent) {\n if ((props.currentTool === Tools.RECTANGLE || props.currentTool === Tools.CIRCLE) && creatingElement != null) {\n props.onElementAdded(creatingElement);\n setCreatingElement(null);\n }\n }\n\n function handlePolygonClosed() {\n if (props.currentTool === Tools.POLYGON && creatingElement != null) {\n props.onElementAdded(new PolygonElement((creatingElement as PolygonElement).points.slice(0, -1), false, true, 0, \"#ffffff\", \"#000000\", 1));\n setCreatingElement(null);\n }\n }\n\n function handleKeyPress(event: KeyboardEvent) {\n if (event.key === \"Escape\") {\n const editingElement = props.elements.map((element) => element.editing).indexOf(true);\n\n if (editingElement !== -1) {\n props.onElementChange(editingElement, props.elements[editingElement].withEditing(false));\n }\n }\n }\n\n function handleScroll(event: Event) {\n setScrollX((event.currentTarget as Window).scrollX);\n setScrollY((event.currentTarget as Window).scrollY);\n }\n\n return (\n
\n \n \n {[...props.elements, creatingElement]\n .filter((element) => element != null)\n .map((element, index) => {\n\n switch (element?.type) {\n case \"rect\":\n return ( {setHoverElement(index)}}\n onSelected={() => props.onElementSelected(index)} />);\n\n case \"circle\":\n return ( {setHoverElement(index)}}\n onSelected={() => props.onElementSelected(index)} />);\n case \"polygon\":\n return ( {setHoverElement(index)}}\n onSelected={() => props.onElementSelected(index)}\n onClosed={handlePolygonClosed}\n onUpdate={(element) => props.onElementChange(index, element)} />);\n default:\n throw Error(\"unknown shape\");\n }\n })}\n \n \n\n {getHoverElement()}\n\n\n
\n );\n\n}","import React, {useEffect, useState} from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport Element from './elements/Element';\nimport ShapeToolbar from './ShapeToolbar';\nimport ShapeInspector from './ShapeInspector';\nimport SvgCanvas from './SvgCanvas';\nimport { Tools } from './util/Tools';\nimport useBus from 'use-bus';\n\n\ninterface SvgDesignerProps {\n backgroundUri : string | null;\n onSerialized : (serialized : string) => void;\n}\n\nexport default function SvgDesigner(props : SvgDesignerProps) {\n\n const [elements, setElements] = useState([]);\n const [activeElement, setActiveElement] = useState(null);\n const [selectedTool, setSelectedTool] = useState(Tools.CURSOR);\n\n useEffect(() => {\n document.addEventListener('keyup', handleKeyPress)\n \n return () => {\n document.removeEventListener('keyup', handleKeyPress)\n } \n });\n\n useBus('MintButton/onMinted', () => {\n setElements([]);\n }, [elements]); \n\n function onElementChanged(changedElementIndex : number, updated: Element) {\n setElements(elements.map((element, index) => {\n if (changedElementIndex === index) {\n return updated;\n } else {\n return element;\n }\n }));\n }\n\n function onElementSelected(index : number) {\n console.log(\"onElementSelected: \" +index);\n setActiveElement(index);\n }\n\n function onElementAdded(element : Element) {\n const newElementIndex = elements.length;\n\n setElements([...elements, element]);\n setSelectedTool(Tools.CURSOR);\n setActiveElement(newElementIndex);\n }\n\n function onActiveElementChanged(e: Element) {\n setElements(elements.map((element, index) => {\n if (activeElement != null && activeElement === index) {\n return e;\n } else {\n return element;\n }\n }));\n }\n\n function onBringActiveElementForward() {\n if (activeElement != null && activeElement < elements.length - 1) {\n let reorderedElements = elements.map((element) => element);\n let existingElement = reorderedElements[activeElement+1];\n\n reorderedElements[activeElement+1] = reorderedElements[activeElement];\n reorderedElements[activeElement] = existingElement;\n\n setElements(reorderedElements);\n setActiveElement(activeElement+1);\n }\n }\n\n function onSendActiveElementBackwards() {\n if (activeElement != null && activeElement > 0) {\n let reorderedElements = elements.map((element) => element);\n let existingElement = reorderedElements[activeElement-1];\n\n\n reorderedElements[activeElement-1] = reorderedElements[activeElement];\n reorderedElements[activeElement] = existingElement;\n\n setElements(reorderedElements);\n setActiveElement(activeElement-1);\n }\n }\n\n function handleKeyPress(event : KeyboardEvent) { \n if (event.key === \"Backspace\" || event.key === \"Delete\") {\n if (activeElement != null && elements[activeElement].deletable) {\n setElements(elements.filter((element, index) => index !== activeElement)); \n setActiveElement(null);\n } \n } else if (event.key === \"Escape\") {\n setActiveElement(null);\n }\n }\n\n return (\n \n \n \n \n \n \n \n\n \n { activeElement != null && elements[activeElement] !== undefined && }\n \n \n );\n\n}","import { Card, Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router-dom\";\n\ninterface RevisionsCardProps {\n count: number;\n}\n\nexport default function RevisionsCard(props: RevisionsCardProps) {\n\n const {forkId} = useParams();\n\n return (\n \n \n \n \n
Contributions {forkId != null && \" on this fork\"}
\n {props.count} \n \n
\n
\n
\n );\n\n\n}","import { BigNumber } from \"@ethersproject/bignumber\";\nimport { formatEther } from \"@ethersproject/units\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router-dom\";\n\ninterface FundedCardProps {\n count: BigNumber;\n}\n\nexport default function FundedCard(props: FundedCardProps) {\n\n const {forkId} = useParams();\n\n return (\n \n \n \n \n
Total paid to artists {forkId != null && \" on this fork\"}
\n {formatEther(props.count)} \n \n \n
\n
\n
\n );\n\n\n}","import { Card, Col, Row } from \"react-bootstrap\";\n\ninterface ForkedRevisionsCardProps {\n count: number;\n}\n\nexport default function ForkedRevisionsCard(props: ForkedRevisionsCardProps) {\n\n return (\n \n \n \n \n
Number of forked contributions
\n {props.count} \n \n
\n
\n
\n );\n\n\n}","export default __webpack_public_path__ + \"static/media/code-fork-solid.3780729d.svg\";","export default __webpack_public_path__ + \"static/media/play.af3a6b04.svg\";","export default __webpack_public_path__ + \"static/media/pause.8bc214b2.svg\";","//import { Slider } from \"@mui/material\";\nimport faCodeFork from '../assets/icons/code-fork-solid.svg';\nimport { useEffect, useState } from \"react\";\nimport { Button, Card, Image, OverlayTrigger, Tooltip } from \"react-bootstrap\";\nimport ContentLoader from \"react-content-loader\";\nimport { ACTIVATION_GAP_SIZE } from '../Constsnts';\nimport { Link } from 'react-router-dom';\nimport playButton from '../assets/icons/play.svg';\nimport pauseButton from '../assets/icons/pause.svg';\nimport useInterval from '../util/useInterval';\n\ninterface HistoricalCanvasCardProps {\n svg: string | null;\n selectedLayer: number | null;\n isLoading: boolean;\n isFork: boolean;\n}\n\nexport default function HistoricalCanvasCard(props: HistoricalCanvasCardProps) {\n\n const [isImageLoaded, setImageLoaded] = useState(\"\");\n const [baseSvgObject, setBaseSvgObject] = useState(null);\n const [displaySvgObject, setDisplaySvgObject] = useState(null);\n const [sliderMax, setSliderMax] = useState(1);\n const [trimmedSvgUri, setTrimmedSvgUri] = useState(null);\n const [visibleLayerCount, setVisibleLayerCount] = useState(null);\n\n const [isPlaying, setIsPlaying] = useState(false);\n\n useEffect(() => {\n console.log(\"Parsing SVG...\");\n if (props.svg == null) return;\n\n const match = props.svg.match(\"data:image\\\\/svg\\\\+xml;base64,(.+)\");\n if (match == null) return;\n\n const encodedSection = match[1];\n const decodedSvg = atob(encodedSection);\n const svgObject = new DOMParser().parseFromString(decodedSvg, \"image/svg+xml\").getElementsByTagName('svg')[0];\n\n setBaseSvgObject(svgObject.cloneNode(false) as SVGSVGElement);\n setDisplaySvgObject(svgObject);\n setSliderMax(svgObject.children.length);\n }, [props.svg, props.isFork]);\n\n useEffect(() => {\n if (props.selectedLayer != null) {\n setVisibleLayerCount(props.selectedLayer + (props.isFork ? 0 : 1));\n } else if (props.isFork) {\n setVisibleLayerCount(null);\n }\n }, [props.isFork, props.selectedLayer]);\n\n useInterval(() => {\n setVisibleLayerCount(((visibleLayerCount ?? sliderMax) + 1) % sliderMax + 1);\n }, isPlaying ? 250 : null);\n\n useEffect(() => {\n if (baseSvgObject == null || displaySvgObject == null) return;\n\n baseSvgObject.replaceChildren(...(Array.from(displaySvgObject.children) as Node[]), ...(Array.from(baseSvgObject.children) as Node[]));\n displaySvgObject.replaceChildren(...(Array.from(baseSvgObject.children).slice(0, (visibleLayerCount ?? baseSvgObject.children.length))));\n\n const serialized = new XMLSerializer().serializeToString(displaySvgObject);\n setTrimmedSvgUri(\"data:image/svg+xml;base64,\" + btoa(serialized));\n }, [baseSvgObject, displaySvgObject, visibleLayerCount]);\n\n return (\n \n \n
\n \n \n \n
\n\n
\n \"Collective {setImageLoaded(props.svg ?? \"\")}}/>\n {!props.isFork && (sliderMax - (visibleLayerCount ?? sliderMax) >= ACTIVATION_GAP_SIZE) && }\n
\n\n\n\n
\n \n {(visibleLayerCount ?? sliderMax) - (props.isFork ? 0 : 1)}\n }>\n {setVisibleLayerCount(Number.parseFloat(event.currentTarget.value))}} />\n \n
\n\n
\n
\n );\n\n}\n\n","import { useEffect, useRef } from 'react';\n\nexport default function useInterval(callback : () => void, delay : number | null) {\n const savedCallback = useRef<() => void>();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current!();\n }\n\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n\n }, [delay]);\n}","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { BigNumber } from \"ethers\";\nimport { formatEther } from \"ethers/lib/utils\";\nimport { Card, Col, Row } from \"react-bootstrap\";\n\ninterface ForkBasePriceCardProps {\n price: BigNumber;\n interval: number;\n}\n\nexport default function ForkBasePriceCard(props: ForkBasePriceCardProps) {\n\n return (\n \n \n \n \n
Price increment on this fork
\n {formatEther(props.price)} \n \n / {props.interval} \n \n
\n
\n
\n );\n\n\n}","import { BigNumber } from \"@ethersproject/bignumber\";\nimport { useState, useEffect } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport CanvasCard from \"./cards/CanvasCard\";\nimport { CANVAS_CONTRACT_ADDRESS, SUB_ART_CONTRACT_ADDRESS, TRIM_SVG_LAYERS } from \"./Constsnts\";\nimport { HistoryEvent } from \"./HistoryEvent\";\nimport HistoryLog from \"./HistoryLog\";\nimport MintButton from \"./MintButton\";\nimport { useEthNetwork } from \"./NetworkConnector\";\nimport PriceCard from \"./cards/PriceCard\";\nimport SvgDesigner from \"./editor/SvgDesigner\";\nimport { AutonomousSubArt, AutonomousSubArt__factory, CollectiveCanvas, CollectiveCanvas__factory } from \"./typechain\";\nimport { TypedEventFilter } from \"./typechain/common\";\nimport { TransferEvent } from \"./typechain/ERC721\";\nimport RevisionsCard from \"./cards/RevisionsCard\";\nimport FundedCard from \"./cards/FundedCard\";\nimport { useParams } from \"react-router-dom\";\nimport ForkedRevisionsCard from \"./cards/ForkedRevisionsCard\";\nimport HistoricalCanvasCard from \"./cards/HistoricalCanvasCard\";\nimport ForkBasePriceCard from \"./cards/ForkBasePriceCard\";\n\n\nexport default function DynamicContent() {\n \n const [active, library] = useEthNetwork();\n const [history, setHistory] = useState([]);\n const [svg, setSvg] = useState(null);\n const [trimmedSvg, setTrimmedSvg] = useState(null);\n const [selectedHistory, setSelectedHistory] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [isLoadingPage, setIsLoadingPage] = useState(false);\n const [isEditable, setIsEditable] = useState(false);\n const [serialized, setSerialized] = useState(\"\");\n const [currentPrice, setCurrentPrice] = useState(BigNumber.from(0));\n const [totalFunded, setTotalFunded] = useState(BigNumber.from(0));\n const [totalContributions, setTotalContributions] = useState(0);\n const [totalSubContributions, setTotalSubContributions] = useState(0);\n const [forkBasePrice, setForkBasePrice] = useState(BigNumber.from(0));\n const [forkPriceInterval, setForkPriceInterval] = useState(0);\n const [pages, setPages] = useState(1);\n\n const { forkId } = useParams();\n\n useEffect(() => {\n setSelectedHistory(null);\n }, [forkId]);\n\n useEffect(() => {\n if (svg == null) return;\n\n if (forkId != null) {\n setTrimmedSvg(svg);\n return;\n }\n \n const match = svg.match(\"data:image\\\\/svg\\\\+xml;base64,(.+)\");\n if (match == null) return;\n \n const encodedSection = match[1];\n const decodedSvg = atob(encodedSection);\n const svgObject = new DOMParser().parseFromString(decodedSvg, \"image/svg+xml\").getElementsByTagName('svg')[0];\n \n for (var i=Math.min(svgObject.children.length-1, TRIM_SVG_LAYERS);i>=0;i--) {\n svgObject.children[i].remove();\n }\n \n setTrimmedSvg(\"data:image/svg+xml;base64,\" + btoa(new XMLSerializer().serializeToString(svgObject)));\n }, [svg, forkId]);\n\n useEffect(() => {\n async function updateMainHistory() {\n console.log(\"Updating history\");\n setIsLoadingPage(true);\n \n try {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library);\n const subArt : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library);\n const layerCount : number = (await contract.layerCount()).toNumber();\n const currentPrice : Promise = contract.currentPriceToMint();\n const totalFunded : Promise = contract.totalFunded();\n const totalSubFunded : Promise = subArt.totalFunded();\n const totalSubTokens : Promise = subArt.tokenCount();\n const svg = contract.historicalImageAt(layerCount - 1).catch((error) => console.log(error));\n const historyPending : Promise[] = [];\n \n for (var i=Math.max(0, layerCount-(50 * pages));i event.tokenId === i && event.parentId === -1);\n\n if (historyEvent) {\n console.log(\"Found existing event\");\n historyPending.push(Promise.resolve(historyEvent));\n } else {\n const tokenId = i;\n const author = contract.creatorAt(tokenId);\n const authorName = author.then((resolvedAuthor) => library.lookupAddress(resolvedAuthor)).catch((error) => console.error(error));\n const timestamp = contract.timestampAt(tokenId).then((timestampString) => timestampString.toNumber());\n const forkedAdditions = subArt.layerCount(tokenId);\n \n historyPending.push(Promise.all([author, authorName, timestamp, forkedAdditions]).then(([author, authorName, timestamp, forkedAdditions]) => {return {author: authorName ?? author, timestamp: timestamp, tokenId: tokenId, forkAdditions: forkedAdditions.toNumber(), parentId: -1}}));\n }\n }\n\n const resolvedHistory : HistoryEvent[] = await Promise.all(historyPending);\n\n console.log(\"Total funded: \" + totalFunded);\n console.log(\"Selected history: \" + selectedHistory);\n\n setHistory(resolvedHistory.reverse());\n setCurrentPrice(await currentPrice);\n setTotalFunded((await totalFunded).add(await totalSubFunded));\n setTotalContributions(layerCount);\n setTotalSubContributions((await totalSubTokens).toNumber());\n setSvg((await svg) ?? null);\n setIsEditable(true);\n setIsLoading(false); \n setIsLoadingPage(false);\n } catch (error) {\n console.error(error);\n }\n }\n\n async function updateForkHistory() {\n console.log(\"Updating fork history\");\n setIsLoadingPage(true);\n\n try {\n const parentId : BigNumber = BigNumber.from(forkId);\n const parentContract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library);\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library);\n const layerCount : number = (await contract.layerCount(parentId)).toNumber();\n const currentPrice : Promise = contract.currentPriceToMint(parentId);\n const totalFunded : Promise = contract.totalForkFunded(parentId);\n const svg : Promise = contract.imageForFork(parentId);\n const basePrice : Promise = contract.getForkBasePrice(parentId);\n const priceIncrementInterval : Promise = contract.getForkPriceIncrementInterval(parentId);\n const isForkEditable : Promise = contract.isForkActivated(parentId);\n const historyPending : Promise[] = [];\n\n const parentAuthor = parentContract.creatorAt(parentId);\n const parentAuthorName = parentAuthor.then((resolvedParentAuthor) => library.lookupAddress(resolvedParentAuthor)).catch((error) => console.error(error));\n const parentTimestamp = parentContract.timestampAt(parentId).then((timestampString) => timestampString.toNumber());\n const parentRecord = Promise.all([parentAuthor, parentAuthorName, parentTimestamp]).then(([parentAuthor, parentAuthorName, parentTimestamp]) => {return {author: parentAuthorName ?? parentAuthor, timestamp: parentTimestamp, tokenId: 0, forkAdditions: 0, parentId: parentId.toNumber()}});\n\n for (var i=Math.max(0, layerCount-(50 * pages));i event.tokenId === (i + 1) && event.parentId === parentId.toNumber());\n\n if (historyEvent) {\n console.log(\"Found existing event\");\n historyPending.push(Promise.resolve(historyEvent));\n } else {\n const layerIndex = i;\n const layer = contract.layerAt(parentId, layerIndex);\n const authorName = layer.then((layer) => library.lookupAddress(layer.creator)).catch((error) => console.error(error));\n\n historyPending.push(Promise.all([layer, authorName]).then(([layer, authorName]) => {return {author: authorName ?? layer.creator, timestamp: layer.timestamp.toNumber(), tokenId: layerIndex + 1, forkAdditions: 0, parentId: parentId.toNumber()}}));\n }\n }\n\n const [resolvedForkHistory, resolvedParentRecord] = await Promise.all([Promise.all(historyPending), parentRecord]);\n const resolvedHistory : HistoryEvent[] = [resolvedParentRecord, ...resolvedForkHistory];\n\n setHistory(resolvedHistory.reverse());\n setCurrentPrice(await currentPrice);\n setTotalFunded(await totalFunded);\n setSvg(await svg);\n setForkPriceInterval((await priceIncrementInterval).toNumber());\n setForkBasePrice(await basePrice);\n setTotalContributions(layerCount);\n setIsEditable((await isForkEditable).valueOf());\n setIsLoading(false); \n setIsLoadingPage(false);\n } catch (error) {\n console.error(error);\n }\n }\n \n console.log(\"Running, active: \" + active);\n \n if (active && forkId == null) {\n const contract : CollectiveCanvas = CollectiveCanvas__factory.connect(CANVAS_CONTRACT_ADDRESS, library);\n const filter : TypedEventFilter = contract.filters.Transfer(null, null, null);\n const listener = (event : any) => {updateMainHistory()};\n \n updateMainHistory();\n \n contract.on(filter, listener);\n \n return () => {contract.off(filter, listener);}\n } else if (active) {\n const contract : AutonomousSubArt = AutonomousSubArt__factory.connect(SUB_ART_CONTRACT_ADDRESS, library);\n const filter : TypedEventFilter = contract.filters.Transfer(null, null, null);\n const listener = (event : any) => {updateForkHistory()};\n \n updateForkHistory();\n \n contract.on(filter, listener);\n \n return () => {contract.off(filter, listener);}\n }\n \n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active, library, pages, forkId]);\n \n\n return (\n <>\n \n \n { forkId == null && <>\n

Welcome to autonomous art.

\n

Mint an NFT by making a visual contribution to a collective work.

\n }\n\n { forkId != null && <>\n

Autonomous Art #{forkId}

\n

This is a fork of Autonomous Art at contribution #{forkId}.

\n\n

Mint an Autonomous Sub Art NFT by making a visual contribution to the collective work of this fork.

\n }\n \n \n \n \n
\n \n \n \n \n \n \n \n {forkId == null && }\n {forkId != null && }\n \n \n \n \n \n \n \n \n \n

Explore the history

\n

Each contribution combines to form the whole.

\n setSelectedHistory(index)} selected={selectedHistory} loading={isLoadingPage} onLoadMore={() => setPages(pages+1)}/>\n \n
\n \n \n

Make your mark {forkId != null && \"on this fork\"}

\n

Start drawing, add to the art.

\n \n
\n setSerialized(serialized)} backgroundUri={trimmedSvg != null ? trimmedSvg : \"null\"} />\n \n \n \n \n \n \n );\n\n}","import { Card } from \"react-bootstrap\";\n\ninterface FaqCardProps {\n question: string;\n answer: string;\n}\n\nexport default function FaqCard(props: FaqCardProps) {\n\n return (\n \n

{props.question}

\n \n

{props.answer}

\n
\n
\n );\n\n\n}","import { Col, Row } from \"react-bootstrap\";\nimport FaqCard from \"./cards/FaqCard\";\n\nexport default function StaticContent() {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}","import { useEffect } from 'react'\nimport { injected } from '../connectors'\nimport { useWeb3React } from '@web3-react/core'\n\ninterface AutoConnectingInjectedProviderProps {\n children: JSX.Element\n}\n\nexport default function AutoConnectingInjectedProvider(props: AutoConnectingInjectedProviderProps) {\n const { active: networkActive, error: networkError, activate: activateNetwork } = useWeb3React()\n\n useEffect(() => {\n injected\n .isAuthorized()\n .then((isAuthorized) => {\n if (isAuthorized && !networkActive && !networkError) {\n activateNetwork(injected)\n }\n })\n .catch((error) => {\n console.error(error);\n })\n }, [activateNetwork, networkActive, networkError])\n\n return props.children;\n}","import { formatEther } from \"ethers/lib/utils\";\nimport { Card, Table, Image } from \"react-bootstrap\";\nimport { FirestoreTopFork } from \"../firestore/FirestoreTopFork\";\n\ninterface TopForksCardProps {\n title: string;\n topForks: FirestoreTopFork[];\n desc: boolean;\n funded: boolean;\n}\n\n\nexport default function TopForksCard(props: TopForksCardProps) {\n\n return (\n \n {props.title}\n \n \n \n \n \n \n \n \n \n \n {\n props.topForks.sort((a, b) => a.layerCount - b.layerCount * (props.desc ? -1 : 1)).map((item, index) => {\n return (\n window.open(\"/fork/\" + item.parentId, \"_blank\")?.focus()}>\n \n \n \n \n \n \n );\n })\n }\n \n
Token IDCreatorContributions{props.funded ? \"Total funds\" : \"Price to mint\"}
{item.parentId}
{item.creator}
{item.layerCount}
{formatEther(props.funded ? item.totalFunded : item.pricetoMint)}
\n
\n
\n );\n}","import { DocumentSnapshot } from \"firebase/firestore\";\nimport { FirestoreTopFork } from \"./FirestoreTopFork\";\n\nexport interface FirestoreTopForks {\n forks: FirestoreTopFork[];\n}\n\nexport const converter = {\n toFirestore: (data: FirestoreTopForks) => data,\n fromFirestore: (snap: DocumentSnapshot) => snap.data() as FirestoreTopForks\n}","// Import the functions you need from the SDKs you need\nimport { initializeApp } from \"firebase/app\";\nimport { getAnalytics } from \"firebase/analytics\";\nimport { getFirestore } from \"firebase/firestore\";\n// TODO: Add SDKs for Firebase products that you want to use\n// https://firebase.google.com/docs/web/setup#available-libraries\n\n// Your web app's Firebase configuration\n// For Firebase JS SDK v7.20.0 and later, measurementId is optional\nconst firebaseConfig = {\n apiKey: \"AIzaSyDnVTaKsE-6sogkhC5rxT9xP6t6PHX7eQ4\",\n authDomain: \"autonomous-graphics.firebaseapp.com\",\n projectId: \"autonomous-graphics\",\n storageBucket: \"autonomous-graphics.appspot.com\",\n messagingSenderId: \"996796880183\",\n appId: \"1:996796880183:web:6a99e338bba941f30a36b2\",\n measurementId: \"G-L7Z2MWD20V\"\n};\n\n// Initialize Firebase\nconst app = initializeApp(firebaseConfig);\nconst analytics = getAnalytics(app);\nconst db = getFirestore(app);\n\nexport default db;\n\n","import { doc, onSnapshot } from \"firebase/firestore\";\nimport { useEffect, useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport TopForksCard from \"./cards/TopForksCard\";\nimport { FirestoreTopFork } from \"./firestore/FirestoreTopFork\";\nimport { converter } from \"./firestore/FirestoreTopForks\";\nimport db from \"./util/Firebase\";\n\nexport default function ForkLeaderBoard() {\n\n const [topForksByLayers, setTopForksByLayers] = useState([]);\n const [topForksByFunds, setTopForksByFunds] = useState([]);\n const [topForksByCost, setTopForksByCost] = useState([]);\n\n useEffect(() => {\n onSnapshot(doc(db, \"top-forks\", \"by-layers\").withConverter(converter), (doc) => {\n setTopForksByLayers(doc.data()!.forks);\n });\n\n onSnapshot(doc(db, \"top-forks\", \"by-funded\").withConverter(converter), (doc) => {\n setTopForksByFunds(doc.data()!.forks);\n });\n\n onSnapshot(doc(db, \"top-forks\", \"by-cheapest\").withConverter(converter), (doc) => {\n setTopForksByCost(doc.data()!.forks);\n })\n }, []);\n\n return (\n <>\n \n \n

Explore the forks

\n

Autonomous Art can take many different directions. Forks are collective sub-projects that start with a point in the history.

\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n );\n\n\n}","import './App.css';\nimport { createWeb3ReactRoot, Web3ReactProvider } from '@web3-react/core';\nimport { ethers } from 'ethers';\nimport { Container } from 'react-bootstrap';\n\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faEthereum } from '@fortawesome/free-brands-svg-icons';\nimport MembersOnly from './MembersOnly';\nimport { BrowserRouter as Router, Route, Routes } from 'react-router-dom';\nimport DynamicContent from './DynamicContent';\nimport StaticContent from './StaticContent';\nimport AutoConnectingInjectedProvider from './util/AutoConnectingInjectedProvider';\nimport ForkLeaderBoard from './ForkLeaderBoard';\n\nlibrary.add(faEthereum);\n\nfunction getLibrary(provider: ethers.providers.ExternalProvider) {\n return new ethers.providers.Web3Provider(provider);\n}\n\nconst NetworkWeb3ReactRoot = createWeb3ReactRoot(\"network\");\n\nfunction AppBody() {\n return (\n <>\n \n \n \n \n \n )\n}\n\nfunction App() {\n\n return (\n \n \n \n \n
\n \n \n } />\n } />\n \n \n
\n
\n
\n
\n
\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport 'bootstrap-icons/font/bootstrap-icons.css';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}