From f3ab47af7cf7c127bfe99556f09948737908bd92 Mon Sep 17 00:00:00 2001 From: ioedeveloper Date: Thu, 16 Mar 2023 13:46:42 +0100 Subject: [PATCH 01/72] Update ghaction template options and version --- .github/workflows/run-sut.yml | 2 +- .../workspace/src/lib/utils/constants.ts | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-sut.yml b/.github/workflows/run-sut.yml index e6b8d98221..56d6a838db 100644 --- a/.github/workflows/run-sut.yml +++ b/.github/workflows/run-sut.yml @@ -14,7 +14,7 @@ jobs: with: node-version: 14.17.6 - name: Run SUT Action - uses: EthereumRemix/sol-test@v1 + uses: EthereumRemix/sol-test@v1.1 with: test-path: 'apps/remix-ide/contracts/tests' compiler-version: '0.8.15' \ No newline at end of file diff --git a/libs/remix-ui/workspace/src/lib/utils/constants.ts b/libs/remix-ui/workspace/src/lib/utils/constants.ts index 0a7c92582c..0f819f48db 100644 --- a/libs/remix-ui/workspace/src/lib/utils/constants.ts +++ b/libs/remix-ui/workspace/src/lib/utils/constants.ts @@ -11,10 +11,17 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Run SUT Action - uses: EthereumRemix/sol-test@v1 + uses: EthereumRemix/sol-test@v1.1 with: test-path: 'tests' compiler-version: '0.8.15' +// evm-version: 'berlin' +// optimize: true +// optimizer-runs: 200 +// node-url: 'https://mainnet.infura.io/v3/08b2a484451e4635a28b3d8234f24332' +// block-number: 'latest' +// hard-fork: 'merge' + ` export const tsSolTestYml = ` name: Running Mocha Chai Solidity Unit Tests @@ -28,11 +35,17 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Run Mocha Chai Unit Test Action - uses: EthereumRemix/ts-sol-test@v1.2 + uses: EthereumRemix/ts-sol-test@v1.3.1 with: test-path: 'tests' contract-path: 'contracts' compiler-version: '0.8.7' +// evm-version: 'berlin' +// optimize: true +// optimizer-runs: 200 +// node-url: 'https://mainnet.infura.io/v3/08b2a484451e4635a28b3d8234f24332' +// block-number: 'latest' +// hard-fork: 'merge' ` export const slitherYml = ` name: Slither Analysis From 22e2b325d0e3bf7feb8e3a0bea79afcc933d32ba Mon Sep 17 00:00:00 2001 From: ioedeveloper Date: Thu, 16 Mar 2023 13:52:02 +0100 Subject: [PATCH 02/72] Use exisiting version --- .github/workflows/run-sut.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-sut.yml b/.github/workflows/run-sut.yml index 56d6a838db..e6b8d98221 100644 --- a/.github/workflows/run-sut.yml +++ b/.github/workflows/run-sut.yml @@ -14,7 +14,7 @@ jobs: with: node-version: 14.17.6 - name: Run SUT Action - uses: EthereumRemix/sol-test@v1.1 + uses: EthereumRemix/sol-test@v1 with: test-path: 'apps/remix-ide/contracts/tests' compiler-version: '0.8.15' \ No newline at end of file From 275feabc1f74c27fb8d715a0d2781f6aab505a2a Mon Sep 17 00:00:00 2001 From: ioedeveloper Date: Thu, 16 Mar 2023 15:25:51 +0100 Subject: [PATCH 03/72] Update evm version --- libs/remix-ui/workspace/src/lib/utils/constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/utils/constants.ts b/libs/remix-ui/workspace/src/lib/utils/constants.ts index 0f819f48db..aa62fe3f69 100644 --- a/libs/remix-ui/workspace/src/lib/utils/constants.ts +++ b/libs/remix-ui/workspace/src/lib/utils/constants.ts @@ -15,7 +15,7 @@ jobs: with: test-path: 'tests' compiler-version: '0.8.15' -// evm-version: 'berlin' +// evm-version: 'merge' // optimize: true // optimizer-runs: 200 // node-url: 'https://mainnet.infura.io/v3/08b2a484451e4635a28b3d8234f24332' @@ -40,7 +40,7 @@ jobs: test-path: 'tests' contract-path: 'contracts' compiler-version: '0.8.7' -// evm-version: 'berlin' +// evm-version: 'merge' // optimize: true // optimizer-runs: 200 // node-url: 'https://mainnet.infura.io/v3/08b2a484451e4635a28b3d8234f24332' From 771c0bda67ade93921ce84c72a282219bbf56fb2 Mon Sep 17 00:00:00 2001 From: ioedeveloper Date: Mon, 20 Mar 2023 14:29:09 +0100 Subject: [PATCH 04/72] Update evm-version to latest (paris) --- libs/remix-ui/workspace/src/lib/utils/constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/workspace/src/lib/utils/constants.ts b/libs/remix-ui/workspace/src/lib/utils/constants.ts index aa62fe3f69..c81506bab8 100644 --- a/libs/remix-ui/workspace/src/lib/utils/constants.ts +++ b/libs/remix-ui/workspace/src/lib/utils/constants.ts @@ -15,7 +15,7 @@ jobs: with: test-path: 'tests' compiler-version: '0.8.15' -// evm-version: 'merge' +// evm-version: 'paris' // optimize: true // optimizer-runs: 200 // node-url: 'https://mainnet.infura.io/v3/08b2a484451e4635a28b3d8234f24332' @@ -40,7 +40,7 @@ jobs: test-path: 'tests' contract-path: 'contracts' compiler-version: '0.8.7' -// evm-version: 'merge' +// evm-version: 'paris' // optimize: true // optimizer-runs: 200 // node-url: 'https://mainnet.infura.io/v3/08b2a484451e4635a28b3d8234f24332' From fba36a6a81809f3a83a2f1833b135144cbf1ea41 Mon Sep 17 00:00:00 2001 From: lianahus Date: Mon, 20 Mar 2023 17:19:16 +0100 Subject: [PATCH 05/72] adding delete as a keyword --- libs/remix-ui/editor/src/lib/remix-ui-editor.tsx | 3 +-- libs/remix-ui/editor/src/lib/syntaxes/solidity.ts | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx b/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx index 3df0397c03..0097e05f66 100644 --- a/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx +++ b/libs/remix-ui/editor/src/lib/remix-ui-editor.tsx @@ -12,8 +12,6 @@ import { monacoTypes } from '@remix-ui/editor'; import './remix-ui-editor.css' import { loadTypes } from './web-types' - - import { RemixHoverProvider } from './providers/hoverProvider' import { RemixReferenceProvider } from './providers/referenceProvider' import { RemixCompletionProvider } from './providers/completionProvider' @@ -262,6 +260,7 @@ export const EditorUI = (props: EditorUIProps) => { { token: 'keyword.continue', foreground: warningColor }, { token: 'keyword.while', foreground: warningColor }, { token: 'keyword.do', foreground: warningColor }, + { token: 'keyword.delete', foreground: warningColor }, { token: 'keyword.if', foreground: yellowColor }, { token: 'keyword.else', foreground: yellowColor }, diff --git a/libs/remix-ui/editor/src/lib/syntaxes/solidity.ts b/libs/remix-ui/editor/src/lib/syntaxes/solidity.ts index dfb388fda4..fda352456e 100644 --- a/libs/remix-ui/editor/src/lib/syntaxes/solidity.ts +++ b/libs/remix-ui/editor/src/lib/syntaxes/solidity.ts @@ -1266,6 +1266,7 @@ export const solidityTokensProvider = { 'constant', 'fallback', 'receive', + 'delete', 'if', 'else', 'for', From 3d726f04efadd44df4fed78b3e8273016674058e Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 16 Mar 2023 14:14:42 +0100 Subject: [PATCH 06/72] add copy to clipboard --- libs/remix-ui/renderer/src/lib/renderer.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/remix-ui/renderer/src/lib/renderer.tsx b/libs/remix-ui/renderer/src/lib/renderer.tsx index 679d26c490..09a7ac21f8 100644 --- a/libs/remix-ui/renderer/src/lib/renderer.tsx +++ b/libs/remix-ui/renderer/src/lib/renderer.tsx @@ -1,4 +1,5 @@ import React, { useEffect, useState } from 'react' //eslint-disable-line +import { CopyToClipboard } from '@remix-ui/clipboard' import { helper } from '@remix-project/remix-solidity' import './renderer.css' interface RendererProps { @@ -77,6 +78,7 @@ export const Renderer = ({ message, opt = {}, plugin }: RendererProps) => {
+ ) } From 55a9f8a22945e34967e1a1cff113a2e7c8fcaf8d Mon Sep 17 00:00:00 2001 From: lianahus Date: Mon, 20 Mar 2023 17:04:05 +0100 Subject: [PATCH 07/72] positioning of copy btn --- libs/remix-ui/renderer/src/lib/renderer.css | 63 ++++++++++----------- libs/remix-ui/renderer/src/lib/renderer.tsx | 2 +- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/libs/remix-ui/renderer/src/lib/renderer.css b/libs/remix-ui/renderer/src/lib/renderer.css index 26b05fc019..3d66a6afdc 100644 --- a/libs/remix-ui/renderer/src/lib/renderer.css +++ b/libs/remix-ui/renderer/src/lib/renderer.css @@ -1,48 +1,47 @@ .remixui_sol.success, .remixui_sol.error, .remixui_sol.warning { - white-space: pre-line; - word-wrap: break-word; - cursor: pointer; - position: relative; - margin: 0.5em 0 1em 0; - border-radius: 5px; - line-height: 20px; - padding: 8px 15px; + white-space: pre-line; + word-wrap: break-word; + cursor: pointer; + position: relative; + margin: 0.5em 0 1em 0; + border-radius: 5px; + line-height: 20px; + padding: 8px 15px; } .remixui_sol.success pre, .remixui_sol.error pre, .remixui_sol.warning pre { - white-space: pre-line; - overflow-y: hidden; - background-color: transparent; - margin: 0; - font-size: 12px; - border: 0 none; - padding: 0; - border-radius: 0; + white-space: pre-line; + overflow-y: hidden; + background-color: transparent; + margin: 0; + font-size: 12px; + border: 0 none; + padding: 0; + border-radius: 0; } .remixui_sol.success .close, .remixui_sol.error .close, .remixui_sol.warning .close { - visibility: hidden; - white-space: pre-line; - font-weight: bold; - position: absolute; - color: hsl(0, 0%, 0%); /* black in style-guide.js */ - top: 0; - right: 0; - padding: 0.5em; + visibility: hidden; + white-space: pre-line; + font-weight: bold; + position: absolute; + color: hsl(0, 0%, 0%); /* black in style-guide.js */ + top: 0; + right: 0; + padding: 0.5em; } -.remixui_sol.error { -} - -.remixui_sol.warning { -} - -.remixui_sol.success { - /* background-color: // styles.rightPanel.message_Success_BackgroundColor; */ +.remixui_sol.success a, +.remixui_sol.error a, +.remixui_sol.warning a { + position: absolute; + bottom: 0; + right: 0; + padding: 0.5em; } diff --git a/libs/remix-ui/renderer/src/lib/renderer.tsx b/libs/remix-ui/renderer/src/lib/renderer.tsx index 09a7ac21f8..11a4f1afd9 100644 --- a/libs/remix-ui/renderer/src/lib/renderer.tsx +++ b/libs/remix-ui/renderer/src/lib/renderer.tsx @@ -78,7 +78,7 @@ export const Renderer = ({ message, opt = {}, plugin }: RendererProps) => {
- + ) } From eb1087d4c957d4b276008e6cdbe3a80f7764ff3d Mon Sep 17 00:00:00 2001 From: lianahus Date: Mon, 20 Mar 2023 17:07:21 +0100 Subject: [PATCH 08/72] indent --- libs/remix-ui/renderer/src/lib/renderer.css | 1 - libs/remix-ui/renderer/src/lib/renderer.tsx | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/renderer/src/lib/renderer.css b/libs/remix-ui/renderer/src/lib/renderer.css index 3d66a6afdc..e03e68502c 100644 --- a/libs/remix-ui/renderer/src/lib/renderer.css +++ b/libs/remix-ui/renderer/src/lib/renderer.css @@ -43,5 +43,4 @@ position: absolute; bottom: 0; right: 0; - padding: 0.5em; } diff --git a/libs/remix-ui/renderer/src/lib/renderer.tsx b/libs/remix-ui/renderer/src/lib/renderer.tsx index 11a4f1afd9..9873b84c07 100644 --- a/libs/remix-ui/renderer/src/lib/renderer.tsx +++ b/libs/remix-ui/renderer/src/lib/renderer.tsx @@ -79,7 +79,8 @@ export const Renderer = ({ message, opt = {}, plugin }: RendererProps) => { - ) + + ) } ) From a1264db2aaa878c31b611b1cb392c3b5ca37afa8 Mon Sep 17 00:00:00 2001 From: Aniket-Engg Date: Thu, 23 Feb 2023 14:09:26 +0530 Subject: [PATCH 09/72] download contract compilation details --- .../solidity-compiler/src/lib/contract-selection.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx index d9809d061c..e3510a5512 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx @@ -4,6 +4,7 @@ import { ContractSelectionProps } from './types' import { PublishToStorage } from '@remix-ui/publish-to-storage' // eslint-disable-line import { TreeView, TreeViewItem } from '@remix-ui/tree-view' // eslint-disable-line import { CopyToClipboard } from '@remix-ui/clipboard' // eslint-disable-line +import { saveAs } from 'file-saver' import './css/style.css' import { CustomTooltip } from '@remix-ui/helper' @@ -183,8 +184,10 @@ export const ContractSelection = (props: ContractSelectionProps) => { } - - modal(selectedContract, log, 'Close', null) + const downloadFn = () => { + saveAs(new Blob([JSON.stringify(contractProperties, null, '\t')]), `${selectedContract}_compData.json`) + } + modal(selectedContract, log, 'Download', downloadFn, 'Close', null) } const copyBytecode = () => { From 4dea9f7b5bb1b8b581c1472f3116d855683148d0 Mon Sep 17 00:00:00 2001 From: Aniket-Engg Date: Tue, 28 Feb 2023 13:37:27 +0530 Subject: [PATCH 10/72] add matomo tracking --- libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx index e3510a5512..e245ea8b62 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx @@ -8,6 +8,7 @@ import { saveAs } from 'file-saver' import './css/style.css' import { CustomTooltip } from '@remix-ui/helper' +const _paq = window._paq = window._paq || [] export const ContractSelection = (props: ContractSelectionProps) => { const { api, compiledFileName, contractsDetails, contractList, compilerInput, modal } = props @@ -142,6 +143,7 @@ export const ContractSelection = (props: ContractSelectionProps) => { } const details = () => { + _paq.push(['trackEvent', 'compiler', 'compilerDetails', 'display']) if (!selectedContract) throw new Error('No contract compiled yet') const help = { @@ -185,6 +187,7 @@ export const ContractSelection = (props: ContractSelectionProps) => { const downloadFn = () => { + _paq.push(['trackEvent', 'compiler', 'compilerDetails', 'download']) saveAs(new Blob([JSON.stringify(contractProperties, null, '\t')]), `${selectedContract}_compData.json`) } modal(selectedContract, log, 'Download', downloadFn, 'Close', null) From ac2da9c9710b7568901ed58a8c425cd768411f79 Mon Sep 17 00:00:00 2001 From: Aniket-Engg Date: Mon, 20 Mar 2023 18:31:03 +0530 Subject: [PATCH 11/72] do not hide modal on download click --- .../modal-dialog/src/lib/remix-ui-modal-dialog.tsx | 3 ++- libs/remix-ui/modal-dialog/src/lib/types/index.ts | 1 + .../solidity-compiler/src/lib/compiler-container.tsx | 2 ++ .../solidity-compiler/src/lib/contract-selection.tsx | 2 +- .../solidity-compiler/src/lib/solidity-compiler.tsx | 7 +++++-- libs/remix-ui/solidity-compiler/src/lib/types/index.ts | 4 ++-- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/libs/remix-ui/modal-dialog/src/lib/remix-ui-modal-dialog.tsx b/libs/remix-ui/modal-dialog/src/lib/remix-ui-modal-dialog.tsx index f60309c24e..66330349b0 100644 --- a/libs/remix-ui/modal-dialog/src/lib/remix-ui-modal-dialog.tsx +++ b/libs/remix-ui/modal-dialog/src/lib/remix-ui-modal-dialog.tsx @@ -103,7 +103,8 @@ export const ModalDialog = (props: ModalDialogProps) => { onClick={() => { if (props.validation && !props.validation.valid) return if (props.okFn) props.okFn() - handleHide() + if (props.donotHideOnOkClick) calledHideFunctionOnce.current = false + else handleHide() }} > {props.okLabel ? props.okLabel : 'OK'} diff --git a/libs/remix-ui/modal-dialog/src/lib/types/index.ts b/libs/remix-ui/modal-dialog/src/lib/types/index.ts index e469bffc61..0c96017bac 100644 --- a/libs/remix-ui/modal-dialog/src/lib/types/index.ts +++ b/libs/remix-ui/modal-dialog/src/lib/types/index.ts @@ -13,6 +13,7 @@ export interface ModalDialogProps { message?: string | JSX.Element, okLabel?: string | JSX.Element, okFn?: (value?:any) => void, + donotHideOnOkClick?: boolean, cancelLabel?: string | JSX.Element, cancelFn?: () => void, modalClass?: string, diff --git a/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx b/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx index afdab1cc68..7100b1dbf8 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx @@ -281,6 +281,7 @@ export const CompilerContainer = (props: CompilerContainerProps) => { 'New configuration file', `The file "${configFilePathInput.current.value}" you entered does not exist. Do you want to create a new one?`, 'Create', async () => await createNewConfigFile(), + false, 'Cancel', () => { setShowFilePathInput(false) @@ -580,6 +581,7 @@ export const CompilerContainer = (props: CompilerContainerProps) => { promptMessage('URL'), 'OK', addCustomCompiler, + false, 'Cancel', () => {} ) diff --git a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx index e245ea8b62..02c04893be 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx @@ -190,7 +190,7 @@ export const ContractSelection = (props: ContractSelectionProps) => { _paq.push(['trackEvent', 'compiler', 'compilerDetails', 'download']) saveAs(new Blob([JSON.stringify(contractProperties, null, '\t')]), `${selectedContract}_compData.json`) } - modal(selectedContract, log, 'Download', downloadFn, 'Close', null) + modal(selectedContract, log, 'Download', downloadFn, true, 'Close', null) } const copyBytecode = () => { diff --git a/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx b/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx index 328797acf3..6277443121 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/solidity-compiler.tsx @@ -27,6 +27,7 @@ export const SolidityCompiler = (props: SolidityCompilerProps) => { message: null, okLabel: '', okFn: () => { }, + donotHideOnOkClick: false, cancelLabel: '', cancelFn: () => { }, handleHide: null @@ -131,7 +132,7 @@ export const SolidityCompiler = (props: SolidityCompilerProps) => { api.setCompilerParameters({ version: value }) } - const modal = async (title: string, message: string | JSX.Element, okLabel: string, okFn: () => void, cancelLabel?: string, cancelFn?: () => void) => { + const modal = async (title: string, message: string | JSX.Element, okLabel: string, okFn: () => void, donotHideOnOkClick: boolean, cancelLabel?: string, cancelFn?: () => void) => { await setState(prevState => { return { ...prevState, @@ -142,6 +143,7 @@ export const SolidityCompiler = (props: SolidityCompilerProps) => { title, okLabel, okFn, + donotHideOnOkClick, cancelLabel, cancelFn } @@ -190,7 +192,7 @@ export const SolidityCompiler = (props: SolidityCompilerProps) => { <> {compileErrors[currentFile].error && } - {compileErrors[currentFile].error && (compileErrors[currentFile].error.mode === 'panic') && modal('Error', panicMessage(compileErrors[currentFile].error.formattedMessage), 'Close', null)} + {compileErrors[currentFile].error && (compileErrors[currentFile].error.mode === 'panic') && modal('Error', panicMessage(compileErrors[currentFile].error.formattedMessage), 'Close', null, false)} {compileErrors[currentFile].errors && compileErrors[currentFile].errors.length && compileErrors[currentFile].errors.map((err, index) => { if (hideWarnings) { if (err.severity !== 'warning') { @@ -212,6 +214,7 @@ export const SolidityCompiler = (props: SolidityCompilerProps) => { hide={state.modal.hide} okLabel={state.modal.okLabel} okFn={state.modal.okFn} + donotHideOnOkClick={state.modal.donotHideOnOkClick} cancelLabel={state.modal.cancelLabel} cancelFn={state.modal.cancelFn} handleHide={handleHideModal}> diff --git a/libs/remix-ui/solidity-compiler/src/lib/types/index.ts b/libs/remix-ui/solidity-compiler/src/lib/types/index.ts index 7e14b71973..848596f5e0 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/types/index.ts +++ b/libs/remix-ui/solidity-compiler/src/lib/types/index.ts @@ -14,7 +14,7 @@ export interface CompilerContainerProps { isFoundryProject: boolean, workspaceName: string, tooltip: (message: string | JSX.Element) => void, - modal: (title: string, message: string | JSX.Element, okLabel: string, okFn: () => void, cancelLabel?: string, cancelFn?: () => void) => void, + modal: (title: string, message: string | JSX.Element, okLabel: string, okFn: () => void, donotHideOnOkClick?: boolean, cancelLabel?: string, cancelFn?: () => void) => void, compiledFileName: string, updateCurrentVersion: any, configurationSettings: ConfigurationSettings, @@ -26,7 +26,7 @@ export interface ContractSelectionProps { compiledFileName: string, contractList: { file: string, name: string }[], compilerInput: Record - modal: (title: string, message: string | JSX.Element, okLabel: string, okFn: () => void, cancelLabel?: string, cancelFn?: () => void) => void, + modal: (title: string, message: string | JSX.Element, okLabel: string, okFn: () => void, donotHideOnOkClick?: boolean, cancelLabel?: string, cancelFn?: () => void) => void, contractsDetails: Record } From 5d341962bbdfb33659015a303447e684fe0097eb Mon Sep 17 00:00:00 2001 From: Aniket-Engg Date: Tue, 21 Mar 2023 18:53:10 +0530 Subject: [PATCH 12/72] click on cancel in e2e --- apps/remix-ide-e2e/src/commands/verifyContracts.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/remix-ide-e2e/src/commands/verifyContracts.ts b/apps/remix-ide-e2e/src/commands/verifyContracts.ts index f29c3e42c6..718b3a84e2 100644 --- a/apps/remix-ide-e2e/src/commands/verifyContracts.ts +++ b/apps/remix-ide-e2e/src/commands/verifyContracts.ts @@ -31,7 +31,7 @@ function verifyContracts (browser: NightwatchBrowser, compiledContractNames: str .click('*[data-id="treeViewDivtreeViewItemcompiler"]') .waitForElementVisible('*[data-id="treeViewLiversion"]') .assert.containsText('*[data-id="treeViewLiversion"]', `${opts.version}`) - .click('[data-id="workspacesModalDialog-modal-footer-ok-react"]') + .click('[data-id="workspacesModalDialog-modal-footer-cancel-react"]') .perform(() => { done() callback() @@ -49,7 +49,7 @@ function verifyContracts (browser: NightwatchBrowser, compiledContractNames: str .click('*[data-id="treeViewDivtreeViewItemoptimizer"]') .waitForElementVisible('*[data-id="treeViewDivruns"]') .assert.containsText('*[data-id="treeViewDivruns"]', `${opts.runs}`) - .click('[data-id="workspacesModalDialog-modal-footer-ok-react"]') + .click('[data-id="workspacesModalDialog-modal-footer-cancel-react"]') .perform(() => { done() callback() From d3489d78898850737966381e9f4121d8c15ef810 Mon Sep 17 00:00:00 2001 From: Solid Studio Date: Sat, 4 Jul 2020 09:34:49 +0100 Subject: [PATCH 13/72] first commit --- .coveralls.yml | 2 + .gitignore | 2 +- .legacy.ts | 119 + public/favicon.ico | Bin 0 -> 3150 bytes public/index.html | 77 + public/logo192.png | Bin 0 -> 5347 bytes public/logo512.png | Bin 0 -> 9664 bytes public/manifest.json | 25 + public/robots.txt | 3 + src/App.css | 9 + src/App.tsx | 84 + src/AppContext.tsx | 17 + src/hooks/useLocalStorage.tsx | 37 + src/index.tsx | 11 + src/react-app-env.d.ts | 1 + src/routes.tsx | 36 + src/setupTests.ts | 5 + src/types.ts | 11 + src/utils/faker.ts | 30 + src/utils/index.ts | 2 + src/utils/publisher.test.ts | 40 + src/utils/publisher.ts | 13 + src/utils/sample-data/file.json | 4272 ++++++++++++++++ .../sample-artifact-with-comments.json | 4287 +++++++++++++++++ src/utils/sample-data/sample-artifact.json | 3771 +++++++++++++++ src/utils/template.ts | 122 + src/utils/types.ts | 36 + src/utils/utils.test.ts | 93 + src/utils/utils.ts | 94 + src/views/ErrorView.tsx | 31 + src/views/HomeView.tsx | 128 + src/views/index.ts | 2 + tslint.json | 16 + 33 files changed, 13375 insertions(+), 1 deletion(-) create mode 100644 .coveralls.yml create mode 100644 .legacy.ts create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/logo192.png create mode 100644 public/logo512.png create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/AppContext.tsx create mode 100644 src/hooks/useLocalStorage.tsx create mode 100644 src/index.tsx create mode 100644 src/react-app-env.d.ts create mode 100644 src/routes.tsx create mode 100644 src/setupTests.ts create mode 100644 src/types.ts create mode 100644 src/utils/faker.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/publisher.test.ts create mode 100644 src/utils/publisher.ts create mode 100644 src/utils/sample-data/file.json create mode 100644 src/utils/sample-data/sample-artifact-with-comments.json create mode 100644 src/utils/sample-data/sample-artifact.json create mode 100644 src/utils/template.ts create mode 100644 src/utils/types.ts create mode 100644 src/utils/utils.test.ts create mode 100644 src/utils/utils.ts create mode 100644 src/views/ErrorView.tsx create mode 100644 src/views/HomeView.tsx create mode 100644 src/views/index.ts create mode 100644 tslint.json diff --git a/.coveralls.yml b/.coveralls.yml new file mode 100644 index 0000000000..1403477128 --- /dev/null +++ b/.coveralls.yml @@ -0,0 +1,2 @@ +service_name: circleci +repo_token: $COVERALLS_REPO_TOKEN \ No newline at end of file diff --git a/.gitignore b/.gitignore index 50d7c7b916..d25f01c767 100644 --- a/.gitignore +++ b/.gitignore @@ -60,4 +60,4 @@ testem.log libs/remix-node/ libs/remix-niks/ -apps/remix-react \ No newline at end of file +apps/remix-react diff --git a/.legacy.ts b/.legacy.ts new file mode 100644 index 0000000000..ba9649083a --- /dev/null +++ b/.legacy.ts @@ -0,0 +1,119 @@ +import { + CompilationResult, + CompiledContract, + DeveloperDocumentation, + UserDocumentation, + DevMethodDoc, + FunctionDescription, + UserMethodDoc, + ABIParameter +} from '@remixproject/plugin-iframe' + +type TemplateDoc = { [key in keyof T]: (...params: any[]) => string } + +/** Create documentation for a compilation result */ +export function createDoc(result: CompilationResult) { + return Object.keys(result.contracts).reduce((acc, fileName) => { + const contracts = result.contracts[fileName] + Object.keys(contracts).forEach((name) => (acc[name] = getContractDoc(name, contracts[name]))) + return acc + }, {}) +} + +////////////// +// CONTRACT // +////////////// + +type ContractDoc = DeveloperDocumentation & UserDocumentation + +/** Map of the content to display for a contract */ +const contractDocTemplate: TemplateDoc = { + author: (author: string) => `> Created By ${author}\n`, + details: (details: string) => `${details}`, + title: (title: string) => `## ${title}`, + notice: (notice: string) => `_${notice}_`, + methods: () => '' // Methods is managed by getMethod() +} + +/** Create the documentation for a contract */ +function getContractDoc(name: string, contract: CompiledContract) { + const methods = { ...contract.userdoc.methods, ...contract.devdoc.methods } + const contractDoc = { ...contract.userdoc, ...contract.devdoc, methods } + + const methodsDoc = contract.abi + .map((def: FunctionDescription) => { + if (def.type === 'constructor') { + def.name = 'constructor' + // because "constructor" is a string and not a { notice } object for userdoc we need to do that + const methodDoc = { + ...(contract.devdoc.methods.constructor || {}), + notice: contract.userdoc.methods.constructor as string + } + return getMethodDoc(def, methodDoc) + } else { + if (def.type === 'fallback') def.name = 'fallback' + const method = Object.keys(contractDoc.methods).find((key) => key.includes(def.name)) + const methodDoc = contractDoc.methods[method] + return getMethodDoc(def, methodDoc) + } + }) + .join('\n') + + const doc = Object.keys(contractDoc) + .filter((key) => key !== 'methods') + .map((key) => contractDocTemplate[key](contractDoc[key])) + .join('\n') + + return `# ${name}\n${doc}\n${methodsDoc}` +} + +//////////// +// METHOD // +//////////// +type MethodDoc = DevMethodDoc & UserMethodDoc + +/** Map of the content to display for a method */ +const devMethodDocTemplate: TemplateDoc = { + author: (author: string) => `> Created By ${author}\n`, + details: (details: string) => details, + return: (value: string) => `Return : ${value}`, + notice: (notice: string) => notice, + returns: () => '', // Implemented by getParams() + params: () => '' // Implemented by getParams() +} + +/** Create a table of param */ +const getParams = (params: string[]) => + params.length === 0 + ? '_No parameters_' + : `|name |type |description + |-----|-----|----------- + ${params.join('\n')}` + +/** Get the details of a method */ +const getMethodDetails = (devMethod: Partial) => + !devMethod + ? '**Add Documentation for the method here**' + : Object.keys(devMethod) + .filter((key) => key !== 'params') + .map((key) => devMethodDocTemplate[key](devMethod[key])) + .join('\n') + +function extractParams(params: ABIParameter[], devparams: any) { + return params.map((input) => { + const description = devparams[input.name] || '' + return `|${input.name}|${input.type}|${description}` + }) +} +/** Get the doc for a method */ +function getMethodDoc(def: FunctionDescription, devdoc?: Partial) { + const doc = devdoc || {} + const devparams = doc.params || {} + const params = extractParams(def.inputs || [], devparams) + const returns = extractParams(def.outputs || [], devparams) + return ` + ## ${def.name} - ${def.constant ? 'view' : 'read'} + ${getParams(params)} + ${getMethodDetails(devdoc)} + ${`Returns:\n${getParams(returns)}`}` +} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 zcmaKtc{Ei0AIGn;MZ^<@lHD*OV;K7~W1q3jSjJcqNywTkMOhP*k~Oj?GO|6{m(*C2 zC7JA+hN%%Bp7T4;J@?%2_x=5zbI<2~->=X60stMr0B~{wzpi9D0MG|# zyuANt7z6;uz%?PEfAnimLl^)6h5ARwGXemG2>?hqQv-I^Gpyh$JH}Ag92}3{$a#z& zd`il2Sb#$U&e&4#^4R|GTgk!Qs+x*PCL{2+`uB5mqtnqLaaw`*H2oqJ?XF(zUACc2 zSibBrdQzcidqv*TK}rpEv1ie&;Famq2IK5%4c}1Jt2b1x_{y1C!?EU)@`_F)yN*NK z)(u03@%g%uDawwXGAMm%EnP9FgoucUedioDwL~{6RVO@A-Q$+pwVRR%WYR>{K3E&Q zzqzT!EEZ$_NHGYM6&PK#CGUV$pTWsiI5#~m>htoJ!vbc0=gm3H8sz8KzIiVN5xdCT z%;}`UH2Pc8))1VS-unh?v4*H*NIy5On{MRKw7BTmOO9oE2UApwkCl9Z?^dod9M^#w z51tEZhf+#dpTo#GDDy#kuzoIjMjZ?%v*h$ z*vwUMOjGc?R0(FjLWkMD)kca4z6~H45FIzQ!Zzu&-yWyMdCBsDr2`l}Q{8fH$H@O< z$&snNzbqLk?(GIe?!PVh?F~2qk4z^rMcp$P^hw^rUPjyCyoNTRw%;hNOwrCoN?G0E z!wT^=4Loa9@O{t;Wk(Nj=?ms1Z?UN_;21m%sUm?uib=pg&x|u)8pP#l--$;B9l47n zUUnMV0sXLe*@Gvy>XWjRoqc2tOzgYn%?g@Lb8C&WsxV1Kjssh^ZBs*Ysr+E6%tsC_ zCo-)hkYY=Bn?wMB4sqm?WS>{kh<6*DO)vXnQpQ9`-_qF6!#b;3Nf@;#B>e2j$yokl6F|9p1<($2 z=WSr%)Z?^|r6njhgbuMrIN>8JE05u0x5t@_dEfbGn9r0hK4c2vp>(*$GXsjeLL_uz zWpyfUgdv!~-2N;llVzik#s2*XB*%7u8(^sJv&T3pzaR&<9({17Zs~UY>#ugZZkHBs zD+>0_an$?}utGp$dcXtyFHnTQZJ}SF=oZ}X07dz~K>^o(vjTzw8ZQc!Fw1W=&Z?9% zv63|~l}70sJbY?H8ON8j)w5=6OpXuaZ}YT03`2%u8{;B0Vafo_iY7&BiQTbRkdJBYL}?%ATfmc zLG$uXt$@3j#OIjALdT&Ut$=9F8cgV{w_f5eS)PjoVi z&oemp-SKJ~UuGuCP1|iY?J^S&P z)-IG?O-*=z6kfZrX5H*G=aQ{ZaqnOqP@&+_;nq@mA>EcjgxrYX8EK|Iq4&E&rxR?R z8N$QOdRwY zr{P`O)=87>YLHtFfGXW z6P)ucrhj~It_9w<^v5>T6N1U}+BkS))=WX*2JY=}^b2czGhH<`?`(}}qMcpPx_%>M zM|fs(+I1m&_h(zqp-HgP>re$2O^o$q)xu#fl0ivOJE({duU)a*OD(eYgSi^cdTn}pqcPM(;S)2%1By^Wh%-CaC%>d9hi`7J zaxL7@;nhA>PE%s99&;z{8>VFgf{u!(-B-x7Of6ueme+ScryL`h(^qKE)DtieWY>-7 zgB)VJESQS4*1LU(2&@pgLvSt{(((C?K_V(rQk``i&5}ZPG;G^FiPlZ$7|-vEmMWlU z5lQ%iK2nu=h2wd_7>gK@vX=*AG+u~rQP$NwPC`ZA?4nh{3tui1x@bT6-;Rk3yDQ>d z?3qRD#+PeV7#FAa>s`Xwxsx_oRFcN$StW2=CW`=qObsT?SD^#^jM1Yk}PSPxJ zG@-_mnNU_)vM|iLRSI>UMp|hatyS}17R{10IuL0TLlupt>9dRs_SPQbv7BLYyC#qv16E-y@XZ= z-!p7I%#r-BVi$nQq3&ssRc_IC%R6$tA&^s_l46880~Wst3@>(|EO<}T4~ci~#!=e; zD)B>o%1+$ksURD1p7I-<3ehlFyVkqrySf&gg>Bp0Z9?JaG|gyTZ{Cb8SdvAWVmFX7v2ohs!OCc!Udk zUITUpmZ33rKLI#(&lDj}cKA#dpL4Fil=$5pu_wi1XJR!llw` zSItPBDEdMHk2>c7#%lBxZHHvtVUOZ$}v?=?AT~9!Jcqa@IJGuMg(s^7r>pcTrd)pS`{5Cu8WPey` z9)!!OUUY@L%9Q+bZa*S5`3f_|lFCPN6kdp_M2>{le8;cn^XUsPa+TUk47qd6)IBR% zk*&Ip?!Ge_gmmdj)BX}P_5o@VI2*wbZ^>UhFju}0gQZh!pP%4XT9{@w;G#b3XK8sN zF(7i$Jv(IM$8Akys9dhP^^~H2(7BfJp}yDW1#@!CL-!mGcSCnJ599WK9MV@yo_u$v MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000000..fcbd2c06ed --- /dev/null +++ b/public/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + Remix Plugin + + + + +
+ + + diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000000..080d6c77ac --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000000..e20be2d57e --- /dev/null +++ b/src/App.css @@ -0,0 +1,9 @@ +body { + margin: 0; +} + +#ethdoc .active { + color: #212529; + background-color: #e9ecef; + border-color: #e9ecef; +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000000..145dbbaa5b --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,84 @@ +import React, { useState, useEffect, useRef } from "react" + +import { + createIframeClient, + CompilationFileSources, + CompilationResult, + Status +} from "@remixproject/plugin" + +import { AppContext } from "./AppContext" +import { Routes } from "./routes" +import { useLocalStorage } from "./hooks/useLocalStorage" +import { createDocumentation } from "./utils/utils" + +import "./App.css" +import { ContractName, Documentation } from "./types" + +const devMode = { port: 8080 } + +export const getNewContractNames = (compilationResult: CompilationResult) => { + const compiledContracts = compilationResult.contracts + let result: string[] = [] + + for (const file of Object.keys(compiledContracts)) { + const newContractNames = Object.keys(compiledContracts[file]) + result = [...result, ...newContractNames] + } + + return result +} + +const sampleMap = new Map() + +const App = () => { + const [clientInstance, setClientInstance] = useState(undefined as any) + const [contracts, setContracts] = useState(sampleMap) + const [sites, setSites] = useLocalStorage('sites', []) + const clientInstanceRef = useRef(clientInstance) + clientInstanceRef.current = clientInstance + const contractsRef = useRef(contracts) + contractsRef.current = contracts + + useEffect(() => { + console.log("Remix EthDoc loading...") + const client = createIframeClient({ devMode }) + const loadClient = async () => { + await client.onload() + setClientInstance(client) + console.log("Remix EthDoc Plugin has been loaded") + + client.solidity.on("compilationFinished", (fileName: string, source: CompilationFileSources, languageVersion: string, data: CompilationResult) => { + console.log("New compilation received") + + const existingMap = contractsRef.current; + const newContractsMapWithDocumentation = createDocumentation(fileName, data) + const newMap = new Map([...existingMap, ...newContractsMapWithDocumentation]) + + console.log("New Map", newMap) + + const status: Status = { key: 'succeed', type: 'success', title: 'New documentation ready' } + clientInstanceRef.current.emit('statusChanged', status) + setContracts(newMap) + }) + } + + loadClient() + }, []) + + + return ( + + + + ) +} + +export default App diff --git a/src/AppContext.tsx b/src/AppContext.tsx new file mode 100644 index 0000000000..68e626433a --- /dev/null +++ b/src/AppContext.tsx @@ -0,0 +1,17 @@ +import React from "react" +import { PluginApi, IRemixApi, Api, PluginClient, CompilationResult } from "@remixproject/plugin" + +import { ContractName, Documentation, PublishedSite } from "./types" + +export const AppContext = React.createContext({ + clientInstance: {} as PluginApi> & + PluginClient>, + contracts: new Map(), + setContracts: (contracts: Map) => { + console.log("Calling Set Contract Names") + }, + sites: [], + setSites: (sites: PublishedSite[]) => { + console.log("Calling Set Sites") + } +}) diff --git a/src/hooks/useLocalStorage.tsx b/src/hooks/useLocalStorage.tsx new file mode 100644 index 0000000000..cca4a83a72 --- /dev/null +++ b/src/hooks/useLocalStorage.tsx @@ -0,0 +1,37 @@ +import { useState } from "react" + +export function useLocalStorage(key: string, initialValue: any) { + // State to store our value + // Pass initial state function to useState so logic is only executed once + const [storedValue, setStoredValue] = useState(() => { + try { + // Get from local storage by key + const item = window.localStorage.getItem(key) + // Parse stored json or if none return initialValue + return item ? JSON.parse(item) : initialValue + } catch (error) { + // If error also return initialValue + console.log(error) + return initialValue + } + }) + + // Return a wrapped version of useState's setter function that ... + // ... persists the new value to localStorage. + const setValue = (value: any) => { + try { + // Allow value to be a function so we have same API as useState + const valueToStore = + value instanceof Function ? value(storedValue) : value + // Save state + setStoredValue(valueToStore) + // Save to local storage + window.localStorage.setItem(key, JSON.stringify(valueToStore)) + } catch (error) { + // A more advanced implementation would handle the error case + console.log(error) + } + } + + return [storedValue, setValue] +} diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000000..fd29146ba3 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; +import { Routes } from './routes' + +ReactDOM.render( + + + , + document.getElementById('root') +); \ No newline at end of file diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts new file mode 100644 index 0000000000..6431bc5fc6 --- /dev/null +++ b/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/routes.tsx b/src/routes.tsx new file mode 100644 index 0000000000..fa47e5582e --- /dev/null +++ b/src/routes.tsx @@ -0,0 +1,36 @@ +import React from "react" +import { + BrowserRouter as Router, + Switch, + Route, + RouteProps, +} from "react-router-dom" + +import { ErrorView, HomeView } from "./views" + +interface Props extends RouteProps { + component: any // TODO: new (props: any) => React.Component + from: string +} + +const CustomRoute = ({ component: Component, ...rest }: Props) => { + return ( + ( + + )} + /> + ) +} + +export const Routes = () => ( + + + + + + + + +) diff --git a/src/setupTests.ts b/src/setupTests.ts new file mode 100644 index 0000000000..74b1a275a0 --- /dev/null +++ b/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000000..187fb6e7b3 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,11 @@ +export type Documentation = string + +export interface EthDocumentation { + [contractName: string]: Documentation +} + +export type ContractName = string + +export type FileName = string + +export type PublishedSite = string \ No newline at end of file diff --git a/src/utils/faker.ts b/src/utils/faker.ts new file mode 100644 index 0000000000..adf2876370 --- /dev/null +++ b/src/utils/faker.ts @@ -0,0 +1,30 @@ +import { CompiledContract, ABIParameter } from '@remixproject/plugin' + +import sampleData from './sample-data/sample-artifact.json' +import sampleDataWithComments from './sample-data/sample-artifact-with-comments.json' + +export const buildFakeArtifact: () => CompiledContract = () => { + const result = sampleData as never as CompiledContract + return result +} + +export const buildFakeArtifactWithComments: () => CompiledContract = () => { + const result = sampleDataWithComments as never as CompiledContract + return result +} + +export const buildFakeABIParameter: () => ABIParameter = () => { + return { + internalType: "address", + name: "allocator", + type: "address" + } +} + +export const buildFakeABIParameterWithDocumentation: () => ABIParameter = () => { + return { + internalType: "address", + name: "allocator", + type: "address" + } +} \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000000..de804ef3f9 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,2 @@ +export * from './utils' +export * from './publisher' \ No newline at end of file diff --git a/src/utils/publisher.test.ts b/src/utils/publisher.test.ts new file mode 100644 index 0000000000..4a5e9f1b7a --- /dev/null +++ b/src/utils/publisher.test.ts @@ -0,0 +1,40 @@ +import { publish } from './publisher'; + +const open = require('open') + +jest.setTimeout(10000) + +describe('Publisher tests', () => { + + test('it can publish', async () => { + const result = await publish("hello 123") + + expect(result).toBeDefined() + }) + + test('it can publish html', async () => { + const result = await publish(` + + + + + + + +
Content custom
+ + + `) + + // Uncomment for testing + + // const url = `https://ipfs.io/ipfs/${result}`; + + // await open(url, { app: ['google chrome', '--incognito'] }); + + expect(result).toBeDefined() + }) +}) diff --git a/src/utils/publisher.ts b/src/utils/publisher.ts new file mode 100644 index 0000000000..d15bacab64 --- /dev/null +++ b/src/utils/publisher.ts @@ -0,0 +1,13 @@ +import { HTMLContent } from "./types"; + +const IpfsClient = require('ipfs-mini') + +export const publish = async (content: HTMLContent) => { + const ipfs = new IpfsClient({ host: 'ipfs.infura.io', port: 5001, protocol: 'https' }); + + const documentHash = await ipfs.add(content) + + console.log("Document hash", documentHash) + + return documentHash +} diff --git a/src/utils/sample-data/file.json b/src/utils/sample-data/file.json new file mode 100644 index 0000000000..c784806fa5 --- /dev/null +++ b/src/utils/sample-data/file.json @@ -0,0 +1,4272 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "Fal1out", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "rings", + "type": "uint256" + } + ], + "name": "age", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allocate", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "allocatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "collectAllocations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "allocator", + "type": "address" + } + ], + "name": "sendAllocation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "author": "Mary A. Botanist", + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50610650806100206000396000f3fe6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x650 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F CALLDATACOPY 0xAB TIMESTAMP PUSH23 0xD1AE66DDC30E015934768668C163BCDA4B8E33F7BE1974 0xF7 0x21 0x2E SGT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "148:984:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;148:984:0;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F CALLDATACOPY 0xAB TIMESTAMP PUSH23 0xD1AE66DDC30E015934768668C163BCDA4B8E33F7BE1974 0xF7 0x21 0x2E SGT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "148:984:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;548:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;548:88:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;297:99;;;:::i;:::-;;914:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;914:100:0;;;:::i;:::-;;243:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;243:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;758:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;758:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;758:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;644:110;;;:::i;:::-;;1018:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1018:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1018:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:88;599:7;629:1;621:5;:9;614:16;;548:88;;;:::o;297:99::-;345:10;337:5;;:18;;;;;;;;;;;;;;;;;;382:9;361:11;:18;373:5;;;;;;;;;;;361:18;;;;;;;;;;;;;;;:30;;;;297:99::o;914:100::-;466:5;;;;;;;;;;;452:19;;:10;:19;;;430:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;967:10;:19;;:42;987:21;967:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;967:42:0;914:100::o;243:28::-;;;;;;;;;;;;;:::o;758:152::-;855:1;830:11;:22;842:9;830:22;;;;;;;;;;;;;;;;:26;822:35;;;;;;863:9;:18;;:42;882:11;:22;894:9;882:22;;;;;;;;;;;;;;;;863:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;863:42:0;758:152;:::o;644:110::-;711:38;739:9;711:11;:23;723:10;711:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;685:11;:23;697:10;685:23;;;;;;;;;;;;;;;:64;;;;644:110::o;1018:112::-;1084:4;1103:11;:22;1115:9;1103:22;;;;;;;;;;;;;;;;1096:29;;1018:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "323200", + "executionCost": "362", + "totalCost": "323562" + }, + "external": { + "Fal1out()": "41948", + "age(uint256)": "307", + "allocate()": "infinite", + "allocatorBalance(address)": "1262", + "collectAllocations()": "infinite", + "owner()": "1053", + "sendAllocation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "80" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "40" + }, + { + "begin": 148, + "end": 1132, + "name": "MSTORE" + }, + { + "begin": 148, + "end": 1132, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 148, + "end": 1132, + "name": "POP" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "CODECOPY" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".auxdata": "a265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", + ".code": [ + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "80" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "40" + }, + { + "begin": 148, + "end": 1132, + "name": "MSTORE" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "4" + }, + { + "begin": 148, + "end": 1132, + "name": "CALLDATASIZE" + }, + { + "begin": 148, + "end": 1132, + "name": "LT" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "CALLDATALOAD" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "E0" + }, + { + "begin": 148, + "end": 1132, + "name": "SHR" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 148, + "end": 1132, + "name": "GT" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "A2DEA26F" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "ABAA9916" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "FFD40B56" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMP" + }, + { + "begin": 148, + "end": 1132, + "name": "tag", + "value": "9" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPDEST" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "6BA61782" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "6FAB5DDF" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "8AA96F38" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "tag", + "value": "1" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPDEST" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "REVERT" + }, + { + "begin": 548, + "end": 636, + "name": "tag", + "value": "2" + }, + { + "begin": 548, + "end": 636, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "4" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "CALLDATASIZE" + }, + { + "begin": 548, + "end": 636, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "DUP2" + }, + { + "begin": 548, + "end": 636, + "name": "ADD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "CALLDATALOAD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "20" + }, + { + "begin": 548, + "end": 636, + "name": "ADD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP3" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 548, + "end": 636, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 548, + "end": 636, + "name": "tag", + "value": "11" + }, + { + "begin": 548, + "end": 636, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "40" + }, + { + "begin": 548, + "end": 636, + "name": "MLOAD" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "DUP3" + }, + { + "begin": 548, + "end": 636, + "name": "DUP2" + }, + { + "begin": 548, + "end": 636, + "name": "MSTORE" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "20" + }, + { + "begin": 548, + "end": 636, + "name": "ADD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "40" + }, + { + "begin": 548, + "end": 636, + "name": "MLOAD" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "SUB" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "RETURN" + }, + { + "begin": 297, + "end": 396, + "name": "tag", + "value": "3" + }, + { + "begin": 297, + "end": 396, + "name": "JUMPDEST" + }, + { + "begin": 297, + "end": 396, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 297, + "end": 396, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 297, + "end": 396, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 297, + "end": 396, + "name": "tag", + "value": "14" + }, + { + "begin": 297, + "end": 396, + "name": "JUMPDEST" + }, + { + "begin": 297, + "end": 396, + "name": "STOP" + }, + { + "begin": 914, + "end": 1014, + "name": "tag", + "value": "4" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMPDEST" + }, + { + "begin": 914, + "end": 1014, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 914, + "end": 1014, + "name": "POP" + }, + { + "begin": 914, + "end": 1014, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 914, + "end": 1014, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 914, + "end": 1014, + "name": "tag", + "value": "17" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMPDEST" + }, + { + "begin": 914, + "end": 1014, + "name": "STOP" + }, + { + "begin": 243, + "end": 271, + "name": "tag", + "value": "5" + }, + { + "begin": 243, + "end": 271, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "POP" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 243, + "end": 271, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 243, + "end": 271, + "name": "tag", + "value": "20" + }, + { + "begin": 243, + "end": 271, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "40" + }, + { + "begin": 243, + "end": 271, + "name": "MLOAD" + }, + { + "begin": 243, + "end": 271, + "name": "DUP1" + }, + { + "begin": 243, + "end": 271, + "name": "DUP3" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 243, + "end": 271, + "name": "AND" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 243, + "end": 271, + "name": "AND" + }, + { + "begin": 243, + "end": 271, + "name": "DUP2" + }, + { + "begin": 243, + "end": 271, + "name": "MSTORE" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "20" + }, + { + "begin": 243, + "end": 271, + "name": "ADD" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP2" + }, + { + "begin": 243, + "end": 271, + "name": "POP" + }, + { + "begin": 243, + "end": 271, + "name": "POP" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "40" + }, + { + "begin": 243, + "end": 271, + "name": "MLOAD" + }, + { + "begin": 243, + "end": 271, + "name": "DUP1" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP2" + }, + { + "begin": 243, + "end": 271, + "name": "SUB" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "RETURN" + }, + { + "begin": 758, + "end": 910, + "name": "tag", + "value": "6" + }, + { + "begin": 758, + "end": 910, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH", + "value": "4" + }, + { + "begin": 758, + "end": 910, + "name": "DUP1" + }, + { + "begin": 758, + "end": 910, + "name": "CALLDATASIZE" + }, + { + "begin": 758, + "end": 910, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "DUP2" + }, + { + "begin": 758, + "end": 910, + "name": "ADD" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "DUP1" + }, + { + "begin": 758, + "end": 910, + "name": "DUP1" + }, + { + "begin": 758, + "end": 910, + "name": "CALLDATALOAD" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 758, + "end": 910, + "name": "AND" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH", + "value": "20" + }, + { + "begin": 758, + "end": 910, + "name": "ADD" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP3" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP2" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 758, + "end": 910, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 758, + "end": 910, + "name": "tag", + "value": "23" + }, + { + "begin": 758, + "end": 910, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "STOP" + }, + { + "begin": 644, + "end": 754, + "name": "tag", + "value": "7" + }, + { + "begin": 644, + "end": 754, + "name": "JUMPDEST" + }, + { + "begin": 644, + "end": 754, + "name": "PUSH [tag]", + "value": "26" + }, + { + "begin": 644, + "end": 754, + "name": "PUSH [tag]", + "value": "27" + }, + { + "begin": 644, + "end": 754, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 644, + "end": 754, + "name": "tag", + "value": "26" + }, + { + "begin": 644, + "end": 754, + "name": "JUMPDEST" + }, + { + "begin": 644, + "end": 754, + "name": "STOP" + }, + { + "begin": 1018, + "end": 1130, + "name": "tag", + "value": "8" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH [tag]", + "value": "29" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "CALLDATASIZE" + }, + { + "begin": 1018, + "end": 1130, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "ADD" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "CALLDATALOAD" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1018, + "end": 1130, + "name": "AND" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1018, + "end": 1130, + "name": "ADD" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP3" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH [tag]", + "value": "31" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1018, + "end": 1130, + "name": "tag", + "value": "29" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1018, + "end": 1130, + "name": "MLOAD" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP3" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "MSTORE" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1018, + "end": 1130, + "name": "ADD" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1018, + "end": 1130, + "name": "MLOAD" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "SUB" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "RETURN" + }, + { + "begin": 548, + "end": 636, + "name": "tag", + "value": "13" + }, + { + "begin": 548, + "end": 636, + "name": "JUMPDEST" + }, + { + "begin": 599, + "end": 606, + "name": "PUSH", + "value": "0" + }, + { + "begin": 629, + "end": 630, + "name": "PUSH", + "value": "1" + }, + { + "begin": 621, + "end": 626, + "name": "DUP3" + }, + { + "begin": 621, + "end": 630, + "name": "ADD" + }, + { + "begin": 614, + "end": 630, + "name": "SWAP1" + }, + { + "begin": 614, + "end": 630, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 297, + "end": 396, + "name": "tag", + "value": "15" + }, + { + "begin": 297, + "end": 396, + "name": "JUMPDEST" + }, + { + "begin": 345, + "end": 355, + "name": "CALLER" + }, + { + "begin": 337, + "end": 342, + "name": "PUSH", + "value": "1" + }, + { + "begin": 337, + "end": 342, + "name": "PUSH", + "value": "0" + }, + { + "begin": 337, + "end": 355, + "name": "PUSH", + "value": "100" + }, + { + "begin": 337, + "end": 355, + "name": "EXP" + }, + { + "begin": 337, + "end": 355, + "name": "DUP2" + }, + { + "begin": 337, + "end": 355, + "name": "SLOAD" + }, + { + "begin": 337, + "end": 355, + "name": "DUP2" + }, + { + "begin": 337, + "end": 355, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 337, + "end": 355, + "name": "MUL" + }, + { + "begin": 337, + "end": 355, + "name": "NOT" + }, + { + "begin": 337, + "end": 355, + "name": "AND" + }, + { + "begin": 337, + "end": 355, + "name": "SWAP1" + }, + { + "begin": 337, + "end": 355, + "name": "DUP4" + }, + { + "begin": 337, + "end": 355, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 337, + "end": 355, + "name": "AND" + }, + { + "begin": 337, + "end": 355, + "name": "MUL" + }, + { + "begin": 337, + "end": 355, + "name": "OR" + }, + { + "begin": 337, + "end": 355, + "name": "SWAP1" + }, + { + "begin": 337, + "end": 355, + "name": "SSTORE" + }, + { + "begin": 337, + "end": 355, + "name": "POP" + }, + { + "begin": 382, + "end": 391, + "name": "CALLVALUE" + }, + { + "begin": 361, + "end": 372, + "name": "PUSH", + "value": "0" + }, + { + "begin": 361, + "end": 379, + "name": "DUP1" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "1" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "0" + }, + { + "begin": 373, + "end": 378, + "name": "SWAP1" + }, + { + "begin": 373, + "end": 378, + "name": "SLOAD" + }, + { + "begin": 373, + "end": 378, + "name": "SWAP1" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "100" + }, + { + "begin": 373, + "end": 378, + "name": "EXP" + }, + { + "begin": 373, + "end": 378, + "name": "SWAP1" + }, + { + "begin": 373, + "end": 378, + "name": "DIV" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 373, + "end": 378, + "name": "AND" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 361, + "end": 379, + "name": "AND" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 361, + "end": 379, + "name": "AND" + }, + { + "begin": 361, + "end": 379, + "name": "DUP2" + }, + { + "begin": 361, + "end": 379, + "name": "MSTORE" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "20" + }, + { + "begin": 361, + "end": 379, + "name": "ADD" + }, + { + "begin": 361, + "end": 379, + "name": "SWAP1" + }, + { + "begin": 361, + "end": 379, + "name": "DUP2" + }, + { + "begin": 361, + "end": 379, + "name": "MSTORE" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "20" + }, + { + "begin": 361, + "end": 379, + "name": "ADD" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "0" + }, + { + "begin": 361, + "end": 379, + "name": "KECCAK256" + }, + { + "begin": 361, + "end": 391, + "name": "DUP2" + }, + { + "begin": 361, + "end": 391, + "name": "SWAP1" + }, + { + "begin": 361, + "end": 391, + "name": "SSTORE" + }, + { + "begin": 361, + "end": 391, + "name": "POP" + }, + { + "begin": 297, + "end": 396, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 914, + "end": 1014, + "name": "tag", + "value": "18" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMPDEST" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "1" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "0" + }, + { + "begin": 466, + "end": 471, + "name": "SWAP1" + }, + { + "begin": 466, + "end": 471, + "name": "SLOAD" + }, + { + "begin": 466, + "end": 471, + "name": "SWAP1" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "100" + }, + { + "begin": 466, + "end": 471, + "name": "EXP" + }, + { + "begin": 466, + "end": 471, + "name": "SWAP1" + }, + { + "begin": 466, + "end": 471, + "name": "DIV" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 466, + "end": 471, + "name": "AND" + }, + { + "begin": 452, + "end": 471, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 452, + "end": 471, + "name": "AND" + }, + { + "begin": 452, + "end": 462, + "name": "CALLER" + }, + { + "begin": 452, + "end": 471, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 452, + "end": 471, + "name": "AND" + }, + { + "begin": 452, + "end": 471, + "name": "EQ" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH [tag]", + "value": "35" + }, + { + "begin": 430, + "end": 522, + "name": "JUMPI" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "40" + }, + { + "begin": 430, + "end": 522, + "name": "MLOAD" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "4" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "20" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP3" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "SUB" + }, + { + "begin": 430, + "end": 522, + "name": "DUP3" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "17" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "20" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "POP" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "20" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "SWAP2" + }, + { + "begin": 430, + "end": 522, + "name": "POP" + }, + { + "begin": 430, + "end": 522, + "name": "POP" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "40" + }, + { + "begin": 430, + "end": 522, + "name": "MLOAD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "SWAP2" + }, + { + "begin": 430, + "end": 522, + "name": "SUB" + }, + { + "begin": 430, + "end": 522, + "name": "SWAP1" + }, + { + "begin": 430, + "end": 522, + "name": "REVERT" + }, + { + "begin": 430, + "end": 522, + "name": "tag", + "value": "35" + }, + { + "begin": 430, + "end": 522, + "name": "JUMPDEST" + }, + { + "begin": 967, + "end": 977, + "name": "CALLER" + }, + { + "begin": 967, + "end": 986, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 967, + "end": 986, + "name": "AND" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 987, + "end": 1008, + "name": "SELFBALANCE" + }, + { + "begin": 967, + "end": 1009, + "name": "SWAP1" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP2" + }, + { + "begin": 967, + "end": 1009, + "name": "ISZERO" + }, + { + "begin": 967, + "end": 1009, + "name": "MUL" + }, + { + "begin": 967, + "end": 1009, + "name": "SWAP1" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "40" + }, + { + "begin": 967, + "end": 1009, + "name": "MLOAD" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "0" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "40" + }, + { + "begin": 967, + "end": 1009, + "name": "MLOAD" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP1" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP4" + }, + { + "begin": 967, + "end": 1009, + "name": "SUB" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP2" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP6" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP9" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP9" + }, + { + "begin": 967, + "end": 1009, + "name": "CALL" + }, + { + "begin": 967, + "end": 1009, + "name": "SWAP4" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 243, + "end": 271, + "name": "tag", + "value": "21" + }, + { + "begin": 243, + "end": 271, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "1" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "0" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "SLOAD" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "100" + }, + { + "begin": 243, + "end": 271, + "name": "EXP" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "DIV" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 243, + "end": 271, + "name": "AND" + }, + { + "begin": 243, + "end": 271, + "name": "DUP2" + }, + { + "begin": 243, + "end": 271, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 758, + "end": 910, + "name": "tag", + "value": "25" + }, + { + "begin": 758, + "end": 910, + "name": "JUMPDEST" + }, + { + "begin": 855, + "end": 856, + "name": "PUSH", + "value": "0" + }, + { + "begin": 830, + "end": 841, + "name": "DUP1" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "0" + }, + { + "begin": 842, + "end": 851, + "name": "DUP4" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 830, + "end": 852, + "name": "AND" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 830, + "end": 852, + "name": "AND" + }, + { + "begin": 830, + "end": 852, + "name": "DUP2" + }, + { + "begin": 830, + "end": 852, + "name": "MSTORE" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "20" + }, + { + "begin": 830, + "end": 852, + "name": "ADD" + }, + { + "begin": 830, + "end": 852, + "name": "SWAP1" + }, + { + "begin": 830, + "end": 852, + "name": "DUP2" + }, + { + "begin": 830, + "end": 852, + "name": "MSTORE" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "20" + }, + { + "begin": 830, + "end": 852, + "name": "ADD" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "0" + }, + { + "begin": 830, + "end": 852, + "name": "KECCAK256" + }, + { + "begin": 830, + "end": 852, + "name": "SLOAD" + }, + { + "begin": 830, + "end": 856, + "name": "GT" + }, + { + "begin": 822, + "end": 857, + "name": "PUSH [tag]", + "value": "39" + }, + { + "begin": 822, + "end": 857, + "name": "JUMPI" + }, + { + "begin": 822, + "end": 857, + "name": "PUSH", + "value": "0" + }, + { + "begin": 822, + "end": 857, + "name": "DUP1" + }, + { + "begin": 822, + "end": 857, + "name": "REVERT" + }, + { + "begin": 822, + "end": 857, + "name": "tag", + "value": "39" + }, + { + "begin": 822, + "end": 857, + "name": "JUMPDEST" + }, + { + "begin": 863, + "end": 872, + "name": "DUP1" + }, + { + "begin": 863, + "end": 881, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 863, + "end": 881, + "name": "AND" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 882, + "end": 893, + "name": "PUSH", + "value": "0" + }, + { + "begin": 882, + "end": 904, + "name": "DUP1" + }, + { + "begin": 894, + "end": 903, + "name": "DUP5" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 882, + "end": 904, + "name": "AND" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 882, + "end": 904, + "name": "AND" + }, + { + "begin": 882, + "end": 904, + "name": "DUP2" + }, + { + "begin": 882, + "end": 904, + "name": "MSTORE" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "20" + }, + { + "begin": 882, + "end": 904, + "name": "ADD" + }, + { + "begin": 882, + "end": 904, + "name": "SWAP1" + }, + { + "begin": 882, + "end": 904, + "name": "DUP2" + }, + { + "begin": 882, + "end": 904, + "name": "MSTORE" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "20" + }, + { + "begin": 882, + "end": 904, + "name": "ADD" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "0" + }, + { + "begin": 882, + "end": 904, + "name": "KECCAK256" + }, + { + "begin": 882, + "end": 904, + "name": "SLOAD" + }, + { + "begin": 863, + "end": 905, + "name": "SWAP1" + }, + { + "begin": 863, + "end": 905, + "name": "DUP2" + }, + { + "begin": 863, + "end": 905, + "name": "ISZERO" + }, + { + "begin": 863, + "end": 905, + "name": "MUL" + }, + { + "begin": 863, + "end": 905, + "name": "SWAP1" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "40" + }, + { + "begin": 863, + "end": 905, + "name": "MLOAD" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "0" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "40" + }, + { + "begin": 863, + "end": 905, + "name": "MLOAD" + }, + { + "begin": 863, + "end": 905, + "name": "DUP1" + }, + { + "begin": 863, + "end": 905, + "name": "DUP4" + }, + { + "begin": 863, + "end": 905, + "name": "SUB" + }, + { + "begin": 863, + "end": 905, + "name": "DUP2" + }, + { + "begin": 863, + "end": 905, + "name": "DUP6" + }, + { + "begin": 863, + "end": 905, + "name": "DUP9" + }, + { + "begin": 863, + "end": 905, + "name": "DUP9" + }, + { + "begin": 863, + "end": 905, + "name": "CALL" + }, + { + "begin": 863, + "end": 905, + "name": "SWAP4" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 644, + "end": 754, + "name": "tag", + "value": "27" + }, + { + "begin": 644, + "end": 754, + "name": "JUMPDEST" + }, + { + "begin": 711, + "end": 749, + "name": "PUSH [tag]", + "value": "42" + }, + { + "begin": 739, + "end": 748, + "name": "CALLVALUE" + }, + { + "begin": 711, + "end": 722, + "name": "PUSH", + "value": "0" + }, + { + "begin": 711, + "end": 734, + "name": "DUP1" + }, + { + "begin": 723, + "end": 733, + "name": "CALLER" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 711, + "end": 734, + "name": "AND" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 711, + "end": 734, + "name": "AND" + }, + { + "begin": 711, + "end": 734, + "name": "DUP2" + }, + { + "begin": 711, + "end": 734, + "name": "MSTORE" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "20" + }, + { + "begin": 711, + "end": 734, + "name": "ADD" + }, + { + "begin": 711, + "end": 734, + "name": "SWAP1" + }, + { + "begin": 711, + "end": 734, + "name": "DUP2" + }, + { + "begin": 711, + "end": 734, + "name": "MSTORE" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "20" + }, + { + "begin": 711, + "end": 734, + "name": "ADD" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "0" + }, + { + "begin": 711, + "end": 734, + "name": "KECCAK256" + }, + { + "begin": 711, + "end": 734, + "name": "SLOAD" + }, + { + "begin": 711, + "end": 738, + "name": "PUSH [tag]", + "value": "43" + }, + { + "begin": 711, + "end": 738, + "name": "SWAP1" + }, + { + "begin": 711, + "end": 749, + "name": "SWAP2" + }, + { + "begin": 711, + "end": 749, + "name": "SWAP1" + }, + { + "begin": 711, + "end": 749, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 711, + "end": 749, + "name": "AND" + }, + { + "begin": 711, + "end": 749, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 711, + "end": 749, + "name": "tag", + "value": "42" + }, + { + "begin": 711, + "end": 749, + "name": "JUMPDEST" + }, + { + "begin": 685, + "end": 696, + "name": "PUSH", + "value": "0" + }, + { + "begin": 685, + "end": 708, + "name": "DUP1" + }, + { + "begin": 697, + "end": 707, + "name": "CALLER" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 685, + "end": 708, + "name": "AND" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 685, + "end": 708, + "name": "AND" + }, + { + "begin": 685, + "end": 708, + "name": "DUP2" + }, + { + "begin": 685, + "end": 708, + "name": "MSTORE" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "20" + }, + { + "begin": 685, + "end": 708, + "name": "ADD" + }, + { + "begin": 685, + "end": 708, + "name": "SWAP1" + }, + { + "begin": 685, + "end": 708, + "name": "DUP2" + }, + { + "begin": 685, + "end": 708, + "name": "MSTORE" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "20" + }, + { + "begin": 685, + "end": 708, + "name": "ADD" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "0" + }, + { + "begin": 685, + "end": 708, + "name": "KECCAK256" + }, + { + "begin": 685, + "end": 749, + "name": "DUP2" + }, + { + "begin": 685, + "end": 749, + "name": "SWAP1" + }, + { + "begin": 685, + "end": 749, + "name": "SSTORE" + }, + { + "begin": 685, + "end": 749, + "name": "POP" + }, + { + "begin": 644, + "end": 754, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1018, + "end": 1130, + "name": "tag", + "value": "31" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMPDEST" + }, + { + "begin": 1084, + "end": 1088, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1114, + "name": "DUP1" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1115, + "end": 1124, + "name": "DUP4" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1125, + "name": "AND" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1125, + "name": "AND" + }, + { + "begin": 1103, + "end": 1125, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1125, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1125, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1125, + "name": "SWAP1" + }, + { + "begin": 1103, + "end": 1125, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1125, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1125, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1125, + "name": "KECCAK256" + }, + { + "begin": 1103, + "end": 1125, + "name": "SLOAD" + }, + { + "begin": 1096, + "end": 1125, + "name": "SWAP1" + }, + { + "begin": 1096, + "end": 1125, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 834, + "end": 1010, + "name": "tag", + "value": "43" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMPDEST" + }, + { + "begin": 892, + "end": 899, + "name": "PUSH", + "value": "0" + }, + { + "begin": 911, + "end": 920, + "name": "DUP1" + }, + { + "begin": 927, + "end": 928, + "name": "DUP3" + }, + { + "begin": 923, + "end": 924, + "name": "DUP5" + }, + { + "begin": 923, + "end": 928, + "name": "ADD" + }, + { + "begin": 911, + "end": 928, + "name": "SWAP1" + }, + { + "begin": 911, + "end": 928, + "name": "POP" + }, + { + "begin": 951, + "end": 952, + "name": "DUP4" + }, + { + "begin": 946, + "end": 947, + "name": "DUP2" + }, + { + "begin": 946, + "end": 952, + "name": "LT" + }, + { + "begin": 946, + "end": 952, + "name": "ISZERO" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH [tag]", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPI" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "4" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "1B" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP1" + }, + { + "begin": 938, + "end": 984, + "name": "REVERT" + }, + { + "begin": 938, + "end": 984, + "name": "tag", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPDEST" + }, + { + "begin": 1002, + "end": 1003, + "name": "DUP1" + }, + { + "begin": 995, + "end": 1003, + "name": "SWAP2" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP3" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP2" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "Fal1out()": "6fab5ddf", + "age(uint256)": "6ba61782", + "allocate()": "abaa9916", + "allocatorBalance(address)": "ffd40b56", + "collectAllocations()": "8aa96f38", + "owner()": "8da5cb5b", + "sendAllocation(address)": "a2dea26f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rings\",\"type\":\"uint256\"}],\"name\":\"age\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mary A. Botanist\",\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Calculate tree age in years, rounded up, for live trees\"}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0xd545eab656870e8b80bd39971a7b5dd4d98e25821048764ec003c3f4be3432bf\",\"urls\":[\"bzz-raw://377d23420fe8bc074562c57540384149da4e5d79c44e6bc5ab71ed4a2d84139f\",\"dweb:/ipfs/QmVuMX6Dwf7zbBvR2LdY4HmupxDD5fq6dxUUsxZ1KqgPD2\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", + "userdoc": { + "methods": {}, + "notice": "Calculate tree age in years, rounded up, for live trees" + } +} \ No newline at end of file diff --git a/src/utils/sample-data/sample-artifact-with-comments.json b/src/utils/sample-data/sample-artifact-with-comments.json new file mode 100644 index 0000000000..bea57d7386 --- /dev/null +++ b/src/utils/sample-data/sample-artifact-with-comments.json @@ -0,0 +1,4287 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "Fal1out", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "rings", + "type": "uint256" + } + ], + "name": "age", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allocate", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "allocatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "collectAllocations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "allocator", + "type": "address" + } + ], + "name": "sendAllocation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "author": "Larry A. Gardner", + "details": "All function calls are currently implemented without side effects", + "methods": { + "age(uint256)": { + "author": "Mary A. Botanist", + "details": "The Alexandr N. Tetearing algorithm could increase precision", + "params": { + "rings": "The number of rings from dendrochronological sample" + }, + "return": "age in years, rounded up for partial years" + } + }, + "title": "A simulator for trees" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50610650806100206000396000f3fe6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x650 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 0xFB 0xAD 0xD7 0xF 0xC4 0x4C 0xBA PUSH28 0xC7CCCC76B76128E6192047CDB163ED15A2A7ACC1180C3964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ", + "sourceMap": "261:1289:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;261:1289:0;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 0xFB 0xAD 0xD7 0xF 0xC4 0x4C 0xBA PUSH28 0xC7CCCC76B76128E6192047CDB163ED15A2A7ACC1180C3964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ", + "sourceMap": "261:1289:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;966:88:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;410:99;;;:::i;:::-;;1332:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1332:100:0;;;:::i;:::-;;356:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;356:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1176:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1176:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1176:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1062:110;;;:::i;:::-;;1436:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1436:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;966:88;1017:7;1047:1;1039:5;:9;1032:16;;966:88;;;:::o;410:99::-;458:10;450:5;;:18;;;;;;;;;;;;;;;;;;495:9;474:11;:18;486:5;;;;;;;;;;;474:18;;;;;;;;;;;;;;;:30;;;;410:99::o;1332:100::-;579:5;;;;;;;;;;;565:19;;:10;:19;;;543:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1385:10;:19;;:42;1405:21;1385:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1385:42:0;1332:100::o;356:28::-;;;;;;;;;;;;;:::o;1176:152::-;1273:1;1248:11;:22;1260:9;1248:22;;;;;;;;;;;;;;;;:26;1240:35;;;;;;1281:9;:18;;:42;1300:11;:22;1312:9;1300:22;;;;;;;;;;;;;;;;1281:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1281:42:0;1176:152;:::o;1062:110::-;1129:38;1157:9;1129:11;:23;1141:10;1129:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;1103:11;:23;1115:10;1103:23;;;;;;;;;;;;;;;:64;;;;1062:110::o;1436:112::-;1502:4;1521:11;:22;1533:9;1521:22;;;;;;;;;;;;;;;;1514:29;;1436:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "323200", + "executionCost": "362", + "totalCost": "323562" + }, + "external": { + "Fal1out()": "41948", + "age(uint256)": "307", + "allocate()": "infinite", + "allocatorBalance(address)": "1262", + "collectAllocations()": "infinite", + "owner()": "1053", + "sendAllocation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "80" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "40" + }, + { + "begin": 261, + "end": 1550, + "name": "MSTORE" + }, + { + "begin": 261, + "end": 1550, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 261, + "end": 1550, + "name": "POP" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "CODECOPY" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".auxdata": "a265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", + ".code": [ + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "80" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "40" + }, + { + "begin": 261, + "end": 1550, + "name": "MSTORE" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "4" + }, + { + "begin": 261, + "end": 1550, + "name": "CALLDATASIZE" + }, + { + "begin": 261, + "end": 1550, + "name": "LT" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "CALLDATALOAD" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "E0" + }, + { + "begin": 261, + "end": 1550, + "name": "SHR" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 261, + "end": 1550, + "name": "GT" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "A2DEA26F" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "ABAA9916" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "FFD40B56" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMP" + }, + { + "begin": 261, + "end": 1550, + "name": "tag", + "value": "9" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPDEST" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "6BA61782" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "6FAB5DDF" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "8AA96F38" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "tag", + "value": "1" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPDEST" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "REVERT" + }, + { + "begin": 966, + "end": 1054, + "name": "tag", + "value": "2" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "4" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "CALLDATASIZE" + }, + { + "begin": 966, + "end": 1054, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP2" + }, + { + "begin": 966, + "end": 1054, + "name": "ADD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "CALLDATALOAD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "20" + }, + { + "begin": 966, + "end": 1054, + "name": "ADD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP3" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 966, + "end": 1054, + "name": "tag", + "value": "11" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "40" + }, + { + "begin": 966, + "end": 1054, + "name": "MLOAD" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP3" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP2" + }, + { + "begin": 966, + "end": 1054, + "name": "MSTORE" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "20" + }, + { + "begin": 966, + "end": 1054, + "name": "ADD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "40" + }, + { + "begin": 966, + "end": 1054, + "name": "MLOAD" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "SUB" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "RETURN" + }, + { + "begin": 410, + "end": 509, + "name": "tag", + "value": "3" + }, + { + "begin": 410, + "end": 509, + "name": "JUMPDEST" + }, + { + "begin": 410, + "end": 509, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 410, + "end": 509, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 410, + "end": 509, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 410, + "end": 509, + "name": "tag", + "value": "14" + }, + { + "begin": 410, + "end": 509, + "name": "JUMPDEST" + }, + { + "begin": 410, + "end": 509, + "name": "STOP" + }, + { + "begin": 1332, + "end": 1432, + "name": "tag", + "value": "4" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMPDEST" + }, + { + "begin": 1332, + "end": 1432, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1332, + "end": 1432, + "name": "POP" + }, + { + "begin": 1332, + "end": 1432, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 1332, + "end": 1432, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1332, + "end": 1432, + "name": "tag", + "value": "17" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMPDEST" + }, + { + "begin": 1332, + "end": 1432, + "name": "STOP" + }, + { + "begin": 356, + "end": 384, + "name": "tag", + "value": "5" + }, + { + "begin": 356, + "end": 384, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "POP" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 356, + "end": 384, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 356, + "end": 384, + "name": "tag", + "value": "20" + }, + { + "begin": 356, + "end": 384, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "40" + }, + { + "begin": 356, + "end": 384, + "name": "MLOAD" + }, + { + "begin": 356, + "end": 384, + "name": "DUP1" + }, + { + "begin": 356, + "end": 384, + "name": "DUP3" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 356, + "end": 384, + "name": "AND" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 356, + "end": 384, + "name": "AND" + }, + { + "begin": 356, + "end": 384, + "name": "DUP2" + }, + { + "begin": 356, + "end": 384, + "name": "MSTORE" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "20" + }, + { + "begin": 356, + "end": 384, + "name": "ADD" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP2" + }, + { + "begin": 356, + "end": 384, + "name": "POP" + }, + { + "begin": 356, + "end": 384, + "name": "POP" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "40" + }, + { + "begin": 356, + "end": 384, + "name": "MLOAD" + }, + { + "begin": 356, + "end": 384, + "name": "DUP1" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP2" + }, + { + "begin": 356, + "end": 384, + "name": "SUB" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "RETURN" + }, + { + "begin": 1176, + "end": 1328, + "name": "tag", + "value": "6" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "CALLDATASIZE" + }, + { + "begin": 1176, + "end": 1328, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP2" + }, + { + "begin": 1176, + "end": 1328, + "name": "ADD" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "CALLDATALOAD" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1176, + "end": 1328, + "name": "AND" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1176, + "end": 1328, + "name": "ADD" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP3" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP2" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1176, + "end": 1328, + "name": "tag", + "value": "23" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "STOP" + }, + { + "begin": 1062, + "end": 1172, + "name": "tag", + "value": "7" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMPDEST" + }, + { + "begin": 1062, + "end": 1172, + "name": "PUSH [tag]", + "value": "26" + }, + { + "begin": 1062, + "end": 1172, + "name": "PUSH [tag]", + "value": "27" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1062, + "end": 1172, + "name": "tag", + "value": "26" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMPDEST" + }, + { + "begin": 1062, + "end": 1172, + "name": "STOP" + }, + { + "begin": 1436, + "end": 1548, + "name": "tag", + "value": "8" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH [tag]", + "value": "29" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "CALLDATASIZE" + }, + { + "begin": 1436, + "end": 1548, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "ADD" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "CALLDATALOAD" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1436, + "end": 1548, + "name": "AND" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1436, + "end": 1548, + "name": "ADD" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP3" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH [tag]", + "value": "31" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1436, + "end": 1548, + "name": "tag", + "value": "29" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1436, + "end": 1548, + "name": "MLOAD" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP3" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "MSTORE" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1436, + "end": 1548, + "name": "ADD" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1436, + "end": 1548, + "name": "MLOAD" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "SUB" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "RETURN" + }, + { + "begin": 966, + "end": 1054, + "name": "tag", + "value": "13" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMPDEST" + }, + { + "begin": 1017, + "end": 1024, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1047, + "end": 1048, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1039, + "end": 1044, + "name": "DUP3" + }, + { + "begin": 1039, + "end": 1048, + "name": "ADD" + }, + { + "begin": 1032, + "end": 1048, + "name": "SWAP1" + }, + { + "begin": 1032, + "end": 1048, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 410, + "end": 509, + "name": "tag", + "value": "15" + }, + { + "begin": 410, + "end": 509, + "name": "JUMPDEST" + }, + { + "begin": 458, + "end": 468, + "name": "CALLER" + }, + { + "begin": 450, + "end": 455, + "name": "PUSH", + "value": "1" + }, + { + "begin": 450, + "end": 455, + "name": "PUSH", + "value": "0" + }, + { + "begin": 450, + "end": 468, + "name": "PUSH", + "value": "100" + }, + { + "begin": 450, + "end": 468, + "name": "EXP" + }, + { + "begin": 450, + "end": 468, + "name": "DUP2" + }, + { + "begin": 450, + "end": 468, + "name": "SLOAD" + }, + { + "begin": 450, + "end": 468, + "name": "DUP2" + }, + { + "begin": 450, + "end": 468, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 450, + "end": 468, + "name": "MUL" + }, + { + "begin": 450, + "end": 468, + "name": "NOT" + }, + { + "begin": 450, + "end": 468, + "name": "AND" + }, + { + "begin": 450, + "end": 468, + "name": "SWAP1" + }, + { + "begin": 450, + "end": 468, + "name": "DUP4" + }, + { + "begin": 450, + "end": 468, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 450, + "end": 468, + "name": "AND" + }, + { + "begin": 450, + "end": 468, + "name": "MUL" + }, + { + "begin": 450, + "end": 468, + "name": "OR" + }, + { + "begin": 450, + "end": 468, + "name": "SWAP1" + }, + { + "begin": 450, + "end": 468, + "name": "SSTORE" + }, + { + "begin": 450, + "end": 468, + "name": "POP" + }, + { + "begin": 495, + "end": 504, + "name": "CALLVALUE" + }, + { + "begin": 474, + "end": 485, + "name": "PUSH", + "value": "0" + }, + { + "begin": 474, + "end": 492, + "name": "DUP1" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "1" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "0" + }, + { + "begin": 486, + "end": 491, + "name": "SWAP1" + }, + { + "begin": 486, + "end": 491, + "name": "SLOAD" + }, + { + "begin": 486, + "end": 491, + "name": "SWAP1" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "100" + }, + { + "begin": 486, + "end": 491, + "name": "EXP" + }, + { + "begin": 486, + "end": 491, + "name": "SWAP1" + }, + { + "begin": 486, + "end": 491, + "name": "DIV" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 486, + "end": 491, + "name": "AND" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 474, + "end": 492, + "name": "AND" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 474, + "end": 492, + "name": "AND" + }, + { + "begin": 474, + "end": 492, + "name": "DUP2" + }, + { + "begin": 474, + "end": 492, + "name": "MSTORE" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "20" + }, + { + "begin": 474, + "end": 492, + "name": "ADD" + }, + { + "begin": 474, + "end": 492, + "name": "SWAP1" + }, + { + "begin": 474, + "end": 492, + "name": "DUP2" + }, + { + "begin": 474, + "end": 492, + "name": "MSTORE" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "20" + }, + { + "begin": 474, + "end": 492, + "name": "ADD" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "0" + }, + { + "begin": 474, + "end": 492, + "name": "KECCAK256" + }, + { + "begin": 474, + "end": 504, + "name": "DUP2" + }, + { + "begin": 474, + "end": 504, + "name": "SWAP1" + }, + { + "begin": 474, + "end": 504, + "name": "SSTORE" + }, + { + "begin": 474, + "end": 504, + "name": "POP" + }, + { + "begin": 410, + "end": 509, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1332, + "end": 1432, + "name": "tag", + "value": "18" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMPDEST" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "1" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "0" + }, + { + "begin": 579, + "end": 584, + "name": "SWAP1" + }, + { + "begin": 579, + "end": 584, + "name": "SLOAD" + }, + { + "begin": 579, + "end": 584, + "name": "SWAP1" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "100" + }, + { + "begin": 579, + "end": 584, + "name": "EXP" + }, + { + "begin": 579, + "end": 584, + "name": "SWAP1" + }, + { + "begin": 579, + "end": 584, + "name": "DIV" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 579, + "end": 584, + "name": "AND" + }, + { + "begin": 565, + "end": 584, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 565, + "end": 584, + "name": "AND" + }, + { + "begin": 565, + "end": 575, + "name": "CALLER" + }, + { + "begin": 565, + "end": 584, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 565, + "end": 584, + "name": "AND" + }, + { + "begin": 565, + "end": 584, + "name": "EQ" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH [tag]", + "value": "35" + }, + { + "begin": 543, + "end": 635, + "name": "JUMPI" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "40" + }, + { + "begin": 543, + "end": 635, + "name": "MLOAD" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "4" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "20" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP3" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "SUB" + }, + { + "begin": 543, + "end": 635, + "name": "DUP3" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "17" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "20" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "POP" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "20" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "SWAP2" + }, + { + "begin": 543, + "end": 635, + "name": "POP" + }, + { + "begin": 543, + "end": 635, + "name": "POP" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "40" + }, + { + "begin": 543, + "end": 635, + "name": "MLOAD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "SWAP2" + }, + { + "begin": 543, + "end": 635, + "name": "SUB" + }, + { + "begin": 543, + "end": 635, + "name": "SWAP1" + }, + { + "begin": 543, + "end": 635, + "name": "REVERT" + }, + { + "begin": 543, + "end": 635, + "name": "tag", + "value": "35" + }, + { + "begin": 543, + "end": 635, + "name": "JUMPDEST" + }, + { + "begin": 1385, + "end": 1395, + "name": "CALLER" + }, + { + "begin": 1385, + "end": 1404, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1385, + "end": 1404, + "name": "AND" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 1405, + "end": 1426, + "name": "SELFBALANCE" + }, + { + "begin": 1385, + "end": 1427, + "name": "SWAP1" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP2" + }, + { + "begin": 1385, + "end": 1427, + "name": "ISZERO" + }, + { + "begin": 1385, + "end": 1427, + "name": "MUL" + }, + { + "begin": 1385, + "end": 1427, + "name": "SWAP1" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1385, + "end": 1427, + "name": "MLOAD" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1385, + "end": 1427, + "name": "MLOAD" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP1" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP4" + }, + { + "begin": 1385, + "end": 1427, + "name": "SUB" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP2" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP6" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP9" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP9" + }, + { + "begin": 1385, + "end": 1427, + "name": "CALL" + }, + { + "begin": 1385, + "end": 1427, + "name": "SWAP4" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 356, + "end": 384, + "name": "tag", + "value": "21" + }, + { + "begin": 356, + "end": 384, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "1" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "0" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "SLOAD" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "100" + }, + { + "begin": 356, + "end": 384, + "name": "EXP" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "DIV" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 356, + "end": 384, + "name": "AND" + }, + { + "begin": 356, + "end": 384, + "name": "DUP2" + }, + { + "begin": 356, + "end": 384, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1176, + "end": 1328, + "name": "tag", + "value": "25" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMPDEST" + }, + { + "begin": 1273, + "end": 1274, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1248, + "end": 1259, + "name": "DUP1" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1260, + "end": 1269, + "name": "DUP4" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1248, + "end": 1270, + "name": "AND" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1248, + "end": 1270, + "name": "AND" + }, + { + "begin": 1248, + "end": 1270, + "name": "DUP2" + }, + { + "begin": 1248, + "end": 1270, + "name": "MSTORE" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1248, + "end": 1270, + "name": "ADD" + }, + { + "begin": 1248, + "end": 1270, + "name": "SWAP1" + }, + { + "begin": 1248, + "end": 1270, + "name": "DUP2" + }, + { + "begin": 1248, + "end": 1270, + "name": "MSTORE" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1248, + "end": 1270, + "name": "ADD" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1248, + "end": 1270, + "name": "KECCAK256" + }, + { + "begin": 1248, + "end": 1270, + "name": "SLOAD" + }, + { + "begin": 1248, + "end": 1274, + "name": "GT" + }, + { + "begin": 1240, + "end": 1275, + "name": "PUSH [tag]", + "value": "39" + }, + { + "begin": 1240, + "end": 1275, + "name": "JUMPI" + }, + { + "begin": 1240, + "end": 1275, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1240, + "end": 1275, + "name": "DUP1" + }, + { + "begin": 1240, + "end": 1275, + "name": "REVERT" + }, + { + "begin": 1240, + "end": 1275, + "name": "tag", + "value": "39" + }, + { + "begin": 1240, + "end": 1275, + "name": "JUMPDEST" + }, + { + "begin": 1281, + "end": 1290, + "name": "DUP1" + }, + { + "begin": 1281, + "end": 1299, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1281, + "end": 1299, + "name": "AND" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 1300, + "end": 1311, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1300, + "end": 1322, + "name": "DUP1" + }, + { + "begin": 1312, + "end": 1321, + "name": "DUP5" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1300, + "end": 1322, + "name": "AND" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1300, + "end": 1322, + "name": "AND" + }, + { + "begin": 1300, + "end": 1322, + "name": "DUP2" + }, + { + "begin": 1300, + "end": 1322, + "name": "MSTORE" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1300, + "end": 1322, + "name": "ADD" + }, + { + "begin": 1300, + "end": 1322, + "name": "SWAP1" + }, + { + "begin": 1300, + "end": 1322, + "name": "DUP2" + }, + { + "begin": 1300, + "end": 1322, + "name": "MSTORE" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1300, + "end": 1322, + "name": "ADD" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1300, + "end": 1322, + "name": "KECCAK256" + }, + { + "begin": 1300, + "end": 1322, + "name": "SLOAD" + }, + { + "begin": 1281, + "end": 1323, + "name": "SWAP1" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP2" + }, + { + "begin": 1281, + "end": 1323, + "name": "ISZERO" + }, + { + "begin": 1281, + "end": 1323, + "name": "MUL" + }, + { + "begin": 1281, + "end": 1323, + "name": "SWAP1" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1281, + "end": 1323, + "name": "MLOAD" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1281, + "end": 1323, + "name": "MLOAD" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP1" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP4" + }, + { + "begin": 1281, + "end": 1323, + "name": "SUB" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP2" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP6" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP9" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP9" + }, + { + "begin": 1281, + "end": 1323, + "name": "CALL" + }, + { + "begin": 1281, + "end": 1323, + "name": "SWAP4" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1062, + "end": 1172, + "name": "tag", + "value": "27" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMPDEST" + }, + { + "begin": 1129, + "end": 1167, + "name": "PUSH [tag]", + "value": "42" + }, + { + "begin": 1157, + "end": 1166, + "name": "CALLVALUE" + }, + { + "begin": 1129, + "end": 1140, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1129, + "end": 1152, + "name": "DUP1" + }, + { + "begin": 1141, + "end": 1151, + "name": "CALLER" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1129, + "end": 1152, + "name": "AND" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1129, + "end": 1152, + "name": "AND" + }, + { + "begin": 1129, + "end": 1152, + "name": "DUP2" + }, + { + "begin": 1129, + "end": 1152, + "name": "MSTORE" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1129, + "end": 1152, + "name": "ADD" + }, + { + "begin": 1129, + "end": 1152, + "name": "SWAP1" + }, + { + "begin": 1129, + "end": 1152, + "name": "DUP2" + }, + { + "begin": 1129, + "end": 1152, + "name": "MSTORE" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1129, + "end": 1152, + "name": "ADD" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1129, + "end": 1152, + "name": "KECCAK256" + }, + { + "begin": 1129, + "end": 1152, + "name": "SLOAD" + }, + { + "begin": 1129, + "end": 1156, + "name": "PUSH [tag]", + "value": "43" + }, + { + "begin": 1129, + "end": 1156, + "name": "SWAP1" + }, + { + "begin": 1129, + "end": 1167, + "name": "SWAP2" + }, + { + "begin": 1129, + "end": 1167, + "name": "SWAP1" + }, + { + "begin": 1129, + "end": 1167, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 1129, + "end": 1167, + "name": "AND" + }, + { + "begin": 1129, + "end": 1167, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1129, + "end": 1167, + "name": "tag", + "value": "42" + }, + { + "begin": 1129, + "end": 1167, + "name": "JUMPDEST" + }, + { + "begin": 1103, + "end": 1114, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1126, + "name": "DUP1" + }, + { + "begin": 1115, + "end": 1125, + "name": "CALLER" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1126, + "name": "AND" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1126, + "name": "AND" + }, + { + "begin": 1103, + "end": 1126, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1126, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1126, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1126, + "name": "SWAP1" + }, + { + "begin": 1103, + "end": 1126, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1126, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1126, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1126, + "name": "KECCAK256" + }, + { + "begin": 1103, + "end": 1167, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1167, + "name": "SWAP1" + }, + { + "begin": 1103, + "end": 1167, + "name": "SSTORE" + }, + { + "begin": 1103, + "end": 1167, + "name": "POP" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1436, + "end": 1548, + "name": "tag", + "value": "31" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMPDEST" + }, + { + "begin": 1502, + "end": 1506, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1521, + "end": 1532, + "name": "DUP1" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1533, + "end": 1542, + "name": "DUP4" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1521, + "end": 1543, + "name": "AND" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1521, + "end": 1543, + "name": "AND" + }, + { + "begin": 1521, + "end": 1543, + "name": "DUP2" + }, + { + "begin": 1521, + "end": 1543, + "name": "MSTORE" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1521, + "end": 1543, + "name": "ADD" + }, + { + "begin": 1521, + "end": 1543, + "name": "SWAP1" + }, + { + "begin": 1521, + "end": 1543, + "name": "DUP2" + }, + { + "begin": 1521, + "end": 1543, + "name": "MSTORE" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1521, + "end": 1543, + "name": "ADD" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1521, + "end": 1543, + "name": "KECCAK256" + }, + { + "begin": 1521, + "end": 1543, + "name": "SLOAD" + }, + { + "begin": 1514, + "end": 1543, + "name": "SWAP1" + }, + { + "begin": 1514, + "end": 1543, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 834, + "end": 1010, + "name": "tag", + "value": "43" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMPDEST" + }, + { + "begin": 892, + "end": 899, + "name": "PUSH", + "value": "0" + }, + { + "begin": 911, + "end": 920, + "name": "DUP1" + }, + { + "begin": 927, + "end": 928, + "name": "DUP3" + }, + { + "begin": 923, + "end": 924, + "name": "DUP5" + }, + { + "begin": 923, + "end": 928, + "name": "ADD" + }, + { + "begin": 911, + "end": 928, + "name": "SWAP1" + }, + { + "begin": 911, + "end": 928, + "name": "POP" + }, + { + "begin": 951, + "end": 952, + "name": "DUP4" + }, + { + "begin": 946, + "end": 947, + "name": "DUP2" + }, + { + "begin": 946, + "end": 952, + "name": "LT" + }, + { + "begin": 946, + "end": 952, + "name": "ISZERO" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH [tag]", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPI" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "4" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "1B" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP1" + }, + { + "begin": 938, + "end": 984, + "name": "REVERT" + }, + { + "begin": 938, + "end": 984, + "name": "tag", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPDEST" + }, + { + "begin": 1002, + "end": 1003, + "name": "DUP1" + }, + { + "begin": 995, + "end": 1003, + "name": "SWAP2" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP3" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP2" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "Fal1out()": "6fab5ddf", + "age(uint256)": "6ba61782", + "allocate()": "abaa9916", + "allocatorBalance(address)": "ffd40b56", + "collectAllocations()": "8aa96f38", + "owner()": "8da5cb5b", + "sendAllocation(address)": "a2dea26f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rings\",\"type\":\"uint256\"}],\"name\":\"age\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Larry A. Gardner\",\"details\":\"All function calls are currently implemented without side effects\",\"methods\":{\"age(uint256)\":{\"author\":\"Mary A. Botanist\",\"details\":\"The Alexandr N. Tetearing algorithm could increase precision\",\"params\":{\"rings\":\"The number of rings from dendrochronological sample\"},\"return\":\"age in years, rounded up for partial years\"}},\"title\":\"A simulator for trees\"},\"userdoc\":{\"methods\":{\"age(uint256)\":{\"notice\":\"Calculate tree age in years, rounded up, for live trees\"}},\"notice\":\"You can use this contract for only the most basic simulation\"}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0xad082f74ba1b39235d2aae9ebe7367b10a7b164c4c5f9a6ebb139bce106b72cb\",\"urls\":[\"bzz-raw://d6d6235ca9a20e1cfc3da11e0bdfce0bdf5549e8fc52c64911857953fcd58bd8\",\"dweb:/ipfs/QmZJXfB8A9yQf6ixs7Amswj8SovAWXVJbMNM1qCw7uzMxN\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", + "userdoc": { + "methods": { + "age(uint256)": { + "notice": "Calculate tree age in years, rounded up, for live trees" + } + }, + "notice": "You can use this contract for only the most basic simulation" + } +} \ No newline at end of file diff --git a/src/utils/sample-data/sample-artifact.json b/src/utils/sample-data/sample-artifact.json new file mode 100644 index 0000000000..d4696d1293 --- /dev/null +++ b/src/utils/sample-data/sample-artifact.json @@ -0,0 +1,3771 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "Fal1out", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allocate", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "allocatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "collectAllocations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "allocator", + "type": "address" + } + ], + "name": "sendAllocation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506105f0806100206000396000f3fe6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b1461007b578063a2dea26f146100d2578063abaa991614610123578063ffd40b561461012d575b600080fd5b610062610192565b005b34801561007057600080fd5b5061007961023a565b005b34801561008757600080fd5b5061009061035d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100de57600080fd5b50610121600480360360208110156100f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610383565b005b61012b610456565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104eb565b6040518082815260200191505060405180910390f35b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561035a573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610452573d6000803e3d6000fd5b5050565b6104a7346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F0 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x79 PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x90 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH2 0x456 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x452 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4A7 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x533 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x4EE66BDDA0FFE5072DEB89 0xed 0x27 0x49 CALLDATALOAD TIMESTAMP 0xd0 0x49 SGT 0xe8 POP 0xea EQ REVERT 0x2c DUP16 0xe5 0xd5 0xc8 0xee 0xbf PUSH5 0x736F6C6343 STOP SDIV 0xc STOP ORIGIN ", + "sourceMap": "51:886:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:886:0;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b1461007b578063a2dea26f146100d2578063abaa991614610123578063ffd40b561461012d575b600080fd5b610062610192565b005b34801561007057600080fd5b5061007961023a565b005b34801561008757600080fd5b5061009061035d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100de57600080fd5b50610121600480360360208110156100f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610383565b005b61012b610456565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104eb565b6040518082815260200191505060405180910390f35b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561035a573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610452573d6000803e3d6000fd5b5050565b6104a7346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x79 PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x90 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH2 0x456 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x452 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4A7 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x533 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x4EE66BDDA0FFE5072DEB89 0xed 0x27 0x49 CALLDATALOAD TIMESTAMP 0xd0 0x49 SGT 0xe8 POP 0xea EQ REVERT 0x2c DUP16 0xe5 0xd5 0xc8 0xee 0xbf PUSH5 0x736F6C6343 STOP SDIV 0xc STOP ORIGIN ", + "sourceMap": "51:886:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;200:99;;;:::i;:::-;;719:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;719:100:0;;;:::i;:::-;;146:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;146:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;563:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;563:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;563:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;449:110;;;:::i;:::-;;823:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;823:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;823:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;200:99;248:10;240:5;;:18;;;;;;;;;;;;;;;;;;285:9;264:11;:18;276:5;;;;;;;;;;;264:18;;;;;;;;;;;;;;;:30;;;;200:99::o;719:100::-;369:5;;;;;;;;;;;355:19;;:10;:19;;;333:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;772:10;:19;;:42;800:4;792:21;;;772:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;772:42:0;719:100::o;146:28::-;;;;;;;;;;;;;:::o;563:152::-;660:1;635:11;:22;647:9;635:22;;;;;;;;;;;;;;;;:26;627:35;;;;;;668:9;:18;;:42;687:11;:22;699:9;687:22;;;;;;;;;;;;;;;;668:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;668:42:0;563:152;:::o;449:110::-;516:38;544:9;516:11;:23;528:10;516:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;490:11;:23;502:10;490:23;;;;;;;;;;;;;;;:64;;;;449:110::o;823:112::-;889:4;908:11;:22;920:9;908:22;;;;;;;;;;;;;;;;901:29;;823:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "304000", + "executionCost": "343", + "totalCost": "304343" + }, + "external": { + "Fal1out()": "40703", + "allocate()": "infinite", + "allocatorBalance(address)": "684", + "collectAllocations()": "infinite", + "owner()": "475", + "sendAllocation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "80" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "40" + }, + { + "begin": 51, + "end": 937, + "name": "MSTORE" + }, + { + "begin": 51, + "end": 937, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 51, + "end": 937, + "name": "POP" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "CODECOPY" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".auxdata": "a265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", + ".code": [ + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "80" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "40" + }, + { + "begin": 51, + "end": 937, + "name": "MSTORE" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "4" + }, + { + "begin": 51, + "end": 937, + "name": "CALLDATASIZE" + }, + { + "begin": 51, + "end": 937, + "name": "LT" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "CALLDATALOAD" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "E0" + }, + { + "begin": 51, + "end": 937, + "name": "SHR" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "6FAB5DDF" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "8AA96F38" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "A2DEA26F" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "ABAA9916" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "FFD40B56" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "tag", + "value": "1" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPDEST" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "REVERT" + }, + { + "begin": 200, + "end": 299, + "name": "tag", + "value": "2" + }, + { + "begin": 200, + "end": 299, + "name": "JUMPDEST" + }, + { + "begin": 200, + "end": 299, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 200, + "end": 299, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 200, + "end": 299, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 200, + "end": 299, + "name": "tag", + "value": "8" + }, + { + "begin": 200, + "end": 299, + "name": "JUMPDEST" + }, + { + "begin": 200, + "end": 299, + "name": "STOP" + }, + { + "begin": 719, + "end": 819, + "name": "tag", + "value": "3" + }, + { + "begin": 719, + "end": 819, + "name": "JUMPDEST" + }, + { + "begin": 719, + "end": 819, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 719, + "end": 819, + "name": "POP" + }, + { + "begin": 719, + "end": 819, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 719, + "end": 819, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 719, + "end": 819, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 719, + "end": 819, + "name": "tag", + "value": "11" + }, + { + "begin": 719, + "end": 819, + "name": "JUMPDEST" + }, + { + "begin": 719, + "end": 819, + "name": "STOP" + }, + { + "begin": 146, + "end": 174, + "name": "tag", + "value": "4" + }, + { + "begin": 146, + "end": 174, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "13" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "POP" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 146, + "end": 174, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 146, + "end": 174, + "name": "tag", + "value": "14" + }, + { + "begin": 146, + "end": 174, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "40" + }, + { + "begin": 146, + "end": 174, + "name": "MLOAD" + }, + { + "begin": 146, + "end": 174, + "name": "DUP1" + }, + { + "begin": 146, + "end": 174, + "name": "DUP3" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 146, + "end": 174, + "name": "AND" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 146, + "end": 174, + "name": "AND" + }, + { + "begin": 146, + "end": 174, + "name": "DUP2" + }, + { + "begin": 146, + "end": 174, + "name": "MSTORE" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "20" + }, + { + "begin": 146, + "end": 174, + "name": "ADD" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP2" + }, + { + "begin": 146, + "end": 174, + "name": "POP" + }, + { + "begin": 146, + "end": 174, + "name": "POP" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "40" + }, + { + "begin": 146, + "end": 174, + "name": "MLOAD" + }, + { + "begin": 146, + "end": 174, + "name": "DUP1" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP2" + }, + { + "begin": 146, + "end": 174, + "name": "SUB" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "RETURN" + }, + { + "begin": 563, + "end": 715, + "name": "tag", + "value": "5" + }, + { + "begin": 563, + "end": 715, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH", + "value": "4" + }, + { + "begin": 563, + "end": 715, + "name": "DUP1" + }, + { + "begin": 563, + "end": 715, + "name": "CALLDATASIZE" + }, + { + "begin": 563, + "end": 715, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "18" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "DUP2" + }, + { + "begin": 563, + "end": 715, + "name": "ADD" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "DUP1" + }, + { + "begin": 563, + "end": 715, + "name": "DUP1" + }, + { + "begin": 563, + "end": 715, + "name": "CALLDATALOAD" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 563, + "end": 715, + "name": "AND" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH", + "value": "20" + }, + { + "begin": 563, + "end": 715, + "name": "ADD" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP3" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP2" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 563, + "end": 715, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 563, + "end": 715, + "name": "tag", + "value": "17" + }, + { + "begin": 563, + "end": 715, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "STOP" + }, + { + "begin": 449, + "end": 559, + "name": "tag", + "value": "6" + }, + { + "begin": 449, + "end": 559, + "name": "JUMPDEST" + }, + { + "begin": 449, + "end": 559, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 449, + "end": 559, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 449, + "end": 559, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 449, + "end": 559, + "name": "tag", + "value": "20" + }, + { + "begin": 449, + "end": 559, + "name": "JUMPDEST" + }, + { + "begin": 449, + "end": 559, + "name": "STOP" + }, + { + "begin": 823, + "end": 935, + "name": "tag", + "value": "7" + }, + { + "begin": 823, + "end": 935, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "4" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "CALLDATASIZE" + }, + { + "begin": 823, + "end": 935, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "DUP2" + }, + { + "begin": 823, + "end": 935, + "name": "ADD" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "CALLDATALOAD" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 823, + "end": 935, + "name": "AND" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "20" + }, + { + "begin": 823, + "end": 935, + "name": "ADD" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP3" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 823, + "end": 935, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 823, + "end": 935, + "name": "tag", + "value": "23" + }, + { + "begin": 823, + "end": 935, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "40" + }, + { + "begin": 823, + "end": 935, + "name": "MLOAD" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "DUP3" + }, + { + "begin": 823, + "end": 935, + "name": "DUP2" + }, + { + "begin": 823, + "end": 935, + "name": "MSTORE" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "20" + }, + { + "begin": 823, + "end": 935, + "name": "ADD" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "40" + }, + { + "begin": 823, + "end": 935, + "name": "MLOAD" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "SUB" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "RETURN" + }, + { + "begin": 200, + "end": 299, + "name": "tag", + "value": "9" + }, + { + "begin": 200, + "end": 299, + "name": "JUMPDEST" + }, + { + "begin": 248, + "end": 258, + "name": "CALLER" + }, + { + "begin": 240, + "end": 245, + "name": "PUSH", + "value": "1" + }, + { + "begin": 240, + "end": 245, + "name": "PUSH", + "value": "0" + }, + { + "begin": 240, + "end": 258, + "name": "PUSH", + "value": "100" + }, + { + "begin": 240, + "end": 258, + "name": "EXP" + }, + { + "begin": 240, + "end": 258, + "name": "DUP2" + }, + { + "begin": 240, + "end": 258, + "name": "SLOAD" + }, + { + "begin": 240, + "end": 258, + "name": "DUP2" + }, + { + "begin": 240, + "end": 258, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 240, + "end": 258, + "name": "MUL" + }, + { + "begin": 240, + "end": 258, + "name": "NOT" + }, + { + "begin": 240, + "end": 258, + "name": "AND" + }, + { + "begin": 240, + "end": 258, + "name": "SWAP1" + }, + { + "begin": 240, + "end": 258, + "name": "DUP4" + }, + { + "begin": 240, + "end": 258, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 240, + "end": 258, + "name": "AND" + }, + { + "begin": 240, + "end": 258, + "name": "MUL" + }, + { + "begin": 240, + "end": 258, + "name": "OR" + }, + { + "begin": 240, + "end": 258, + "name": "SWAP1" + }, + { + "begin": 240, + "end": 258, + "name": "SSTORE" + }, + { + "begin": 240, + "end": 258, + "name": "POP" + }, + { + "begin": 285, + "end": 294, + "name": "CALLVALUE" + }, + { + "begin": 264, + "end": 275, + "name": "PUSH", + "value": "0" + }, + { + "begin": 264, + "end": 282, + "name": "DUP1" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "1" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "0" + }, + { + "begin": 276, + "end": 281, + "name": "SWAP1" + }, + { + "begin": 276, + "end": 281, + "name": "SLOAD" + }, + { + "begin": 276, + "end": 281, + "name": "SWAP1" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "100" + }, + { + "begin": 276, + "end": 281, + "name": "EXP" + }, + { + "begin": 276, + "end": 281, + "name": "SWAP1" + }, + { + "begin": 276, + "end": 281, + "name": "DIV" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 276, + "end": 281, + "name": "AND" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 264, + "end": 282, + "name": "AND" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 264, + "end": 282, + "name": "AND" + }, + { + "begin": 264, + "end": 282, + "name": "DUP2" + }, + { + "begin": 264, + "end": 282, + "name": "MSTORE" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "20" + }, + { + "begin": 264, + "end": 282, + "name": "ADD" + }, + { + "begin": 264, + "end": 282, + "name": "SWAP1" + }, + { + "begin": 264, + "end": 282, + "name": "DUP2" + }, + { + "begin": 264, + "end": 282, + "name": "MSTORE" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "20" + }, + { + "begin": 264, + "end": 282, + "name": "ADD" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "0" + }, + { + "begin": 264, + "end": 282, + "name": "KECCAK256" + }, + { + "begin": 264, + "end": 294, + "name": "DUP2" + }, + { + "begin": 264, + "end": 294, + "name": "SWAP1" + }, + { + "begin": 264, + "end": 294, + "name": "SSTORE" + }, + { + "begin": 264, + "end": 294, + "name": "POP" + }, + { + "begin": 200, + "end": 299, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 719, + "end": 819, + "name": "tag", + "value": "12" + }, + { + "begin": 719, + "end": 819, + "name": "JUMPDEST" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "1" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "0" + }, + { + "begin": 369, + "end": 374, + "name": "SWAP1" + }, + { + "begin": 369, + "end": 374, + "name": "SLOAD" + }, + { + "begin": 369, + "end": 374, + "name": "SWAP1" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "100" + }, + { + "begin": 369, + "end": 374, + "name": "EXP" + }, + { + "begin": 369, + "end": 374, + "name": "SWAP1" + }, + { + "begin": 369, + "end": 374, + "name": "DIV" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 369, + "end": 374, + "name": "AND" + }, + { + "begin": 355, + "end": 374, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 355, + "end": 374, + "name": "AND" + }, + { + "begin": 355, + "end": 365, + "name": "CALLER" + }, + { + "begin": 355, + "end": 374, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 355, + "end": 374, + "name": "AND" + }, + { + "begin": 355, + "end": 374, + "name": "EQ" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 333, + "end": 425, + "name": "JUMPI" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "40" + }, + { + "begin": 333, + "end": 425, + "name": "MLOAD" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "4" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "20" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP3" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "SUB" + }, + { + "begin": 333, + "end": 425, + "name": "DUP3" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "17" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "20" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "POP" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "20" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "SWAP2" + }, + { + "begin": 333, + "end": 425, + "name": "POP" + }, + { + "begin": 333, + "end": 425, + "name": "POP" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "40" + }, + { + "begin": 333, + "end": 425, + "name": "MLOAD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "SWAP2" + }, + { + "begin": 333, + "end": 425, + "name": "SUB" + }, + { + "begin": 333, + "end": 425, + "name": "SWAP1" + }, + { + "begin": 333, + "end": 425, + "name": "REVERT" + }, + { + "begin": 333, + "end": 425, + "name": "tag", + "value": "28" + }, + { + "begin": 333, + "end": 425, + "name": "JUMPDEST" + }, + { + "begin": 772, + "end": 782, + "name": "CALLER" + }, + { + "begin": 772, + "end": 791, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 772, + "end": 791, + "name": "AND" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 800, + "end": 804, + "name": "ADDRESS" + }, + { + "begin": 792, + "end": 813, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 792, + "end": 813, + "name": "AND" + }, + { + "begin": 792, + "end": 813, + "name": "BALANCE" + }, + { + "begin": 772, + "end": 814, + "name": "SWAP1" + }, + { + "begin": 772, + "end": 814, + "name": "DUP2" + }, + { + "begin": 772, + "end": 814, + "name": "ISZERO" + }, + { + "begin": 772, + "end": 814, + "name": "MUL" + }, + { + "begin": 772, + "end": 814, + "name": "SWAP1" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "40" + }, + { + "begin": 772, + "end": 814, + "name": "MLOAD" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "0" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "40" + }, + { + "begin": 772, + "end": 814, + "name": "MLOAD" + }, + { + "begin": 772, + "end": 814, + "name": "DUP1" + }, + { + "begin": 772, + "end": 814, + "name": "DUP4" + }, + { + "begin": 772, + "end": 814, + "name": "SUB" + }, + { + "begin": 772, + "end": 814, + "name": "DUP2" + }, + { + "begin": 772, + "end": 814, + "name": "DUP6" + }, + { + "begin": 772, + "end": 814, + "name": "DUP9" + }, + { + "begin": 772, + "end": 814, + "name": "DUP9" + }, + { + "begin": 772, + "end": 814, + "name": "CALL" + }, + { + "begin": 772, + "end": 814, + "name": "SWAP4" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "30" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "30" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 719, + "end": 819, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 146, + "end": 174, + "name": "tag", + "value": "15" + }, + { + "begin": 146, + "end": 174, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "1" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "0" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "SLOAD" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "100" + }, + { + "begin": 146, + "end": 174, + "name": "EXP" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "DIV" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 146, + "end": 174, + "name": "AND" + }, + { + "begin": 146, + "end": 174, + "name": "DUP2" + }, + { + "begin": 146, + "end": 174, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 563, + "end": 715, + "name": "tag", + "value": "19" + }, + { + "begin": 563, + "end": 715, + "name": "JUMPDEST" + }, + { + "begin": 660, + "end": 661, + "name": "PUSH", + "value": "0" + }, + { + "begin": 635, + "end": 646, + "name": "DUP1" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "0" + }, + { + "begin": 647, + "end": 656, + "name": "DUP4" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 635, + "end": 657, + "name": "AND" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 635, + "end": 657, + "name": "AND" + }, + { + "begin": 635, + "end": 657, + "name": "DUP2" + }, + { + "begin": 635, + "end": 657, + "name": "MSTORE" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "20" + }, + { + "begin": 635, + "end": 657, + "name": "ADD" + }, + { + "begin": 635, + "end": 657, + "name": "SWAP1" + }, + { + "begin": 635, + "end": 657, + "name": "DUP2" + }, + { + "begin": 635, + "end": 657, + "name": "MSTORE" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "20" + }, + { + "begin": 635, + "end": 657, + "name": "ADD" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "0" + }, + { + "begin": 635, + "end": 657, + "name": "KECCAK256" + }, + { + "begin": 635, + "end": 657, + "name": "SLOAD" + }, + { + "begin": 635, + "end": 661, + "name": "GT" + }, + { + "begin": 627, + "end": 662, + "name": "PUSH [tag]", + "value": "32" + }, + { + "begin": 627, + "end": 662, + "name": "JUMPI" + }, + { + "begin": 627, + "end": 662, + "name": "PUSH", + "value": "0" + }, + { + "begin": 627, + "end": 662, + "name": "DUP1" + }, + { + "begin": 627, + "end": 662, + "name": "REVERT" + }, + { + "begin": 627, + "end": 662, + "name": "tag", + "value": "32" + }, + { + "begin": 627, + "end": 662, + "name": "JUMPDEST" + }, + { + "begin": 668, + "end": 677, + "name": "DUP1" + }, + { + "begin": 668, + "end": 686, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 668, + "end": 686, + "name": "AND" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 687, + "end": 698, + "name": "PUSH", + "value": "0" + }, + { + "begin": 687, + "end": 709, + "name": "DUP1" + }, + { + "begin": 699, + "end": 708, + "name": "DUP5" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 687, + "end": 709, + "name": "AND" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 687, + "end": 709, + "name": "AND" + }, + { + "begin": 687, + "end": 709, + "name": "DUP2" + }, + { + "begin": 687, + "end": 709, + "name": "MSTORE" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "20" + }, + { + "begin": 687, + "end": 709, + "name": "ADD" + }, + { + "begin": 687, + "end": 709, + "name": "SWAP1" + }, + { + "begin": 687, + "end": 709, + "name": "DUP2" + }, + { + "begin": 687, + "end": 709, + "name": "MSTORE" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "20" + }, + { + "begin": 687, + "end": 709, + "name": "ADD" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "0" + }, + { + "begin": 687, + "end": 709, + "name": "KECCAK256" + }, + { + "begin": 687, + "end": 709, + "name": "SLOAD" + }, + { + "begin": 668, + "end": 710, + "name": "SWAP1" + }, + { + "begin": 668, + "end": 710, + "name": "DUP2" + }, + { + "begin": 668, + "end": 710, + "name": "ISZERO" + }, + { + "begin": 668, + "end": 710, + "name": "MUL" + }, + { + "begin": 668, + "end": 710, + "name": "SWAP1" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "40" + }, + { + "begin": 668, + "end": 710, + "name": "MLOAD" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "0" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "40" + }, + { + "begin": 668, + "end": 710, + "name": "MLOAD" + }, + { + "begin": 668, + "end": 710, + "name": "DUP1" + }, + { + "begin": 668, + "end": 710, + "name": "DUP4" + }, + { + "begin": 668, + "end": 710, + "name": "SUB" + }, + { + "begin": 668, + "end": 710, + "name": "DUP2" + }, + { + "begin": 668, + "end": 710, + "name": "DUP6" + }, + { + "begin": 668, + "end": 710, + "name": "DUP9" + }, + { + "begin": 668, + "end": 710, + "name": "DUP9" + }, + { + "begin": 668, + "end": 710, + "name": "CALL" + }, + { + "begin": 668, + "end": 710, + "name": "SWAP4" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "33" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "33" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 449, + "end": 559, + "name": "tag", + "value": "21" + }, + { + "begin": 449, + "end": 559, + "name": "JUMPDEST" + }, + { + "begin": 516, + "end": 554, + "name": "PUSH [tag]", + "value": "35" + }, + { + "begin": 544, + "end": 553, + "name": "CALLVALUE" + }, + { + "begin": 516, + "end": 527, + "name": "PUSH", + "value": "0" + }, + { + "begin": 516, + "end": 539, + "name": "DUP1" + }, + { + "begin": 528, + "end": 538, + "name": "CALLER" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 516, + "end": 539, + "name": "AND" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 516, + "end": 539, + "name": "AND" + }, + { + "begin": 516, + "end": 539, + "name": "DUP2" + }, + { + "begin": 516, + "end": 539, + "name": "MSTORE" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "20" + }, + { + "begin": 516, + "end": 539, + "name": "ADD" + }, + { + "begin": 516, + "end": 539, + "name": "SWAP1" + }, + { + "begin": 516, + "end": 539, + "name": "DUP2" + }, + { + "begin": 516, + "end": 539, + "name": "MSTORE" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "20" + }, + { + "begin": 516, + "end": 539, + "name": "ADD" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "0" + }, + { + "begin": 516, + "end": 539, + "name": "KECCAK256" + }, + { + "begin": 516, + "end": 539, + "name": "SLOAD" + }, + { + "begin": 516, + "end": 543, + "name": "PUSH [tag]", + "value": "36" + }, + { + "begin": 516, + "end": 543, + "name": "SWAP1" + }, + { + "begin": 516, + "end": 554, + "name": "SWAP2" + }, + { + "begin": 516, + "end": 554, + "name": "SWAP1" + }, + { + "begin": 516, + "end": 554, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 516, + "end": 554, + "name": "AND" + }, + { + "begin": 516, + "end": 554, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 516, + "end": 554, + "name": "tag", + "value": "35" + }, + { + "begin": 516, + "end": 554, + "name": "JUMPDEST" + }, + { + "begin": 490, + "end": 501, + "name": "PUSH", + "value": "0" + }, + { + "begin": 490, + "end": 513, + "name": "DUP1" + }, + { + "begin": 502, + "end": 512, + "name": "CALLER" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 490, + "end": 513, + "name": "AND" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 490, + "end": 513, + "name": "AND" + }, + { + "begin": 490, + "end": 513, + "name": "DUP2" + }, + { + "begin": 490, + "end": 513, + "name": "MSTORE" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "20" + }, + { + "begin": 490, + "end": 513, + "name": "ADD" + }, + { + "begin": 490, + "end": 513, + "name": "SWAP1" + }, + { + "begin": 490, + "end": 513, + "name": "DUP2" + }, + { + "begin": 490, + "end": 513, + "name": "MSTORE" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "20" + }, + { + "begin": 490, + "end": 513, + "name": "ADD" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "0" + }, + { + "begin": 490, + "end": 513, + "name": "KECCAK256" + }, + { + "begin": 490, + "end": 554, + "name": "DUP2" + }, + { + "begin": 490, + "end": 554, + "name": "SWAP1" + }, + { + "begin": 490, + "end": 554, + "name": "SSTORE" + }, + { + "begin": 490, + "end": 554, + "name": "POP" + }, + { + "begin": 449, + "end": 559, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 823, + "end": 935, + "name": "tag", + "value": "25" + }, + { + "begin": 823, + "end": 935, + "name": "JUMPDEST" + }, + { + "begin": 889, + "end": 893, + "name": "PUSH", + "value": "0" + }, + { + "begin": 908, + "end": 919, + "name": "DUP1" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "0" + }, + { + "begin": 920, + "end": 929, + "name": "DUP4" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 908, + "end": 930, + "name": "AND" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 908, + "end": 930, + "name": "AND" + }, + { + "begin": 908, + "end": 930, + "name": "DUP2" + }, + { + "begin": 908, + "end": 930, + "name": "MSTORE" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "20" + }, + { + "begin": 908, + "end": 930, + "name": "ADD" + }, + { + "begin": 908, + "end": 930, + "name": "SWAP1" + }, + { + "begin": 908, + "end": 930, + "name": "DUP2" + }, + { + "begin": 908, + "end": 930, + "name": "MSTORE" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "20" + }, + { + "begin": 908, + "end": 930, + "name": "ADD" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "0" + }, + { + "begin": 908, + "end": 930, + "name": "KECCAK256" + }, + { + "begin": 908, + "end": 930, + "name": "SLOAD" + }, + { + "begin": 901, + "end": 930, + "name": "SWAP1" + }, + { + "begin": 901, + "end": 930, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 834, + "end": 1010, + "name": "tag", + "value": "36" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMPDEST" + }, + { + "begin": 892, + "end": 899, + "name": "PUSH", + "value": "0" + }, + { + "begin": 911, + "end": 920, + "name": "DUP1" + }, + { + "begin": 927, + "end": 928, + "name": "DUP3" + }, + { + "begin": 923, + "end": 924, + "name": "DUP5" + }, + { + "begin": 923, + "end": 928, + "name": "ADD" + }, + { + "begin": 911, + "end": 928, + "name": "SWAP1" + }, + { + "begin": 911, + "end": 928, + "name": "POP" + }, + { + "begin": 951, + "end": 952, + "name": "DUP4" + }, + { + "begin": 946, + "end": 947, + "name": "DUP2" + }, + { + "begin": 946, + "end": 952, + "name": "LT" + }, + { + "begin": 946, + "end": 952, + "name": "ISZERO" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH [tag]", + "value": "39" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPI" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "4" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "1B" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP1" + }, + { + "begin": 938, + "end": 984, + "name": "REVERT" + }, + { + "begin": 938, + "end": 984, + "name": "tag", + "value": "39" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPDEST" + }, + { + "begin": 1002, + "end": 1003, + "name": "DUP1" + }, + { + "begin": 995, + "end": 1003, + "name": "SWAP2" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP3" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP2" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "Fal1out()": "6fab5ddf", + "allocate()": "abaa9916", + "allocatorBalance(address)": "ffd40b56", + "collectAllocations()": "8aa96f38", + "owner()": "8da5cb5b", + "sendAllocation(address)": "a2dea26f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.5.12+commit.7709ece9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0x3e98b9d316e26b66db2ad8a57532a58f4c1c352f87859863d719cea4164b719d\",\"urls\":[\"bzz-raw://e6c562e74cc92f8e7487768f0a534cf591f04d21b4d40a285b35fc5267562af3\",\"dweb:/ipfs/QmafXnUVPwjfwcQoYmMkChGQzPgfeSuqLHp81kkZBqn7jq\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/src/utils/template.ts b/src/utils/template.ts new file mode 100644 index 0000000000..78ed582dab --- /dev/null +++ b/src/utils/template.ts @@ -0,0 +1,122 @@ +import { FunctionDocumentation, TemplateDoc, MethodDoc, ContractDoc, ContractDocumentation, ParameterDocumentation } from "./types" +type HTMLContent = string + +export const htmlTemplate = (content: HTMLContent) => ` + + + + + + + + + ${content} + + +` + +export const template = (name: string, contractDoc: ContractDocumentation, functions: FunctionDocumentation[]) => ` + + +
+ + ${functions.length == 0 ? "No contract to display" : renderHeader(name, contractDoc)} + + ${functions.map((item) => ` +
${item.name} - ${item.type}
+
+ ${renderParameterDocumentation(item.inputs)} + + ${getMethodDetails(item.devdoc)} + +

Returns:

+ + ${renderParameterDocumentation(item.outputs)} + + `).join('\n')} + +
+` + +// const contractDocTemplate: TemplateDoc = { +// author: (author: string) => '',//`Author: ${author}`, +// details: (details: string) => `

${details}

`, +// title: (title: string) => { +// return title ? +// `${title}` +// : '' +// }, +// notice: (notice: string) => `

${notice}

`, +// methods: () => '' // Methods is managed by getMethod() +// } +const devMethodDocTemplate: Partial> = { + author: (author: string) => `

Created By ${author}

`, + details: (details: string) => `

${details}

`, + return: (value: string) => `

Return : ${value}

`, + notice: (notice: string) => `

${notice}

`, + // returns: () => '', // Implemented by getParams() + params: () => '' // Implemented by getParams() +} + +export const renderHeader = (name: string, contractDoc: ContractDocumentation) => ` +

${name} ${contractDoc.title ? `: ${contractDoc.title}` : ''}

+ + ${contractDoc.notice ? `

${contractDoc.notice}

` : ''} + + ${contractDoc.author ? `

Author: ${contractDoc.author}

` : ''} + +

Functions

+` + +export const renderParameterDocumentation = (parameters: ParameterDocumentation[]) => ` + ${parameters.length > 0 ? ` + + + + + + + + + + ${parameters.map((output) => (` + + + + `))} + +
NameTypeDescription
${output.name}${output.type}${output.description}
` : + '

No parameters

'} +` + +export const getMethodDetails = (devMethod?: Partial) => { + return !devMethod + ? '

**Add Documentation for the method here**

' + : Object.keys(devMethod) + .filter((key) => key !== 'params') + .map((key) => { + (devMethodDocTemplate as any)[key]((devMethod as any)[key]) + }) + .join('\n') +} diff --git a/src/utils/types.ts b/src/utils/types.ts new file mode 100644 index 0000000000..efcdc3f446 --- /dev/null +++ b/src/utils/types.ts @@ -0,0 +1,36 @@ +import { UserMethodDoc, DevMethodDoc, DeveloperDocumentation, UserDocumentation } from "@remixproject/plugin"; + +export interface MethodsDocumentation { + [x: string]: UserMethodDoc | DevMethodDoc +} + +export interface ContractDocumentation { + methods: MethodsDocumentation; + author: string; + title: string; + details: string; + notice: string; +} + +export type MethodDoc = DevMethodDoc & UserMethodDoc + +export type TemplateDoc = { [key in keyof T]: (...params: any[]) => string } + +// Contract +export type ContractDoc = DeveloperDocumentation & UserDocumentation + +export interface FunctionDocumentation { + name: string + type: string + devdoc?: Partial + inputs: ParameterDocumentation[] + outputs: ParameterDocumentation[] +} + +export interface ParameterDocumentation { + name: string + type: string + description: string +} + +export type HTMLContent = string diff --git a/src/utils/utils.test.ts b/src/utils/utils.test.ts new file mode 100644 index 0000000000..1bce6e3af7 --- /dev/null +++ b/src/utils/utils.test.ts @@ -0,0 +1,93 @@ +const open = require('open') + +import { getContractDoc, mergeParametersWithDevdoc, getFunctionDocumentation, getContractDocumentation } from './utils'; +import { FunctionDescription } from '@remixproject/plugin'; +import { buildFakeArtifactWithComments, buildFakeABIParameter } from './faker' + +jest.setTimeout(10000) + +describe('Publisher tests', () => { + + describe('getContractDocumentation', () => { + test('getContractDocumentation', () => { + const result = getContractDocumentation(buildFakeArtifactWithComments()) + + const result2 = { + methods: + { + 'age(uint256)': + { + author: 'Mary A. Botanist', + details: + 'The Alexandr N. Tetearing algorithm could increase precision', + params: [Object], + return: 'age in years, rounded up for partial years' + } + }, + notice: + 'You can use this contract for only the most basic simulation', + author: 'Larry A. Gardner', + details: + 'All function calls are currently implemented without side effects', + title: 'A simulator for trees' + } + + expect(result).toBeDefined() + }) + }) + + describe('getContractDoc', () => { + test('getContractDoc', () => { + + const template = getContractDoc("Fallout", buildFakeArtifactWithComments()); + + console.log("Template", template) + + expect(template).toBeDefined() + }) + }) + + describe('getFunctionDocumentation', () => { + test('getFunctionDocumentation', () => { + const abiItem: FunctionDescription = { + constant: false, + inputs: [], + name: "Fal1out", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function" + } + + const result = getFunctionDocumentation(abiItem, {}) + + expect(result).toBeDefined() + }) + }) + + describe('mergeParametersWithDevdoc', () => { + test('mergeParametersWithDevdoc', () => { + const abiParameters = [buildFakeABIParameter()] + const devParams = {} + const result = mergeParametersWithDevdoc(abiParameters, devParams) + + expect(result.length).toEqual(1) + }) + + test('mergeParametersWithDevdoc with documentation', () => { + const abiParameters = [buildFakeABIParameter()] + const devParams = {} + const result = mergeParametersWithDevdoc(abiParameters, devParams) + + expect(result.length).toEqual(1) + }) + }) + + + test.skip('html generation', async () => { + await open('https://ipfs.io/ipfs/QmPYQyWyTrUZt3tjiPsEnkRQxedChYUjgEk9zLQ36SfpyW', { app: ['google chrome', '--incognito'] }); + // start server + // generate html + // server it + }) +}) \ No newline at end of file diff --git a/src/utils/utils.ts b/src/utils/utils.ts new file mode 100644 index 0000000000..b9418f697a --- /dev/null +++ b/src/utils/utils.ts @@ -0,0 +1,94 @@ +import { CompilationResult, CompiledContract, FunctionDescription, ABIDescription, DevMethodDoc, UserMethodDoc, ABIParameter, DeveloperDocumentation, UserDocumentation } from "@remixproject/plugin" + +import { EthDocumentation, FileName, Documentation, ContractName } from '../types' +import { template } from './template' +import { ContractDocumentation, MethodDoc, FunctionDocumentation, ParameterDocumentation, MethodsDocumentation } from './types' + +export const createDocumentation = (fileName: FileName, compilationResult: CompilationResult) => { + console.log("Filename", fileName) + const result = new Map(); + + const contracts = compilationResult.contracts[fileName] + console.log("Contracts", contracts) + + Object.keys(contracts).forEach((name) => { + console.log("CompiledContract", JSON.stringify(contracts[name])) + result.set(name, getContractDoc(name, contracts[name])) + }) + + return result +} + +export const getContractDoc = (name: string, contract: CompiledContract) => { + const contractDoc: ContractDocumentation = getContractDocumentation(contract) + + const functionsDocumentation = contract.abi + .map((def: ABIDescription) => { + if (def.type === 'constructor') { + def.name = 'constructor' + // because "constructor" is a string and not a { notice } object for userdoc we need to do that + const methodDoc = { + ...(contract.devdoc.methods.constructor || {}), + notice: contract.userdoc.methods.constructor as string + } + return getFunctionDocumentation(def, methodDoc) + } else { + if (def.type === 'fallback') { + def.name = 'fallback' + } + const method = Object.keys(contractDoc.methods).find((key) => key.includes(def.name as string)) as string + const methodDoc = contractDoc.methods[method] + return getFunctionDocumentation(def as FunctionDescription, methodDoc) + } + }) + + return template(name, contractDoc, functionsDocumentation) +} + +export const getContractDocumentation = (contract: CompiledContract) => { + let methods: MethodsDocumentation = {}; + + Object.keys(contract.userdoc.methods).map((item) => { + if (contract.devdoc.methods[item]) { + const finalResult = { + ...contract.userdoc.methods[item], + ...contract.devdoc.methods[item] + } + methods[item] = finalResult + } else { + methods[item] = contract.userdoc.methods[item] + } + }) + + const contractDoc = { ...contract.userdoc, ...contract.devdoc, methods } + + return contractDoc +} + +export const getFunctionDocumentation = (def: FunctionDescription, devdoc?: Partial) => { + const doc = devdoc || {} + const devparams = doc.params || {} + const inputsWithDescription = mergeParametersWithDevdoc(def.inputs || [], devparams) + const outputsWithDescription = mergeParametersWithDevdoc(def.outputs || [], devparams) + const type = def.constant ? 'view' : 'read' + + return { + name: def.name, + type, + devdoc: devdoc, + inputs: inputsWithDescription, + outputs: outputsWithDescription + } as FunctionDocumentation +} + +export const mergeParametersWithDevdoc = (params: ABIParameter[], devparams: any) => { + return params.map((input) => { + const description = devparams[input.name] || '' + return { + name: input.name, + type: input.type, + description + } as ParameterDocumentation + }) +} + diff --git a/src/views/ErrorView.tsx b/src/views/ErrorView.tsx new file mode 100644 index 0000000000..e943b17f15 --- /dev/null +++ b/src/views/ErrorView.tsx @@ -0,0 +1,31 @@ +import React from "react" + +export const ErrorView: React.FC = () => { + return ( +
+ Error page +
Sorry, something unexpected happened.
+
+ Please raise an issue:{" "} + + Here + +
+
+ ) +} diff --git a/src/views/HomeView.tsx b/src/views/HomeView.tsx new file mode 100644 index 0000000000..059bd092e0 --- /dev/null +++ b/src/views/HomeView.tsx @@ -0,0 +1,128 @@ +import React, { useState, useEffect } from "react" +import { AppContext } from "../AppContext" +import { ContractName, Documentation } from "../types" +import { publish } from '../utils' +import { htmlTemplate } from "../utils/template" + +export const HomeView: React.FC = () => { + const [activeItem, setActiveItem] = useState("") + const [isPublishing, setIsPublishing] = useState(false) + const [htmlDocumentation, setHtmlDocumentation] = useState("") + + useEffect(() => { + async function publishDocumentation() { + try { + + const hash = await publish(htmlDocumentation) + console.log("Hash", hash) + setIsPublishing(false) + + const url = `https://ipfs.io/ipfs/${hash}`; + + window.open(url); + + } catch (error) { + setIsPublishing(false) + } + } + + if (isPublishing) { + publishDocumentation() + } + + }, [isPublishing]) + + + const displayDocumentation = (client: any, contractName: ContractName, documentation: Documentation) => { + + console.log("Display Documentation", contractName, documentation) + + client.emit('documentation-generated', documentation) + } + + return ( + + {({ clientInstance, contracts, setContracts }) => +
+ {[...contracts.keys()].length === 0 && +

Compile a contract with Solidity Compiler

+ } + + {[...contracts.keys()].length > 0 && +
+
+ {[...contracts.keys()].map((item) => { + const documentation = contracts.get(item) as string; + return ( + + ) + })} +
+
+ +
+
+ {activeItem !== "" && + { + console.log("Is publishing") + setIsPublishing(true); + }} />} +
+
} +
+ } +
+ ) +} + +interface PublishButtonProps { + isPublishing: boolean + onClick: any +} + +export const PublishButton: React.FC = ({ isPublishing, onClick }) => { + return () +} + +// +// +// diff --git a/src/views/index.ts b/src/views/index.ts new file mode 100644 index 0000000000..1f487c9455 --- /dev/null +++ b/src/views/index.ts @@ -0,0 +1,2 @@ +export { HomeView } from "./HomeView" +export { ErrorView } from "./ErrorView" diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000000..0d36c4819f --- /dev/null +++ b/tslint.json @@ -0,0 +1,16 @@ +{ + "extends": [ + "tslint:recommended", + "tslint-react", + "tslint-config-prettier" + ], + "rulesDirectory": [ + "tslint-plugin-prettier" + ], + "rules": { + "prettier": true, + "interface-name": false, + "no-console": false, + "jsx-no-lambda": false + } + } \ No newline at end of file From a51002a5271cb22143a319af67e11a2bf4cb4f54 Mon Sep 17 00:00:00 2001 From: Solid Studio Date: Sat, 4 Jul 2020 09:44:41 +0100 Subject: [PATCH 14/72] prettier --- src/App.tsx | 124 +++++++++++--------- src/AppContext.tsx | 20 ++-- src/hooks/useLocalStorage.tsx | 24 ++-- src/index.tsx | 12 +- src/routes.tsx | 49 ++++---- src/utils/faker.ts | 42 +++---- src/utils/index.ts | 4 +- src/utils/publisher.test.ts | 36 +++--- src/utils/publisher.ts | 17 ++- src/utils/template.ts | 103 ++++++++++------ src/utils/types.ts | 43 ++++--- src/utils/utils.test.ts | 192 +++++++++++++++--------------- src/utils/utils.ts | 214 ++++++++++++++++++++-------------- src/views/ErrorView.tsx | 13 +-- src/views/HomeView.tsx | 170 +++++++++++++++------------ src/views/index.ts | 4 +- 16 files changed, 595 insertions(+), 472 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 145dbbaa5b..c58fd86f2a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,71 +1,88 @@ -import React, { useState, useEffect, useRef } from "react" +import React, { useState, useEffect, useRef } from "react"; import { createIframeClient, CompilationFileSources, CompilationResult, - Status -} from "@remixproject/plugin" + Status, +} from "@remixproject/plugin"; -import { AppContext } from "./AppContext" -import { Routes } from "./routes" -import { useLocalStorage } from "./hooks/useLocalStorage" -import { createDocumentation } from "./utils/utils" +import { AppContext } from "./AppContext"; +import { Routes } from "./routes"; +import { useLocalStorage } from "./hooks/useLocalStorage"; +import { createDocumentation } from "./utils/utils"; -import "./App.css" -import { ContractName, Documentation } from "./types" +import "./App.css"; +import { ContractName, Documentation } from "./types"; -const devMode = { port: 8080 } +const devMode = { port: 8080 }; export const getNewContractNames = (compilationResult: CompilationResult) => { - const compiledContracts = compilationResult.contracts - let result: string[] = [] + const compiledContracts = compilationResult.contracts; + let result: string[] = []; for (const file of Object.keys(compiledContracts)) { - const newContractNames = Object.keys(compiledContracts[file]) - result = [...result, ...newContractNames] + const newContractNames = Object.keys(compiledContracts[file]); + result = [...result, ...newContractNames]; } - return result -} + return result; +}; -const sampleMap = new Map() +const sampleMap = new Map(); const App = () => { - const [clientInstance, setClientInstance] = useState(undefined as any) - const [contracts, setContracts] = useState(sampleMap) - const [sites, setSites] = useLocalStorage('sites', []) - const clientInstanceRef = useRef(clientInstance) - clientInstanceRef.current = clientInstance - const contractsRef = useRef(contracts) - contractsRef.current = contracts + const [clientInstance, setClientInstance] = useState(undefined as any); + const [contracts, setContracts] = useState(sampleMap); + const [sites, setSites] = useLocalStorage("sites", []); + const clientInstanceRef = useRef(clientInstance); + clientInstanceRef.current = clientInstance; + const contractsRef = useRef(contracts); + contractsRef.current = contracts; useEffect(() => { - console.log("Remix EthDoc loading...") - const client = createIframeClient({ devMode }) + console.log("Remix EthDoc loading..."); + const client = createIframeClient({ devMode }); const loadClient = async () => { - await client.onload() - setClientInstance(client) - console.log("Remix EthDoc Plugin has been loaded") - - client.solidity.on("compilationFinished", (fileName: string, source: CompilationFileSources, languageVersion: string, data: CompilationResult) => { - console.log("New compilation received") - - const existingMap = contractsRef.current; - const newContractsMapWithDocumentation = createDocumentation(fileName, data) - const newMap = new Map([...existingMap, ...newContractsMapWithDocumentation]) - - console.log("New Map", newMap) - - const status: Status = { key: 'succeed', type: 'success', title: 'New documentation ready' } - clientInstanceRef.current.emit('statusChanged', status) - setContracts(newMap) - }) - } - - loadClient() - }, []) - + await client.onload(); + setClientInstance(client); + console.log("Remix EthDoc Plugin has been loaded"); + + client.solidity.on( + "compilationFinished", + ( + fileName: string, + source: CompilationFileSources, + languageVersion: string, + data: CompilationResult + ) => { + console.log("New compilation received"); + + const existingMap = contractsRef.current; + const newContractsMapWithDocumentation = createDocumentation( + fileName, + data + ); + const newMap = new Map([ + ...existingMap, + ...newContractsMapWithDocumentation, + ]); + + console.log("New Map", newMap); + + const status: Status = { + key: "succeed", + type: "success", + title: "New documentation ready", + }; + clientInstanceRef.current.emit("statusChanged", status); + setContracts(newMap); + } + ); + }; + + loadClient(); + }, []); return ( { contracts, setContracts, sites, - setSites - }}> + setSites, + }} + > - ) -} + ); +}; -export default App +export default App; diff --git a/src/AppContext.tsx b/src/AppContext.tsx index 68e626433a..c243fa5103 100644 --- a/src/AppContext.tsx +++ b/src/AppContext.tsx @@ -1,17 +1,23 @@ -import React from "react" -import { PluginApi, IRemixApi, Api, PluginClient, CompilationResult } from "@remixproject/plugin" +import React from "react"; +import { + PluginApi, + IRemixApi, + Api, + PluginClient, + CompilationResult, +} from "@remixproject/plugin"; -import { ContractName, Documentation, PublishedSite } from "./types" +import { ContractName, Documentation, PublishedSite } from "./types"; export const AppContext = React.createContext({ clientInstance: {} as PluginApi> & PluginClient>, contracts: new Map(), setContracts: (contracts: Map) => { - console.log("Calling Set Contract Names") + console.log("Calling Set Contract Names"); }, sites: [], setSites: (sites: PublishedSite[]) => { - console.log("Calling Set Sites") - } -}) + console.log("Calling Set Sites"); + }, +}); diff --git a/src/hooks/useLocalStorage.tsx b/src/hooks/useLocalStorage.tsx index cca4a83a72..d677de7813 100644 --- a/src/hooks/useLocalStorage.tsx +++ b/src/hooks/useLocalStorage.tsx @@ -1,4 +1,4 @@ -import { useState } from "react" +import { useState } from "react"; export function useLocalStorage(key: string, initialValue: any) { // State to store our value @@ -6,15 +6,15 @@ export function useLocalStorage(key: string, initialValue: any) { const [storedValue, setStoredValue] = useState(() => { try { // Get from local storage by key - const item = window.localStorage.getItem(key) + const item = window.localStorage.getItem(key); // Parse stored json or if none return initialValue - return item ? JSON.parse(item) : initialValue + return item ? JSON.parse(item) : initialValue; } catch (error) { // If error also return initialValue - console.log(error) - return initialValue + console.log(error); + return initialValue; } - }) + }); // Return a wrapped version of useState's setter function that ... // ... persists the new value to localStorage. @@ -22,16 +22,16 @@ export function useLocalStorage(key: string, initialValue: any) { try { // Allow value to be a function so we have same API as useState const valueToStore = - value instanceof Function ? value(storedValue) : value + value instanceof Function ? value(storedValue) : value; // Save state - setStoredValue(valueToStore) + setStoredValue(valueToStore); // Save to local storage - window.localStorage.setItem(key, JSON.stringify(valueToStore)) + window.localStorage.setItem(key, JSON.stringify(valueToStore)); } catch (error) { // A more advanced implementation would handle the error case - console.log(error) + console.log(error); } - } + }; - return [storedValue, setValue] + return [storedValue, setValue]; } diff --git a/src/index.tsx b/src/index.tsx index fd29146ba3..e0434dd0ac 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,11 +1,11 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './App'; -import { Routes } from './routes' +import React from "react"; +import ReactDOM from "react-dom"; +import App from "./App"; +import { Routes } from "./routes"; ReactDOM.render( , - document.getElementById('root') -); \ No newline at end of file + document.getElementById("root") +); diff --git a/src/routes.tsx b/src/routes.tsx index fa47e5582e..8fad895972 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -1,36 +1,31 @@ -import React from "react" +import React from "react"; import { - BrowserRouter as Router, - Switch, - Route, - RouteProps, -} from "react-router-dom" + BrowserRouter as Router, + Switch, + Route, + RouteProps, +} from "react-router-dom"; -import { ErrorView, HomeView } from "./views" +import { ErrorView, HomeView } from "./views"; interface Props extends RouteProps { - component: any // TODO: new (props: any) => React.Component - from: string + component: any; // TODO: new (props: any) => React.Component + from: string; } const CustomRoute = ({ component: Component, ...rest }: Props) => { - return ( - ( - - )} - /> - ) -} + return ( + } /> + ); +}; export const Routes = () => ( - - - - - - - - -) + + + + + + + + +); diff --git a/src/utils/faker.ts b/src/utils/faker.ts index adf2876370..bd0df7fd5d 100644 --- a/src/utils/faker.ts +++ b/src/utils/faker.ts @@ -1,30 +1,30 @@ -import { CompiledContract, ABIParameter } from '@remixproject/plugin' +import { CompiledContract, ABIParameter } from "@remixproject/plugin"; -import sampleData from './sample-data/sample-artifact.json' -import sampleDataWithComments from './sample-data/sample-artifact-with-comments.json' +import sampleData from "./sample-data/sample-artifact.json"; +import sampleDataWithComments from "./sample-data/sample-artifact-with-comments.json"; export const buildFakeArtifact: () => CompiledContract = () => { - const result = sampleData as never as CompiledContract - return result -} + const result = (sampleData as never) as CompiledContract; + return result; +}; export const buildFakeArtifactWithComments: () => CompiledContract = () => { - const result = sampleDataWithComments as never as CompiledContract - return result -} + const result = (sampleDataWithComments as never) as CompiledContract; + return result; +}; export const buildFakeABIParameter: () => ABIParameter = () => { - return { - internalType: "address", - name: "allocator", - type: "address" - } -} + return { + internalType: "address", + name: "allocator", + type: "address", + }; +}; export const buildFakeABIParameterWithDocumentation: () => ABIParameter = () => { - return { - internalType: "address", - name: "allocator", - type: "address" - } -} \ No newline at end of file + return { + internalType: "address", + name: "allocator", + type: "address", + }; +}; diff --git a/src/utils/index.ts b/src/utils/index.ts index de804ef3f9..2648b019f2 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,2 +1,2 @@ -export * from './utils' -export * from './publisher' \ No newline at end of file +export * from "./utils"; +export * from "./publisher"; diff --git a/src/utils/publisher.test.ts b/src/utils/publisher.test.ts index 4a5e9f1b7a..25a76b8d08 100644 --- a/src/utils/publisher.test.ts +++ b/src/utils/publisher.test.ts @@ -1,19 +1,19 @@ -import { publish } from './publisher'; +import { publish } from "./publisher"; -const open = require('open') +// tslint:disable-next-line +const open = require("open"); -jest.setTimeout(10000) +jest.setTimeout(10000); -describe('Publisher tests', () => { +describe("Publisher tests", () => { + test("it can publish", async () => { + const result = await publish("hello 123"); - test('it can publish', async () => { - const result = await publish("hello 123") + expect(result).toBeDefined(); + }); - expect(result).toBeDefined() - }) - - test('it can publish html', async () => { - const result = await publish(` + test("it can publish html", async () => { + const result = await publish(` @@ -27,14 +27,14 @@ describe('Publisher tests', () => {
Content custom
- `) + `); - // Uncomment for testing + // Uncomment for testing - // const url = `https://ipfs.io/ipfs/${result}`; + // const url = `https://ipfs.io/ipfs/${result}`; - // await open(url, { app: ['google chrome', '--incognito'] }); + // await open(url, { app: ['google chrome', '--incognito'] }); - expect(result).toBeDefined() - }) -}) + expect(result).toBeDefined(); + }); +}); diff --git a/src/utils/publisher.ts b/src/utils/publisher.ts index d15bacab64..07cc6c98ca 100644 --- a/src/utils/publisher.ts +++ b/src/utils/publisher.ts @@ -1,13 +1,18 @@ import { HTMLContent } from "./types"; -const IpfsClient = require('ipfs-mini') +// tslint:disable-next-line +const IpfsClient = require("ipfs-mini"); export const publish = async (content: HTMLContent) => { - const ipfs = new IpfsClient({ host: 'ipfs.infura.io', port: 5001, protocol: 'https' }); + const ipfs = new IpfsClient({ + host: "ipfs.infura.io", + port: 5001, + protocol: "https", + }); - const documentHash = await ipfs.add(content) + const documentHash = await ipfs.add(content); - console.log("Document hash", documentHash) + console.log("Document hash", documentHash); - return documentHash -} + return documentHash; +}; diff --git a/src/utils/template.ts b/src/utils/template.ts index 78ed582dab..aaeedfe57c 100644 --- a/src/utils/template.ts +++ b/src/utils/template.ts @@ -1,5 +1,12 @@ -import { FunctionDocumentation, TemplateDoc, MethodDoc, ContractDoc, ContractDocumentation, ParameterDocumentation } from "./types" -type HTMLContent = string +import { + FunctionDocumentation, + TemplateDoc, + MethodDoc, + ContractDoc, + ContractDocumentation, + ParameterDocumentation, +} from "./types"; +type HTMLContent = string; export const htmlTemplate = (content: HTMLContent) => ` @@ -16,9 +23,13 @@ export const htmlTemplate = (content: HTMLContent) => ` ${content} -` +`; -export const template = (name: string, contractDoc: ContractDocumentation, functions: FunctionDocumentation[]) => ` +export const template = ( + name: string, + contractDoc: ContractDocumentation, + functions: FunctionDocumentation[] +) => ` - - Remix Plugin - - - - -
- - - diff --git a/apps/remixdocgen/public/logo192.png b/apps/remixdocgen/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/apps/remixdocgen/public/manifest.json b/apps/remixdocgen/public/manifest.json deleted file mode 100644 index 080d6c77ac..0000000000 --- a/apps/remixdocgen/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/apps/remixdocgen/public/robots.txt b/apps/remixdocgen/public/robots.txt deleted file mode 100644 index e9e57dc4d4..0000000000 --- a/apps/remixdocgen/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/apps/remixdocgen/public/favicon.ico b/apps/remixdocgen/src/favicon.ico similarity index 100% rename from apps/remixdocgen/public/favicon.ico rename to apps/remixdocgen/src/favicon.ico diff --git a/apps/remixdocgen/src/index.html b/apps/remixdocgen/src/index.html new file mode 100644 index 0000000000..7d7781859d --- /dev/null +++ b/apps/remixdocgen/src/index.html @@ -0,0 +1,14 @@ + + + + + Remix Docgen + + + + + + +
+ + diff --git a/apps/remixdocgen/src/index.tsx b/apps/remixdocgen/src/main.tsx similarity index 100% rename from apps/remixdocgen/src/index.tsx rename to apps/remixdocgen/src/main.tsx diff --git a/apps/remixdocgen/src/utils/faker.ts b/apps/remixdocgen/src/utils/faker.ts deleted file mode 100644 index 162bc32776..0000000000 --- a/apps/remixdocgen/src/utils/faker.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CompiledContract, ABIParameter } from "@remixproject/plugin-api/lib/compiler"; - -import sampleData from "./sample-data/sample-artifact.json"; -import sampleDataWithComments from "./sample-data/sample-artifact-with-comments.json"; - -export const buildFakeArtifact: () => CompiledContract = () => { - const result = (sampleData as never) as CompiledContract; - return result; -}; - -export const buildFakeArtifactWithComments: () => CompiledContract = () => { - const result = (sampleDataWithComments as never) as CompiledContract; - return result; -}; - -export const buildFakeABIParameter: () => ABIParameter = () => { - return { - internalType: "address", - name: "allocator", - type: "address", - }; -}; - -export const buildFakeABIParameterWithDocumentation: () => ABIParameter = () => { - return { - internalType: "address", - name: "allocator", - type: "address", - }; -}; diff --git a/apps/remixdocgen/src/utils/index.ts b/apps/remixdocgen/src/utils/index.ts deleted file mode 100644 index 2648b019f2..0000000000 --- a/apps/remixdocgen/src/utils/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./utils"; -export * from "./publisher"; diff --git a/apps/remixdocgen/src/utils/publisher.test.ts b/apps/remixdocgen/src/utils/publisher.test.ts deleted file mode 100644 index 25a76b8d08..0000000000 --- a/apps/remixdocgen/src/utils/publisher.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { publish } from "./publisher"; - -// tslint:disable-next-line -const open = require("open"); - -jest.setTimeout(10000); - -describe("Publisher tests", () => { - test("it can publish", async () => { - const result = await publish("hello 123"); - - expect(result).toBeDefined(); - }); - - test("it can publish html", async () => { - const result = await publish(` - - - - - - - -
Content custom
- - - `); - - // Uncomment for testing - - // const url = `https://ipfs.io/ipfs/${result}`; - - // await open(url, { app: ['google chrome', '--incognito'] }); - - expect(result).toBeDefined(); - }); -}); diff --git a/apps/remixdocgen/src/utils/publisher.ts b/apps/remixdocgen/src/utils/publisher.ts deleted file mode 100644 index 07cc6c98ca..0000000000 --- a/apps/remixdocgen/src/utils/publisher.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { HTMLContent } from "./types"; - -// tslint:disable-next-line -const IpfsClient = require("ipfs-mini"); - -export const publish = async (content: HTMLContent) => { - const ipfs = new IpfsClient({ - host: "ipfs.infura.io", - port: 5001, - protocol: "https", - }); - - const documentHash = await ipfs.add(content); - - console.log("Document hash", documentHash); - - return documentHash; -}; diff --git a/apps/remixdocgen/src/utils/sample-data/file.json b/apps/remixdocgen/src/utils/sample-data/file.json deleted file mode 100644 index c784806fa5..0000000000 --- a/apps/remixdocgen/src/utils/sample-data/file.json +++ /dev/null @@ -1,4272 +0,0 @@ -{ - "abi": [ - { - "constant": false, - "inputs": [], - "name": "Fal1out", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "rings", - "type": "uint256" - } - ], - "name": "age", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "allocate", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "allocator", - "type": "address" - } - ], - "name": "allocatorBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "collectAllocations", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address payable", - "name": "allocator", - "type": "address" - } - ], - "name": "sendAllocation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "author": "Mary A. Botanist", - "methods": {} - }, - "evm": { - "bytecode": { - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50610650806100206000396000f3fe6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x650 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F CALLDATACOPY 0xAB TIMESTAMP PUSH23 0xD1AE66DDC30E015934768668C163BCDA4B8E33F7BE1974 0xF7 0x21 0x2E SGT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", - "sourceMap": "148:984:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;148:984:0;;;;;;;" - }, - "deployedBytecode": { - "linkReferences": {}, - "object": "6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F CALLDATACOPY 0xAB TIMESTAMP PUSH23 0xD1AE66DDC30E015934768668C163BCDA4B8E33F7BE1974 0xF7 0x21 0x2E SGT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", - "sourceMap": "148:984:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;548:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;548:88:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;297:99;;;:::i;:::-;;914:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;914:100:0;;;:::i;:::-;;243:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;243:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;758:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;758:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;758:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;644:110;;;:::i;:::-;;1018:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1018:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1018:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:88;599:7;629:1;621:5;:9;614:16;;548:88;;;:::o;297:99::-;345:10;337:5;;:18;;;;;;;;;;;;;;;;;;382:9;361:11;:18;373:5;;;;;;;;;;;361:18;;;;;;;;;;;;;;;:30;;;;297:99::o;914:100::-;466:5;;;;;;;;;;;452:19;;:10;:19;;;430:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;967:10;:19;;:42;987:21;967:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;967:42:0;914:100::o;243:28::-;;;;;;;;;;;;;:::o;758:152::-;855:1;830:11;:22;842:9;830:22;;;;;;;;;;;;;;;;:26;822:35;;;;;;863:9;:18;;:42;882:11;:22;894:9;882:22;;;;;;;;;;;;;;;;863:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;863:42:0;758:152;:::o;644:110::-;711:38;739:9;711:11;:23;723:10;711:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;685:11;:23;697:10;685:23;;;;;;;;;;;;;;;:64;;;;644:110::o;1018:112::-;1084:4;1103:11;:22;1115:9;1103:22;;;;;;;;;;;;;;;;1096:29;;1018:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "323200", - "executionCost": "362", - "totalCost": "323562" - }, - "external": { - "Fal1out()": "41948", - "age(uint256)": "307", - "allocate()": "infinite", - "allocatorBalance(address)": "1262", - "collectAllocations()": "infinite", - "owner()": "1053", - "sendAllocation(address)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "80" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "40" - }, - { - "begin": 148, - "end": 1132, - "name": "MSTORE" - }, - { - "begin": 148, - "end": 1132, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 148, - "end": 1132, - "name": "POP" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH #[$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "0" - }, - { - "begin": 148, - "end": 1132, - "name": "CODECOPY" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "0" - }, - { - "begin": 148, - "end": 1132, - "name": "RETURN" - } - ], - ".data": { - "0": { - ".auxdata": "a265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", - ".code": [ - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "80" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "40" - }, - { - "begin": 148, - "end": 1132, - "name": "MSTORE" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "4" - }, - { - "begin": 148, - "end": 1132, - "name": "CALLDATASIZE" - }, - { - "begin": 148, - "end": 1132, - "name": "LT" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "0" - }, - { - "begin": 148, - "end": 1132, - "name": "CALLDATALOAD" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "E0" - }, - { - "begin": 148, - "end": 1132, - "name": "SHR" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "8DA5CB5B" - }, - { - "begin": 148, - "end": 1132, - "name": "GT" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "9" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "8DA5CB5B" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "5" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "A2DEA26F" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "6" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "ABAA9916" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "7" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "FFD40B56" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "8" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMP" - }, - { - "begin": 148, - "end": 1132, - "name": "tag", - "value": "9" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPDEST" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "6BA61782" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "2" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "6FAB5DDF" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "3" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "8AA96F38" - }, - { - "begin": 148, - "end": 1132, - "name": "EQ" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH [tag]", - "value": "4" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPI" - }, - { - "begin": 148, - "end": 1132, - "name": "tag", - "value": "1" - }, - { - "begin": 148, - "end": 1132, - "name": "JUMPDEST" - }, - { - "begin": 148, - "end": 1132, - "name": "PUSH", - "value": "0" - }, - { - "begin": 148, - "end": 1132, - "name": "DUP1" - }, - { - "begin": 148, - "end": 1132, - "name": "REVERT" - }, - { - "begin": 548, - "end": 636, - "name": "tag", - "value": "2" - }, - { - "begin": 548, - "end": 636, - "name": "JUMPDEST" - }, - { - "begin": 548, - "end": 636, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "10" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "10" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH [tag]", - "value": "11" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH", - "value": "4" - }, - { - "begin": 548, - "end": 636, - "name": "DUP1" - }, - { - "begin": 548, - "end": 636, - "name": "CALLDATASIZE" - }, - { - "begin": 548, - "end": 636, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "12" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "12" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 548, - "end": 636, - "name": "DUP2" - }, - { - "begin": 548, - "end": 636, - "name": "ADD" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP1" - }, - { - "begin": 548, - "end": 636, - "name": "DUP1" - }, - { - "begin": 548, - "end": 636, - "name": "DUP1" - }, - { - "begin": 548, - "end": 636, - "name": "CALLDATALOAD" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP1" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH", - "value": "20" - }, - { - "begin": 548, - "end": 636, - "name": "ADD" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP1" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP3" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP2" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP1" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH [tag]", - "value": "13" - }, - { - "begin": 548, - "end": 636, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 548, - "end": 636, - "name": "tag", - "value": "11" - }, - { - "begin": 548, - "end": 636, - "name": "JUMPDEST" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH", - "value": "40" - }, - { - "begin": 548, - "end": 636, - "name": "MLOAD" - }, - { - "begin": 548, - "end": 636, - "name": "DUP1" - }, - { - "begin": 548, - "end": 636, - "name": "DUP3" - }, - { - "begin": 548, - "end": 636, - "name": "DUP2" - }, - { - "begin": 548, - "end": 636, - "name": "MSTORE" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH", - "value": "20" - }, - { - "begin": 548, - "end": 636, - "name": "ADD" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP2" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "PUSH", - "value": "40" - }, - { - "begin": 548, - "end": 636, - "name": "MLOAD" - }, - { - "begin": 548, - "end": 636, - "name": "DUP1" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP2" - }, - { - "begin": 548, - "end": 636, - "name": "SUB" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP1" - }, - { - "begin": 548, - "end": 636, - "name": "RETURN" - }, - { - "begin": 297, - "end": 396, - "name": "tag", - "value": "3" - }, - { - "begin": 297, - "end": 396, - "name": "JUMPDEST" - }, - { - "begin": 297, - "end": 396, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 297, - "end": 396, - "name": "PUSH [tag]", - "value": "15" - }, - { - "begin": 297, - "end": 396, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 297, - "end": 396, - "name": "tag", - "value": "14" - }, - { - "begin": 297, - "end": 396, - "name": "JUMPDEST" - }, - { - "begin": 297, - "end": 396, - "name": "STOP" - }, - { - "begin": 914, - "end": 1014, - "name": "tag", - "value": "4" - }, - { - "begin": 914, - "end": 1014, - "name": "JUMPDEST" - }, - { - "begin": 914, - "end": 1014, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "16" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "16" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 914, - "end": 1014, - "name": "POP" - }, - { - "begin": 914, - "end": 1014, - "name": "PUSH [tag]", - "value": "17" - }, - { - "begin": 914, - "end": 1014, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 914, - "end": 1014, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 914, - "end": 1014, - "name": "tag", - "value": "17" - }, - { - "begin": 914, - "end": 1014, - "name": "JUMPDEST" - }, - { - "begin": 914, - "end": 1014, - "name": "STOP" - }, - { - "begin": 243, - "end": 271, - "name": "tag", - "value": "5" - }, - { - "begin": 243, - "end": 271, - "name": "JUMPDEST" - }, - { - "begin": 243, - "end": 271, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "19" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "19" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 243, - "end": 271, - "name": "POP" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH [tag]", - "value": "20" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 243, - "end": 271, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 243, - "end": 271, - "name": "tag", - "value": "20" - }, - { - "begin": 243, - "end": 271, - "name": "JUMPDEST" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "40" - }, - { - "begin": 243, - "end": 271, - "name": "MLOAD" - }, - { - "begin": 243, - "end": 271, - "name": "DUP1" - }, - { - "begin": 243, - "end": 271, - "name": "DUP3" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 243, - "end": 271, - "name": "AND" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 243, - "end": 271, - "name": "AND" - }, - { - "begin": 243, - "end": 271, - "name": "DUP2" - }, - { - "begin": 243, - "end": 271, - "name": "MSTORE" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "20" - }, - { - "begin": 243, - "end": 271, - "name": "ADD" - }, - { - "begin": 243, - "end": 271, - "name": "SWAP2" - }, - { - "begin": 243, - "end": 271, - "name": "POP" - }, - { - "begin": 243, - "end": 271, - "name": "POP" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "40" - }, - { - "begin": 243, - "end": 271, - "name": "MLOAD" - }, - { - "begin": 243, - "end": 271, - "name": "DUP1" - }, - { - "begin": 243, - "end": 271, - "name": "SWAP2" - }, - { - "begin": 243, - "end": 271, - "name": "SUB" - }, - { - "begin": 243, - "end": 271, - "name": "SWAP1" - }, - { - "begin": 243, - "end": 271, - "name": "RETURN" - }, - { - "begin": 758, - "end": 910, - "name": "tag", - "value": "6" - }, - { - "begin": 758, - "end": 910, - "name": "JUMPDEST" - }, - { - "begin": 758, - "end": 910, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "22" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "22" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 758, - "end": 910, - "name": "POP" - }, - { - "begin": 758, - "end": 910, - "name": "PUSH [tag]", - "value": "23" - }, - { - "begin": 758, - "end": 910, - "name": "PUSH", - "value": "4" - }, - { - "begin": 758, - "end": 910, - "name": "DUP1" - }, - { - "begin": 758, - "end": 910, - "name": "CALLDATASIZE" - }, - { - "begin": 758, - "end": 910, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "24" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "24" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 758, - "end": 910, - "name": "DUP2" - }, - { - "begin": 758, - "end": 910, - "name": "ADD" - }, - { - "begin": 758, - "end": 910, - "name": "SWAP1" - }, - { - "begin": 758, - "end": 910, - "name": "DUP1" - }, - { - "begin": 758, - "end": 910, - "name": "DUP1" - }, - { - "begin": 758, - "end": 910, - "name": "CALLDATALOAD" - }, - { - "begin": 758, - "end": 910, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 758, - "end": 910, - "name": "AND" - }, - { - "begin": 758, - "end": 910, - "name": "SWAP1" - }, - { - "begin": 758, - "end": 910, - "name": "PUSH", - "value": "20" - }, - { - "begin": 758, - "end": 910, - "name": "ADD" - }, - { - "begin": 758, - "end": 910, - "name": "SWAP1" - }, - { - "begin": 758, - "end": 910, - "name": "SWAP3" - }, - { - "begin": 758, - "end": 910, - "name": "SWAP2" - }, - { - "begin": 758, - "end": 910, - "name": "SWAP1" - }, - { - "begin": 758, - "end": 910, - "name": "POP" - }, - { - "begin": 758, - "end": 910, - "name": "POP" - }, - { - "begin": 758, - "end": 910, - "name": "POP" - }, - { - "begin": 758, - "end": 910, - "name": "PUSH [tag]", - "value": "25" - }, - { - "begin": 758, - "end": 910, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 758, - "end": 910, - "name": "tag", - "value": "23" - }, - { - "begin": 758, - "end": 910, - "name": "JUMPDEST" - }, - { - "begin": 758, - "end": 910, - "name": "STOP" - }, - { - "begin": 644, - "end": 754, - "name": "tag", - "value": "7" - }, - { - "begin": 644, - "end": 754, - "name": "JUMPDEST" - }, - { - "begin": 644, - "end": 754, - "name": "PUSH [tag]", - "value": "26" - }, - { - "begin": 644, - "end": 754, - "name": "PUSH [tag]", - "value": "27" - }, - { - "begin": 644, - "end": 754, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 644, - "end": 754, - "name": "tag", - "value": "26" - }, - { - "begin": 644, - "end": 754, - "name": "JUMPDEST" - }, - { - "begin": 644, - "end": 754, - "name": "STOP" - }, - { - "begin": 1018, - "end": 1130, - "name": "tag", - "value": "8" - }, - { - "begin": 1018, - "end": 1130, - "name": "JUMPDEST" - }, - { - "begin": 1018, - "end": 1130, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "28" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "28" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH [tag]", - "value": "29" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "CALLDATASIZE" - }, - { - "begin": 1018, - "end": 1130, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "30" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "30" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP2" - }, - { - "begin": 1018, - "end": 1130, - "name": "ADD" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "CALLDATALOAD" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1018, - "end": 1130, - "name": "AND" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1018, - "end": 1130, - "name": "ADD" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP3" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP2" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH [tag]", - "value": "31" - }, - { - "begin": 1018, - "end": 1130, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1018, - "end": 1130, - "name": "tag", - "value": "29" - }, - { - "begin": 1018, - "end": 1130, - "name": "JUMPDEST" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1018, - "end": 1130, - "name": "MLOAD" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP3" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP2" - }, - { - "begin": 1018, - "end": 1130, - "name": "MSTORE" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1018, - "end": 1130, - "name": "ADD" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP2" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1018, - "end": 1130, - "name": "MLOAD" - }, - { - "begin": 1018, - "end": 1130, - "name": "DUP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP2" - }, - { - "begin": 1018, - "end": 1130, - "name": "SUB" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "RETURN" - }, - { - "begin": 548, - "end": 636, - "name": "tag", - "value": "13" - }, - { - "begin": 548, - "end": 636, - "name": "JUMPDEST" - }, - { - "begin": 599, - "end": 606, - "name": "PUSH", - "value": "0" - }, - { - "begin": 629, - "end": 630, - "name": "PUSH", - "value": "1" - }, - { - "begin": 621, - "end": 626, - "name": "DUP3" - }, - { - "begin": 621, - "end": 630, - "name": "ADD" - }, - { - "begin": 614, - "end": 630, - "name": "SWAP1" - }, - { - "begin": 614, - "end": 630, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP2" - }, - { - "begin": 548, - "end": 636, - "name": "SWAP1" - }, - { - "begin": 548, - "end": 636, - "name": "POP" - }, - { - "begin": 548, - "end": 636, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 297, - "end": 396, - "name": "tag", - "value": "15" - }, - { - "begin": 297, - "end": 396, - "name": "JUMPDEST" - }, - { - "begin": 345, - "end": 355, - "name": "CALLER" - }, - { - "begin": 337, - "end": 342, - "name": "PUSH", - "value": "1" - }, - { - "begin": 337, - "end": 342, - "name": "PUSH", - "value": "0" - }, - { - "begin": 337, - "end": 355, - "name": "PUSH", - "value": "100" - }, - { - "begin": 337, - "end": 355, - "name": "EXP" - }, - { - "begin": 337, - "end": 355, - "name": "DUP2" - }, - { - "begin": 337, - "end": 355, - "name": "SLOAD" - }, - { - "begin": 337, - "end": 355, - "name": "DUP2" - }, - { - "begin": 337, - "end": 355, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 337, - "end": 355, - "name": "MUL" - }, - { - "begin": 337, - "end": 355, - "name": "NOT" - }, - { - "begin": 337, - "end": 355, - "name": "AND" - }, - { - "begin": 337, - "end": 355, - "name": "SWAP1" - }, - { - "begin": 337, - "end": 355, - "name": "DUP4" - }, - { - "begin": 337, - "end": 355, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 337, - "end": 355, - "name": "AND" - }, - { - "begin": 337, - "end": 355, - "name": "MUL" - }, - { - "begin": 337, - "end": 355, - "name": "OR" - }, - { - "begin": 337, - "end": 355, - "name": "SWAP1" - }, - { - "begin": 337, - "end": 355, - "name": "SSTORE" - }, - { - "begin": 337, - "end": 355, - "name": "POP" - }, - { - "begin": 382, - "end": 391, - "name": "CALLVALUE" - }, - { - "begin": 361, - "end": 372, - "name": "PUSH", - "value": "0" - }, - { - "begin": 361, - "end": 379, - "name": "DUP1" - }, - { - "begin": 373, - "end": 378, - "name": "PUSH", - "value": "1" - }, - { - "begin": 373, - "end": 378, - "name": "PUSH", - "value": "0" - }, - { - "begin": 373, - "end": 378, - "name": "SWAP1" - }, - { - "begin": 373, - "end": 378, - "name": "SLOAD" - }, - { - "begin": 373, - "end": 378, - "name": "SWAP1" - }, - { - "begin": 373, - "end": 378, - "name": "PUSH", - "value": "100" - }, - { - "begin": 373, - "end": 378, - "name": "EXP" - }, - { - "begin": 373, - "end": 378, - "name": "SWAP1" - }, - { - "begin": 373, - "end": 378, - "name": "DIV" - }, - { - "begin": 373, - "end": 378, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 373, - "end": 378, - "name": "AND" - }, - { - "begin": 361, - "end": 379, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 361, - "end": 379, - "name": "AND" - }, - { - "begin": 361, - "end": 379, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 361, - "end": 379, - "name": "AND" - }, - { - "begin": 361, - "end": 379, - "name": "DUP2" - }, - { - "begin": 361, - "end": 379, - "name": "MSTORE" - }, - { - "begin": 361, - "end": 379, - "name": "PUSH", - "value": "20" - }, - { - "begin": 361, - "end": 379, - "name": "ADD" - }, - { - "begin": 361, - "end": 379, - "name": "SWAP1" - }, - { - "begin": 361, - "end": 379, - "name": "DUP2" - }, - { - "begin": 361, - "end": 379, - "name": "MSTORE" - }, - { - "begin": 361, - "end": 379, - "name": "PUSH", - "value": "20" - }, - { - "begin": 361, - "end": 379, - "name": "ADD" - }, - { - "begin": 361, - "end": 379, - "name": "PUSH", - "value": "0" - }, - { - "begin": 361, - "end": 379, - "name": "KECCAK256" - }, - { - "begin": 361, - "end": 391, - "name": "DUP2" - }, - { - "begin": 361, - "end": 391, - "name": "SWAP1" - }, - { - "begin": 361, - "end": 391, - "name": "SSTORE" - }, - { - "begin": 361, - "end": 391, - "name": "POP" - }, - { - "begin": 297, - "end": 396, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 914, - "end": 1014, - "name": "tag", - "value": "18" - }, - { - "begin": 914, - "end": 1014, - "name": "JUMPDEST" - }, - { - "begin": 466, - "end": 471, - "name": "PUSH", - "value": "1" - }, - { - "begin": 466, - "end": 471, - "name": "PUSH", - "value": "0" - }, - { - "begin": 466, - "end": 471, - "name": "SWAP1" - }, - { - "begin": 466, - "end": 471, - "name": "SLOAD" - }, - { - "begin": 466, - "end": 471, - "name": "SWAP1" - }, - { - "begin": 466, - "end": 471, - "name": "PUSH", - "value": "100" - }, - { - "begin": 466, - "end": 471, - "name": "EXP" - }, - { - "begin": 466, - "end": 471, - "name": "SWAP1" - }, - { - "begin": 466, - "end": 471, - "name": "DIV" - }, - { - "begin": 466, - "end": 471, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 466, - "end": 471, - "name": "AND" - }, - { - "begin": 452, - "end": 471, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 452, - "end": 471, - "name": "AND" - }, - { - "begin": 452, - "end": 462, - "name": "CALLER" - }, - { - "begin": 452, - "end": 471, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 452, - "end": 471, - "name": "AND" - }, - { - "begin": 452, - "end": 471, - "name": "EQ" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH [tag]", - "value": "35" - }, - { - "begin": 430, - "end": 522, - "name": "JUMPI" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "40" - }, - { - "begin": 430, - "end": 522, - "name": "MLOAD" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "8C379A000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 430, - "end": 522, - "name": "DUP2" - }, - { - "begin": 430, - "end": 522, - "name": "MSTORE" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "4" - }, - { - "begin": 430, - "end": 522, - "name": "ADD" - }, - { - "begin": 430, - "end": 522, - "name": "DUP1" - }, - { - "begin": 430, - "end": 522, - "name": "DUP1" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "20" - }, - { - "begin": 430, - "end": 522, - "name": "ADD" - }, - { - "begin": 430, - "end": 522, - "name": "DUP3" - }, - { - "begin": 430, - "end": 522, - "name": "DUP2" - }, - { - "begin": 430, - "end": 522, - "name": "SUB" - }, - { - "begin": 430, - "end": 522, - "name": "DUP3" - }, - { - "begin": 430, - "end": 522, - "name": "MSTORE" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "17" - }, - { - "begin": 430, - "end": 522, - "name": "DUP2" - }, - { - "begin": 430, - "end": 522, - "name": "MSTORE" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "20" - }, - { - "begin": 430, - "end": 522, - "name": "ADD" - }, - { - "begin": 430, - "end": 522, - "name": "DUP1" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" - }, - { - "begin": 430, - "end": 522, - "name": "DUP2" - }, - { - "begin": 430, - "end": 522, - "name": "MSTORE" - }, - { - "begin": 430, - "end": 522, - "name": "POP" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "20" - }, - { - "begin": 430, - "end": 522, - "name": "ADD" - }, - { - "begin": 430, - "end": 522, - "name": "SWAP2" - }, - { - "begin": 430, - "end": 522, - "name": "POP" - }, - { - "begin": 430, - "end": 522, - "name": "POP" - }, - { - "begin": 430, - "end": 522, - "name": "PUSH", - "value": "40" - }, - { - "begin": 430, - "end": 522, - "name": "MLOAD" - }, - { - "begin": 430, - "end": 522, - "name": "DUP1" - }, - { - "begin": 430, - "end": 522, - "name": "SWAP2" - }, - { - "begin": 430, - "end": 522, - "name": "SUB" - }, - { - "begin": 430, - "end": 522, - "name": "SWAP1" - }, - { - "begin": 430, - "end": 522, - "name": "REVERT" - }, - { - "begin": 430, - "end": 522, - "name": "tag", - "value": "35" - }, - { - "begin": 430, - "end": 522, - "name": "JUMPDEST" - }, - { - "begin": 967, - "end": 977, - "name": "CALLER" - }, - { - "begin": 967, - "end": 986, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 967, - "end": 986, - "name": "AND" - }, - { - "begin": 967, - "end": 1009, - "name": "PUSH", - "value": "8FC" - }, - { - "begin": 987, - "end": 1008, - "name": "SELFBALANCE" - }, - { - "begin": 967, - "end": 1009, - "name": "SWAP1" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP2" - }, - { - "begin": 967, - "end": 1009, - "name": "ISZERO" - }, - { - "begin": 967, - "end": 1009, - "name": "MUL" - }, - { - "begin": 967, - "end": 1009, - "name": "SWAP1" - }, - { - "begin": 967, - "end": 1009, - "name": "PUSH", - "value": "40" - }, - { - "begin": 967, - "end": 1009, - "name": "MLOAD" - }, - { - "begin": 967, - "end": 1009, - "name": "PUSH", - "value": "0" - }, - { - "begin": 967, - "end": 1009, - "name": "PUSH", - "value": "40" - }, - { - "begin": 967, - "end": 1009, - "name": "MLOAD" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP1" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP4" - }, - { - "begin": 967, - "end": 1009, - "name": "SUB" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP2" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP6" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP9" - }, - { - "begin": 967, - "end": 1009, - "name": "DUP9" - }, - { - "begin": 967, - "end": 1009, - "name": "CALL" - }, - { - "begin": 967, - "end": 1009, - "name": "SWAP4" - }, - { - "begin": 967, - "end": 1009, - "name": "POP" - }, - { - "begin": 967, - "end": 1009, - "name": "POP" - }, - { - "begin": 967, - "end": 1009, - "name": "POP" - }, - { - "begin": 967, - "end": 1009, - "name": "POP" - }, - { - "begin": 967, - "end": 1009, - "name": "ISZERO" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "37" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 45, - "end": 61, - "name": "RETURNDATASIZE" - }, - { - "begin": 42, - "end": 43, - "name": "PUSH", - "value": "0" - }, - { - "begin": 39, - "end": 40, - "name": "DUP1" - }, - { - "begin": 24, - "end": 62, - "name": "RETURNDATACOPY" - }, - { - "begin": 77, - "end": 93, - "name": "RETURNDATASIZE" - }, - { - "begin": 74, - "end": 75, - "name": "PUSH", - "value": "0" - }, - { - "begin": 67, - "end": 94, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "37" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 967, - "end": 1009, - "name": "POP" - }, - { - "begin": 914, - "end": 1014, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 243, - "end": 271, - "name": "tag", - "value": "21" - }, - { - "begin": 243, - "end": 271, - "name": "JUMPDEST" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "1" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "0" - }, - { - "begin": 243, - "end": 271, - "name": "SWAP1" - }, - { - "begin": 243, - "end": 271, - "name": "SLOAD" - }, - { - "begin": 243, - "end": 271, - "name": "SWAP1" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "100" - }, - { - "begin": 243, - "end": 271, - "name": "EXP" - }, - { - "begin": 243, - "end": 271, - "name": "SWAP1" - }, - { - "begin": 243, - "end": 271, - "name": "DIV" - }, - { - "begin": 243, - "end": 271, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 243, - "end": 271, - "name": "AND" - }, - { - "begin": 243, - "end": 271, - "name": "DUP2" - }, - { - "begin": 243, - "end": 271, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 758, - "end": 910, - "name": "tag", - "value": "25" - }, - { - "begin": 758, - "end": 910, - "name": "JUMPDEST" - }, - { - "begin": 855, - "end": 856, - "name": "PUSH", - "value": "0" - }, - { - "begin": 830, - "end": 841, - "name": "DUP1" - }, - { - "begin": 830, - "end": 852, - "name": "PUSH", - "value": "0" - }, - { - "begin": 842, - "end": 851, - "name": "DUP4" - }, - { - "begin": 830, - "end": 852, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 830, - "end": 852, - "name": "AND" - }, - { - "begin": 830, - "end": 852, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 830, - "end": 852, - "name": "AND" - }, - { - "begin": 830, - "end": 852, - "name": "DUP2" - }, - { - "begin": 830, - "end": 852, - "name": "MSTORE" - }, - { - "begin": 830, - "end": 852, - "name": "PUSH", - "value": "20" - }, - { - "begin": 830, - "end": 852, - "name": "ADD" - }, - { - "begin": 830, - "end": 852, - "name": "SWAP1" - }, - { - "begin": 830, - "end": 852, - "name": "DUP2" - }, - { - "begin": 830, - "end": 852, - "name": "MSTORE" - }, - { - "begin": 830, - "end": 852, - "name": "PUSH", - "value": "20" - }, - { - "begin": 830, - "end": 852, - "name": "ADD" - }, - { - "begin": 830, - "end": 852, - "name": "PUSH", - "value": "0" - }, - { - "begin": 830, - "end": 852, - "name": "KECCAK256" - }, - { - "begin": 830, - "end": 852, - "name": "SLOAD" - }, - { - "begin": 830, - "end": 856, - "name": "GT" - }, - { - "begin": 822, - "end": 857, - "name": "PUSH [tag]", - "value": "39" - }, - { - "begin": 822, - "end": 857, - "name": "JUMPI" - }, - { - "begin": 822, - "end": 857, - "name": "PUSH", - "value": "0" - }, - { - "begin": 822, - "end": 857, - "name": "DUP1" - }, - { - "begin": 822, - "end": 857, - "name": "REVERT" - }, - { - "begin": 822, - "end": 857, - "name": "tag", - "value": "39" - }, - { - "begin": 822, - "end": 857, - "name": "JUMPDEST" - }, - { - "begin": 863, - "end": 872, - "name": "DUP1" - }, - { - "begin": 863, - "end": 881, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 863, - "end": 881, - "name": "AND" - }, - { - "begin": 863, - "end": 905, - "name": "PUSH", - "value": "8FC" - }, - { - "begin": 882, - "end": 893, - "name": "PUSH", - "value": "0" - }, - { - "begin": 882, - "end": 904, - "name": "DUP1" - }, - { - "begin": 894, - "end": 903, - "name": "DUP5" - }, - { - "begin": 882, - "end": 904, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 882, - "end": 904, - "name": "AND" - }, - { - "begin": 882, - "end": 904, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 882, - "end": 904, - "name": "AND" - }, - { - "begin": 882, - "end": 904, - "name": "DUP2" - }, - { - "begin": 882, - "end": 904, - "name": "MSTORE" - }, - { - "begin": 882, - "end": 904, - "name": "PUSH", - "value": "20" - }, - { - "begin": 882, - "end": 904, - "name": "ADD" - }, - { - "begin": 882, - "end": 904, - "name": "SWAP1" - }, - { - "begin": 882, - "end": 904, - "name": "DUP2" - }, - { - "begin": 882, - "end": 904, - "name": "MSTORE" - }, - { - "begin": 882, - "end": 904, - "name": "PUSH", - "value": "20" - }, - { - "begin": 882, - "end": 904, - "name": "ADD" - }, - { - "begin": 882, - "end": 904, - "name": "PUSH", - "value": "0" - }, - { - "begin": 882, - "end": 904, - "name": "KECCAK256" - }, - { - "begin": 882, - "end": 904, - "name": "SLOAD" - }, - { - "begin": 863, - "end": 905, - "name": "SWAP1" - }, - { - "begin": 863, - "end": 905, - "name": "DUP2" - }, - { - "begin": 863, - "end": 905, - "name": "ISZERO" - }, - { - "begin": 863, - "end": 905, - "name": "MUL" - }, - { - "begin": 863, - "end": 905, - "name": "SWAP1" - }, - { - "begin": 863, - "end": 905, - "name": "PUSH", - "value": "40" - }, - { - "begin": 863, - "end": 905, - "name": "MLOAD" - }, - { - "begin": 863, - "end": 905, - "name": "PUSH", - "value": "0" - }, - { - "begin": 863, - "end": 905, - "name": "PUSH", - "value": "40" - }, - { - "begin": 863, - "end": 905, - "name": "MLOAD" - }, - { - "begin": 863, - "end": 905, - "name": "DUP1" - }, - { - "begin": 863, - "end": 905, - "name": "DUP4" - }, - { - "begin": 863, - "end": 905, - "name": "SUB" - }, - { - "begin": 863, - "end": 905, - "name": "DUP2" - }, - { - "begin": 863, - "end": 905, - "name": "DUP6" - }, - { - "begin": 863, - "end": 905, - "name": "DUP9" - }, - { - "begin": 863, - "end": 905, - "name": "DUP9" - }, - { - "begin": 863, - "end": 905, - "name": "CALL" - }, - { - "begin": 863, - "end": 905, - "name": "SWAP4" - }, - { - "begin": 863, - "end": 905, - "name": "POP" - }, - { - "begin": 863, - "end": 905, - "name": "POP" - }, - { - "begin": 863, - "end": 905, - "name": "POP" - }, - { - "begin": 863, - "end": 905, - "name": "POP" - }, - { - "begin": 863, - "end": 905, - "name": "ISZERO" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "40" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 45, - "end": 61, - "name": "RETURNDATASIZE" - }, - { - "begin": 42, - "end": 43, - "name": "PUSH", - "value": "0" - }, - { - "begin": 39, - "end": 40, - "name": "DUP1" - }, - { - "begin": 24, - "end": 62, - "name": "RETURNDATACOPY" - }, - { - "begin": 77, - "end": 93, - "name": "RETURNDATASIZE" - }, - { - "begin": 74, - "end": 75, - "name": "PUSH", - "value": "0" - }, - { - "begin": 67, - "end": 94, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "40" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 863, - "end": 905, - "name": "POP" - }, - { - "begin": 758, - "end": 910, - "name": "POP" - }, - { - "begin": 758, - "end": 910, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 644, - "end": 754, - "name": "tag", - "value": "27" - }, - { - "begin": 644, - "end": 754, - "name": "JUMPDEST" - }, - { - "begin": 711, - "end": 749, - "name": "PUSH [tag]", - "value": "42" - }, - { - "begin": 739, - "end": 748, - "name": "CALLVALUE" - }, - { - "begin": 711, - "end": 722, - "name": "PUSH", - "value": "0" - }, - { - "begin": 711, - "end": 734, - "name": "DUP1" - }, - { - "begin": 723, - "end": 733, - "name": "CALLER" - }, - { - "begin": 711, - "end": 734, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 711, - "end": 734, - "name": "AND" - }, - { - "begin": 711, - "end": 734, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 711, - "end": 734, - "name": "AND" - }, - { - "begin": 711, - "end": 734, - "name": "DUP2" - }, - { - "begin": 711, - "end": 734, - "name": "MSTORE" - }, - { - "begin": 711, - "end": 734, - "name": "PUSH", - "value": "20" - }, - { - "begin": 711, - "end": 734, - "name": "ADD" - }, - { - "begin": 711, - "end": 734, - "name": "SWAP1" - }, - { - "begin": 711, - "end": 734, - "name": "DUP2" - }, - { - "begin": 711, - "end": 734, - "name": "MSTORE" - }, - { - "begin": 711, - "end": 734, - "name": "PUSH", - "value": "20" - }, - { - "begin": 711, - "end": 734, - "name": "ADD" - }, - { - "begin": 711, - "end": 734, - "name": "PUSH", - "value": "0" - }, - { - "begin": 711, - "end": 734, - "name": "KECCAK256" - }, - { - "begin": 711, - "end": 734, - "name": "SLOAD" - }, - { - "begin": 711, - "end": 738, - "name": "PUSH [tag]", - "value": "43" - }, - { - "begin": 711, - "end": 738, - "name": "SWAP1" - }, - { - "begin": 711, - "end": 749, - "name": "SWAP2" - }, - { - "begin": 711, - "end": 749, - "name": "SWAP1" - }, - { - "begin": 711, - "end": 749, - "name": "PUSH", - "value": "FFFFFFFF" - }, - { - "begin": 711, - "end": 749, - "name": "AND" - }, - { - "begin": 711, - "end": 749, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 711, - "end": 749, - "name": "tag", - "value": "42" - }, - { - "begin": 711, - "end": 749, - "name": "JUMPDEST" - }, - { - "begin": 685, - "end": 696, - "name": "PUSH", - "value": "0" - }, - { - "begin": 685, - "end": 708, - "name": "DUP1" - }, - { - "begin": 697, - "end": 707, - "name": "CALLER" - }, - { - "begin": 685, - "end": 708, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 685, - "end": 708, - "name": "AND" - }, - { - "begin": 685, - "end": 708, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 685, - "end": 708, - "name": "AND" - }, - { - "begin": 685, - "end": 708, - "name": "DUP2" - }, - { - "begin": 685, - "end": 708, - "name": "MSTORE" - }, - { - "begin": 685, - "end": 708, - "name": "PUSH", - "value": "20" - }, - { - "begin": 685, - "end": 708, - "name": "ADD" - }, - { - "begin": 685, - "end": 708, - "name": "SWAP1" - }, - { - "begin": 685, - "end": 708, - "name": "DUP2" - }, - { - "begin": 685, - "end": 708, - "name": "MSTORE" - }, - { - "begin": 685, - "end": 708, - "name": "PUSH", - "value": "20" - }, - { - "begin": 685, - "end": 708, - "name": "ADD" - }, - { - "begin": 685, - "end": 708, - "name": "PUSH", - "value": "0" - }, - { - "begin": 685, - "end": 708, - "name": "KECCAK256" - }, - { - "begin": 685, - "end": 749, - "name": "DUP2" - }, - { - "begin": 685, - "end": 749, - "name": "SWAP1" - }, - { - "begin": 685, - "end": 749, - "name": "SSTORE" - }, - { - "begin": 685, - "end": 749, - "name": "POP" - }, - { - "begin": 644, - "end": 754, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1018, - "end": 1130, - "name": "tag", - "value": "31" - }, - { - "begin": 1018, - "end": 1130, - "name": "JUMPDEST" - }, - { - "begin": 1084, - "end": 1088, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1103, - "end": 1114, - "name": "DUP1" - }, - { - "begin": 1103, - "end": 1125, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1115, - "end": 1124, - "name": "DUP4" - }, - { - "begin": 1103, - "end": 1125, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1103, - "end": 1125, - "name": "AND" - }, - { - "begin": 1103, - "end": 1125, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1103, - "end": 1125, - "name": "AND" - }, - { - "begin": 1103, - "end": 1125, - "name": "DUP2" - }, - { - "begin": 1103, - "end": 1125, - "name": "MSTORE" - }, - { - "begin": 1103, - "end": 1125, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1103, - "end": 1125, - "name": "ADD" - }, - { - "begin": 1103, - "end": 1125, - "name": "SWAP1" - }, - { - "begin": 1103, - "end": 1125, - "name": "DUP2" - }, - { - "begin": 1103, - "end": 1125, - "name": "MSTORE" - }, - { - "begin": 1103, - "end": 1125, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1103, - "end": 1125, - "name": "ADD" - }, - { - "begin": 1103, - "end": 1125, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1103, - "end": 1125, - "name": "KECCAK256" - }, - { - "begin": 1103, - "end": 1125, - "name": "SLOAD" - }, - { - "begin": 1096, - "end": 1125, - "name": "SWAP1" - }, - { - "begin": 1096, - "end": 1125, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP2" - }, - { - "begin": 1018, - "end": 1130, - "name": "SWAP1" - }, - { - "begin": 1018, - "end": 1130, - "name": "POP" - }, - { - "begin": 1018, - "end": 1130, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 834, - "end": 1010, - "name": "tag", - "value": "43" - }, - { - "begin": 834, - "end": 1010, - "name": "JUMPDEST" - }, - { - "begin": 892, - "end": 899, - "name": "PUSH", - "value": "0" - }, - { - "begin": 911, - "end": 920, - "name": "DUP1" - }, - { - "begin": 927, - "end": 928, - "name": "DUP3" - }, - { - "begin": 923, - "end": 924, - "name": "DUP5" - }, - { - "begin": 923, - "end": 928, - "name": "ADD" - }, - { - "begin": 911, - "end": 928, - "name": "SWAP1" - }, - { - "begin": 911, - "end": 928, - "name": "POP" - }, - { - "begin": 951, - "end": 952, - "name": "DUP4" - }, - { - "begin": 946, - "end": 947, - "name": "DUP2" - }, - { - "begin": 946, - "end": 952, - "name": "LT" - }, - { - "begin": 946, - "end": 952, - "name": "ISZERO" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH [tag]", - "value": "46" - }, - { - "begin": 938, - "end": 984, - "name": "JUMPI" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "40" - }, - { - "begin": 938, - "end": 984, - "name": "MLOAD" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "8C379A000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "4" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP3" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "SUB" - }, - { - "begin": 938, - "end": 984, - "name": "DUP3" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "1B" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP2" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "40" - }, - { - "begin": 938, - "end": 984, - "name": "MLOAD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP2" - }, - { - "begin": 938, - "end": 984, - "name": "SUB" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP1" - }, - { - "begin": 938, - "end": 984, - "name": "REVERT" - }, - { - "begin": 938, - "end": 984, - "name": "tag", - "value": "46" - }, - { - "begin": 938, - "end": 984, - "name": "JUMPDEST" - }, - { - "begin": 1002, - "end": 1003, - "name": "DUP1" - }, - { - "begin": 995, - "end": 1003, - "name": "SWAP2" - }, - { - "begin": 995, - "end": 1003, - "name": "POP" - }, - { - "begin": 995, - "end": 1003, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "SWAP3" - }, - { - "begin": 834, - "end": 1010, - "name": "SWAP2" - }, - { - "begin": 834, - "end": 1010, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "JUMP", - "value": "[out]" - } - ] - } - } - }, - "methodIdentifiers": { - "Fal1out()": "6fab5ddf", - "age(uint256)": "6ba61782", - "allocate()": "abaa9916", - "allocatorBalance(address)": "ffd40b56", - "collectAllocations()": "8aa96f38", - "owner()": "8da5cb5b", - "sendAllocation(address)": "a2dea26f" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rings\",\"type\":\"uint256\"}],\"name\":\"age\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mary A. Botanist\",\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Calculate tree age in years, rounded up, for live trees\"}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0xd545eab656870e8b80bd39971a7b5dd4d98e25821048764ec003c3f4be3432bf\",\"urls\":[\"bzz-raw://377d23420fe8bc074562c57540384149da4e5d79c44e6bc5ab71ed4a2d84139f\",\"dweb:/ipfs/QmVuMX6Dwf7zbBvR2LdY4HmupxDD5fq6dxUUsxZ1KqgPD2\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", - "userdoc": { - "methods": {}, - "notice": "Calculate tree age in years, rounded up, for live trees" - } -} \ No newline at end of file diff --git a/apps/remixdocgen/src/utils/sample-data/sample-artifact-with-comments.json b/apps/remixdocgen/src/utils/sample-data/sample-artifact-with-comments.json deleted file mode 100644 index bea57d7386..0000000000 --- a/apps/remixdocgen/src/utils/sample-data/sample-artifact-with-comments.json +++ /dev/null @@ -1,4287 +0,0 @@ -{ - "abi": [ - { - "constant": false, - "inputs": [], - "name": "Fal1out", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "rings", - "type": "uint256" - } - ], - "name": "age", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "allocate", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "allocator", - "type": "address" - } - ], - "name": "allocatorBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "collectAllocations", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address payable", - "name": "allocator", - "type": "address" - } - ], - "name": "sendAllocation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "author": "Larry A. Gardner", - "details": "All function calls are currently implemented without side effects", - "methods": { - "age(uint256)": { - "author": "Mary A. Botanist", - "details": "The Alexandr N. Tetearing algorithm could increase precision", - "params": { - "rings": "The number of rings from dendrochronological sample" - }, - "return": "age in years, rounded up for partial years" - } - }, - "title": "A simulator for trees" - }, - "evm": { - "bytecode": { - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50610650806100206000396000f3fe6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x650 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 0xFB 0xAD 0xD7 0xF 0xC4 0x4C 0xBA PUSH28 0xC7CCCC76B76128E6192047CDB163ED15A2A7ACC1180C3964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ", - "sourceMap": "261:1289:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;261:1289:0;;;;;;;" - }, - "deployedBytecode": { - "linkReferences": {}, - "object": "6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 0xFB 0xAD 0xD7 0xF 0xC4 0x4C 0xBA PUSH28 0xC7CCCC76B76128E6192047CDB163ED15A2A7ACC1180C3964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ", - "sourceMap": "261:1289:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;966:88:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;410:99;;;:::i;:::-;;1332:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1332:100:0;;;:::i;:::-;;356:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;356:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1176:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1176:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1176:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1062:110;;;:::i;:::-;;1436:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1436:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;966:88;1017:7;1047:1;1039:5;:9;1032:16;;966:88;;;:::o;410:99::-;458:10;450:5;;:18;;;;;;;;;;;;;;;;;;495:9;474:11;:18;486:5;;;;;;;;;;;474:18;;;;;;;;;;;;;;;:30;;;;410:99::o;1332:100::-;579:5;;;;;;;;;;;565:19;;:10;:19;;;543:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1385:10;:19;;:42;1405:21;1385:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1385:42:0;1332:100::o;356:28::-;;;;;;;;;;;;;:::o;1176:152::-;1273:1;1248:11;:22;1260:9;1248:22;;;;;;;;;;;;;;;;:26;1240:35;;;;;;1281:9;:18;;:42;1300:11;:22;1312:9;1300:22;;;;;;;;;;;;;;;;1281:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1281:42:0;1176:152;:::o;1062:110::-;1129:38;1157:9;1129:11;:23;1141:10;1129:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;1103:11;:23;1115:10;1103:23;;;;;;;;;;;;;;;:64;;;;1062:110::o;1436:112::-;1502:4;1521:11;:22;1533:9;1521:22;;;;;;;;;;;;;;;;1514:29;;1436:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "323200", - "executionCost": "362", - "totalCost": "323562" - }, - "external": { - "Fal1out()": "41948", - "age(uint256)": "307", - "allocate()": "infinite", - "allocatorBalance(address)": "1262", - "collectAllocations()": "infinite", - "owner()": "1053", - "sendAllocation(address)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "80" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "40" - }, - { - "begin": 261, - "end": 1550, - "name": "MSTORE" - }, - { - "begin": 261, - "end": 1550, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 261, - "end": 1550, - "name": "POP" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH #[$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "0" - }, - { - "begin": 261, - "end": 1550, - "name": "CODECOPY" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "0" - }, - { - "begin": 261, - "end": 1550, - "name": "RETURN" - } - ], - ".data": { - "0": { - ".auxdata": "a265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", - ".code": [ - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "80" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "40" - }, - { - "begin": 261, - "end": 1550, - "name": "MSTORE" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "4" - }, - { - "begin": 261, - "end": 1550, - "name": "CALLDATASIZE" - }, - { - "begin": 261, - "end": 1550, - "name": "LT" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "0" - }, - { - "begin": 261, - "end": 1550, - "name": "CALLDATALOAD" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "E0" - }, - { - "begin": 261, - "end": 1550, - "name": "SHR" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "8DA5CB5B" - }, - { - "begin": 261, - "end": 1550, - "name": "GT" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "9" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "8DA5CB5B" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "5" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "A2DEA26F" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "6" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "ABAA9916" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "7" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "FFD40B56" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "8" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMP" - }, - { - "begin": 261, - "end": 1550, - "name": "tag", - "value": "9" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPDEST" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "6BA61782" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "2" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "6FAB5DDF" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "3" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "8AA96F38" - }, - { - "begin": 261, - "end": 1550, - "name": "EQ" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH [tag]", - "value": "4" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPI" - }, - { - "begin": 261, - "end": 1550, - "name": "tag", - "value": "1" - }, - { - "begin": 261, - "end": 1550, - "name": "JUMPDEST" - }, - { - "begin": 261, - "end": 1550, - "name": "PUSH", - "value": "0" - }, - { - "begin": 261, - "end": 1550, - "name": "DUP1" - }, - { - "begin": 261, - "end": 1550, - "name": "REVERT" - }, - { - "begin": 966, - "end": 1054, - "name": "tag", - "value": "2" - }, - { - "begin": 966, - "end": 1054, - "name": "JUMPDEST" - }, - { - "begin": 966, - "end": 1054, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "10" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "10" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH [tag]", - "value": "11" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH", - "value": "4" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP1" - }, - { - "begin": 966, - "end": 1054, - "name": "CALLDATASIZE" - }, - { - "begin": 966, - "end": 1054, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "12" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "12" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP2" - }, - { - "begin": 966, - "end": 1054, - "name": "ADD" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP1" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP1" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP1" - }, - { - "begin": 966, - "end": 1054, - "name": "CALLDATALOAD" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP1" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH", - "value": "20" - }, - { - "begin": 966, - "end": 1054, - "name": "ADD" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP1" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP3" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP2" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP1" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH [tag]", - "value": "13" - }, - { - "begin": 966, - "end": 1054, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 966, - "end": 1054, - "name": "tag", - "value": "11" - }, - { - "begin": 966, - "end": 1054, - "name": "JUMPDEST" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH", - "value": "40" - }, - { - "begin": 966, - "end": 1054, - "name": "MLOAD" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP1" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP3" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP2" - }, - { - "begin": 966, - "end": 1054, - "name": "MSTORE" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH", - "value": "20" - }, - { - "begin": 966, - "end": 1054, - "name": "ADD" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP2" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "PUSH", - "value": "40" - }, - { - "begin": 966, - "end": 1054, - "name": "MLOAD" - }, - { - "begin": 966, - "end": 1054, - "name": "DUP1" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP2" - }, - { - "begin": 966, - "end": 1054, - "name": "SUB" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP1" - }, - { - "begin": 966, - "end": 1054, - "name": "RETURN" - }, - { - "begin": 410, - "end": 509, - "name": "tag", - "value": "3" - }, - { - "begin": 410, - "end": 509, - "name": "JUMPDEST" - }, - { - "begin": 410, - "end": 509, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 410, - "end": 509, - "name": "PUSH [tag]", - "value": "15" - }, - { - "begin": 410, - "end": 509, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 410, - "end": 509, - "name": "tag", - "value": "14" - }, - { - "begin": 410, - "end": 509, - "name": "JUMPDEST" - }, - { - "begin": 410, - "end": 509, - "name": "STOP" - }, - { - "begin": 1332, - "end": 1432, - "name": "tag", - "value": "4" - }, - { - "begin": 1332, - "end": 1432, - "name": "JUMPDEST" - }, - { - "begin": 1332, - "end": 1432, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "16" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "16" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 1332, - "end": 1432, - "name": "POP" - }, - { - "begin": 1332, - "end": 1432, - "name": "PUSH [tag]", - "value": "17" - }, - { - "begin": 1332, - "end": 1432, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 1332, - "end": 1432, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1332, - "end": 1432, - "name": "tag", - "value": "17" - }, - { - "begin": 1332, - "end": 1432, - "name": "JUMPDEST" - }, - { - "begin": 1332, - "end": 1432, - "name": "STOP" - }, - { - "begin": 356, - "end": 384, - "name": "tag", - "value": "5" - }, - { - "begin": 356, - "end": 384, - "name": "JUMPDEST" - }, - { - "begin": 356, - "end": 384, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "19" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "19" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 356, - "end": 384, - "name": "POP" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH [tag]", - "value": "20" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 356, - "end": 384, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 356, - "end": 384, - "name": "tag", - "value": "20" - }, - { - "begin": 356, - "end": 384, - "name": "JUMPDEST" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "40" - }, - { - "begin": 356, - "end": 384, - "name": "MLOAD" - }, - { - "begin": 356, - "end": 384, - "name": "DUP1" - }, - { - "begin": 356, - "end": 384, - "name": "DUP3" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 356, - "end": 384, - "name": "AND" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 356, - "end": 384, - "name": "AND" - }, - { - "begin": 356, - "end": 384, - "name": "DUP2" - }, - { - "begin": 356, - "end": 384, - "name": "MSTORE" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "20" - }, - { - "begin": 356, - "end": 384, - "name": "ADD" - }, - { - "begin": 356, - "end": 384, - "name": "SWAP2" - }, - { - "begin": 356, - "end": 384, - "name": "POP" - }, - { - "begin": 356, - "end": 384, - "name": "POP" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "40" - }, - { - "begin": 356, - "end": 384, - "name": "MLOAD" - }, - { - "begin": 356, - "end": 384, - "name": "DUP1" - }, - { - "begin": 356, - "end": 384, - "name": "SWAP2" - }, - { - "begin": 356, - "end": 384, - "name": "SUB" - }, - { - "begin": 356, - "end": 384, - "name": "SWAP1" - }, - { - "begin": 356, - "end": 384, - "name": "RETURN" - }, - { - "begin": 1176, - "end": 1328, - "name": "tag", - "value": "6" - }, - { - "begin": 1176, - "end": 1328, - "name": "JUMPDEST" - }, - { - "begin": 1176, - "end": 1328, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "22" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "22" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 1176, - "end": 1328, - "name": "POP" - }, - { - "begin": 1176, - "end": 1328, - "name": "PUSH [tag]", - "value": "23" - }, - { - "begin": 1176, - "end": 1328, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1176, - "end": 1328, - "name": "DUP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "CALLDATASIZE" - }, - { - "begin": 1176, - "end": 1328, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "24" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "24" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 1176, - "end": 1328, - "name": "DUP2" - }, - { - "begin": 1176, - "end": 1328, - "name": "ADD" - }, - { - "begin": 1176, - "end": 1328, - "name": "SWAP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "DUP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "DUP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "CALLDATALOAD" - }, - { - "begin": 1176, - "end": 1328, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1176, - "end": 1328, - "name": "AND" - }, - { - "begin": 1176, - "end": 1328, - "name": "SWAP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1176, - "end": 1328, - "name": "ADD" - }, - { - "begin": 1176, - "end": 1328, - "name": "SWAP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "SWAP3" - }, - { - "begin": 1176, - "end": 1328, - "name": "SWAP2" - }, - { - "begin": 1176, - "end": 1328, - "name": "SWAP1" - }, - { - "begin": 1176, - "end": 1328, - "name": "POP" - }, - { - "begin": 1176, - "end": 1328, - "name": "POP" - }, - { - "begin": 1176, - "end": 1328, - "name": "POP" - }, - { - "begin": 1176, - "end": 1328, - "name": "PUSH [tag]", - "value": "25" - }, - { - "begin": 1176, - "end": 1328, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1176, - "end": 1328, - "name": "tag", - "value": "23" - }, - { - "begin": 1176, - "end": 1328, - "name": "JUMPDEST" - }, - { - "begin": 1176, - "end": 1328, - "name": "STOP" - }, - { - "begin": 1062, - "end": 1172, - "name": "tag", - "value": "7" - }, - { - "begin": 1062, - "end": 1172, - "name": "JUMPDEST" - }, - { - "begin": 1062, - "end": 1172, - "name": "PUSH [tag]", - "value": "26" - }, - { - "begin": 1062, - "end": 1172, - "name": "PUSH [tag]", - "value": "27" - }, - { - "begin": 1062, - "end": 1172, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1062, - "end": 1172, - "name": "tag", - "value": "26" - }, - { - "begin": 1062, - "end": 1172, - "name": "JUMPDEST" - }, - { - "begin": 1062, - "end": 1172, - "name": "STOP" - }, - { - "begin": 1436, - "end": 1548, - "name": "tag", - "value": "8" - }, - { - "begin": 1436, - "end": 1548, - "name": "JUMPDEST" - }, - { - "begin": 1436, - "end": 1548, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "28" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "28" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH [tag]", - "value": "29" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "CALLDATASIZE" - }, - { - "begin": 1436, - "end": 1548, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "30" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "30" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP2" - }, - { - "begin": 1436, - "end": 1548, - "name": "ADD" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "CALLDATALOAD" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1436, - "end": 1548, - "name": "AND" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1436, - "end": 1548, - "name": "ADD" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP3" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP2" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH [tag]", - "value": "31" - }, - { - "begin": 1436, - "end": 1548, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1436, - "end": 1548, - "name": "tag", - "value": "29" - }, - { - "begin": 1436, - "end": 1548, - "name": "JUMPDEST" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1436, - "end": 1548, - "name": "MLOAD" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP3" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP2" - }, - { - "begin": 1436, - "end": 1548, - "name": "MSTORE" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1436, - "end": 1548, - "name": "ADD" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP2" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1436, - "end": 1548, - "name": "MLOAD" - }, - { - "begin": 1436, - "end": 1548, - "name": "DUP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP2" - }, - { - "begin": 1436, - "end": 1548, - "name": "SUB" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "RETURN" - }, - { - "begin": 966, - "end": 1054, - "name": "tag", - "value": "13" - }, - { - "begin": 966, - "end": 1054, - "name": "JUMPDEST" - }, - { - "begin": 1017, - "end": 1024, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1047, - "end": 1048, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1039, - "end": 1044, - "name": "DUP3" - }, - { - "begin": 1039, - "end": 1048, - "name": "ADD" - }, - { - "begin": 1032, - "end": 1048, - "name": "SWAP1" - }, - { - "begin": 1032, - "end": 1048, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP2" - }, - { - "begin": 966, - "end": 1054, - "name": "SWAP1" - }, - { - "begin": 966, - "end": 1054, - "name": "POP" - }, - { - "begin": 966, - "end": 1054, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 410, - "end": 509, - "name": "tag", - "value": "15" - }, - { - "begin": 410, - "end": 509, - "name": "JUMPDEST" - }, - { - "begin": 458, - "end": 468, - "name": "CALLER" - }, - { - "begin": 450, - "end": 455, - "name": "PUSH", - "value": "1" - }, - { - "begin": 450, - "end": 455, - "name": "PUSH", - "value": "0" - }, - { - "begin": 450, - "end": 468, - "name": "PUSH", - "value": "100" - }, - { - "begin": 450, - "end": 468, - "name": "EXP" - }, - { - "begin": 450, - "end": 468, - "name": "DUP2" - }, - { - "begin": 450, - "end": 468, - "name": "SLOAD" - }, - { - "begin": 450, - "end": 468, - "name": "DUP2" - }, - { - "begin": 450, - "end": 468, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 450, - "end": 468, - "name": "MUL" - }, - { - "begin": 450, - "end": 468, - "name": "NOT" - }, - { - "begin": 450, - "end": 468, - "name": "AND" - }, - { - "begin": 450, - "end": 468, - "name": "SWAP1" - }, - { - "begin": 450, - "end": 468, - "name": "DUP4" - }, - { - "begin": 450, - "end": 468, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 450, - "end": 468, - "name": "AND" - }, - { - "begin": 450, - "end": 468, - "name": "MUL" - }, - { - "begin": 450, - "end": 468, - "name": "OR" - }, - { - "begin": 450, - "end": 468, - "name": "SWAP1" - }, - { - "begin": 450, - "end": 468, - "name": "SSTORE" - }, - { - "begin": 450, - "end": 468, - "name": "POP" - }, - { - "begin": 495, - "end": 504, - "name": "CALLVALUE" - }, - { - "begin": 474, - "end": 485, - "name": "PUSH", - "value": "0" - }, - { - "begin": 474, - "end": 492, - "name": "DUP1" - }, - { - "begin": 486, - "end": 491, - "name": "PUSH", - "value": "1" - }, - { - "begin": 486, - "end": 491, - "name": "PUSH", - "value": "0" - }, - { - "begin": 486, - "end": 491, - "name": "SWAP1" - }, - { - "begin": 486, - "end": 491, - "name": "SLOAD" - }, - { - "begin": 486, - "end": 491, - "name": "SWAP1" - }, - { - "begin": 486, - "end": 491, - "name": "PUSH", - "value": "100" - }, - { - "begin": 486, - "end": 491, - "name": "EXP" - }, - { - "begin": 486, - "end": 491, - "name": "SWAP1" - }, - { - "begin": 486, - "end": 491, - "name": "DIV" - }, - { - "begin": 486, - "end": 491, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 486, - "end": 491, - "name": "AND" - }, - { - "begin": 474, - "end": 492, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 474, - "end": 492, - "name": "AND" - }, - { - "begin": 474, - "end": 492, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 474, - "end": 492, - "name": "AND" - }, - { - "begin": 474, - "end": 492, - "name": "DUP2" - }, - { - "begin": 474, - "end": 492, - "name": "MSTORE" - }, - { - "begin": 474, - "end": 492, - "name": "PUSH", - "value": "20" - }, - { - "begin": 474, - "end": 492, - "name": "ADD" - }, - { - "begin": 474, - "end": 492, - "name": "SWAP1" - }, - { - "begin": 474, - "end": 492, - "name": "DUP2" - }, - { - "begin": 474, - "end": 492, - "name": "MSTORE" - }, - { - "begin": 474, - "end": 492, - "name": "PUSH", - "value": "20" - }, - { - "begin": 474, - "end": 492, - "name": "ADD" - }, - { - "begin": 474, - "end": 492, - "name": "PUSH", - "value": "0" - }, - { - "begin": 474, - "end": 492, - "name": "KECCAK256" - }, - { - "begin": 474, - "end": 504, - "name": "DUP2" - }, - { - "begin": 474, - "end": 504, - "name": "SWAP1" - }, - { - "begin": 474, - "end": 504, - "name": "SSTORE" - }, - { - "begin": 474, - "end": 504, - "name": "POP" - }, - { - "begin": 410, - "end": 509, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1332, - "end": 1432, - "name": "tag", - "value": "18" - }, - { - "begin": 1332, - "end": 1432, - "name": "JUMPDEST" - }, - { - "begin": 579, - "end": 584, - "name": "PUSH", - "value": "1" - }, - { - "begin": 579, - "end": 584, - "name": "PUSH", - "value": "0" - }, - { - "begin": 579, - "end": 584, - "name": "SWAP1" - }, - { - "begin": 579, - "end": 584, - "name": "SLOAD" - }, - { - "begin": 579, - "end": 584, - "name": "SWAP1" - }, - { - "begin": 579, - "end": 584, - "name": "PUSH", - "value": "100" - }, - { - "begin": 579, - "end": 584, - "name": "EXP" - }, - { - "begin": 579, - "end": 584, - "name": "SWAP1" - }, - { - "begin": 579, - "end": 584, - "name": "DIV" - }, - { - "begin": 579, - "end": 584, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 579, - "end": 584, - "name": "AND" - }, - { - "begin": 565, - "end": 584, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 565, - "end": 584, - "name": "AND" - }, - { - "begin": 565, - "end": 575, - "name": "CALLER" - }, - { - "begin": 565, - "end": 584, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 565, - "end": 584, - "name": "AND" - }, - { - "begin": 565, - "end": 584, - "name": "EQ" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH [tag]", - "value": "35" - }, - { - "begin": 543, - "end": 635, - "name": "JUMPI" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "40" - }, - { - "begin": 543, - "end": 635, - "name": "MLOAD" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "8C379A000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 543, - "end": 635, - "name": "DUP2" - }, - { - "begin": 543, - "end": 635, - "name": "MSTORE" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "4" - }, - { - "begin": 543, - "end": 635, - "name": "ADD" - }, - { - "begin": 543, - "end": 635, - "name": "DUP1" - }, - { - "begin": 543, - "end": 635, - "name": "DUP1" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "20" - }, - { - "begin": 543, - "end": 635, - "name": "ADD" - }, - { - "begin": 543, - "end": 635, - "name": "DUP3" - }, - { - "begin": 543, - "end": 635, - "name": "DUP2" - }, - { - "begin": 543, - "end": 635, - "name": "SUB" - }, - { - "begin": 543, - "end": 635, - "name": "DUP3" - }, - { - "begin": 543, - "end": 635, - "name": "MSTORE" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "17" - }, - { - "begin": 543, - "end": 635, - "name": "DUP2" - }, - { - "begin": 543, - "end": 635, - "name": "MSTORE" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "20" - }, - { - "begin": 543, - "end": 635, - "name": "ADD" - }, - { - "begin": 543, - "end": 635, - "name": "DUP1" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" - }, - { - "begin": 543, - "end": 635, - "name": "DUP2" - }, - { - "begin": 543, - "end": 635, - "name": "MSTORE" - }, - { - "begin": 543, - "end": 635, - "name": "POP" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "20" - }, - { - "begin": 543, - "end": 635, - "name": "ADD" - }, - { - "begin": 543, - "end": 635, - "name": "SWAP2" - }, - { - "begin": 543, - "end": 635, - "name": "POP" - }, - { - "begin": 543, - "end": 635, - "name": "POP" - }, - { - "begin": 543, - "end": 635, - "name": "PUSH", - "value": "40" - }, - { - "begin": 543, - "end": 635, - "name": "MLOAD" - }, - { - "begin": 543, - "end": 635, - "name": "DUP1" - }, - { - "begin": 543, - "end": 635, - "name": "SWAP2" - }, - { - "begin": 543, - "end": 635, - "name": "SUB" - }, - { - "begin": 543, - "end": 635, - "name": "SWAP1" - }, - { - "begin": 543, - "end": 635, - "name": "REVERT" - }, - { - "begin": 543, - "end": 635, - "name": "tag", - "value": "35" - }, - { - "begin": 543, - "end": 635, - "name": "JUMPDEST" - }, - { - "begin": 1385, - "end": 1395, - "name": "CALLER" - }, - { - "begin": 1385, - "end": 1404, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1385, - "end": 1404, - "name": "AND" - }, - { - "begin": 1385, - "end": 1427, - "name": "PUSH", - "value": "8FC" - }, - { - "begin": 1405, - "end": 1426, - "name": "SELFBALANCE" - }, - { - "begin": 1385, - "end": 1427, - "name": "SWAP1" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP2" - }, - { - "begin": 1385, - "end": 1427, - "name": "ISZERO" - }, - { - "begin": 1385, - "end": 1427, - "name": "MUL" - }, - { - "begin": 1385, - "end": 1427, - "name": "SWAP1" - }, - { - "begin": 1385, - "end": 1427, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1385, - "end": 1427, - "name": "MLOAD" - }, - { - "begin": 1385, - "end": 1427, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1385, - "end": 1427, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1385, - "end": 1427, - "name": "MLOAD" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP1" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP4" - }, - { - "begin": 1385, - "end": 1427, - "name": "SUB" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP2" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP6" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP9" - }, - { - "begin": 1385, - "end": 1427, - "name": "DUP9" - }, - { - "begin": 1385, - "end": 1427, - "name": "CALL" - }, - { - "begin": 1385, - "end": 1427, - "name": "SWAP4" - }, - { - "begin": 1385, - "end": 1427, - "name": "POP" - }, - { - "begin": 1385, - "end": 1427, - "name": "POP" - }, - { - "begin": 1385, - "end": 1427, - "name": "POP" - }, - { - "begin": 1385, - "end": 1427, - "name": "POP" - }, - { - "begin": 1385, - "end": 1427, - "name": "ISZERO" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "37" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 45, - "end": 61, - "name": "RETURNDATASIZE" - }, - { - "begin": 42, - "end": 43, - "name": "PUSH", - "value": "0" - }, - { - "begin": 39, - "end": 40, - "name": "DUP1" - }, - { - "begin": 24, - "end": 62, - "name": "RETURNDATACOPY" - }, - { - "begin": 77, - "end": 93, - "name": "RETURNDATASIZE" - }, - { - "begin": 74, - "end": 75, - "name": "PUSH", - "value": "0" - }, - { - "begin": 67, - "end": 94, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "37" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 1385, - "end": 1427, - "name": "POP" - }, - { - "begin": 1332, - "end": 1432, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 356, - "end": 384, - "name": "tag", - "value": "21" - }, - { - "begin": 356, - "end": 384, - "name": "JUMPDEST" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "1" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "0" - }, - { - "begin": 356, - "end": 384, - "name": "SWAP1" - }, - { - "begin": 356, - "end": 384, - "name": "SLOAD" - }, - { - "begin": 356, - "end": 384, - "name": "SWAP1" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "100" - }, - { - "begin": 356, - "end": 384, - "name": "EXP" - }, - { - "begin": 356, - "end": 384, - "name": "SWAP1" - }, - { - "begin": 356, - "end": 384, - "name": "DIV" - }, - { - "begin": 356, - "end": 384, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 356, - "end": 384, - "name": "AND" - }, - { - "begin": 356, - "end": 384, - "name": "DUP2" - }, - { - "begin": 356, - "end": 384, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1176, - "end": 1328, - "name": "tag", - "value": "25" - }, - { - "begin": 1176, - "end": 1328, - "name": "JUMPDEST" - }, - { - "begin": 1273, - "end": 1274, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1248, - "end": 1259, - "name": "DUP1" - }, - { - "begin": 1248, - "end": 1270, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1260, - "end": 1269, - "name": "DUP4" - }, - { - "begin": 1248, - "end": 1270, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1248, - "end": 1270, - "name": "AND" - }, - { - "begin": 1248, - "end": 1270, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1248, - "end": 1270, - "name": "AND" - }, - { - "begin": 1248, - "end": 1270, - "name": "DUP2" - }, - { - "begin": 1248, - "end": 1270, - "name": "MSTORE" - }, - { - "begin": 1248, - "end": 1270, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1248, - "end": 1270, - "name": "ADD" - }, - { - "begin": 1248, - "end": 1270, - "name": "SWAP1" - }, - { - "begin": 1248, - "end": 1270, - "name": "DUP2" - }, - { - "begin": 1248, - "end": 1270, - "name": "MSTORE" - }, - { - "begin": 1248, - "end": 1270, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1248, - "end": 1270, - "name": "ADD" - }, - { - "begin": 1248, - "end": 1270, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1248, - "end": 1270, - "name": "KECCAK256" - }, - { - "begin": 1248, - "end": 1270, - "name": "SLOAD" - }, - { - "begin": 1248, - "end": 1274, - "name": "GT" - }, - { - "begin": 1240, - "end": 1275, - "name": "PUSH [tag]", - "value": "39" - }, - { - "begin": 1240, - "end": 1275, - "name": "JUMPI" - }, - { - "begin": 1240, - "end": 1275, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1240, - "end": 1275, - "name": "DUP1" - }, - { - "begin": 1240, - "end": 1275, - "name": "REVERT" - }, - { - "begin": 1240, - "end": 1275, - "name": "tag", - "value": "39" - }, - { - "begin": 1240, - "end": 1275, - "name": "JUMPDEST" - }, - { - "begin": 1281, - "end": 1290, - "name": "DUP1" - }, - { - "begin": 1281, - "end": 1299, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1281, - "end": 1299, - "name": "AND" - }, - { - "begin": 1281, - "end": 1323, - "name": "PUSH", - "value": "8FC" - }, - { - "begin": 1300, - "end": 1311, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1300, - "end": 1322, - "name": "DUP1" - }, - { - "begin": 1312, - "end": 1321, - "name": "DUP5" - }, - { - "begin": 1300, - "end": 1322, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1300, - "end": 1322, - "name": "AND" - }, - { - "begin": 1300, - "end": 1322, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1300, - "end": 1322, - "name": "AND" - }, - { - "begin": 1300, - "end": 1322, - "name": "DUP2" - }, - { - "begin": 1300, - "end": 1322, - "name": "MSTORE" - }, - { - "begin": 1300, - "end": 1322, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1300, - "end": 1322, - "name": "ADD" - }, - { - "begin": 1300, - "end": 1322, - "name": "SWAP1" - }, - { - "begin": 1300, - "end": 1322, - "name": "DUP2" - }, - { - "begin": 1300, - "end": 1322, - "name": "MSTORE" - }, - { - "begin": 1300, - "end": 1322, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1300, - "end": 1322, - "name": "ADD" - }, - { - "begin": 1300, - "end": 1322, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1300, - "end": 1322, - "name": "KECCAK256" - }, - { - "begin": 1300, - "end": 1322, - "name": "SLOAD" - }, - { - "begin": 1281, - "end": 1323, - "name": "SWAP1" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP2" - }, - { - "begin": 1281, - "end": 1323, - "name": "ISZERO" - }, - { - "begin": 1281, - "end": 1323, - "name": "MUL" - }, - { - "begin": 1281, - "end": 1323, - "name": "SWAP1" - }, - { - "begin": 1281, - "end": 1323, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1281, - "end": 1323, - "name": "MLOAD" - }, - { - "begin": 1281, - "end": 1323, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1281, - "end": 1323, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1281, - "end": 1323, - "name": "MLOAD" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP1" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP4" - }, - { - "begin": 1281, - "end": 1323, - "name": "SUB" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP2" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP6" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP9" - }, - { - "begin": 1281, - "end": 1323, - "name": "DUP9" - }, - { - "begin": 1281, - "end": 1323, - "name": "CALL" - }, - { - "begin": 1281, - "end": 1323, - "name": "SWAP4" - }, - { - "begin": 1281, - "end": 1323, - "name": "POP" - }, - { - "begin": 1281, - "end": 1323, - "name": "POP" - }, - { - "begin": 1281, - "end": 1323, - "name": "POP" - }, - { - "begin": 1281, - "end": 1323, - "name": "POP" - }, - { - "begin": 1281, - "end": 1323, - "name": "ISZERO" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "40" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 45, - "end": 61, - "name": "RETURNDATASIZE" - }, - { - "begin": 42, - "end": 43, - "name": "PUSH", - "value": "0" - }, - { - "begin": 39, - "end": 40, - "name": "DUP1" - }, - { - "begin": 24, - "end": 62, - "name": "RETURNDATACOPY" - }, - { - "begin": 77, - "end": 93, - "name": "RETURNDATASIZE" - }, - { - "begin": 74, - "end": 75, - "name": "PUSH", - "value": "0" - }, - { - "begin": 67, - "end": 94, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "40" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 1281, - "end": 1323, - "name": "POP" - }, - { - "begin": 1176, - "end": 1328, - "name": "POP" - }, - { - "begin": 1176, - "end": 1328, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1062, - "end": 1172, - "name": "tag", - "value": "27" - }, - { - "begin": 1062, - "end": 1172, - "name": "JUMPDEST" - }, - { - "begin": 1129, - "end": 1167, - "name": "PUSH [tag]", - "value": "42" - }, - { - "begin": 1157, - "end": 1166, - "name": "CALLVALUE" - }, - { - "begin": 1129, - "end": 1140, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1129, - "end": 1152, - "name": "DUP1" - }, - { - "begin": 1141, - "end": 1151, - "name": "CALLER" - }, - { - "begin": 1129, - "end": 1152, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1129, - "end": 1152, - "name": "AND" - }, - { - "begin": 1129, - "end": 1152, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1129, - "end": 1152, - "name": "AND" - }, - { - "begin": 1129, - "end": 1152, - "name": "DUP2" - }, - { - "begin": 1129, - "end": 1152, - "name": "MSTORE" - }, - { - "begin": 1129, - "end": 1152, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1129, - "end": 1152, - "name": "ADD" - }, - { - "begin": 1129, - "end": 1152, - "name": "SWAP1" - }, - { - "begin": 1129, - "end": 1152, - "name": "DUP2" - }, - { - "begin": 1129, - "end": 1152, - "name": "MSTORE" - }, - { - "begin": 1129, - "end": 1152, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1129, - "end": 1152, - "name": "ADD" - }, - { - "begin": 1129, - "end": 1152, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1129, - "end": 1152, - "name": "KECCAK256" - }, - { - "begin": 1129, - "end": 1152, - "name": "SLOAD" - }, - { - "begin": 1129, - "end": 1156, - "name": "PUSH [tag]", - "value": "43" - }, - { - "begin": 1129, - "end": 1156, - "name": "SWAP1" - }, - { - "begin": 1129, - "end": 1167, - "name": "SWAP2" - }, - { - "begin": 1129, - "end": 1167, - "name": "SWAP1" - }, - { - "begin": 1129, - "end": 1167, - "name": "PUSH", - "value": "FFFFFFFF" - }, - { - "begin": 1129, - "end": 1167, - "name": "AND" - }, - { - "begin": 1129, - "end": 1167, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 1129, - "end": 1167, - "name": "tag", - "value": "42" - }, - { - "begin": 1129, - "end": 1167, - "name": "JUMPDEST" - }, - { - "begin": 1103, - "end": 1114, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1103, - "end": 1126, - "name": "DUP1" - }, - { - "begin": 1115, - "end": 1125, - "name": "CALLER" - }, - { - "begin": 1103, - "end": 1126, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1103, - "end": 1126, - "name": "AND" - }, - { - "begin": 1103, - "end": 1126, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1103, - "end": 1126, - "name": "AND" - }, - { - "begin": 1103, - "end": 1126, - "name": "DUP2" - }, - { - "begin": 1103, - "end": 1126, - "name": "MSTORE" - }, - { - "begin": 1103, - "end": 1126, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1103, - "end": 1126, - "name": "ADD" - }, - { - "begin": 1103, - "end": 1126, - "name": "SWAP1" - }, - { - "begin": 1103, - "end": 1126, - "name": "DUP2" - }, - { - "begin": 1103, - "end": 1126, - "name": "MSTORE" - }, - { - "begin": 1103, - "end": 1126, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1103, - "end": 1126, - "name": "ADD" - }, - { - "begin": 1103, - "end": 1126, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1103, - "end": 1126, - "name": "KECCAK256" - }, - { - "begin": 1103, - "end": 1167, - "name": "DUP2" - }, - { - "begin": 1103, - "end": 1167, - "name": "SWAP1" - }, - { - "begin": 1103, - "end": 1167, - "name": "SSTORE" - }, - { - "begin": 1103, - "end": 1167, - "name": "POP" - }, - { - "begin": 1062, - "end": 1172, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1436, - "end": 1548, - "name": "tag", - "value": "31" - }, - { - "begin": 1436, - "end": 1548, - "name": "JUMPDEST" - }, - { - "begin": 1502, - "end": 1506, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1521, - "end": 1532, - "name": "DUP1" - }, - { - "begin": 1521, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1533, - "end": 1542, - "name": "DUP4" - }, - { - "begin": 1521, - "end": 1543, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1521, - "end": 1543, - "name": "AND" - }, - { - "begin": 1521, - "end": 1543, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1521, - "end": 1543, - "name": "AND" - }, - { - "begin": 1521, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 1521, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 1521, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1521, - "end": 1543, - "name": "ADD" - }, - { - "begin": 1521, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 1521, - "end": 1543, - "name": "DUP2" - }, - { - "begin": 1521, - "end": 1543, - "name": "MSTORE" - }, - { - "begin": 1521, - "end": 1543, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1521, - "end": 1543, - "name": "ADD" - }, - { - "begin": 1521, - "end": 1543, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1521, - "end": 1543, - "name": "KECCAK256" - }, - { - "begin": 1521, - "end": 1543, - "name": "SLOAD" - }, - { - "begin": 1514, - "end": 1543, - "name": "SWAP1" - }, - { - "begin": 1514, - "end": 1543, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP2" - }, - { - "begin": 1436, - "end": 1548, - "name": "SWAP1" - }, - { - "begin": 1436, - "end": 1548, - "name": "POP" - }, - { - "begin": 1436, - "end": 1548, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 834, - "end": 1010, - "name": "tag", - "value": "43" - }, - { - "begin": 834, - "end": 1010, - "name": "JUMPDEST" - }, - { - "begin": 892, - "end": 899, - "name": "PUSH", - "value": "0" - }, - { - "begin": 911, - "end": 920, - "name": "DUP1" - }, - { - "begin": 927, - "end": 928, - "name": "DUP3" - }, - { - "begin": 923, - "end": 924, - "name": "DUP5" - }, - { - "begin": 923, - "end": 928, - "name": "ADD" - }, - { - "begin": 911, - "end": 928, - "name": "SWAP1" - }, - { - "begin": 911, - "end": 928, - "name": "POP" - }, - { - "begin": 951, - "end": 952, - "name": "DUP4" - }, - { - "begin": 946, - "end": 947, - "name": "DUP2" - }, - { - "begin": 946, - "end": 952, - "name": "LT" - }, - { - "begin": 946, - "end": 952, - "name": "ISZERO" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH [tag]", - "value": "46" - }, - { - "begin": 938, - "end": 984, - "name": "JUMPI" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "40" - }, - { - "begin": 938, - "end": 984, - "name": "MLOAD" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "8C379A000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "4" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP3" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "SUB" - }, - { - "begin": 938, - "end": 984, - "name": "DUP3" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "1B" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP2" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "40" - }, - { - "begin": 938, - "end": 984, - "name": "MLOAD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP2" - }, - { - "begin": 938, - "end": 984, - "name": "SUB" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP1" - }, - { - "begin": 938, - "end": 984, - "name": "REVERT" - }, - { - "begin": 938, - "end": 984, - "name": "tag", - "value": "46" - }, - { - "begin": 938, - "end": 984, - "name": "JUMPDEST" - }, - { - "begin": 1002, - "end": 1003, - "name": "DUP1" - }, - { - "begin": 995, - "end": 1003, - "name": "SWAP2" - }, - { - "begin": 995, - "end": 1003, - "name": "POP" - }, - { - "begin": 995, - "end": 1003, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "SWAP3" - }, - { - "begin": 834, - "end": 1010, - "name": "SWAP2" - }, - { - "begin": 834, - "end": 1010, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "JUMP", - "value": "[out]" - } - ] - } - } - }, - "methodIdentifiers": { - "Fal1out()": "6fab5ddf", - "age(uint256)": "6ba61782", - "allocate()": "abaa9916", - "allocatorBalance(address)": "ffd40b56", - "collectAllocations()": "8aa96f38", - "owner()": "8da5cb5b", - "sendAllocation(address)": "a2dea26f" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rings\",\"type\":\"uint256\"}],\"name\":\"age\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Larry A. Gardner\",\"details\":\"All function calls are currently implemented without side effects\",\"methods\":{\"age(uint256)\":{\"author\":\"Mary A. Botanist\",\"details\":\"The Alexandr N. Tetearing algorithm could increase precision\",\"params\":{\"rings\":\"The number of rings from dendrochronological sample\"},\"return\":\"age in years, rounded up for partial years\"}},\"title\":\"A simulator for trees\"},\"userdoc\":{\"methods\":{\"age(uint256)\":{\"notice\":\"Calculate tree age in years, rounded up, for live trees\"}},\"notice\":\"You can use this contract for only the most basic simulation\"}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0xad082f74ba1b39235d2aae9ebe7367b10a7b164c4c5f9a6ebb139bce106b72cb\",\"urls\":[\"bzz-raw://d6d6235ca9a20e1cfc3da11e0bdfce0bdf5549e8fc52c64911857953fcd58bd8\",\"dweb:/ipfs/QmZJXfB8A9yQf6ixs7Amswj8SovAWXVJbMNM1qCw7uzMxN\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", - "userdoc": { - "methods": { - "age(uint256)": { - "notice": "Calculate tree age in years, rounded up, for live trees" - } - }, - "notice": "You can use this contract for only the most basic simulation" - } -} \ No newline at end of file diff --git a/apps/remixdocgen/src/utils/sample-data/sample-artifact.json b/apps/remixdocgen/src/utils/sample-data/sample-artifact.json deleted file mode 100644 index d4696d1293..0000000000 --- a/apps/remixdocgen/src/utils/sample-data/sample-artifact.json +++ /dev/null @@ -1,3771 +0,0 @@ -{ - "abi": [ - { - "constant": false, - "inputs": [], - "name": "Fal1out", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "allocate", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "allocator", - "type": "address" - } - ], - "name": "allocatorBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "collectAllocations", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address payable", - "name": "allocator", - "type": "address" - } - ], - "name": "sendAllocation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "methods": {} - }, - "evm": { - "bytecode": { - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506105f0806100206000396000f3fe6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b1461007b578063a2dea26f146100d2578063abaa991614610123578063ffd40b561461012d575b600080fd5b610062610192565b005b34801561007057600080fd5b5061007961023a565b005b34801561008757600080fd5b5061009061035d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100de57600080fd5b50610121600480360360208110156100f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610383565b005b61012b610456565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104eb565b6040518082815260200191505060405180910390f35b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561035a573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610452573d6000803e3d6000fd5b5050565b6104a7346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F0 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x79 PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x90 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH2 0x456 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x452 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4A7 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x533 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x4EE66BDDA0FFE5072DEB89 0xed 0x27 0x49 CALLDATALOAD TIMESTAMP 0xd0 0x49 SGT 0xe8 POP 0xea EQ REVERT 0x2c DUP16 0xe5 0xd5 0xc8 0xee 0xbf PUSH5 0x736F6C6343 STOP SDIV 0xc STOP ORIGIN ", - "sourceMap": "51:886:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:886:0;;;;;;;" - }, - "deployedBytecode": { - "linkReferences": {}, - "object": "6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b1461007b578063a2dea26f146100d2578063abaa991614610123578063ffd40b561461012d575b600080fd5b610062610192565b005b34801561007057600080fd5b5061007961023a565b005b34801561008757600080fd5b5061009061035d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100de57600080fd5b50610121600480360360208110156100f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610383565b005b61012b610456565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104eb565b6040518082815260200191505060405180910390f35b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561035a573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610452573d6000803e3d6000fd5b5050565b6104a7346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x79 PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x90 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH2 0x456 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x452 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4A7 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x533 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x4EE66BDDA0FFE5072DEB89 0xed 0x27 0x49 CALLDATALOAD TIMESTAMP 0xd0 0x49 SGT 0xe8 POP 0xea EQ REVERT 0x2c DUP16 0xe5 0xd5 0xc8 0xee 0xbf PUSH5 0x736F6C6343 STOP SDIV 0xc STOP ORIGIN ", - "sourceMap": "51:886:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;200:99;;;:::i;:::-;;719:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;719:100:0;;;:::i;:::-;;146:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;146:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;563:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;563:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;563:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;449:110;;;:::i;:::-;;823:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;823:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;823:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;200:99;248:10;240:5;;:18;;;;;;;;;;;;;;;;;;285:9;264:11;:18;276:5;;;;;;;;;;;264:18;;;;;;;;;;;;;;;:30;;;;200:99::o;719:100::-;369:5;;;;;;;;;;;355:19;;:10;:19;;;333:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;772:10;:19;;:42;800:4;792:21;;;772:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;772:42:0;719:100::o;146:28::-;;;;;;;;;;;;;:::o;563:152::-;660:1;635:11;:22;647:9;635:22;;;;;;;;;;;;;;;;:26;627:35;;;;;;668:9;:18;;:42;687:11;:22;699:9;687:22;;;;;;;;;;;;;;;;668:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;668:42:0;563:152;:::o;449:110::-;516:38;544:9;516:11;:23;528:10;516:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;490:11;:23;502:10;490:23;;;;;;;;;;;;;;;:64;;;;449:110::o;823:112::-;889:4;908:11;:22;920:9;908:22;;;;;;;;;;;;;;;;901:29;;823:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "304000", - "executionCost": "343", - "totalCost": "304343" - }, - "external": { - "Fal1out()": "40703", - "allocate()": "infinite", - "allocatorBalance(address)": "684", - "collectAllocations()": "infinite", - "owner()": "475", - "sendAllocation(address)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "80" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "40" - }, - { - "begin": 51, - "end": 937, - "name": "MSTORE" - }, - { - "begin": 51, - "end": 937, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "1" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 51, - "end": 937, - "name": "POP" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH #[$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "0" - }, - { - "begin": 51, - "end": 937, - "name": "CODECOPY" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "0" - }, - { - "begin": 51, - "end": 937, - "name": "RETURN" - } - ], - ".data": { - "0": { - ".auxdata": "a265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", - ".code": [ - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "80" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "40" - }, - { - "begin": 51, - "end": 937, - "name": "MSTORE" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "4" - }, - { - "begin": 51, - "end": 937, - "name": "CALLDATASIZE" - }, - { - "begin": 51, - "end": 937, - "name": "LT" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "0" - }, - { - "begin": 51, - "end": 937, - "name": "CALLDATALOAD" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "E0" - }, - { - "begin": 51, - "end": 937, - "name": "SHR" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "6FAB5DDF" - }, - { - "begin": 51, - "end": 937, - "name": "EQ" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "2" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "8AA96F38" - }, - { - "begin": 51, - "end": 937, - "name": "EQ" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "3" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "8DA5CB5B" - }, - { - "begin": 51, - "end": 937, - "name": "EQ" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "4" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "A2DEA26F" - }, - { - "begin": 51, - "end": 937, - "name": "EQ" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "5" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "ABAA9916" - }, - { - "begin": 51, - "end": 937, - "name": "EQ" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "6" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "FFD40B56" - }, - { - "begin": 51, - "end": 937, - "name": "EQ" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH [tag]", - "value": "7" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPI" - }, - { - "begin": 51, - "end": 937, - "name": "tag", - "value": "1" - }, - { - "begin": 51, - "end": 937, - "name": "JUMPDEST" - }, - { - "begin": 51, - "end": 937, - "name": "PUSH", - "value": "0" - }, - { - "begin": 51, - "end": 937, - "name": "DUP1" - }, - { - "begin": 51, - "end": 937, - "name": "REVERT" - }, - { - "begin": 200, - "end": 299, - "name": "tag", - "value": "2" - }, - { - "begin": 200, - "end": 299, - "name": "JUMPDEST" - }, - { - "begin": 200, - "end": 299, - "name": "PUSH [tag]", - "value": "8" - }, - { - "begin": 200, - "end": 299, - "name": "PUSH [tag]", - "value": "9" - }, - { - "begin": 200, - "end": 299, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 200, - "end": 299, - "name": "tag", - "value": "8" - }, - { - "begin": 200, - "end": 299, - "name": "JUMPDEST" - }, - { - "begin": 200, - "end": 299, - "name": "STOP" - }, - { - "begin": 719, - "end": 819, - "name": "tag", - "value": "3" - }, - { - "begin": 719, - "end": 819, - "name": "JUMPDEST" - }, - { - "begin": 719, - "end": 819, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "10" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "10" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 719, - "end": 819, - "name": "POP" - }, - { - "begin": 719, - "end": 819, - "name": "PUSH [tag]", - "value": "11" - }, - { - "begin": 719, - "end": 819, - "name": "PUSH [tag]", - "value": "12" - }, - { - "begin": 719, - "end": 819, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 719, - "end": 819, - "name": "tag", - "value": "11" - }, - { - "begin": 719, - "end": 819, - "name": "JUMPDEST" - }, - { - "begin": 719, - "end": 819, - "name": "STOP" - }, - { - "begin": 146, - "end": 174, - "name": "tag", - "value": "4" - }, - { - "begin": 146, - "end": 174, - "name": "JUMPDEST" - }, - { - "begin": 146, - "end": 174, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "13" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "13" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 146, - "end": 174, - "name": "POP" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH [tag]", - "value": "15" - }, - { - "begin": 146, - "end": 174, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 146, - "end": 174, - "name": "tag", - "value": "14" - }, - { - "begin": 146, - "end": 174, - "name": "JUMPDEST" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "40" - }, - { - "begin": 146, - "end": 174, - "name": "MLOAD" - }, - { - "begin": 146, - "end": 174, - "name": "DUP1" - }, - { - "begin": 146, - "end": 174, - "name": "DUP3" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 146, - "end": 174, - "name": "AND" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 146, - "end": 174, - "name": "AND" - }, - { - "begin": 146, - "end": 174, - "name": "DUP2" - }, - { - "begin": 146, - "end": 174, - "name": "MSTORE" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "20" - }, - { - "begin": 146, - "end": 174, - "name": "ADD" - }, - { - "begin": 146, - "end": 174, - "name": "SWAP2" - }, - { - "begin": 146, - "end": 174, - "name": "POP" - }, - { - "begin": 146, - "end": 174, - "name": "POP" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "40" - }, - { - "begin": 146, - "end": 174, - "name": "MLOAD" - }, - { - "begin": 146, - "end": 174, - "name": "DUP1" - }, - { - "begin": 146, - "end": 174, - "name": "SWAP2" - }, - { - "begin": 146, - "end": 174, - "name": "SUB" - }, - { - "begin": 146, - "end": 174, - "name": "SWAP1" - }, - { - "begin": 146, - "end": 174, - "name": "RETURN" - }, - { - "begin": 563, - "end": 715, - "name": "tag", - "value": "5" - }, - { - "begin": 563, - "end": 715, - "name": "JUMPDEST" - }, - { - "begin": 563, - "end": 715, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "16" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "16" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 563, - "end": 715, - "name": "POP" - }, - { - "begin": 563, - "end": 715, - "name": "PUSH [tag]", - "value": "17" - }, - { - "begin": 563, - "end": 715, - "name": "PUSH", - "value": "4" - }, - { - "begin": 563, - "end": 715, - "name": "DUP1" - }, - { - "begin": 563, - "end": 715, - "name": "CALLDATASIZE" - }, - { - "begin": 563, - "end": 715, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "18" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 563, - "end": 715, - "name": "DUP2" - }, - { - "begin": 563, - "end": 715, - "name": "ADD" - }, - { - "begin": 563, - "end": 715, - "name": "SWAP1" - }, - { - "begin": 563, - "end": 715, - "name": "DUP1" - }, - { - "begin": 563, - "end": 715, - "name": "DUP1" - }, - { - "begin": 563, - "end": 715, - "name": "CALLDATALOAD" - }, - { - "begin": 563, - "end": 715, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 563, - "end": 715, - "name": "AND" - }, - { - "begin": 563, - "end": 715, - "name": "SWAP1" - }, - { - "begin": 563, - "end": 715, - "name": "PUSH", - "value": "20" - }, - { - "begin": 563, - "end": 715, - "name": "ADD" - }, - { - "begin": 563, - "end": 715, - "name": "SWAP1" - }, - { - "begin": 563, - "end": 715, - "name": "SWAP3" - }, - { - "begin": 563, - "end": 715, - "name": "SWAP2" - }, - { - "begin": 563, - "end": 715, - "name": "SWAP1" - }, - { - "begin": 563, - "end": 715, - "name": "POP" - }, - { - "begin": 563, - "end": 715, - "name": "POP" - }, - { - "begin": 563, - "end": 715, - "name": "POP" - }, - { - "begin": 563, - "end": 715, - "name": "PUSH [tag]", - "value": "19" - }, - { - "begin": 563, - "end": 715, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 563, - "end": 715, - "name": "tag", - "value": "17" - }, - { - "begin": 563, - "end": 715, - "name": "JUMPDEST" - }, - { - "begin": 563, - "end": 715, - "name": "STOP" - }, - { - "begin": 449, - "end": 559, - "name": "tag", - "value": "6" - }, - { - "begin": 449, - "end": 559, - "name": "JUMPDEST" - }, - { - "begin": 449, - "end": 559, - "name": "PUSH [tag]", - "value": "20" - }, - { - "begin": 449, - "end": 559, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 449, - "end": 559, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 449, - "end": 559, - "name": "tag", - "value": "20" - }, - { - "begin": 449, - "end": 559, - "name": "JUMPDEST" - }, - { - "begin": 449, - "end": 559, - "name": "STOP" - }, - { - "begin": 823, - "end": 935, - "name": "tag", - "value": "7" - }, - { - "begin": 823, - "end": 935, - "name": "JUMPDEST" - }, - { - "begin": 823, - "end": 935, - "name": "CALLVALUE" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "22" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 30, - "end": 31, - "name": "PUSH", - "value": "0" - }, - { - "begin": 27, - "end": 28, - "name": "DUP1" - }, - { - "begin": 20, - "end": 32, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "22" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH [tag]", - "value": "23" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH", - "value": "4" - }, - { - "begin": 823, - "end": 935, - "name": "DUP1" - }, - { - "begin": 823, - "end": 935, - "name": "CALLDATASIZE" - }, - { - "begin": 823, - "end": 935, - "name": "SUB" - }, - { - "begin": 13, - "end": 15, - "name": "PUSH", - "value": "20" - }, - { - "begin": 8, - "end": 11, - "name": "DUP2" - }, - { - "begin": 5, - "end": 16, - "name": "LT" - }, - { - "begin": 2, - "end": 4, - "name": "ISZERO" - }, - { - "begin": 2, - "end": 4, - "name": "PUSH [tag]", - "value": "24" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPI" - }, - { - "begin": 29, - "end": 30, - "name": "PUSH", - "value": "0" - }, - { - "begin": 26, - "end": 27, - "name": "DUP1" - }, - { - "begin": 19, - "end": 31, - "name": "REVERT" - }, - { - "begin": 2, - "end": 4, - "name": "tag", - "value": "24" - }, - { - "begin": 2, - "end": 4, - "name": "JUMPDEST" - }, - { - "begin": 823, - "end": 935, - "name": "DUP2" - }, - { - "begin": 823, - "end": 935, - "name": "ADD" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP1" - }, - { - "begin": 823, - "end": 935, - "name": "DUP1" - }, - { - "begin": 823, - "end": 935, - "name": "DUP1" - }, - { - "begin": 823, - "end": 935, - "name": "CALLDATALOAD" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 823, - "end": 935, - "name": "AND" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP1" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH", - "value": "20" - }, - { - "begin": 823, - "end": 935, - "name": "ADD" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP1" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP3" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP2" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP1" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH [tag]", - "value": "25" - }, - { - "begin": 823, - "end": 935, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 823, - "end": 935, - "name": "tag", - "value": "23" - }, - { - "begin": 823, - "end": 935, - "name": "JUMPDEST" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH", - "value": "40" - }, - { - "begin": 823, - "end": 935, - "name": "MLOAD" - }, - { - "begin": 823, - "end": 935, - "name": "DUP1" - }, - { - "begin": 823, - "end": 935, - "name": "DUP3" - }, - { - "begin": 823, - "end": 935, - "name": "DUP2" - }, - { - "begin": 823, - "end": 935, - "name": "MSTORE" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH", - "value": "20" - }, - { - "begin": 823, - "end": 935, - "name": "ADD" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP2" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "PUSH", - "value": "40" - }, - { - "begin": 823, - "end": 935, - "name": "MLOAD" - }, - { - "begin": 823, - "end": 935, - "name": "DUP1" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP2" - }, - { - "begin": 823, - "end": 935, - "name": "SUB" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP1" - }, - { - "begin": 823, - "end": 935, - "name": "RETURN" - }, - { - "begin": 200, - "end": 299, - "name": "tag", - "value": "9" - }, - { - "begin": 200, - "end": 299, - "name": "JUMPDEST" - }, - { - "begin": 248, - "end": 258, - "name": "CALLER" - }, - { - "begin": 240, - "end": 245, - "name": "PUSH", - "value": "1" - }, - { - "begin": 240, - "end": 245, - "name": "PUSH", - "value": "0" - }, - { - "begin": 240, - "end": 258, - "name": "PUSH", - "value": "100" - }, - { - "begin": 240, - "end": 258, - "name": "EXP" - }, - { - "begin": 240, - "end": 258, - "name": "DUP2" - }, - { - "begin": 240, - "end": 258, - "name": "SLOAD" - }, - { - "begin": 240, - "end": 258, - "name": "DUP2" - }, - { - "begin": 240, - "end": 258, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 240, - "end": 258, - "name": "MUL" - }, - { - "begin": 240, - "end": 258, - "name": "NOT" - }, - { - "begin": 240, - "end": 258, - "name": "AND" - }, - { - "begin": 240, - "end": 258, - "name": "SWAP1" - }, - { - "begin": 240, - "end": 258, - "name": "DUP4" - }, - { - "begin": 240, - "end": 258, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 240, - "end": 258, - "name": "AND" - }, - { - "begin": 240, - "end": 258, - "name": "MUL" - }, - { - "begin": 240, - "end": 258, - "name": "OR" - }, - { - "begin": 240, - "end": 258, - "name": "SWAP1" - }, - { - "begin": 240, - "end": 258, - "name": "SSTORE" - }, - { - "begin": 240, - "end": 258, - "name": "POP" - }, - { - "begin": 285, - "end": 294, - "name": "CALLVALUE" - }, - { - "begin": 264, - "end": 275, - "name": "PUSH", - "value": "0" - }, - { - "begin": 264, - "end": 282, - "name": "DUP1" - }, - { - "begin": 276, - "end": 281, - "name": "PUSH", - "value": "1" - }, - { - "begin": 276, - "end": 281, - "name": "PUSH", - "value": "0" - }, - { - "begin": 276, - "end": 281, - "name": "SWAP1" - }, - { - "begin": 276, - "end": 281, - "name": "SLOAD" - }, - { - "begin": 276, - "end": 281, - "name": "SWAP1" - }, - { - "begin": 276, - "end": 281, - "name": "PUSH", - "value": "100" - }, - { - "begin": 276, - "end": 281, - "name": "EXP" - }, - { - "begin": 276, - "end": 281, - "name": "SWAP1" - }, - { - "begin": 276, - "end": 281, - "name": "DIV" - }, - { - "begin": 276, - "end": 281, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 276, - "end": 281, - "name": "AND" - }, - { - "begin": 264, - "end": 282, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 264, - "end": 282, - "name": "AND" - }, - { - "begin": 264, - "end": 282, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 264, - "end": 282, - "name": "AND" - }, - { - "begin": 264, - "end": 282, - "name": "DUP2" - }, - { - "begin": 264, - "end": 282, - "name": "MSTORE" - }, - { - "begin": 264, - "end": 282, - "name": "PUSH", - "value": "20" - }, - { - "begin": 264, - "end": 282, - "name": "ADD" - }, - { - "begin": 264, - "end": 282, - "name": "SWAP1" - }, - { - "begin": 264, - "end": 282, - "name": "DUP2" - }, - { - "begin": 264, - "end": 282, - "name": "MSTORE" - }, - { - "begin": 264, - "end": 282, - "name": "PUSH", - "value": "20" - }, - { - "begin": 264, - "end": 282, - "name": "ADD" - }, - { - "begin": 264, - "end": 282, - "name": "PUSH", - "value": "0" - }, - { - "begin": 264, - "end": 282, - "name": "KECCAK256" - }, - { - "begin": 264, - "end": 294, - "name": "DUP2" - }, - { - "begin": 264, - "end": 294, - "name": "SWAP1" - }, - { - "begin": 264, - "end": 294, - "name": "SSTORE" - }, - { - "begin": 264, - "end": 294, - "name": "POP" - }, - { - "begin": 200, - "end": 299, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 719, - "end": 819, - "name": "tag", - "value": "12" - }, - { - "begin": 719, - "end": 819, - "name": "JUMPDEST" - }, - { - "begin": 369, - "end": 374, - "name": "PUSH", - "value": "1" - }, - { - "begin": 369, - "end": 374, - "name": "PUSH", - "value": "0" - }, - { - "begin": 369, - "end": 374, - "name": "SWAP1" - }, - { - "begin": 369, - "end": 374, - "name": "SLOAD" - }, - { - "begin": 369, - "end": 374, - "name": "SWAP1" - }, - { - "begin": 369, - "end": 374, - "name": "PUSH", - "value": "100" - }, - { - "begin": 369, - "end": 374, - "name": "EXP" - }, - { - "begin": 369, - "end": 374, - "name": "SWAP1" - }, - { - "begin": 369, - "end": 374, - "name": "DIV" - }, - { - "begin": 369, - "end": 374, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 369, - "end": 374, - "name": "AND" - }, - { - "begin": 355, - "end": 374, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 355, - "end": 374, - "name": "AND" - }, - { - "begin": 355, - "end": 365, - "name": "CALLER" - }, - { - "begin": 355, - "end": 374, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 355, - "end": 374, - "name": "AND" - }, - { - "begin": 355, - "end": 374, - "name": "EQ" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH [tag]", - "value": "28" - }, - { - "begin": 333, - "end": 425, - "name": "JUMPI" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "40" - }, - { - "begin": 333, - "end": 425, - "name": "MLOAD" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "8C379A000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 333, - "end": 425, - "name": "DUP2" - }, - { - "begin": 333, - "end": 425, - "name": "MSTORE" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "4" - }, - { - "begin": 333, - "end": 425, - "name": "ADD" - }, - { - "begin": 333, - "end": 425, - "name": "DUP1" - }, - { - "begin": 333, - "end": 425, - "name": "DUP1" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "20" - }, - { - "begin": 333, - "end": 425, - "name": "ADD" - }, - { - "begin": 333, - "end": 425, - "name": "DUP3" - }, - { - "begin": 333, - "end": 425, - "name": "DUP2" - }, - { - "begin": 333, - "end": 425, - "name": "SUB" - }, - { - "begin": 333, - "end": 425, - "name": "DUP3" - }, - { - "begin": 333, - "end": 425, - "name": "MSTORE" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "17" - }, - { - "begin": 333, - "end": 425, - "name": "DUP2" - }, - { - "begin": 333, - "end": 425, - "name": "MSTORE" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "20" - }, - { - "begin": 333, - "end": 425, - "name": "ADD" - }, - { - "begin": 333, - "end": 425, - "name": "DUP1" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" - }, - { - "begin": 333, - "end": 425, - "name": "DUP2" - }, - { - "begin": 333, - "end": 425, - "name": "MSTORE" - }, - { - "begin": 333, - "end": 425, - "name": "POP" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "20" - }, - { - "begin": 333, - "end": 425, - "name": "ADD" - }, - { - "begin": 333, - "end": 425, - "name": "SWAP2" - }, - { - "begin": 333, - "end": 425, - "name": "POP" - }, - { - "begin": 333, - "end": 425, - "name": "POP" - }, - { - "begin": 333, - "end": 425, - "name": "PUSH", - "value": "40" - }, - { - "begin": 333, - "end": 425, - "name": "MLOAD" - }, - { - "begin": 333, - "end": 425, - "name": "DUP1" - }, - { - "begin": 333, - "end": 425, - "name": "SWAP2" - }, - { - "begin": 333, - "end": 425, - "name": "SUB" - }, - { - "begin": 333, - "end": 425, - "name": "SWAP1" - }, - { - "begin": 333, - "end": 425, - "name": "REVERT" - }, - { - "begin": 333, - "end": 425, - "name": "tag", - "value": "28" - }, - { - "begin": 333, - "end": 425, - "name": "JUMPDEST" - }, - { - "begin": 772, - "end": 782, - "name": "CALLER" - }, - { - "begin": 772, - "end": 791, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 772, - "end": 791, - "name": "AND" - }, - { - "begin": 772, - "end": 814, - "name": "PUSH", - "value": "8FC" - }, - { - "begin": 800, - "end": 804, - "name": "ADDRESS" - }, - { - "begin": 792, - "end": 813, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 792, - "end": 813, - "name": "AND" - }, - { - "begin": 792, - "end": 813, - "name": "BALANCE" - }, - { - "begin": 772, - "end": 814, - "name": "SWAP1" - }, - { - "begin": 772, - "end": 814, - "name": "DUP2" - }, - { - "begin": 772, - "end": 814, - "name": "ISZERO" - }, - { - "begin": 772, - "end": 814, - "name": "MUL" - }, - { - "begin": 772, - "end": 814, - "name": "SWAP1" - }, - { - "begin": 772, - "end": 814, - "name": "PUSH", - "value": "40" - }, - { - "begin": 772, - "end": 814, - "name": "MLOAD" - }, - { - "begin": 772, - "end": 814, - "name": "PUSH", - "value": "0" - }, - { - "begin": 772, - "end": 814, - "name": "PUSH", - "value": "40" - }, - { - "begin": 772, - "end": 814, - "name": "MLOAD" - }, - { - "begin": 772, - "end": 814, - "name": "DUP1" - }, - { - "begin": 772, - "end": 814, - "name": "DUP4" - }, - { - "begin": 772, - "end": 814, - "name": "SUB" - }, - { - "begin": 772, - "end": 814, - "name": "DUP2" - }, - { - "begin": 772, - "end": 814, - "name": "DUP6" - }, - { - "begin": 772, - "end": 814, - "name": "DUP9" - }, - { - "begin": 772, - "end": 814, - "name": "DUP9" - }, - { - "begin": 772, - "end": 814, - "name": "CALL" - }, - { - "begin": 772, - "end": 814, - "name": "SWAP4" - }, - { - "begin": 772, - "end": 814, - "name": "POP" - }, - { - "begin": 772, - "end": 814, - "name": "POP" - }, - { - "begin": 772, - "end": 814, - "name": "POP" - }, - { - "begin": 772, - "end": 814, - "name": "POP" - }, - { - "begin": 772, - "end": 814, - "name": "ISZERO" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "30" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 45, - "end": 61, - "name": "RETURNDATASIZE" - }, - { - "begin": 42, - "end": 43, - "name": "PUSH", - "value": "0" - }, - { - "begin": 39, - "end": 40, - "name": "DUP1" - }, - { - "begin": 24, - "end": 62, - "name": "RETURNDATACOPY" - }, - { - "begin": 77, - "end": 93, - "name": "RETURNDATASIZE" - }, - { - "begin": 74, - "end": 75, - "name": "PUSH", - "value": "0" - }, - { - "begin": 67, - "end": 94, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "30" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 772, - "end": 814, - "name": "POP" - }, - { - "begin": 719, - "end": 819, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 146, - "end": 174, - "name": "tag", - "value": "15" - }, - { - "begin": 146, - "end": 174, - "name": "JUMPDEST" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "1" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "0" - }, - { - "begin": 146, - "end": 174, - "name": "SWAP1" - }, - { - "begin": 146, - "end": 174, - "name": "SLOAD" - }, - { - "begin": 146, - "end": 174, - "name": "SWAP1" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "100" - }, - { - "begin": 146, - "end": 174, - "name": "EXP" - }, - { - "begin": 146, - "end": 174, - "name": "SWAP1" - }, - { - "begin": 146, - "end": 174, - "name": "DIV" - }, - { - "begin": 146, - "end": 174, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 146, - "end": 174, - "name": "AND" - }, - { - "begin": 146, - "end": 174, - "name": "DUP2" - }, - { - "begin": 146, - "end": 174, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 563, - "end": 715, - "name": "tag", - "value": "19" - }, - { - "begin": 563, - "end": 715, - "name": "JUMPDEST" - }, - { - "begin": 660, - "end": 661, - "name": "PUSH", - "value": "0" - }, - { - "begin": 635, - "end": 646, - "name": "DUP1" - }, - { - "begin": 635, - "end": 657, - "name": "PUSH", - "value": "0" - }, - { - "begin": 647, - "end": 656, - "name": "DUP4" - }, - { - "begin": 635, - "end": 657, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 635, - "end": 657, - "name": "AND" - }, - { - "begin": 635, - "end": 657, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 635, - "end": 657, - "name": "AND" - }, - { - "begin": 635, - "end": 657, - "name": "DUP2" - }, - { - "begin": 635, - "end": 657, - "name": "MSTORE" - }, - { - "begin": 635, - "end": 657, - "name": "PUSH", - "value": "20" - }, - { - "begin": 635, - "end": 657, - "name": "ADD" - }, - { - "begin": 635, - "end": 657, - "name": "SWAP1" - }, - { - "begin": 635, - "end": 657, - "name": "DUP2" - }, - { - "begin": 635, - "end": 657, - "name": "MSTORE" - }, - { - "begin": 635, - "end": 657, - "name": "PUSH", - "value": "20" - }, - { - "begin": 635, - "end": 657, - "name": "ADD" - }, - { - "begin": 635, - "end": 657, - "name": "PUSH", - "value": "0" - }, - { - "begin": 635, - "end": 657, - "name": "KECCAK256" - }, - { - "begin": 635, - "end": 657, - "name": "SLOAD" - }, - { - "begin": 635, - "end": 661, - "name": "GT" - }, - { - "begin": 627, - "end": 662, - "name": "PUSH [tag]", - "value": "32" - }, - { - "begin": 627, - "end": 662, - "name": "JUMPI" - }, - { - "begin": 627, - "end": 662, - "name": "PUSH", - "value": "0" - }, - { - "begin": 627, - "end": 662, - "name": "DUP1" - }, - { - "begin": 627, - "end": 662, - "name": "REVERT" - }, - { - "begin": 627, - "end": 662, - "name": "tag", - "value": "32" - }, - { - "begin": 627, - "end": 662, - "name": "JUMPDEST" - }, - { - "begin": 668, - "end": 677, - "name": "DUP1" - }, - { - "begin": 668, - "end": 686, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 668, - "end": 686, - "name": "AND" - }, - { - "begin": 668, - "end": 710, - "name": "PUSH", - "value": "8FC" - }, - { - "begin": 687, - "end": 698, - "name": "PUSH", - "value": "0" - }, - { - "begin": 687, - "end": 709, - "name": "DUP1" - }, - { - "begin": 699, - "end": 708, - "name": "DUP5" - }, - { - "begin": 687, - "end": 709, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 687, - "end": 709, - "name": "AND" - }, - { - "begin": 687, - "end": 709, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 687, - "end": 709, - "name": "AND" - }, - { - "begin": 687, - "end": 709, - "name": "DUP2" - }, - { - "begin": 687, - "end": 709, - "name": "MSTORE" - }, - { - "begin": 687, - "end": 709, - "name": "PUSH", - "value": "20" - }, - { - "begin": 687, - "end": 709, - "name": "ADD" - }, - { - "begin": 687, - "end": 709, - "name": "SWAP1" - }, - { - "begin": 687, - "end": 709, - "name": "DUP2" - }, - { - "begin": 687, - "end": 709, - "name": "MSTORE" - }, - { - "begin": 687, - "end": 709, - "name": "PUSH", - "value": "20" - }, - { - "begin": 687, - "end": 709, - "name": "ADD" - }, - { - "begin": 687, - "end": 709, - "name": "PUSH", - "value": "0" - }, - { - "begin": 687, - "end": 709, - "name": "KECCAK256" - }, - { - "begin": 687, - "end": 709, - "name": "SLOAD" - }, - { - "begin": 668, - "end": 710, - "name": "SWAP1" - }, - { - "begin": 668, - "end": 710, - "name": "DUP2" - }, - { - "begin": 668, - "end": 710, - "name": "ISZERO" - }, - { - "begin": 668, - "end": 710, - "name": "MUL" - }, - { - "begin": 668, - "end": 710, - "name": "SWAP1" - }, - { - "begin": 668, - "end": 710, - "name": "PUSH", - "value": "40" - }, - { - "begin": 668, - "end": 710, - "name": "MLOAD" - }, - { - "begin": 668, - "end": 710, - "name": "PUSH", - "value": "0" - }, - { - "begin": 668, - "end": 710, - "name": "PUSH", - "value": "40" - }, - { - "begin": 668, - "end": 710, - "name": "MLOAD" - }, - { - "begin": 668, - "end": 710, - "name": "DUP1" - }, - { - "begin": 668, - "end": 710, - "name": "DUP4" - }, - { - "begin": 668, - "end": 710, - "name": "SUB" - }, - { - "begin": 668, - "end": 710, - "name": "DUP2" - }, - { - "begin": 668, - "end": 710, - "name": "DUP6" - }, - { - "begin": 668, - "end": 710, - "name": "DUP9" - }, - { - "begin": 668, - "end": 710, - "name": "DUP9" - }, - { - "begin": 668, - "end": 710, - "name": "CALL" - }, - { - "begin": 668, - "end": 710, - "name": "SWAP4" - }, - { - "begin": 668, - "end": 710, - "name": "POP" - }, - { - "begin": 668, - "end": 710, - "name": "POP" - }, - { - "begin": 668, - "end": 710, - "name": "POP" - }, - { - "begin": 668, - "end": 710, - "name": "POP" - }, - { - "begin": 668, - "end": 710, - "name": "ISZERO" - }, - { - "begin": 8, - "end": 17, - "name": "DUP1" - }, - { - "begin": 5, - "end": 7, - "name": "ISZERO" - }, - { - "begin": 5, - "end": 7, - "name": "PUSH [tag]", - "value": "33" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPI" - }, - { - "begin": 45, - "end": 61, - "name": "RETURNDATASIZE" - }, - { - "begin": 42, - "end": 43, - "name": "PUSH", - "value": "0" - }, - { - "begin": 39, - "end": 40, - "name": "DUP1" - }, - { - "begin": 24, - "end": 62, - "name": "RETURNDATACOPY" - }, - { - "begin": 77, - "end": 93, - "name": "RETURNDATASIZE" - }, - { - "begin": 74, - "end": 75, - "name": "PUSH", - "value": "0" - }, - { - "begin": 67, - "end": 94, - "name": "REVERT" - }, - { - "begin": 5, - "end": 7, - "name": "tag", - "value": "33" - }, - { - "begin": 5, - "end": 7, - "name": "JUMPDEST" - }, - { - "begin": 668, - "end": 710, - "name": "POP" - }, - { - "begin": 563, - "end": 715, - "name": "POP" - }, - { - "begin": 563, - "end": 715, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 449, - "end": 559, - "name": "tag", - "value": "21" - }, - { - "begin": 449, - "end": 559, - "name": "JUMPDEST" - }, - { - "begin": 516, - "end": 554, - "name": "PUSH [tag]", - "value": "35" - }, - { - "begin": 544, - "end": 553, - "name": "CALLVALUE" - }, - { - "begin": 516, - "end": 527, - "name": "PUSH", - "value": "0" - }, - { - "begin": 516, - "end": 539, - "name": "DUP1" - }, - { - "begin": 528, - "end": 538, - "name": "CALLER" - }, - { - "begin": 516, - "end": 539, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 516, - "end": 539, - "name": "AND" - }, - { - "begin": 516, - "end": 539, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 516, - "end": 539, - "name": "AND" - }, - { - "begin": 516, - "end": 539, - "name": "DUP2" - }, - { - "begin": 516, - "end": 539, - "name": "MSTORE" - }, - { - "begin": 516, - "end": 539, - "name": "PUSH", - "value": "20" - }, - { - "begin": 516, - "end": 539, - "name": "ADD" - }, - { - "begin": 516, - "end": 539, - "name": "SWAP1" - }, - { - "begin": 516, - "end": 539, - "name": "DUP2" - }, - { - "begin": 516, - "end": 539, - "name": "MSTORE" - }, - { - "begin": 516, - "end": 539, - "name": "PUSH", - "value": "20" - }, - { - "begin": 516, - "end": 539, - "name": "ADD" - }, - { - "begin": 516, - "end": 539, - "name": "PUSH", - "value": "0" - }, - { - "begin": 516, - "end": 539, - "name": "KECCAK256" - }, - { - "begin": 516, - "end": 539, - "name": "SLOAD" - }, - { - "begin": 516, - "end": 543, - "name": "PUSH [tag]", - "value": "36" - }, - { - "begin": 516, - "end": 543, - "name": "SWAP1" - }, - { - "begin": 516, - "end": 554, - "name": "SWAP2" - }, - { - "begin": 516, - "end": 554, - "name": "SWAP1" - }, - { - "begin": 516, - "end": 554, - "name": "PUSH", - "value": "FFFFFFFF" - }, - { - "begin": 516, - "end": 554, - "name": "AND" - }, - { - "begin": 516, - "end": 554, - "name": "JUMP", - "value": "[in]" - }, - { - "begin": 516, - "end": 554, - "name": "tag", - "value": "35" - }, - { - "begin": 516, - "end": 554, - "name": "JUMPDEST" - }, - { - "begin": 490, - "end": 501, - "name": "PUSH", - "value": "0" - }, - { - "begin": 490, - "end": 513, - "name": "DUP1" - }, - { - "begin": 502, - "end": 512, - "name": "CALLER" - }, - { - "begin": 490, - "end": 513, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 490, - "end": 513, - "name": "AND" - }, - { - "begin": 490, - "end": 513, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 490, - "end": 513, - "name": "AND" - }, - { - "begin": 490, - "end": 513, - "name": "DUP2" - }, - { - "begin": 490, - "end": 513, - "name": "MSTORE" - }, - { - "begin": 490, - "end": 513, - "name": "PUSH", - "value": "20" - }, - { - "begin": 490, - "end": 513, - "name": "ADD" - }, - { - "begin": 490, - "end": 513, - "name": "SWAP1" - }, - { - "begin": 490, - "end": 513, - "name": "DUP2" - }, - { - "begin": 490, - "end": 513, - "name": "MSTORE" - }, - { - "begin": 490, - "end": 513, - "name": "PUSH", - "value": "20" - }, - { - "begin": 490, - "end": 513, - "name": "ADD" - }, - { - "begin": 490, - "end": 513, - "name": "PUSH", - "value": "0" - }, - { - "begin": 490, - "end": 513, - "name": "KECCAK256" - }, - { - "begin": 490, - "end": 554, - "name": "DUP2" - }, - { - "begin": 490, - "end": 554, - "name": "SWAP1" - }, - { - "begin": 490, - "end": 554, - "name": "SSTORE" - }, - { - "begin": 490, - "end": 554, - "name": "POP" - }, - { - "begin": 449, - "end": 559, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 823, - "end": 935, - "name": "tag", - "value": "25" - }, - { - "begin": 823, - "end": 935, - "name": "JUMPDEST" - }, - { - "begin": 889, - "end": 893, - "name": "PUSH", - "value": "0" - }, - { - "begin": 908, - "end": 919, - "name": "DUP1" - }, - { - "begin": 908, - "end": 930, - "name": "PUSH", - "value": "0" - }, - { - "begin": 920, - "end": 929, - "name": "DUP4" - }, - { - "begin": 908, - "end": 930, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 908, - "end": 930, - "name": "AND" - }, - { - "begin": 908, - "end": 930, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 908, - "end": 930, - "name": "AND" - }, - { - "begin": 908, - "end": 930, - "name": "DUP2" - }, - { - "begin": 908, - "end": 930, - "name": "MSTORE" - }, - { - "begin": 908, - "end": 930, - "name": "PUSH", - "value": "20" - }, - { - "begin": 908, - "end": 930, - "name": "ADD" - }, - { - "begin": 908, - "end": 930, - "name": "SWAP1" - }, - { - "begin": 908, - "end": 930, - "name": "DUP2" - }, - { - "begin": 908, - "end": 930, - "name": "MSTORE" - }, - { - "begin": 908, - "end": 930, - "name": "PUSH", - "value": "20" - }, - { - "begin": 908, - "end": 930, - "name": "ADD" - }, - { - "begin": 908, - "end": 930, - "name": "PUSH", - "value": "0" - }, - { - "begin": 908, - "end": 930, - "name": "KECCAK256" - }, - { - "begin": 908, - "end": 930, - "name": "SLOAD" - }, - { - "begin": 901, - "end": 930, - "name": "SWAP1" - }, - { - "begin": 901, - "end": 930, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP2" - }, - { - "begin": 823, - "end": 935, - "name": "SWAP1" - }, - { - "begin": 823, - "end": 935, - "name": "POP" - }, - { - "begin": 823, - "end": 935, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 834, - "end": 1010, - "name": "tag", - "value": "36" - }, - { - "begin": 834, - "end": 1010, - "name": "JUMPDEST" - }, - { - "begin": 892, - "end": 899, - "name": "PUSH", - "value": "0" - }, - { - "begin": 911, - "end": 920, - "name": "DUP1" - }, - { - "begin": 927, - "end": 928, - "name": "DUP3" - }, - { - "begin": 923, - "end": 924, - "name": "DUP5" - }, - { - "begin": 923, - "end": 928, - "name": "ADD" - }, - { - "begin": 911, - "end": 928, - "name": "SWAP1" - }, - { - "begin": 911, - "end": 928, - "name": "POP" - }, - { - "begin": 951, - "end": 952, - "name": "DUP4" - }, - { - "begin": 946, - "end": 947, - "name": "DUP2" - }, - { - "begin": 946, - "end": 952, - "name": "LT" - }, - { - "begin": 946, - "end": 952, - "name": "ISZERO" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH [tag]", - "value": "39" - }, - { - "begin": 938, - "end": 984, - "name": "JUMPI" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "40" - }, - { - "begin": 938, - "end": 984, - "name": "MLOAD" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "8C379A000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "4" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP3" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "SUB" - }, - { - "begin": 938, - "end": 984, - "name": "DUP3" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "1B" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" - }, - { - "begin": 938, - "end": 984, - "name": "DUP2" - }, - { - "begin": 938, - "end": 984, - "name": "MSTORE" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "20" - }, - { - "begin": 938, - "end": 984, - "name": "ADD" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP2" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "POP" - }, - { - "begin": 938, - "end": 984, - "name": "PUSH", - "value": "40" - }, - { - "begin": 938, - "end": 984, - "name": "MLOAD" - }, - { - "begin": 938, - "end": 984, - "name": "DUP1" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP2" - }, - { - "begin": 938, - "end": 984, - "name": "SUB" - }, - { - "begin": 938, - "end": 984, - "name": "SWAP1" - }, - { - "begin": 938, - "end": 984, - "name": "REVERT" - }, - { - "begin": 938, - "end": 984, - "name": "tag", - "value": "39" - }, - { - "begin": 938, - "end": 984, - "name": "JUMPDEST" - }, - { - "begin": 1002, - "end": 1003, - "name": "DUP1" - }, - { - "begin": 995, - "end": 1003, - "name": "SWAP2" - }, - { - "begin": 995, - "end": 1003, - "name": "POP" - }, - { - "begin": 995, - "end": 1003, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "SWAP3" - }, - { - "begin": 834, - "end": 1010, - "name": "SWAP2" - }, - { - "begin": 834, - "end": 1010, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "POP" - }, - { - "begin": 834, - "end": 1010, - "name": "JUMP", - "value": "[out]" - } - ] - } - } - }, - "methodIdentifiers": { - "Fal1out()": "6fab5ddf", - "allocate()": "abaa9916", - "allocatorBalance(address)": "ffd40b56", - "collectAllocations()": "8aa96f38", - "owner()": "8da5cb5b", - "sendAllocation(address)": "a2dea26f" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.5.12+commit.7709ece9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0x3e98b9d316e26b66db2ad8a57532a58f4c1c352f87859863d719cea4164b719d\",\"urls\":[\"bzz-raw://e6c562e74cc92f8e7487768f0a534cf591f04d21b4d40a285b35fc5267562af3\",\"dweb:/ipfs/QmafXnUVPwjfwcQoYmMkChGQzPgfeSuqLHp81kkZBqn7jq\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/apps/remixdocgen/src/utils/template.ts b/apps/remixdocgen/src/utils/template.ts deleted file mode 100644 index 2aa7dcdeba..0000000000 --- a/apps/remixdocgen/src/utils/template.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { - FunctionDocumentation, - TemplateDoc, - MethodDoc, - ContractDocumentation, - ParameterDocumentation, -} from "./types"; -type HTMLContent = string; - -export const htmlTemplate = (content: HTMLContent) => { - return ` - - - - - - - - - ${content} - - -`; -}; - -export const template = ( - name: string, - contractDoc: ContractDocumentation, - functions: FunctionDocumentation[] -) => ` - - -
- - ${functions.length === 0 - ? "No contract to display" - : renderHeader(name, contractDoc) - } - - ${functions - .map( - (item) => ` -
-
${item.name}
- - ${getMethodDetails(item.devdoc)} - - ${renderParameterDocumentation(item.inputs)} - -

Returns:

- - ${renderParameterDocumentation(item.outputs)} - ` - ) - .join("\n")} - -
-`; - -const devMethodDocTemplate: Partial> = { - author: (author: string) => `

Created By ${author}

`, - details: (details: string) => `

${details}

`, - return: (value: string) => `

Return : ${value}

`, - notice: (notice: string) => (notice ? `

${notice}

` : ""), - // returns: () => '', // Implemented by getParams() - params: () => "", // Implemented by getParams() -}; - -export const renderHeader = ( - name: string, - contractDoc: ContractDocumentation -) => ` -

${name} ${contractDoc.title ? `: ${contractDoc.title}` : "" - }

- - ${contractDoc.notice ? `

${contractDoc.notice}

` : ""} - - ${contractDoc.author ? `

Author: ${contractDoc.author}

` : ""} - -
-

Functions

-`; - -export const renderParameterDocumentation = ( - parameters: ParameterDocumentation[] -) => - `${parameters.length > 0 - ? ` - - - - - - - - - ${parameters - .map( - (output) => ` - - - - ` - ) - .join("")} - -
NameTypeDescription
${output.name}${output.type}${output.description}
` - : "

No parameters

" - }`; - -export const getMethodDetails = (devMethod?: Partial) => { - const finalResult = !devMethod - ? "

**Add Documentation for the method here**

" - : Object.keys(devMethod) - .filter((key) => key !== "params") - .map((key) => { - const funcToGetTemplate = (devMethodDocTemplate as any)[key]; - - if (!funcToGetTemplate) { - return ""; - } - const funcParameter = (devMethod as any)[key]; - const result = funcToGetTemplate(funcParameter); - return result; - }) - .join("\n"); - - console.log("finalResult", finalResult); - return finalResult; -}; diff --git a/apps/remixdocgen/src/utils/types.ts b/apps/remixdocgen/src/utils/types.ts deleted file mode 100644 index f0d91c5588..0000000000 --- a/apps/remixdocgen/src/utils/types.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { - UserMethodDoc, - DevMethodDoc, - DeveloperDocumentation, - UserDocumentation, -} from "@remixproject/plugin-api/lib/compiler"; - -export interface MethodsDocumentation { - [x: string]: UserMethodDoc | DevMethodDoc; -} - -export interface ContractDocumentation { - methods: MethodsDocumentation; - author: string; - title: string; - details: string; - notice: string; -} - -export type MethodDoc = DevMethodDoc & UserMethodDoc; - -export type TemplateDoc = { [key in keyof T]: (...params: any[]) => string }; - -// Contract -export type ContractDoc = DeveloperDocumentation & UserDocumentation; - -export interface FunctionDocumentation { - name: string; - type: string; - devdoc?: Partial; - inputs: ParameterDocumentation[]; - outputs: ParameterDocumentation[]; -} - -export interface ParameterDocumentation { - name: string; - type: string; - description: string; -} - -export type HTMLContent = string; diff --git a/apps/remixdocgen/src/utils/utils.test.ts b/apps/remixdocgen/src/utils/utils.test.ts deleted file mode 100644 index 04d204a150..0000000000 --- a/apps/remixdocgen/src/utils/utils.test.ts +++ /dev/null @@ -1,209 +0,0 @@ -// tslint:disable-next-line -const open = require("open"); - -import { - getContractDoc, - mergeParametersWithDevdoc, - getFunctionDocumentation, - getContractDocumentation, -} from "./utils"; -import { FunctionDescription } from "@remixproject/plugin"; -import { buildFakeArtifactWithComments, buildFakeABIParameter } from "./faker"; - -jest.setTimeout(10000); - -describe("Publisher tests", () => { - describe("getContractDocumentation", () => { - test("getContractDocumentation", () => { - const result = getContractDocumentation(buildFakeArtifactWithComments()); - - const result2 = { - methods: { - "age(uint256)": { - author: "Mary A. Botanist", - details: - "The Alexandr N. Tetearing algorithm could increase precision", - params: [Object], - return: "age in years, rounded up for partial years", - }, - }, - notice: "You can use this contract for only the most basic simulation", - author: "Larry A. Gardner", - details: - "All function calls are currently implemented without side effects", - title: "A simulator for trees", - }; - - expect(result).toBeDefined(); - }); - - test('getContract with ballot', () => { - const contract = { - "abi": - [{ - "inputs": - [{ "internalType": "bytes32[]", "name": "proposalNames", "type": "bytes32[]" }], "stateMutability": "nonpayable", "type": "constructor" - }, { "inputs": [], "name": "chairperson", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "to", "type": "address" }], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "voter", "type": "address" }], "name": "giveRightToVote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "name": "proposals", "outputs": [{ "internalType": "bytes32", "name": "name", "type": "bytes32" }, { "internalType": "uint256", "name": "voteCount", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "uint256", "name": "proposal", "type": "uint256" }], "name": "vote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }], "name": "voters", "outputs": [{ "internalType": "uint256", "name": "weight", "type": "uint256" }, { "internalType": "bool", "name": "voted", "type": "bool" }, { "internalType": "address", "name": "delegate", "type": "address" }, { "internalType": "uint256", "name": "vote", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "winnerName", "outputs": [{ "internalType": "bytes32", "name": "winnerName_", "type": "bytes32" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "winningProposal", "outputs": [{ "internalType": "uint256", "name": "winningProposal_", "type": "uint256" }], "stateMutability": "view", "type": "function" }], "devdoc": - { - "details": - "Implements voting process along with vote delegation", - "methods": - { - "constructor": - { - "details": "Create a new ballot to choose one of 'proposalNames'.", - "params": { "proposalNames": "names of proposals" } - }, "delegate(address)": { "details": "Delegate your vote to the voter 'to'.", "params": { "to": "address to which vote is delegated" } }, "giveRightToVote(address)": { "details": "Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.", "params": { "voter": "address of voter" } }, "vote(uint256)": { "details": "Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.", "params": { "proposal": "index of proposal in the proposals array" } }, "winnerName()": { "details": "Calls winningProposal() function to get the index of the winner contained in the proposals array and then", "returns": { "winnerName_": "the name of the winner" } }, "winningProposal()": { "details": "Computes the winning proposal taking all previous votes into account.", "returns": { "winningProposal_": "index of winning proposal in the proposals array" } } - }, "title": "Ballot" - }, - "evm": { "bytecode": { "linkReferences": {}, "object": "608060405234801561001057600080fd5b50604051610e27380380610e278339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b8382019150602082018581111561006957600080fd5b825186602082028301116401000000008211171561008657600080fd5b8083526020830192505050908051906020019060200280838360005b838110156100bd5780820151818401526020810190506100a2565b50505050905001604052505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060008090505b81518110156101f8576002604051806040016040528084848151811061019a57fe5b6020026020010151815260200160008152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508080600101915050610178565b5050610c1e806102096000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd146101925780639e7b8d61146101b0578063a3ec138d146101f4578063e2ba53f01461029157610088565b80630121b93f1461008d578063013cf08b146100bb5780632e4176cf146101045780635c19a95c1461014e575b600080fd5b6100b9600480360360208110156100a357600080fd5b81019080803590602001909291905050506102af565b005b6100e7600480360360208110156100d157600080fd5b810190808035906020019092919050505061044c565b604051808381526020018281526020019250505060405180910390f35b61010c61047d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101906004803603602081101561016457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104a2565b005b61019a6108be565b6040518082815260200191505060405180910390f35b6101f2600480360360208110156101c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610935565b005b6102366004803603602081101561020a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b36565b60405180858152602001841515151581526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b610299610b93565b6040518082815260200191505060405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561036d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f486173206e6f20726967687420746f20766f746500000000000000000000000081525060200191505060405180910390fd5b8060010160009054906101000a900460ff16156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c726561647920766f7465642e00000000000000000000000000000000000081525060200191505060405180910390fd5b60018160010160006101000a81548160ff02191690831515021790555081816002018190555080600001546002838154811061042a57fe5b9060005260206000209060020201600101600082825401925050819055505050565b6002818154811061045957fe5b90600052602060002090600202016000915090508060000154908060010154905082565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff161561056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f7520616c726561647920766f7465642e000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e000081525060200191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107af57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466f756e64206c6f6f7020696e2064656c65676174696f6e2e0000000000000081525060200191505060405180910390fd5b61060d565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156108a2578160000154600282600201548154811061087f57fe5b9060005260206000209060020201600101600082825401925050819055506108b9565b816000015481600001600082825401925050819055505b505050565b6000806000905060008090505b6002805490508110156109305781600282815481106108e657fe5b9060005260206000209060020201600101541115610923576002818154811061090b57fe5b90600052602060002090600202016001015491508092505b80806001019150506108cb565b505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610bc16028913960400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610a9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520766f74657220616c726561647920766f7465642e000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610aec57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b60006002610b9f6108be565b81548110610ba957fe5b90600052602060002090600202016000015490509056fe4f6e6c79206368616972706572736f6e2063616e206769766520726967687420746f20766f74652ea26469706673582212201d31a2570bf00292ffec872de1729aa45f08cd0033271a9509f9a2b12fc3d1d464736f6c63430006060033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xE27 CODESIZE SUB DUP1 PUSH2 0xE27 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP3 POP POP POP SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x19A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x178 JUMP JUMPDEST POP POP PUSH2 0xC1E DUP1 PUSH2 0x209 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x291 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x14E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x44C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x190 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4A2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19A PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x935 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x299 PUSH2 0xB93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x36D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x42A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x459 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x56A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7AF JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A2 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x87F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x8B9 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x930 JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8E6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x923 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x90B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8CB JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBC1 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA9D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0xB9F PUSH2 0x8BE JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xBA9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP INVALID 0x4F PUSH15 0x6C79206368616972706572736F6E20 PUSH4 0x616E2067 PUSH10 0x76652072696768742074 PUSH16 0x20766F74652EA2646970667358221220 SAR BALANCE LOG2 JUMPI SIGNEXTEND CREATE MUL SWAP3 SELFDESTRUCT 0xEC DUP8 0x2D 0xE1 PUSH19 0x9AA45F08CD0033271A9509F9A2B12FC3D1D464 PUSH20 0x6F6C634300060600330000000000000000000000 ", "sourceMap": "121:4369:0:-:0;;;922:488;5:9:-1;2:2;;;27:1;24;17:12;2:2;922:488:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;922:488:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;922:488:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;922:488:0;;;;;;;;;;;997:10;983:11;;:24;;;;;;;;;;;;;;;;;;1046:1;1017:6;:19;1024:11;;;;;;;;;;;1017:19;;;;;;;;;;;;;;;:26;;:30;;;;1063:6;1072:1;1063:10;;1058:346;1079:13;:20;1075:1;:24;1058:346;;;1283:9;1298:94;;;;;;;;1331:13;1345:1;1331:16;;;;;;;;;;;;;;1298:94;;;;1376:1;1298:94;;;1283:110;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1283:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1101:3;;;;;;;1058:346;;;;922:488;121:4369;;;;;;" }, "deployedBytecode": { "immutableReferences": {}, "linkReferences": {}, "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd146101925780639e7b8d61146101b0578063a3ec138d146101f4578063e2ba53f01461029157610088565b80630121b93f1461008d578063013cf08b146100bb5780632e4176cf146101045780635c19a95c1461014e575b600080fd5b6100b9600480360360208110156100a357600080fd5b81019080803590602001909291905050506102af565b005b6100e7600480360360208110156100d157600080fd5b810190808035906020019092919050505061044c565b604051808381526020018281526020019250505060405180910390f35b61010c61047d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101906004803603602081101561016457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104a2565b005b61019a6108be565b6040518082815260200191505060405180910390f35b6101f2600480360360208110156101c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610935565b005b6102366004803603602081101561020a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b36565b60405180858152602001841515151581526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b610299610b93565b6040518082815260200191505060405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561036d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f486173206e6f20726967687420746f20766f746500000000000000000000000081525060200191505060405180910390fd5b8060010160009054906101000a900460ff16156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c726561647920766f7465642e00000000000000000000000000000000000081525060200191505060405180910390fd5b60018160010160006101000a81548160ff02191690831515021790555081816002018190555080600001546002838154811061042a57fe5b9060005260206000209060020201600101600082825401925050819055505050565b6002818154811061045957fe5b90600052602060002090600202016000915090508060000154908060010154905082565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff161561056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f7520616c726561647920766f7465642e000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e000081525060200191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107af57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466f756e64206c6f6f7020696e2064656c65676174696f6e2e0000000000000081525060200191505060405180910390fd5b61060d565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156108a2578160000154600282600201548154811061087f57fe5b9060005260206000209060020201600101600082825401925050819055506108b9565b816000015481600001600082825401925050819055505b505050565b6000806000905060008090505b6002805490508110156109305781600282815481106108e657fe5b9060005260206000209060020201600101541115610923576002818154811061090b57fe5b90600052602060002090600202016001015491508092505b80806001019150506108cb565b505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610bc16028913960400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610a9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54686520766f74657220616c726561647920766f7465642e000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610aec57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b60006002610b9f6108be565b81548110610ba957fe5b90600052602060002090600202016000015490509056fe4f6e6c79206368616972706572736f6e2063616e206769766520726967687420746f20766f74652ea26469706673582212201d31a2570bf00292ffec872de1729aa45f08cd0033271a9509f9a2b12fc3d1d464736f6c63430006060033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x291 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x14E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x44C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x190 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4A2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19A PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x935 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x299 PUSH2 0xB93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x36D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x42A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x459 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x56A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7AF JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A2 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x87F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x8B9 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x930 JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x8E6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x923 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x90B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8CB JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBC1 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA9D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0xB9F PUSH2 0x8BE JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xBA9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP INVALID 0x4F PUSH15 0x6C79206368616972706572736F6E20 PUSH4 0x616E2067 PUSH10 0x76652072696768742074 PUSH16 0x20766F74652EA2646970667358221220 SAR BALANCE LOG2 JUMPI SIGNEXTEND CREATE MUL SWAP3 SELFDESTRUCT 0xEC DUP8 0x2D 0xE1 PUSH19 0x9AA45F08CD0033271A9509F9A2B12FC3D1D464 PUSH20 0x6F6C634300060600330000000000000000000000 ", "sourceMap": "121:4369:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;121:4369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;3144:458:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3144:458:0;;;;;;;;;;;;;;;;;:::i;:::-;;758:27;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;758:27:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;679:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2049:907;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2049:907:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3788:365;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1570:355;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1570:355:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;712:39;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;712:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4344:144;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3144:458;3190:20;3213:6;:18;3220:10;3213:18;;;;;;;;;;;;;;;3190:41;;3266:1;3249:6;:13;;;:18;;3241:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3311:6;:12;;;;;;;;;;;;3310:13;3302:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3367:4;3352:6;:12;;;:19;;;;;;;;;;;;;;;;;;3395:8;3381:6;:11;;:22;;;;3582:6;:13;;;3549:9;3559:8;3549:19;;;;;;;;;;;;;;;;;;:29;;;:46;;;;;;;;;;;3144:458;;:::o;758:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;679:26::-;;;;;;;;;;;;;:::o;2049:907::-;2096:20;2119:6;:18;2126:10;2119:18;;;;;;;;;;;;;;;2096:41;;2156:6;:12;;;;;;;;;;;;2155:13;2147:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2215:10;2209:16;;:2;:16;;;;2201:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:223;2309:1;2278:33;;:6;:10;2285:2;2278:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;:33;;;2271:223;;2332:6;:10;2339:2;2332:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;2327:24;;2443:10;2437:16;;:2;:16;;;;2429:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:223;;;2518:4;2503:6;:12;;;:19;;;;;;;;;;;;;;;;;;2550:2;2532:6;:15;;;:20;;;;;;;;;;;;;;;;;;2562:23;2588:6;:10;2595:2;2588:10;;;;;;;;;;;;;;;2562:36;;2612:9;:15;;;;;;;;;;;;2608:342;;;2779:6;:13;;;2740:9;2750;:14;;;2740:25;;;;;;;;;;;;;;;;;;:35;;;:52;;;;;;;;;;;2608:342;;;2926:6;:13;;;2906:9;:16;;;:33;;;;;;;;;;;2608:342;2049:907;;;:::o;3788:365::-;3848:21;3885;3909:1;3885:25;;3925:6;3934:1;3925:10;;3920:227;3941:9;:16;;;;3937:1;:20;3920:227;;;4007:16;3982:9;3992:1;3982:12;;;;;;;;;;;;;;;;;;:22;;;:41;3978:159;;;4062:9;4072:1;4062:12;;;;;;;;;;;;;;;;;;:22;;;4043:41;;4121:1;4102:20;;3978:159;3959:3;;;;;;;3920:227;;;;3788:365;;:::o;1570:355::-;1662:11;;;;;;;;;;;1648:25;;:10;:25;;;1627:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1771:6;:13;1778:5;1771:13;;;;;;;;;;;;;;;:19;;;;;;;;;;;;1770:20;1749:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1882:1;1858:6;:13;1865:5;1858:13;;;;;;;;;;;;;;;:20;;;:25;1850:34;;12:1:-1;9;2:12;1850:34:0;1917:1;1894:6;:13;1901:5;1894:13;;;;;;;;;;;;;;;:20;;:24;;;;1570:355;:::o;712:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4344:144::-;4399:19;4448:9;4458:17;:15;:17::i;:::-;4448:28;;;;;;;;;;;;;;;;;;:33;;;4434:47;;4344:144;:::o" }, "gasEstimates": { "creation": { "codeDepositCost": "620400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "chairperson()": "1098", "delegate(address)": "infinite", "giveRightToVote(address)": "infinite", "proposals(uint256)": "2860", "vote(uint256)": "65454", "voters(address)": "3869", "winnerName()": "infinite", "winningProposal()": "infinite" } }, "legacyAssembly": { ".code": [{ "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 121, "end": 4490, "name": "MSTORE", "source": 0 }, { "begin": 922, "end": 1410, "name": "CALLVALUE", "source": 0 }, { "begin": 5, "end": 14, "name": "DUP1", "source": -1 }, { "begin": 2, "end": 4, "name": "ISZERO", "source": -1 }, { "begin": 2, "end": 4, "name": "PUSH [tag]", "source": -1, "value": "1" }, { "begin": 2, "end": 4, "name": "JUMPI", "source": -1 }, { "begin": 27, "end": 28, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 24, "end": 25, "name": "DUP1", "source": -1 }, { "begin": 17, "end": 29, "name": "REVERT", "source": -1 }, { "begin": 2, "end": 4, "name": "tag", "source": -1, "value": "1" }, { "begin": 2, "end": 4, "name": "JUMPDEST", "source": -1 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 922, "end": 1410, "name": "MLOAD", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSHSIZE", "source": 0 }, { "begin": 922, "end": 1410, "name": "CODESIZE", "source": 0 }, { "begin": 922, "end": 1410, "name": "SUB", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSHSIZE", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP4", "source": 0 }, { "begin": 922, "end": 1410, "name": "CODECOPY", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP2", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP2", "source": 0 }, { "begin": 922, "end": 1410, "name": "ADD", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 922, "end": 1410, "name": "MSTORE", "source": 0 }, { "begin": 15, "end": 17, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 10, "end": 13, "name": "DUP2", "source": -1 }, { "begin": 7, "end": 18, "name": "LT", "source": -1 }, { "begin": 4, "end": 6, "name": "ISZERO", "source": -1 }, { "begin": 4, "end": 6, "name": "PUSH [tag]", "source": -1, "value": "2" }, { "begin": 4, "end": 6, "name": "JUMPI", "source": -1 }, { "begin": 31, "end": 32, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 28, "end": 29, "name": "DUP1", "source": -1 }, { "begin": 21, "end": 33, "name": "REVERT", "source": -1 }, { "begin": 4, "end": 6, "name": "tag", "source": -1, "value": "2" }, { "begin": 4, "end": 6, "name": "JUMPDEST", "source": -1 }, { "begin": 922, "end": 1410, "name": "DUP2", "source": 0 }, { "begin": 922, "end": 1410, "name": "ADD", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "MLOAD", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 922, "end": 1410, "name": "MLOAD", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP4", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP3", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP2", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP5", "source": 0 }, { "begin": 19, "end": 30, "name": "PUSH", "source": -1, "value": "100000000" }, { "begin": 14, "end": 17, "name": "DUP3", "source": -1 }, { "begin": 11, "end": 31, "name": "GT", "source": -1 }, { "begin": 8, "end": 10, "name": "ISZERO", "source": -1 }, { "begin": 8, "end": 10, "name": "PUSH [tag]", "source": -1, "value": "3" }, { "begin": 8, "end": 10, "name": "JUMPI", "source": -1 }, { "begin": 44, "end": 45, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 41, "end": 42, "name": "DUP1", "source": -1 }, { "begin": 34, "end": 46, "name": "REVERT", "source": -1 }, { "begin": 8, "end": 10, "name": "tag", "source": -1, "value": "3" }, { "begin": 8, "end": 10, "name": "JUMPDEST", "source": -1 }, { "begin": 71, "end": 82, "name": "DUP4", "source": -1 }, { "begin": 66, "end": 69, "name": "DUP3", "source": -1 }, { "begin": 62, "end": 83, "name": "ADD", "source": -1 }, { "begin": 55, "end": 83, "name": "SWAP2", "source": -1 }, { "begin": 55, "end": 83, "name": "POP", "source": -1 }, { "begin": 123, "end": 127, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 118, "end": 121, "name": "DUP3", "source": -1 }, { "begin": 114, "end": 128, "name": "ADD", "source": -1 }, { "begin": 159, "end": 168, "name": "DUP6", "source": -1 }, { "begin": 141, "end": 157, "name": "DUP2", "source": -1 }, { "begin": 138, "end": 169, "name": "GT", "source": -1 }, { "begin": 135, "end": 137, "name": "ISZERO", "source": -1 }, { "begin": 135, "end": 137, "name": "PUSH [tag]", "source": -1, "value": "4" }, { "begin": 135, "end": 137, "name": "JUMPI", "source": -1 }, { "begin": 182, "end": 183, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 179, "end": 180, "name": "DUP1", "source": -1 }, { "begin": 172, "end": 184, "name": "REVERT", "source": -1 }, { "begin": 135, "end": 137, "name": "tag", "source": -1, "value": "4" }, { "begin": 135, "end": 137, "name": "JUMPDEST", "source": -1 }, { "begin": 219, "end": 222, "name": "DUP3", "source": -1 }, { "begin": 213, "end": 223, "name": "MLOAD", "source": -1 }, { "begin": 331, "end": 340, "name": "DUP7", "source": -1 }, { "begin": 325, "end": 327, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 311, "end": 323, "name": "DUP3", "source": -1 }, { "begin": 307, "end": 328, "name": "MUL", "source": -1 }, { "begin": 289, "end": 305, "name": "DUP4", "source": -1 }, { "begin": 285, "end": 329, "name": "ADD", "source": -1 }, { "begin": 282, "end": 341, "name": "GT", "source": -1 }, { "begin": 261, "end": 272, "name": "PUSH", "source": -1, "value": "100000000" }, { "begin": 247, "end": 259, "name": "DUP3", "source": -1 }, { "begin": 244, "end": 273, "name": "GT", "source": -1 }, { "begin": 233, "end": 349, "name": "OR", "source": -1 }, { "begin": 230, "end": 232, "name": "ISZERO", "source": -1 }, { "begin": 230, "end": 232, "name": "PUSH [tag]", "source": -1, "value": "5" }, { "begin": 230, "end": 232, "name": "JUMPI", "source": -1 }, { "begin": 362, "end": 363, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 359, "end": 360, "name": "DUP1", "source": -1 }, { "begin": 352, "end": 364, "name": "REVERT", "source": -1 }, { "begin": 230, "end": 232, "name": "tag", "source": -1, "value": "5" }, { "begin": 230, "end": 232, "name": "JUMPDEST", "source": -1 }, { "begin": 385, "end": 397, "name": "DUP1", "source": -1 }, { "begin": 380, "end": 383, "name": "DUP4", "source": -1 }, { "begin": 373, "end": 398, "name": "MSTORE", "source": -1 }, { "begin": 421, "end": 425, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 416, "end": 419, "name": "DUP4", "source": -1 }, { "begin": 412, "end": 426, "name": "ADD", "source": -1 }, { "begin": 405, "end": 426, "name": "SWAP3", "source": -1 }, { "begin": 405, "end": 426, "name": "POP", "source": -1 }, { "begin": 0, "end": 433, "name": "POP", "source": -1 }, { "begin": 0, "end": 433, "name": "POP", "source": -1 }, { "begin": 922, "end": 1410, "name": "SWAP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "MLOAD", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 922, "end": 1410, "name": "ADD", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 922, "end": 1410, "name": "MUL", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP4", "source": 0 }, { "begin": 922, "end": 1410, "name": "DUP4", "source": 0 }, { "begin": 23, "end": 24, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 8, "end": 108, "name": "tag", "source": -1, "value": "6" }, { "begin": 8, "end": 108, "name": "JUMPDEST", "source": -1 }, { "begin": 33, "end": 36, "name": "DUP4", "source": -1 }, { "begin": 30, "end": 31, "name": "DUP2", "source": -1 }, { "begin": 27, "end": 37, "name": "LT", "source": -1 }, { "begin": 8, "end": 108, "name": "ISZERO", "source": -1 }, { "begin": 8, "end": 108, "name": "PUSH [tag]", "source": -1, "value": "8" }, { "begin": 8, "end": 108, "name": "JUMPI", "source": -1 }, { "begin": 99, "end": 100, "name": "DUP1", "source": -1 }, { "begin": 94, "end": 97, "name": "DUP3", "source": -1 }, { "begin": 90, "end": 101, "name": "ADD", "source": -1 }, { "begin": 84, "end": 102, "name": "MLOAD", "source": -1 }, { "begin": 80, "end": 81, "name": "DUP2", "source": -1 }, { "begin": 75, "end": 78, "name": "DUP5", "source": -1 }, { "begin": 71, "end": 82, "name": "ADD", "source": -1 }, { "begin": 64, "end": 103, "name": "MSTORE", "source": -1 }, { "begin": 52, "end": 54, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 49, "end": 50, "name": "DUP2", "source": -1 }, { "begin": 45, "end": 55, "name": "ADD", "source": -1 }, { "begin": 40, "end": 55, "name": "SWAP1", "source": -1 }, { "begin": 40, "end": 55, "name": "POP", "source": -1 }, { "begin": 8, "end": 108, "name": "PUSH [tag]", "source": -1, "value": "6" }, { "begin": 8, "end": 108, "name": "JUMP", "source": -1 }, { "begin": 8, "end": 108, "name": "tag", "source": -1, "value": "8" }, { "begin": 8, "end": 108, "name": "JUMPDEST", "source": -1 }, { "begin": 12, "end": 26, "name": "POP", "source": -1 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "SWAP1", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "ADD", "source": 0 }, { "begin": 922, "end": 1410, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 922, "end": 1410, "name": "MSTORE", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 997, "end": 1007, "name": "CALLER", "source": 0 }, { "begin": 983, "end": 994, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 983, "end": 994, "name": "DUP1", "source": 0 }, { "begin": 983, "end": 1007, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 983, "end": 1007, "name": "EXP", "source": 0 }, { "begin": 983, "end": 1007, "name": "DUP2", "source": 0 }, { "begin": 983, "end": 1007, "name": "SLOAD", "source": 0 }, { "begin": 983, "end": 1007, "name": "DUP2", "source": 0 }, { "begin": 983, "end": 1007, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 983, "end": 1007, "name": "MUL", "source": 0 }, { "begin": 983, "end": 1007, "name": "NOT", "source": 0 }, { "begin": 983, "end": 1007, "name": "AND", "source": 0 }, { "begin": 983, "end": 1007, "name": "SWAP1", "source": 0 }, { "begin": 983, "end": 1007, "name": "DUP4", "source": 0 }, { "begin": 983, "end": 1007, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 983, "end": 1007, "name": "AND", "source": 0 }, { "begin": 983, "end": 1007, "name": "MUL", "source": 0 }, { "begin": 983, "end": 1007, "name": "OR", "source": 0 }, { "begin": 983, "end": 1007, "name": "SWAP1", "source": 0 }, { "begin": 983, "end": 1007, "name": "SSTORE", "source": 0 }, { "begin": 983, "end": 1007, "name": "POP", "source": 0 }, { "begin": 1046, "end": 1047, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1017, "end": 1023, "name": "DUP1", "source": 0 }, { "begin": 1017, "end": 1036, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1024, "end": 1035, "name": "DUP1", "source": 0 }, { "begin": 1024, "end": 1035, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1024, "end": 1035, "name": "SWAP1", "source": 0 }, { "begin": 1024, "end": 1035, "name": "SLOAD", "source": 0 }, { "begin": 1024, "end": 1035, "name": "SWAP1", "source": 0 }, { "begin": 1024, "end": 1035, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 1024, "end": 1035, "name": "EXP", "source": 0 }, { "begin": 1024, "end": 1035, "name": "SWAP1", "source": 0 }, { "begin": 1024, "end": 1035, "name": "DIV", "source": 0 }, { "begin": 1024, "end": 1035, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1024, "end": 1035, "name": "AND", "source": 0 }, { "begin": 1017, "end": 1036, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1017, "end": 1036, "name": "AND", "source": 0 }, { "begin": 1017, "end": 1036, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1017, "end": 1036, "name": "AND", "source": 0 }, { "begin": 1017, "end": 1036, "name": "DUP2", "source": 0 }, { "begin": 1017, "end": 1036, "name": "MSTORE", "source": 0 }, { "begin": 1017, "end": 1036, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1017, "end": 1036, "name": "ADD", "source": 0 }, { "begin": 1017, "end": 1036, "name": "SWAP1", "source": 0 }, { "begin": 1017, "end": 1036, "name": "DUP2", "source": 0 }, { "begin": 1017, "end": 1036, "name": "MSTORE", "source": 0 }, { "begin": 1017, "end": 1036, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1017, "end": 1036, "name": "ADD", "source": 0 }, { "begin": 1017, "end": 1036, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1017, "end": 1036, "name": "KECCAK256", "source": 0 }, { "begin": 1017, "end": 1043, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1017, "end": 1043, "name": "ADD", "source": 0 }, { "begin": 1017, "end": 1047, "name": "DUP2", "source": 0 }, { "begin": 1017, "end": 1047, "name": "SWAP1", "source": 0 }, { "begin": 1017, "end": 1047, "name": "SSTORE", "source": 0 }, { "begin": 1017, "end": 1047, "name": "POP", "source": 0 }, { "begin": 1063, "end": 1069, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1072, "end": 1073, "name": "DUP1", "source": 0 }, { "begin": 1063, "end": 1073, "name": "SWAP1", "source": 0 }, { "begin": 1063, "end": 1073, "name": "POP", "source": 0 }, { "begin": 1058, "end": 1404, "name": "tag", "source": 0, "value": "11" }, { "begin": 1058, "end": 1404, "name": "JUMPDEST", "source": 0 }, { "begin": 1079, "end": 1092, "name": "DUP2", "source": 0 }, { "begin": 1079, "end": 1099, "name": "MLOAD", "source": 0 }, { "begin": 1075, "end": 1076, "name": "DUP2", "source": 0 }, { "begin": 1075, "end": 1099, "name": "LT", "source": 0 }, { "begin": 1058, "end": 1404, "name": "ISZERO", "source": 0 }, { "begin": 1058, "end": 1404, "name": "PUSH [tag]", "source": 0, "value": "12" }, { "begin": 1058, "end": 1404, "name": "JUMPI", "source": 0 }, { "begin": 1283, "end": 1292, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 1298, "end": 1392, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1298, "end": 1392, "name": "MLOAD", "source": 0 }, { "begin": 1298, "end": 1392, "name": "DUP1", "source": 0 }, { "begin": 1298, "end": 1392, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1298, "end": 1392, "name": "ADD", "source": 0 }, { "begin": 1298, "end": 1392, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1298, "end": 1392, "name": "MSTORE", "source": 0 }, { "begin": 1298, "end": 1392, "name": "DUP1", "source": 0 }, { "begin": 1331, "end": 1344, "name": "DUP5", "source": 0 }, { "begin": 1345, "end": 1346, "name": "DUP5", "source": 0 }, { "begin": 1331, "end": 1347, "name": "DUP2", "source": 0 }, { "begin": 1331, "end": 1347, "name": "MLOAD", "source": 0 }, { "begin": 1331, "end": 1347, "name": "DUP2", "source": 0 }, { "begin": 1331, "end": 1347, "name": "LT", "source": 0 }, { "begin": 1331, "end": 1347, "name": "PUSH [tag]", "source": 0, "value": "14" }, { "begin": 1331, "end": 1347, "name": "JUMPI", "source": 0 }, { "begin": 1331, "end": 1347, "name": "INVALID", "source": 0 }, { "begin": 1331, "end": 1347, "name": "tag", "source": 0, "value": "14" }, { "begin": 1331, "end": 1347, "name": "JUMPDEST", "source": 0 }, { "begin": 1331, "end": 1347, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1331, "end": 1347, "name": "MUL", "source": 0 }, { "begin": 1331, "end": 1347, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1331, "end": 1347, "name": "ADD", "source": 0 }, { "begin": 1331, "end": 1347, "name": "ADD", "source": 0 }, { "begin": 1331, "end": 1347, "name": "MLOAD", "source": 0 }, { "begin": 1298, "end": 1392, "name": "DUP2", "source": 0 }, { "begin": 1298, "end": 1392, "name": "MSTORE", "source": 0 }, { "begin": 1298, "end": 1392, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1298, "end": 1392, "name": "ADD", "source": 0 }, { "begin": 1376, "end": 1377, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1298, "end": 1392, "name": "DUP2", "source": 0 }, { "begin": 1298, "end": 1392, "name": "MSTORE", "source": 0 }, { "begin": 1298, "end": 1392, "name": "POP", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "DUP1", "source": 0 }, { "begin": 39, "end": 40, "name": "PUSH", "source": -1, "value": "1" }, { "begin": 33, "end": 36, "name": "DUP2", "source": -1 }, { "begin": 27, "end": 37, "name": "SLOAD", "source": -1 }, { "begin": 23, "end": 41, "name": "ADD", "source": -1 }, { "begin": 57, "end": 67, "name": "DUP1", "source": -1 }, { "begin": 52, "end": 55, "name": "DUP3", "source": -1 }, { "begin": 45, "end": 68, "name": "SSTORE", "source": -1 }, { "begin": 79, "end": 89, "name": "DUP1", "source": -1 }, { "begin": 72, "end": 89, "name": "SWAP2", "source": -1 }, { "begin": 72, "end": 89, "name": "POP", "source": -1 }, { "begin": 0, "end": 93, "name": "POP", "source": -1 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SUB", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1283, "end": 1393, "name": "MSTORE", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1283, "end": 1393, "name": "KECCAK256", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 1283, "end": 1393, "name": "MUL", "source": 0 }, { "begin": 1283, "end": 1393, "name": "ADD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP2", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP2", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP1", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SWAP2", "source": 0 }, { "begin": 1283, "end": 1393, "name": "POP", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1283, "end": 1393, "name": "DUP3", "source": 0 }, { "begin": 1283, "end": 1393, "name": "ADD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "MLOAD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "DUP2", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1283, "end": 1393, "name": "ADD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SSTORE", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1283, "end": 1393, "name": "DUP3", "source": 0 }, { "begin": 1283, "end": 1393, "name": "ADD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "MLOAD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "DUP2", "source": 0 }, { "begin": 1283, "end": 1393, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1283, "end": 1393, "name": "ADD", "source": 0 }, { "begin": 1283, "end": 1393, "name": "SSTORE", "source": 0 }, { "begin": 1283, "end": 1393, "name": "POP", "source": 0 }, { "begin": 1283, "end": 1393, "name": "POP", "source": 0 }, { "begin": 1101, "end": 1104, "name": "DUP1", "source": 0 }, { "begin": 1101, "end": 1104, "name": "DUP1", "source": 0 }, { "begin": 1101, "end": 1104, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1101, "end": 1104, "name": "ADD", "source": 0 }, { "begin": 1101, "end": 1104, "name": "SWAP2", "source": 0 }, { "begin": 1101, "end": 1104, "name": "POP", "source": 0 }, { "begin": 1101, "end": 1104, "name": "POP", "source": 0 }, { "begin": 1058, "end": 1404, "name": "PUSH [tag]", "source": 0, "value": "11" }, { "begin": 1058, "end": 1404, "name": "JUMP", "source": 0 }, { "begin": 1058, "end": 1404, "name": "tag", "source": 0, "value": "12" }, { "begin": 1058, "end": 1404, "name": "JUMPDEST", "source": 0 }, { "begin": 1058, "end": 1404, "name": "POP", "source": 0 }, { "begin": 922, "end": 1410, "name": "POP", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 121, "end": 4490, "name": "CODECOPY", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 121, "end": 4490, "name": "RETURN", "source": 0 }], ".data": { "0": { ".auxdata": "a26469706673582212201d31a2570bf00292ffec872de1729aa45f08cd0033271a9509f9a2b12fc3d1d464736f6c63430006060033", ".code": [{ "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 121, "end": 4490, "name": "MSTORE", "source": 0 }, { "begin": 121, "end": 4490, "name": "CALLVALUE", "source": 0 }, { "begin": 5, "end": 14, "name": "DUP1", "source": -1 }, { "begin": 2, "end": 4, "name": "ISZERO", "source": -1 }, { "begin": 2, "end": 4, "name": "PUSH [tag]", "source": -1, "value": "1" }, { "begin": 2, "end": 4, "name": "JUMPI", "source": -1 }, { "begin": 27, "end": 28, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 24, "end": 25, "name": "DUP1", "source": -1 }, { "begin": 17, "end": 29, "name": "REVERT", "source": -1 }, { "begin": 2, "end": 4, "name": "tag", "source": -1, "value": "1" }, { "begin": 2, "end": 4, "name": "JUMPDEST", "source": -1 }, { "begin": 121, "end": 4490, "name": "POP", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 121, "end": 4490, "name": "CALLDATASIZE", "source": 0 }, { "begin": 121, "end": 4490, "name": "LT", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 121, "end": 4490, "name": "CALLDATALOAD", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 121, "end": 4490, "name": "SHR", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "609FF1BD" }, { "begin": 121, "end": 4490, "name": "GT", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "11" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "609FF1BD" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "9E7B8D61" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "8" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "A3EC138D" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "9" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "E2BA53F0" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "10" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 121, "end": 4490, "name": "JUMP", "source": 0 }, { "begin": 121, "end": 4490, "name": "tag", "source": 0, "value": "11" }, { "begin": 121, "end": 4490, "name": "JUMPDEST", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "121B93F" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "13CF08B" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "4" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "2E4176CF" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "5" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "DUP1", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH", "source": 0, "value": "5C19A95C" }, { "begin": 121, "end": 4490, "name": "EQ", "source": 0 }, { "begin": 121, "end": 4490, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 121, "end": 4490, "name": "JUMPI", "source": 0 }, { "begin": 121, "end": 4490, "name": "tag", "source": 0, "value": "2" }, { "begin": 121, "end": 4490, "name": "JUMPDEST", "source": 0 }, { "begin": 12, "end": 13, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 9, "end": 10, "name": "DUP1", "source": -1 }, { "begin": 2, "end": 14, "name": "REVERT", "source": -1 }, { "begin": 3144, "end": 3602, "name": "tag", "source": 0, "value": "3" }, { "begin": 3144, "end": 3602, "name": "JUMPDEST", "source": 0 }, { "begin": 3144, "end": 3602, "name": "PUSH [tag]", "source": 0, "value": "12" }, { "begin": 3144, "end": 3602, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 3144, "end": 3602, "name": "DUP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "CALLDATASIZE", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SUB", "source": 0 }, { "begin": 15, "end": 17, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 10, "end": 13, "name": "DUP2", "source": -1 }, { "begin": 7, "end": 18, "name": "LT", "source": -1 }, { "begin": 4, "end": 6, "name": "ISZERO", "source": -1 }, { "begin": 4, "end": 6, "name": "PUSH [tag]", "source": -1, "value": "13" }, { "begin": 4, "end": 6, "name": "JUMPI", "source": -1 }, { "begin": 31, "end": 32, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 28, "end": 29, "name": "DUP1", "source": -1 }, { "begin": 21, "end": 33, "name": "REVERT", "source": -1 }, { "begin": 4, "end": 6, "name": "tag", "source": -1, "value": "13" }, { "begin": 4, "end": 6, "name": "JUMPDEST", "source": -1 }, { "begin": 3144, "end": 3602, "name": "DUP2", "source": 0 }, { "begin": 3144, "end": 3602, "name": "ADD", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SWAP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "DUP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "DUP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "CALLDATALOAD", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SWAP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3144, "end": 3602, "name": "ADD", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SWAP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SWAP3", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SWAP2", "source": 0 }, { "begin": 3144, "end": 3602, "name": "SWAP1", "source": 0 }, { "begin": 3144, "end": 3602, "name": "POP", "source": 0 }, { "begin": 3144, "end": 3602, "name": "POP", "source": 0 }, { "begin": 3144, "end": 3602, "name": "POP", "source": 0 }, { "begin": 3144, "end": 3602, "name": "PUSH [tag]", "source": 0, "value": "14" }, { "begin": 3144, "end": 3602, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 3144, "end": 3602, "name": "tag", "source": 0, "value": "12" }, { "begin": 3144, "end": 3602, "name": "JUMPDEST", "source": 0 }, { "begin": 3144, "end": 3602, "name": "STOP", "source": 0 }, { "begin": 758, "end": 785, "name": "tag", "source": 0, "value": "4" }, { "begin": 758, "end": 785, "name": "JUMPDEST", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH [tag]", "source": 0, "value": "15" }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "CALLDATASIZE", "source": 0 }, { "begin": 758, "end": 785, "name": "SUB", "source": 0 }, { "begin": 15, "end": 17, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 10, "end": 13, "name": "DUP2", "source": -1 }, { "begin": 7, "end": 18, "name": "LT", "source": -1 }, { "begin": 4, "end": 6, "name": "ISZERO", "source": -1 }, { "begin": 4, "end": 6, "name": "PUSH [tag]", "source": -1, "value": "16" }, { "begin": 4, "end": 6, "name": "JUMPI", "source": -1 }, { "begin": 31, "end": 32, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 28, "end": 29, "name": "DUP1", "source": -1 }, { "begin": 21, "end": 33, "name": "REVERT", "source": -1 }, { "begin": 4, "end": 6, "name": "tag", "source": -1, "value": "16" }, { "begin": 4, "end": 6, "name": "JUMPDEST", "source": -1 }, { "begin": 758, "end": 785, "name": "DUP2", "source": 0 }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "CALLDATALOAD", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP3", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP2", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH [tag]", "source": 0, "value": "17" }, { "begin": 758, "end": 785, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 758, "end": 785, "name": "tag", "source": 0, "value": "15" }, { "begin": 758, "end": 785, "name": "JUMPDEST", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 758, "end": 785, "name": "MLOAD", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP4", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP2", "source": 0 }, { "begin": 758, "end": 785, "name": "MSTORE", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP3", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP2", "source": 0 }, { "begin": 758, "end": 785, "name": "MSTORE", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP3", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 758, "end": 785, "name": "MLOAD", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP2", "source": 0 }, { "begin": 758, "end": 785, "name": "SUB", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "RETURN", "source": 0 }, { "begin": 679, "end": 705, "name": "tag", "source": 0, "value": "5" }, { "begin": 679, "end": 705, "name": "JUMPDEST", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH [tag]", "source": 0, "value": "18" }, { "begin": 679, "end": 705, "name": "PUSH [tag]", "source": 0, "value": "19" }, { "begin": 679, "end": 705, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 679, "end": 705, "name": "tag", "source": 0, "value": "18" }, { "begin": 679, "end": 705, "name": "JUMPDEST", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 679, "end": 705, "name": "MLOAD", "source": 0 }, { "begin": 679, "end": 705, "name": "DUP1", "source": 0 }, { "begin": 679, "end": 705, "name": "DUP3", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 679, "end": 705, "name": "AND", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 679, "end": 705, "name": "AND", "source": 0 }, { "begin": 679, "end": 705, "name": "DUP2", "source": 0 }, { "begin": 679, "end": 705, "name": "MSTORE", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 679, "end": 705, "name": "ADD", "source": 0 }, { "begin": 679, "end": 705, "name": "SWAP2", "source": 0 }, { "begin": 679, "end": 705, "name": "POP", "source": 0 }, { "begin": 679, "end": 705, "name": "POP", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 679, "end": 705, "name": "MLOAD", "source": 0 }, { "begin": 679, "end": 705, "name": "DUP1", "source": 0 }, { "begin": 679, "end": 705, "name": "SWAP2", "source": 0 }, { "begin": 679, "end": 705, "name": "SUB", "source": 0 }, { "begin": 679, "end": 705, "name": "SWAP1", "source": 0 }, { "begin": 679, "end": 705, "name": "RETURN", "source": 0 }, { "begin": 2049, "end": 2956, "name": "tag", "source": 0, "value": "6" }, { "begin": 2049, "end": 2956, "name": "JUMPDEST", "source": 0 }, { "begin": 2049, "end": 2956, "name": "PUSH [tag]", "source": 0, "value": "20" }, { "begin": 2049, "end": 2956, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 2049, "end": 2956, "name": "DUP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "CALLDATASIZE", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SUB", "source": 0 }, { "begin": 15, "end": 17, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 10, "end": 13, "name": "DUP2", "source": -1 }, { "begin": 7, "end": 18, "name": "LT", "source": -1 }, { "begin": 4, "end": 6, "name": "ISZERO", "source": -1 }, { "begin": 4, "end": 6, "name": "PUSH [tag]", "source": -1, "value": "21" }, { "begin": 4, "end": 6, "name": "JUMPI", "source": -1 }, { "begin": 31, "end": 32, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 28, "end": 29, "name": "DUP1", "source": -1 }, { "begin": 21, "end": 33, "name": "REVERT", "source": -1 }, { "begin": 4, "end": 6, "name": "tag", "source": -1, "value": "21" }, { "begin": 4, "end": 6, "name": "JUMPDEST", "source": -1 }, { "begin": 2049, "end": 2956, "name": "DUP2", "source": 0 }, { "begin": 2049, "end": 2956, "name": "ADD", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SWAP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "DUP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "DUP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "CALLDATALOAD", "source": 0 }, { "begin": 2049, "end": 2956, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2049, "end": 2956, "name": "AND", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SWAP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2049, "end": 2956, "name": "ADD", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SWAP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SWAP3", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SWAP2", "source": 0 }, { "begin": 2049, "end": 2956, "name": "SWAP1", "source": 0 }, { "begin": 2049, "end": 2956, "name": "POP", "source": 0 }, { "begin": 2049, "end": 2956, "name": "POP", "source": 0 }, { "begin": 2049, "end": 2956, "name": "POP", "source": 0 }, { "begin": 2049, "end": 2956, "name": "PUSH [tag]", "source": 0, "value": "22" }, { "begin": 2049, "end": 2956, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 2049, "end": 2956, "name": "tag", "source": 0, "value": "20" }, { "begin": 2049, "end": 2956, "name": "JUMPDEST", "source": 0 }, { "begin": 2049, "end": 2956, "name": "STOP", "source": 0 }, { "begin": 3788, "end": 4153, "name": "tag", "source": 0, "value": "7" }, { "begin": 3788, "end": 4153, "name": "JUMPDEST", "source": 0 }, { "begin": 3788, "end": 4153, "name": "PUSH [tag]", "source": 0, "value": "23" }, { "begin": 3788, "end": 4153, "name": "PUSH [tag]", "source": 0, "value": "24" }, { "begin": 3788, "end": 4153, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 3788, "end": 4153, "name": "tag", "source": 0, "value": "23" }, { "begin": 3788, "end": 4153, "name": "JUMPDEST", "source": 0 }, { "begin": 3788, "end": 4153, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 3788, "end": 4153, "name": "MLOAD", "source": 0 }, { "begin": 3788, "end": 4153, "name": "DUP1", "source": 0 }, { "begin": 3788, "end": 4153, "name": "DUP3", "source": 0 }, { "begin": 3788, "end": 4153, "name": "DUP2", "source": 0 }, { "begin": 3788, "end": 4153, "name": "MSTORE", "source": 0 }, { "begin": 3788, "end": 4153, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3788, "end": 4153, "name": "ADD", "source": 0 }, { "begin": 3788, "end": 4153, "name": "SWAP2", "source": 0 }, { "begin": 3788, "end": 4153, "name": "POP", "source": 0 }, { "begin": 3788, "end": 4153, "name": "POP", "source": 0 }, { "begin": 3788, "end": 4153, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 3788, "end": 4153, "name": "MLOAD", "source": 0 }, { "begin": 3788, "end": 4153, "name": "DUP1", "source": 0 }, { "begin": 3788, "end": 4153, "name": "SWAP2", "source": 0 }, { "begin": 3788, "end": 4153, "name": "SUB", "source": 0 }, { "begin": 3788, "end": 4153, "name": "SWAP1", "source": 0 }, { "begin": 3788, "end": 4153, "name": "RETURN", "source": 0 }, { "begin": 1570, "end": 1925, "name": "tag", "source": 0, "value": "8" }, { "begin": 1570, "end": 1925, "name": "JUMPDEST", "source": 0 }, { "begin": 1570, "end": 1925, "name": "PUSH [tag]", "source": 0, "value": "25" }, { "begin": 1570, "end": 1925, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 1570, "end": 1925, "name": "DUP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "CALLDATASIZE", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SUB", "source": 0 }, { "begin": 15, "end": 17, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 10, "end": 13, "name": "DUP2", "source": -1 }, { "begin": 7, "end": 18, "name": "LT", "source": -1 }, { "begin": 4, "end": 6, "name": "ISZERO", "source": -1 }, { "begin": 4, "end": 6, "name": "PUSH [tag]", "source": -1, "value": "26" }, { "begin": 4, "end": 6, "name": "JUMPI", "source": -1 }, { "begin": 31, "end": 32, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 28, "end": 29, "name": "DUP1", "source": -1 }, { "begin": 21, "end": 33, "name": "REVERT", "source": -1 }, { "begin": 4, "end": 6, "name": "tag", "source": -1, "value": "26" }, { "begin": 4, "end": 6, "name": "JUMPDEST", "source": -1 }, { "begin": 1570, "end": 1925, "name": "DUP2", "source": 0 }, { "begin": 1570, "end": 1925, "name": "ADD", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SWAP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "DUP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "DUP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "CALLDATALOAD", "source": 0 }, { "begin": 1570, "end": 1925, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1570, "end": 1925, "name": "AND", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SWAP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1570, "end": 1925, "name": "ADD", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SWAP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SWAP3", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SWAP2", "source": 0 }, { "begin": 1570, "end": 1925, "name": "SWAP1", "source": 0 }, { "begin": 1570, "end": 1925, "name": "POP", "source": 0 }, { "begin": 1570, "end": 1925, "name": "POP", "source": 0 }, { "begin": 1570, "end": 1925, "name": "POP", "source": 0 }, { "begin": 1570, "end": 1925, "name": "PUSH [tag]", "source": 0, "value": "27" }, { "begin": 1570, "end": 1925, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 1570, "end": 1925, "name": "tag", "source": 0, "value": "25" }, { "begin": 1570, "end": 1925, "name": "JUMPDEST", "source": 0 }, { "begin": 1570, "end": 1925, "name": "STOP", "source": 0 }, { "begin": 712, "end": 751, "name": "tag", "source": 0, "value": "9" }, { "begin": 712, "end": 751, "name": "JUMPDEST", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH [tag]", "source": 0, "value": "28" }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "CALLDATASIZE", "source": 0 }, { "begin": 712, "end": 751, "name": "SUB", "source": 0 }, { "begin": 15, "end": 17, "name": "PUSH", "source": -1, "value": "20" }, { "begin": 10, "end": 13, "name": "DUP2", "source": -1 }, { "begin": 7, "end": 18, "name": "LT", "source": -1 }, { "begin": 4, "end": 6, "name": "ISZERO", "source": -1 }, { "begin": 4, "end": 6, "name": "PUSH [tag]", "source": -1, "value": "29" }, { "begin": 4, "end": 6, "name": "JUMPI", "source": -1 }, { "begin": 31, "end": 32, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 28, "end": 29, "name": "DUP1", "source": -1 }, { "begin": 21, "end": 33, "name": "REVERT", "source": -1 }, { "begin": 4, "end": 6, "name": "tag", "source": -1, "value": "29" }, { "begin": 4, "end": 6, "name": "JUMPDEST", "source": -1 }, { "begin": 712, "end": 751, "name": "DUP2", "source": 0 }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "CALLDATALOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 712, "end": 751, "name": "AND", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP3", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP2", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH [tag]", "source": 0, "value": "30" }, { "begin": 712, "end": 751, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 712, "end": 751, "name": "tag", "source": 0, "value": "28" }, { "begin": 712, "end": 751, "name": "JUMPDEST", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 712, "end": 751, "name": "MLOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP6", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP2", "source": 0 }, { "begin": 712, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP5", "source": 0 }, { "begin": 712, "end": 751, "name": "ISZERO", "source": 0 }, { "begin": 712, "end": 751, "name": "ISZERO", "source": 0 }, { "begin": 712, "end": 751, "name": "ISZERO", "source": 0 }, { "begin": 712, "end": 751, "name": "ISZERO", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP2", "source": 0 }, { "begin": 712, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP4", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 712, "end": 751, "name": "AND", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 712, "end": 751, "name": "AND", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP2", "source": 0 }, { "begin": 712, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP3", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP2", "source": 0 }, { "begin": 712, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP5", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 712, "end": 751, "name": "MLOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP2", "source": 0 }, { "begin": 712, "end": 751, "name": "SUB", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "RETURN", "source": 0 }, { "begin": 4344, "end": 4488, "name": "tag", "source": 0, "value": "10" }, { "begin": 4344, "end": 4488, "name": "JUMPDEST", "source": 0 }, { "begin": 4344, "end": 4488, "name": "PUSH [tag]", "source": 0, "value": "31" }, { "begin": 4344, "end": 4488, "name": "PUSH [tag]", "source": 0, "value": "32" }, { "begin": 4344, "end": 4488, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 4344, "end": 4488, "name": "tag", "source": 0, "value": "31" }, { "begin": 4344, "end": 4488, "name": "JUMPDEST", "source": 0 }, { "begin": 4344, "end": 4488, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 4344, "end": 4488, "name": "MLOAD", "source": 0 }, { "begin": 4344, "end": 4488, "name": "DUP1", "source": 0 }, { "begin": 4344, "end": 4488, "name": "DUP3", "source": 0 }, { "begin": 4344, "end": 4488, "name": "DUP2", "source": 0 }, { "begin": 4344, "end": 4488, "name": "MSTORE", "source": 0 }, { "begin": 4344, "end": 4488, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 4344, "end": 4488, "name": "ADD", "source": 0 }, { "begin": 4344, "end": 4488, "name": "SWAP2", "source": 0 }, { "begin": 4344, "end": 4488, "name": "POP", "source": 0 }, { "begin": 4344, "end": 4488, "name": "POP", "source": 0 }, { "begin": 4344, "end": 4488, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 4344, "end": 4488, "name": "MLOAD", "source": 0 }, { "begin": 4344, "end": 4488, "name": "DUP1", "source": 0 }, { "begin": 4344, "end": 4488, "name": "SWAP2", "source": 0 }, { "begin": 4344, "end": 4488, "name": "SUB", "source": 0 }, { "begin": 4344, "end": 4488, "name": "SWAP1", "source": 0 }, { "begin": 4344, "end": 4488, "name": "RETURN", "source": 0 }, { "begin": 3144, "end": 3602, "name": "tag", "source": 0, "value": "14" }, { "begin": 3144, "end": 3602, "name": "JUMPDEST", "source": 0 }, { "begin": 3190, "end": 3210, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3213, "end": 3219, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3213, "end": 3231, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3220, "end": 3230, "name": "CALLER", "source": 0 }, { "begin": 3213, "end": 3231, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 3213, "end": 3231, "name": "AND", "source": 0 }, { "begin": 3213, "end": 3231, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 3213, "end": 3231, "name": "AND", "source": 0 }, { "begin": 3213, "end": 3231, "name": "DUP2", "source": 0 }, { "begin": 3213, "end": 3231, "name": "MSTORE", "source": 0 }, { "begin": 3213, "end": 3231, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3213, "end": 3231, "name": "ADD", "source": 0 }, { "begin": 3213, "end": 3231, "name": "SWAP1", "source": 0 }, { "begin": 3213, "end": 3231, "name": "DUP2", "source": 0 }, { "begin": 3213, "end": 3231, "name": "MSTORE", "source": 0 }, { "begin": 3213, "end": 3231, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3213, "end": 3231, "name": "ADD", "source": 0 }, { "begin": 3213, "end": 3231, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3213, "end": 3231, "name": "KECCAK256", "source": 0 }, { "begin": 3190, "end": 3231, "name": "SWAP1", "source": 0 }, { "begin": 3190, "end": 3231, "name": "POP", "source": 0 }, { "begin": 3266, "end": 3267, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3249, "end": 3255, "name": "DUP2", "source": 0 }, { "begin": 3249, "end": 3262, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3249, "end": 3262, "name": "ADD", "source": 0 }, { "begin": 3249, "end": 3262, "name": "SLOAD", "source": 0 }, { "begin": 3249, "end": 3267, "name": "EQ", "source": 0 }, { "begin": 3249, "end": 3267, "name": "ISZERO", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH [tag]", "source": 0, "value": "34" }, { "begin": 3241, "end": 3292, "name": "JUMPI", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 3241, "end": 3292, "name": "MLOAD", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 3241, "end": 3292, "name": "DUP2", "source": 0 }, { "begin": 3241, "end": 3292, "name": "MSTORE", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 3241, "end": 3292, "name": "ADD", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP1", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP1", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3241, "end": 3292, "name": "ADD", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP3", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP2", "source": 0 }, { "begin": 3241, "end": 3292, "name": "SUB", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP3", "source": 0 }, { "begin": 3241, "end": 3292, "name": "MSTORE", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "14" }, { "begin": 3241, "end": 3292, "name": "DUP2", "source": 0 }, { "begin": 3241, "end": 3292, "name": "MSTORE", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3241, "end": 3292, "name": "ADD", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP1", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "486173206E6F20726967687420746F20766F7465000000000000000000000000" }, { "begin": 3241, "end": 3292, "name": "DUP2", "source": 0 }, { "begin": 3241, "end": 3292, "name": "MSTORE", "source": 0 }, { "begin": 3241, "end": 3292, "name": "POP", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3241, "end": 3292, "name": "ADD", "source": 0 }, { "begin": 3241, "end": 3292, "name": "SWAP2", "source": 0 }, { "begin": 3241, "end": 3292, "name": "POP", "source": 0 }, { "begin": 3241, "end": 3292, "name": "POP", "source": 0 }, { "begin": 3241, "end": 3292, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 3241, "end": 3292, "name": "MLOAD", "source": 0 }, { "begin": 3241, "end": 3292, "name": "DUP1", "source": 0 }, { "begin": 3241, "end": 3292, "name": "SWAP2", "source": 0 }, { "begin": 3241, "end": 3292, "name": "SUB", "source": 0 }, { "begin": 3241, "end": 3292, "name": "SWAP1", "source": 0 }, { "begin": 3241, "end": 3292, "name": "REVERT", "source": 0 }, { "begin": 3241, "end": 3292, "name": "tag", "source": 0, "value": "34" }, { "begin": 3241, "end": 3292, "name": "JUMPDEST", "source": 0 }, { "begin": 3311, "end": 3317, "name": "DUP1", "source": 0 }, { "begin": 3311, "end": 3323, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3311, "end": 3323, "name": "ADD", "source": 0 }, { "begin": 3311, "end": 3323, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3311, "end": 3323, "name": "SWAP1", "source": 0 }, { "begin": 3311, "end": 3323, "name": "SLOAD", "source": 0 }, { "begin": 3311, "end": 3323, "name": "SWAP1", "source": 0 }, { "begin": 3311, "end": 3323, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 3311, "end": 3323, "name": "EXP", "source": 0 }, { "begin": 3311, "end": 3323, "name": "SWAP1", "source": 0 }, { "begin": 3311, "end": 3323, "name": "DIV", "source": 0 }, { "begin": 3311, "end": 3323, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 3311, "end": 3323, "name": "AND", "source": 0 }, { "begin": 3310, "end": 3323, "name": "ISZERO", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH [tag]", "source": 0, "value": "35" }, { "begin": 3302, "end": 3342, "name": "JUMPI", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 3302, "end": 3342, "name": "MLOAD", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 3302, "end": 3342, "name": "DUP2", "source": 0 }, { "begin": 3302, "end": 3342, "name": "MSTORE", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 3302, "end": 3342, "name": "ADD", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP1", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP1", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3302, "end": 3342, "name": "ADD", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP3", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP2", "source": 0 }, { "begin": 3302, "end": 3342, "name": "SUB", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP3", "source": 0 }, { "begin": 3302, "end": 3342, "name": "MSTORE", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "E" }, { "begin": 3302, "end": 3342, "name": "DUP2", "source": 0 }, { "begin": 3302, "end": 3342, "name": "MSTORE", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3302, "end": 3342, "name": "ADD", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP1", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "416C726561647920766F7465642E000000000000000000000000000000000000" }, { "begin": 3302, "end": 3342, "name": "DUP2", "source": 0 }, { "begin": 3302, "end": 3342, "name": "MSTORE", "source": 0 }, { "begin": 3302, "end": 3342, "name": "POP", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3302, "end": 3342, "name": "ADD", "source": 0 }, { "begin": 3302, "end": 3342, "name": "SWAP2", "source": 0 }, { "begin": 3302, "end": 3342, "name": "POP", "source": 0 }, { "begin": 3302, "end": 3342, "name": "POP", "source": 0 }, { "begin": 3302, "end": 3342, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 3302, "end": 3342, "name": "MLOAD", "source": 0 }, { "begin": 3302, "end": 3342, "name": "DUP1", "source": 0 }, { "begin": 3302, "end": 3342, "name": "SWAP2", "source": 0 }, { "begin": 3302, "end": 3342, "name": "SUB", "source": 0 }, { "begin": 3302, "end": 3342, "name": "SWAP1", "source": 0 }, { "begin": 3302, "end": 3342, "name": "REVERT", "source": 0 }, { "begin": 3302, "end": 3342, "name": "tag", "source": 0, "value": "35" }, { "begin": 3302, "end": 3342, "name": "JUMPDEST", "source": 0 }, { "begin": 3367, "end": 3371, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3352, "end": 3358, "name": "DUP2", "source": 0 }, { "begin": 3352, "end": 3364, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3352, "end": 3364, "name": "ADD", "source": 0 }, { "begin": 3352, "end": 3364, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3352, "end": 3371, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 3352, "end": 3371, "name": "EXP", "source": 0 }, { "begin": 3352, "end": 3371, "name": "DUP2", "source": 0 }, { "begin": 3352, "end": 3371, "name": "SLOAD", "source": 0 }, { "begin": 3352, "end": 3371, "name": "DUP2", "source": 0 }, { "begin": 3352, "end": 3371, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 3352, "end": 3371, "name": "MUL", "source": 0 }, { "begin": 3352, "end": 3371, "name": "NOT", "source": 0 }, { "begin": 3352, "end": 3371, "name": "AND", "source": 0 }, { "begin": 3352, "end": 3371, "name": "SWAP1", "source": 0 }, { "begin": 3352, "end": 3371, "name": "DUP4", "source": 0 }, { "begin": 3352, "end": 3371, "name": "ISZERO", "source": 0 }, { "begin": 3352, "end": 3371, "name": "ISZERO", "source": 0 }, { "begin": 3352, "end": 3371, "name": "MUL", "source": 0 }, { "begin": 3352, "end": 3371, "name": "OR", "source": 0 }, { "begin": 3352, "end": 3371, "name": "SWAP1", "source": 0 }, { "begin": 3352, "end": 3371, "name": "SSTORE", "source": 0 }, { "begin": 3352, "end": 3371, "name": "POP", "source": 0 }, { "begin": 3395, "end": 3403, "name": "DUP2", "source": 0 }, { "begin": 3381, "end": 3387, "name": "DUP2", "source": 0 }, { "begin": 3381, "end": 3392, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 3381, "end": 3392, "name": "ADD", "source": 0 }, { "begin": 3381, "end": 3403, "name": "DUP2", "source": 0 }, { "begin": 3381, "end": 3403, "name": "SWAP1", "source": 0 }, { "begin": 3381, "end": 3403, "name": "SSTORE", "source": 0 }, { "begin": 3381, "end": 3403, "name": "POP", "source": 0 }, { "begin": 3582, "end": 3588, "name": "DUP1", "source": 0 }, { "begin": 3582, "end": 3595, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3582, "end": 3595, "name": "ADD", "source": 0 }, { "begin": 3582, "end": 3595, "name": "SLOAD", "source": 0 }, { "begin": 3549, "end": 3558, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 3559, "end": 3567, "name": "DUP4", "source": 0 }, { "begin": 3549, "end": 3568, "name": "DUP2", "source": 0 }, { "begin": 3549, "end": 3568, "name": "SLOAD", "source": 0 }, { "begin": 3549, "end": 3568, "name": "DUP2", "source": 0 }, { "begin": 3549, "end": 3568, "name": "LT", "source": 0 }, { "begin": 3549, "end": 3568, "name": "PUSH [tag]", "source": 0, "value": "36" }, { "begin": 3549, "end": 3568, "name": "JUMPI", "source": 0 }, { "begin": 3549, "end": 3568, "name": "INVALID", "source": 0 }, { "begin": 3549, "end": 3568, "name": "tag", "source": 0, "value": "36" }, { "begin": 3549, "end": 3568, "name": "JUMPDEST", "source": 0 }, { "begin": 3549, "end": 3568, "name": "SWAP1", "source": 0 }, { "begin": 3549, "end": 3568, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3549, "end": 3568, "name": "MSTORE", "source": 0 }, { "begin": 3549, "end": 3568, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3549, "end": 3568, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3549, "end": 3568, "name": "KECCAK256", "source": 0 }, { "begin": 3549, "end": 3568, "name": "SWAP1", "source": 0 }, { "begin": 3549, "end": 3568, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 3549, "end": 3568, "name": "MUL", "source": 0 }, { "begin": 3549, "end": 3568, "name": "ADD", "source": 0 }, { "begin": 3549, "end": 3578, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3549, "end": 3578, "name": "ADD", "source": 0 }, { "begin": 3549, "end": 3578, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3549, "end": 3595, "name": "DUP3", "source": 0 }, { "begin": 3549, "end": 3595, "name": "DUP3", "source": 0 }, { "begin": 3549, "end": 3595, "name": "SLOAD", "source": 0 }, { "begin": 3549, "end": 3595, "name": "ADD", "source": 0 }, { "begin": 3549, "end": 3595, "name": "SWAP3", "source": 0 }, { "begin": 3549, "end": 3595, "name": "POP", "source": 0 }, { "begin": 3549, "end": 3595, "name": "POP", "source": 0 }, { "begin": 3549, "end": 3595, "name": "DUP2", "source": 0 }, { "begin": 3549, "end": 3595, "name": "SWAP1", "source": 0 }, { "begin": 3549, "end": 3595, "name": "SSTORE", "source": 0 }, { "begin": 3549, "end": 3595, "name": "POP", "source": 0 }, { "begin": 3144, "end": 3602, "name": "POP", "source": 0 }, { "begin": 3144, "end": 3602, "name": "POP", "source": 0 }, { "begin": 3144, "end": 3602, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 758, "end": 785, "name": "tag", "source": 0, "value": "17" }, { "begin": 758, "end": 785, "name": "JUMPDEST", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 758, "end": 785, "name": "DUP2", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP2", "source": 0 }, { "begin": 758, "end": 785, "name": "SLOAD", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP2", "source": 0 }, { "begin": 758, "end": 785, "name": "LT", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH [tag]", "source": 0, "value": "38" }, { "begin": 758, "end": 785, "name": "JUMPI", "source": 0 }, { "begin": 758, "end": 785, "name": "INVALID", "source": 0 }, { "begin": 758, "end": 785, "name": "tag", "source": 0, "value": "38" }, { "begin": 758, "end": 785, "name": "JUMPDEST", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 758, "end": 785, "name": "MSTORE", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 758, "end": 785, "name": "KECCAK256", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 758, "end": 785, "name": "MUL", "source": 0 }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 758, "end": 785, "name": "SWAP2", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "SLOAD", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP1", "source": 0 }, { "begin": 758, "end": 785, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 758, "end": 785, "name": "ADD", "source": 0 }, { "begin": 758, "end": 785, "name": "SLOAD", "source": 0 }, { "begin": 758, "end": 785, "name": "SWAP1", "source": 0 }, { "begin": 758, "end": 785, "name": "POP", "source": 0 }, { "begin": 758, "end": 785, "name": "DUP3", "source": 0 }, { "begin": 758, "end": 785, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 679, "end": 705, "name": "tag", "source": 0, "value": "19" }, { "begin": 679, "end": 705, "name": "JUMPDEST", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 679, "end": 705, "name": "DUP1", "source": 0 }, { "begin": 679, "end": 705, "name": "SWAP1", "source": 0 }, { "begin": 679, "end": 705, "name": "SLOAD", "source": 0 }, { "begin": 679, "end": 705, "name": "SWAP1", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 679, "end": 705, "name": "EXP", "source": 0 }, { "begin": 679, "end": 705, "name": "SWAP1", "source": 0 }, { "begin": 679, "end": 705, "name": "DIV", "source": 0 }, { "begin": 679, "end": 705, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 679, "end": 705, "name": "AND", "source": 0 }, { "begin": 679, "end": 705, "name": "DUP2", "source": 0 }, { "begin": 679, "end": 705, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 2049, "end": 2956, "name": "tag", "source": 0, "value": "22" }, { "begin": 2049, "end": 2956, "name": "JUMPDEST", "source": 0 }, { "begin": 2096, "end": 2116, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2119, "end": 2125, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2119, "end": 2137, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2126, "end": 2136, "name": "CALLER", "source": 0 }, { "begin": 2119, "end": 2137, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2119, "end": 2137, "name": "AND", "source": 0 }, { "begin": 2119, "end": 2137, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2119, "end": 2137, "name": "AND", "source": 0 }, { "begin": 2119, "end": 2137, "name": "DUP2", "source": 0 }, { "begin": 2119, "end": 2137, "name": "MSTORE", "source": 0 }, { "begin": 2119, "end": 2137, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2119, "end": 2137, "name": "ADD", "source": 0 }, { "begin": 2119, "end": 2137, "name": "SWAP1", "source": 0 }, { "begin": 2119, "end": 2137, "name": "DUP2", "source": 0 }, { "begin": 2119, "end": 2137, "name": "MSTORE", "source": 0 }, { "begin": 2119, "end": 2137, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2119, "end": 2137, "name": "ADD", "source": 0 }, { "begin": 2119, "end": 2137, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2119, "end": 2137, "name": "KECCAK256", "source": 0 }, { "begin": 2096, "end": 2137, "name": "SWAP1", "source": 0 }, { "begin": 2096, "end": 2137, "name": "POP", "source": 0 }, { "begin": 2156, "end": 2162, "name": "DUP1", "source": 0 }, { "begin": 2156, "end": 2168, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2156, "end": 2168, "name": "ADD", "source": 0 }, { "begin": 2156, "end": 2168, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2156, "end": 2168, "name": "SWAP1", "source": 0 }, { "begin": 2156, "end": 2168, "name": "SLOAD", "source": 0 }, { "begin": 2156, "end": 2168, "name": "SWAP1", "source": 0 }, { "begin": 2156, "end": 2168, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 2156, "end": 2168, "name": "EXP", "source": 0 }, { "begin": 2156, "end": 2168, "name": "SWAP1", "source": 0 }, { "begin": 2156, "end": 2168, "name": "DIV", "source": 0 }, { "begin": 2156, "end": 2168, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 2156, "end": 2168, "name": "AND", "source": 0 }, { "begin": 2155, "end": 2168, "name": "ISZERO", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH [tag]", "source": 0, "value": "41" }, { "begin": 2147, "end": 2191, "name": "JUMPI", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 2147, "end": 2191, "name": "MLOAD", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 2147, "end": 2191, "name": "DUP2", "source": 0 }, { "begin": 2147, "end": 2191, "name": "MSTORE", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 2147, "end": 2191, "name": "ADD", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP1", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP1", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2147, "end": 2191, "name": "ADD", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP3", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP2", "source": 0 }, { "begin": 2147, "end": 2191, "name": "SUB", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP3", "source": 0 }, { "begin": 2147, "end": 2191, "name": "MSTORE", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "12" }, { "begin": 2147, "end": 2191, "name": "DUP2", "source": 0 }, { "begin": 2147, "end": 2191, "name": "MSTORE", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2147, "end": 2191, "name": "ADD", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP1", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "596F7520616C726561647920766F7465642E0000000000000000000000000000" }, { "begin": 2147, "end": 2191, "name": "DUP2", "source": 0 }, { "begin": 2147, "end": 2191, "name": "MSTORE", "source": 0 }, { "begin": 2147, "end": 2191, "name": "POP", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2147, "end": 2191, "name": "ADD", "source": 0 }, { "begin": 2147, "end": 2191, "name": "SWAP2", "source": 0 }, { "begin": 2147, "end": 2191, "name": "POP", "source": 0 }, { "begin": 2147, "end": 2191, "name": "POP", "source": 0 }, { "begin": 2147, "end": 2191, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 2147, "end": 2191, "name": "MLOAD", "source": 0 }, { "begin": 2147, "end": 2191, "name": "DUP1", "source": 0 }, { "begin": 2147, "end": 2191, "name": "SWAP2", "source": 0 }, { "begin": 2147, "end": 2191, "name": "SUB", "source": 0 }, { "begin": 2147, "end": 2191, "name": "SWAP1", "source": 0 }, { "begin": 2147, "end": 2191, "name": "REVERT", "source": 0 }, { "begin": 2147, "end": 2191, "name": "tag", "source": 0, "value": "41" }, { "begin": 2147, "end": 2191, "name": "JUMPDEST", "source": 0 }, { "begin": 2215, "end": 2225, "name": "CALLER", "source": 0 }, { "begin": 2209, "end": 2225, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2209, "end": 2225, "name": "AND", "source": 0 }, { "begin": 2209, "end": 2211, "name": "DUP3", "source": 0 }, { "begin": 2209, "end": 2225, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2209, "end": 2225, "name": "AND", "source": 0 }, { "begin": 2209, "end": 2225, "name": "EQ", "source": 0 }, { "begin": 2209, "end": 2225, "name": "ISZERO", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH [tag]", "source": 0, "value": "42" }, { "begin": 2201, "end": 2260, "name": "JUMPI", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 2201, "end": 2260, "name": "MLOAD", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 2201, "end": 2260, "name": "DUP2", "source": 0 }, { "begin": 2201, "end": 2260, "name": "MSTORE", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 2201, "end": 2260, "name": "ADD", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP1", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP1", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2201, "end": 2260, "name": "ADD", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP3", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP2", "source": 0 }, { "begin": 2201, "end": 2260, "name": "SUB", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP3", "source": 0 }, { "begin": 2201, "end": 2260, "name": "MSTORE", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "1E" }, { "begin": 2201, "end": 2260, "name": "DUP2", "source": 0 }, { "begin": 2201, "end": 2260, "name": "MSTORE", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2201, "end": 2260, "name": "ADD", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP1", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000" }, { "begin": 2201, "end": 2260, "name": "DUP2", "source": 0 }, { "begin": 2201, "end": 2260, "name": "MSTORE", "source": 0 }, { "begin": 2201, "end": 2260, "name": "POP", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2201, "end": 2260, "name": "ADD", "source": 0 }, { "begin": 2201, "end": 2260, "name": "SWAP2", "source": 0 }, { "begin": 2201, "end": 2260, "name": "POP", "source": 0 }, { "begin": 2201, "end": 2260, "name": "POP", "source": 0 }, { "begin": 2201, "end": 2260, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 2201, "end": 2260, "name": "MLOAD", "source": 0 }, { "begin": 2201, "end": 2260, "name": "DUP1", "source": 0 }, { "begin": 2201, "end": 2260, "name": "SWAP2", "source": 0 }, { "begin": 2201, "end": 2260, "name": "SUB", "source": 0 }, { "begin": 2201, "end": 2260, "name": "SWAP1", "source": 0 }, { "begin": 2201, "end": 2260, "name": "REVERT", "source": 0 }, { "begin": 2201, "end": 2260, "name": "tag", "source": 0, "value": "42" }, { "begin": 2201, "end": 2260, "name": "JUMPDEST", "source": 0 }, { "begin": 2271, "end": 2494, "name": "tag", "source": 0, "value": "43" }, { "begin": 2271, "end": 2494, "name": "JUMPDEST", "source": 0 }, { "begin": 2309, "end": 2310, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2278, "end": 2311, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2278, "end": 2311, "name": "AND", "source": 0 }, { "begin": 2278, "end": 2284, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2278, "end": 2288, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2285, "end": 2287, "name": "DUP5", "source": 0 }, { "begin": 2278, "end": 2288, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2278, "end": 2288, "name": "AND", "source": 0 }, { "begin": 2278, "end": 2288, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2278, "end": 2288, "name": "AND", "source": 0 }, { "begin": 2278, "end": 2288, "name": "DUP2", "source": 0 }, { "begin": 2278, "end": 2288, "name": "MSTORE", "source": 0 }, { "begin": 2278, "end": 2288, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2278, "end": 2288, "name": "ADD", "source": 0 }, { "begin": 2278, "end": 2288, "name": "SWAP1", "source": 0 }, { "begin": 2278, "end": 2288, "name": "DUP2", "source": 0 }, { "begin": 2278, "end": 2288, "name": "MSTORE", "source": 0 }, { "begin": 2278, "end": 2288, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2278, "end": 2288, "name": "ADD", "source": 0 }, { "begin": 2278, "end": 2288, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2278, "end": 2288, "name": "KECCAK256", "source": 0 }, { "begin": 2278, "end": 2297, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2278, "end": 2297, "name": "ADD", "source": 0 }, { "begin": 2278, "end": 2297, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2278, "end": 2297, "name": "SWAP1", "source": 0 }, { "begin": 2278, "end": 2297, "name": "SLOAD", "source": 0 }, { "begin": 2278, "end": 2297, "name": "SWAP1", "source": 0 }, { "begin": 2278, "end": 2297, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 2278, "end": 2297, "name": "EXP", "source": 0 }, { "begin": 2278, "end": 2297, "name": "SWAP1", "source": 0 }, { "begin": 2278, "end": 2297, "name": "DIV", "source": 0 }, { "begin": 2278, "end": 2297, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2278, "end": 2297, "name": "AND", "source": 0 }, { "begin": 2278, "end": 2311, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2278, "end": 2311, "name": "AND", "source": 0 }, { "begin": 2278, "end": 2311, "name": "EQ", "source": 0 }, { "begin": 2271, "end": 2494, "name": "PUSH [tag]", "source": 0, "value": "44" }, { "begin": 2271, "end": 2494, "name": "JUMPI", "source": 0 }, { "begin": 2332, "end": 2338, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2332, "end": 2342, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2339, "end": 2341, "name": "DUP4", "source": 0 }, { "begin": 2332, "end": 2342, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2332, "end": 2342, "name": "AND", "source": 0 }, { "begin": 2332, "end": 2342, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2332, "end": 2342, "name": "AND", "source": 0 }, { "begin": 2332, "end": 2342, "name": "DUP2", "source": 0 }, { "begin": 2332, "end": 2342, "name": "MSTORE", "source": 0 }, { "begin": 2332, "end": 2342, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2332, "end": 2342, "name": "ADD", "source": 0 }, { "begin": 2332, "end": 2342, "name": "SWAP1", "source": 0 }, { "begin": 2332, "end": 2342, "name": "DUP2", "source": 0 }, { "begin": 2332, "end": 2342, "name": "MSTORE", "source": 0 }, { "begin": 2332, "end": 2342, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2332, "end": 2342, "name": "ADD", "source": 0 }, { "begin": 2332, "end": 2342, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2332, "end": 2342, "name": "KECCAK256", "source": 0 }, { "begin": 2332, "end": 2351, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2332, "end": 2351, "name": "ADD", "source": 0 }, { "begin": 2332, "end": 2351, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2332, "end": 2351, "name": "SWAP1", "source": 0 }, { "begin": 2332, "end": 2351, "name": "SLOAD", "source": 0 }, { "begin": 2332, "end": 2351, "name": "SWAP1", "source": 0 }, { "begin": 2332, "end": 2351, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 2332, "end": 2351, "name": "EXP", "source": 0 }, { "begin": 2332, "end": 2351, "name": "SWAP1", "source": 0 }, { "begin": 2332, "end": 2351, "name": "DIV", "source": 0 }, { "begin": 2332, "end": 2351, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2332, "end": 2351, "name": "AND", "source": 0 }, { "begin": 2327, "end": 2351, "name": "SWAP2", "source": 0 }, { "begin": 2327, "end": 2351, "name": "POP", "source": 0 }, { "begin": 2443, "end": 2453, "name": "CALLER", "source": 0 }, { "begin": 2437, "end": 2453, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2437, "end": 2453, "name": "AND", "source": 0 }, { "begin": 2437, "end": 2439, "name": "DUP3", "source": 0 }, { "begin": 2437, "end": 2453, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2437, "end": 2453, "name": "AND", "source": 0 }, { "begin": 2437, "end": 2453, "name": "EQ", "source": 0 }, { "begin": 2437, "end": 2453, "name": "ISZERO", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH [tag]", "source": 0, "value": "45" }, { "begin": 2429, "end": 2483, "name": "JUMPI", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 2429, "end": 2483, "name": "MLOAD", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 2429, "end": 2483, "name": "DUP2", "source": 0 }, { "begin": 2429, "end": 2483, "name": "MSTORE", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 2429, "end": 2483, "name": "ADD", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP1", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP1", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2429, "end": 2483, "name": "ADD", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP3", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP2", "source": 0 }, { "begin": 2429, "end": 2483, "name": "SUB", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP3", "source": 0 }, { "begin": 2429, "end": 2483, "name": "MSTORE", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "19" }, { "begin": 2429, "end": 2483, "name": "DUP2", "source": 0 }, { "begin": 2429, "end": 2483, "name": "MSTORE", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2429, "end": 2483, "name": "ADD", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP1", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000" }, { "begin": 2429, "end": 2483, "name": "DUP2", "source": 0 }, { "begin": 2429, "end": 2483, "name": "MSTORE", "source": 0 }, { "begin": 2429, "end": 2483, "name": "POP", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2429, "end": 2483, "name": "ADD", "source": 0 }, { "begin": 2429, "end": 2483, "name": "SWAP2", "source": 0 }, { "begin": 2429, "end": 2483, "name": "POP", "source": 0 }, { "begin": 2429, "end": 2483, "name": "POP", "source": 0 }, { "begin": 2429, "end": 2483, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 2429, "end": 2483, "name": "MLOAD", "source": 0 }, { "begin": 2429, "end": 2483, "name": "DUP1", "source": 0 }, { "begin": 2429, "end": 2483, "name": "SWAP2", "source": 0 }, { "begin": 2429, "end": 2483, "name": "SUB", "source": 0 }, { "begin": 2429, "end": 2483, "name": "SWAP1", "source": 0 }, { "begin": 2429, "end": 2483, "name": "REVERT", "source": 0 }, { "begin": 2429, "end": 2483, "name": "tag", "source": 0, "value": "45" }, { "begin": 2429, "end": 2483, "name": "JUMPDEST", "source": 0 }, { "begin": 2271, "end": 2494, "name": "PUSH [tag]", "source": 0, "value": "43" }, { "begin": 2271, "end": 2494, "name": "JUMP", "source": 0 }, { "begin": 2271, "end": 2494, "name": "tag", "source": 0, "value": "44" }, { "begin": 2271, "end": 2494, "name": "JUMPDEST", "source": 0 }, { "begin": 2518, "end": 2522, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2503, "end": 2509, "name": "DUP2", "source": 0 }, { "begin": 2503, "end": 2515, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2503, "end": 2515, "name": "ADD", "source": 0 }, { "begin": 2503, "end": 2515, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2503, "end": 2522, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 2503, "end": 2522, "name": "EXP", "source": 0 }, { "begin": 2503, "end": 2522, "name": "DUP2", "source": 0 }, { "begin": 2503, "end": 2522, "name": "SLOAD", "source": 0 }, { "begin": 2503, "end": 2522, "name": "DUP2", "source": 0 }, { "begin": 2503, "end": 2522, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 2503, "end": 2522, "name": "MUL", "source": 0 }, { "begin": 2503, "end": 2522, "name": "NOT", "source": 0 }, { "begin": 2503, "end": 2522, "name": "AND", "source": 0 }, { "begin": 2503, "end": 2522, "name": "SWAP1", "source": 0 }, { "begin": 2503, "end": 2522, "name": "DUP4", "source": 0 }, { "begin": 2503, "end": 2522, "name": "ISZERO", "source": 0 }, { "begin": 2503, "end": 2522, "name": "ISZERO", "source": 0 }, { "begin": 2503, "end": 2522, "name": "MUL", "source": 0 }, { "begin": 2503, "end": 2522, "name": "OR", "source": 0 }, { "begin": 2503, "end": 2522, "name": "SWAP1", "source": 0 }, { "begin": 2503, "end": 2522, "name": "SSTORE", "source": 0 }, { "begin": 2503, "end": 2522, "name": "POP", "source": 0 }, { "begin": 2550, "end": 2552, "name": "DUP2", "source": 0 }, { "begin": 2532, "end": 2538, "name": "DUP2", "source": 0 }, { "begin": 2532, "end": 2547, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2532, "end": 2547, "name": "ADD", "source": 0 }, { "begin": 2532, "end": 2547, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2532, "end": 2552, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 2532, "end": 2552, "name": "EXP", "source": 0 }, { "begin": 2532, "end": 2552, "name": "DUP2", "source": 0 }, { "begin": 2532, "end": 2552, "name": "SLOAD", "source": 0 }, { "begin": 2532, "end": 2552, "name": "DUP2", "source": 0 }, { "begin": 2532, "end": 2552, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2532, "end": 2552, "name": "MUL", "source": 0 }, { "begin": 2532, "end": 2552, "name": "NOT", "source": 0 }, { "begin": 2532, "end": 2552, "name": "AND", "source": 0 }, { "begin": 2532, "end": 2552, "name": "SWAP1", "source": 0 }, { "begin": 2532, "end": 2552, "name": "DUP4", "source": 0 }, { "begin": 2532, "end": 2552, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2532, "end": 2552, "name": "AND", "source": 0 }, { "begin": 2532, "end": 2552, "name": "MUL", "source": 0 }, { "begin": 2532, "end": 2552, "name": "OR", "source": 0 }, { "begin": 2532, "end": 2552, "name": "SWAP1", "source": 0 }, { "begin": 2532, "end": 2552, "name": "SSTORE", "source": 0 }, { "begin": 2532, "end": 2552, "name": "POP", "source": 0 }, { "begin": 2562, "end": 2585, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2588, "end": 2594, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2588, "end": 2598, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2595, "end": 2597, "name": "DUP5", "source": 0 }, { "begin": 2588, "end": 2598, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2588, "end": 2598, "name": "AND", "source": 0 }, { "begin": 2588, "end": 2598, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 2588, "end": 2598, "name": "AND", "source": 0 }, { "begin": 2588, "end": 2598, "name": "DUP2", "source": 0 }, { "begin": 2588, "end": 2598, "name": "MSTORE", "source": 0 }, { "begin": 2588, "end": 2598, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2588, "end": 2598, "name": "ADD", "source": 0 }, { "begin": 2588, "end": 2598, "name": "SWAP1", "source": 0 }, { "begin": 2588, "end": 2598, "name": "DUP2", "source": 0 }, { "begin": 2588, "end": 2598, "name": "MSTORE", "source": 0 }, { "begin": 2588, "end": 2598, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2588, "end": 2598, "name": "ADD", "source": 0 }, { "begin": 2588, "end": 2598, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2588, "end": 2598, "name": "KECCAK256", "source": 0 }, { "begin": 2562, "end": 2598, "name": "SWAP1", "source": 0 }, { "begin": 2562, "end": 2598, "name": "POP", "source": 0 }, { "begin": 2612, "end": 2621, "name": "DUP1", "source": 0 }, { "begin": 2612, "end": 2627, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2612, "end": 2627, "name": "ADD", "source": 0 }, { "begin": 2612, "end": 2627, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2612, "end": 2627, "name": "SWAP1", "source": 0 }, { "begin": 2612, "end": 2627, "name": "SLOAD", "source": 0 }, { "begin": 2612, "end": 2627, "name": "SWAP1", "source": 0 }, { "begin": 2612, "end": 2627, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 2612, "end": 2627, "name": "EXP", "source": 0 }, { "begin": 2612, "end": 2627, "name": "SWAP1", "source": 0 }, { "begin": 2612, "end": 2627, "name": "DIV", "source": 0 }, { "begin": 2612, "end": 2627, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 2612, "end": 2627, "name": "AND", "source": 0 }, { "begin": 2608, "end": 2950, "name": "ISZERO", "source": 0 }, { "begin": 2608, "end": 2950, "name": "PUSH [tag]", "source": 0, "value": "46" }, { "begin": 2608, "end": 2950, "name": "JUMPI", "source": 0 }, { "begin": 2779, "end": 2785, "name": "DUP2", "source": 0 }, { "begin": 2779, "end": 2792, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2779, "end": 2792, "name": "ADD", "source": 0 }, { "begin": 2779, "end": 2792, "name": "SLOAD", "source": 0 }, { "begin": 2740, "end": 2749, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 2750, "end": 2759, "name": "DUP3", "source": 0 }, { "begin": 2750, "end": 2764, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 2750, "end": 2764, "name": "ADD", "source": 0 }, { "begin": 2750, "end": 2764, "name": "SLOAD", "source": 0 }, { "begin": 2740, "end": 2765, "name": "DUP2", "source": 0 }, { "begin": 2740, "end": 2765, "name": "SLOAD", "source": 0 }, { "begin": 2740, "end": 2765, "name": "DUP2", "source": 0 }, { "begin": 2740, "end": 2765, "name": "LT", "source": 0 }, { "begin": 2740, "end": 2765, "name": "PUSH [tag]", "source": 0, "value": "47" }, { "begin": 2740, "end": 2765, "name": "JUMPI", "source": 0 }, { "begin": 2740, "end": 2765, "name": "INVALID", "source": 0 }, { "begin": 2740, "end": 2765, "name": "tag", "source": 0, "value": "47" }, { "begin": 2740, "end": 2765, "name": "JUMPDEST", "source": 0 }, { "begin": 2740, "end": 2765, "name": "SWAP1", "source": 0 }, { "begin": 2740, "end": 2765, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2740, "end": 2765, "name": "MSTORE", "source": 0 }, { "begin": 2740, "end": 2765, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 2740, "end": 2765, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2740, "end": 2765, "name": "KECCAK256", "source": 0 }, { "begin": 2740, "end": 2765, "name": "SWAP1", "source": 0 }, { "begin": 2740, "end": 2765, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 2740, "end": 2765, "name": "MUL", "source": 0 }, { "begin": 2740, "end": 2765, "name": "ADD", "source": 0 }, { "begin": 2740, "end": 2775, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 2740, "end": 2775, "name": "ADD", "source": 0 }, { "begin": 2740, "end": 2775, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2740, "end": 2792, "name": "DUP3", "source": 0 }, { "begin": 2740, "end": 2792, "name": "DUP3", "source": 0 }, { "begin": 2740, "end": 2792, "name": "SLOAD", "source": 0 }, { "begin": 2740, "end": 2792, "name": "ADD", "source": 0 }, { "begin": 2740, "end": 2792, "name": "SWAP3", "source": 0 }, { "begin": 2740, "end": 2792, "name": "POP", "source": 0 }, { "begin": 2740, "end": 2792, "name": "POP", "source": 0 }, { "begin": 2740, "end": 2792, "name": "DUP2", "source": 0 }, { "begin": 2740, "end": 2792, "name": "SWAP1", "source": 0 }, { "begin": 2740, "end": 2792, "name": "SSTORE", "source": 0 }, { "begin": 2740, "end": 2792, "name": "POP", "source": 0 }, { "begin": 2608, "end": 2950, "name": "PUSH [tag]", "source": 0, "value": "49" }, { "begin": 2608, "end": 2950, "name": "JUMP", "source": 0 }, { "begin": 2608, "end": 2950, "name": "tag", "source": 0, "value": "46" }, { "begin": 2608, "end": 2950, "name": "JUMPDEST", "source": 0 }, { "begin": 2926, "end": 2932, "name": "DUP2", "source": 0 }, { "begin": 2926, "end": 2939, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2926, "end": 2939, "name": "ADD", "source": 0 }, { "begin": 2926, "end": 2939, "name": "SLOAD", "source": 0 }, { "begin": 2906, "end": 2915, "name": "DUP2", "source": 0 }, { "begin": 2906, "end": 2922, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2906, "end": 2922, "name": "ADD", "source": 0 }, { "begin": 2906, "end": 2922, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 2906, "end": 2939, "name": "DUP3", "source": 0 }, { "begin": 2906, "end": 2939, "name": "DUP3", "source": 0 }, { "begin": 2906, "end": 2939, "name": "SLOAD", "source": 0 }, { "begin": 2906, "end": 2939, "name": "ADD", "source": 0 }, { "begin": 2906, "end": 2939, "name": "SWAP3", "source": 0 }, { "begin": 2906, "end": 2939, "name": "POP", "source": 0 }, { "begin": 2906, "end": 2939, "name": "POP", "source": 0 }, { "begin": 2906, "end": 2939, "name": "DUP2", "source": 0 }, { "begin": 2906, "end": 2939, "name": "SWAP1", "source": 0 }, { "begin": 2906, "end": 2939, "name": "SSTORE", "source": 0 }, { "begin": 2906, "end": 2939, "name": "POP", "source": 0 }, { "begin": 2608, "end": 2950, "name": "tag", "source": 0, "value": "49" }, { "begin": 2608, "end": 2950, "name": "JUMPDEST", "source": 0 }, { "begin": 2049, "end": 2956, "name": "POP", "source": 0 }, { "begin": 2049, "end": 2956, "name": "POP", "source": 0 }, { "begin": 2049, "end": 2956, "name": "POP", "source": 0 }, { "begin": 2049, "end": 2956, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 3788, "end": 4153, "name": "tag", "source": 0, "value": "24" }, { "begin": 3788, "end": 4153, "name": "JUMPDEST", "source": 0 }, { "begin": 3848, "end": 3869, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3885, "end": 3906, "name": "DUP1", "source": 0 }, { "begin": 3909, "end": 3910, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3885, "end": 3910, "name": "SWAP1", "source": 0 }, { "begin": 3885, "end": 3910, "name": "POP", "source": 0 }, { "begin": 3925, "end": 3931, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3934, "end": 3935, "name": "DUP1", "source": 0 }, { "begin": 3925, "end": 3935, "name": "SWAP1", "source": 0 }, { "begin": 3925, "end": 3935, "name": "POP", "source": 0 }, { "begin": 3920, "end": 4147, "name": "tag", "source": 0, "value": "51" }, { "begin": 3920, "end": 4147, "name": "JUMPDEST", "source": 0 }, { "begin": 3941, "end": 3950, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 3941, "end": 3957, "name": "DUP1", "source": 0 }, { "begin": 3941, "end": 3957, "name": "SLOAD", "source": 0 }, { "begin": 3941, "end": 3957, "name": "SWAP1", "source": 0 }, { "begin": 3941, "end": 3957, "name": "POP", "source": 0 }, { "begin": 3937, "end": 3938, "name": "DUP2", "source": 0 }, { "begin": 3937, "end": 3957, "name": "LT", "source": 0 }, { "begin": 3920, "end": 4147, "name": "ISZERO", "source": 0 }, { "begin": 3920, "end": 4147, "name": "PUSH [tag]", "source": 0, "value": "52" }, { "begin": 3920, "end": 4147, "name": "JUMPI", "source": 0 }, { "begin": 4007, "end": 4023, "name": "DUP2", "source": 0 }, { "begin": 3982, "end": 3991, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 3992, "end": 3993, "name": "DUP3", "source": 0 }, { "begin": 3982, "end": 3994, "name": "DUP2", "source": 0 }, { "begin": 3982, "end": 3994, "name": "SLOAD", "source": 0 }, { "begin": 3982, "end": 3994, "name": "DUP2", "source": 0 }, { "begin": 3982, "end": 3994, "name": "LT", "source": 0 }, { "begin": 3982, "end": 3994, "name": "PUSH [tag]", "source": 0, "value": "54" }, { "begin": 3982, "end": 3994, "name": "JUMPI", "source": 0 }, { "begin": 3982, "end": 3994, "name": "INVALID", "source": 0 }, { "begin": 3982, "end": 3994, "name": "tag", "source": 0, "value": "54" }, { "begin": 3982, "end": 3994, "name": "JUMPDEST", "source": 0 }, { "begin": 3982, "end": 3994, "name": "SWAP1", "source": 0 }, { "begin": 3982, "end": 3994, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3982, "end": 3994, "name": "MSTORE", "source": 0 }, { "begin": 3982, "end": 3994, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 3982, "end": 3994, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 3982, "end": 3994, "name": "KECCAK256", "source": 0 }, { "begin": 3982, "end": 3994, "name": "SWAP1", "source": 0 }, { "begin": 3982, "end": 3994, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 3982, "end": 3994, "name": "MUL", "source": 0 }, { "begin": 3982, "end": 3994, "name": "ADD", "source": 0 }, { "begin": 3982, "end": 4004, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3982, "end": 4004, "name": "ADD", "source": 0 }, { "begin": 3982, "end": 4004, "name": "SLOAD", "source": 0 }, { "begin": 3982, "end": 4023, "name": "GT", "source": 0 }, { "begin": 3978, "end": 4137, "name": "ISZERO", "source": 0 }, { "begin": 3978, "end": 4137, "name": "PUSH [tag]", "source": 0, "value": "56" }, { "begin": 3978, "end": 4137, "name": "JUMPI", "source": 0 }, { "begin": 4062, "end": 4071, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 4072, "end": 4073, "name": "DUP2", "source": 0 }, { "begin": 4062, "end": 4074, "name": "DUP2", "source": 0 }, { "begin": 4062, "end": 4074, "name": "SLOAD", "source": 0 }, { "begin": 4062, "end": 4074, "name": "DUP2", "source": 0 }, { "begin": 4062, "end": 4074, "name": "LT", "source": 0 }, { "begin": 4062, "end": 4074, "name": "PUSH [tag]", "source": 0, "value": "57" }, { "begin": 4062, "end": 4074, "name": "JUMPI", "source": 0 }, { "begin": 4062, "end": 4074, "name": "INVALID", "source": 0 }, { "begin": 4062, "end": 4074, "name": "tag", "source": 0, "value": "57" }, { "begin": 4062, "end": 4074, "name": "JUMPDEST", "source": 0 }, { "begin": 4062, "end": 4074, "name": "SWAP1", "source": 0 }, { "begin": 4062, "end": 4074, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 4062, "end": 4074, "name": "MSTORE", "source": 0 }, { "begin": 4062, "end": 4074, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 4062, "end": 4074, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 4062, "end": 4074, "name": "KECCAK256", "source": 0 }, { "begin": 4062, "end": 4074, "name": "SWAP1", "source": 0 }, { "begin": 4062, "end": 4074, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 4062, "end": 4074, "name": "MUL", "source": 0 }, { "begin": 4062, "end": 4074, "name": "ADD", "source": 0 }, { "begin": 4062, "end": 4084, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 4062, "end": 4084, "name": "ADD", "source": 0 }, { "begin": 4062, "end": 4084, "name": "SLOAD", "source": 0 }, { "begin": 4043, "end": 4084, "name": "SWAP2", "source": 0 }, { "begin": 4043, "end": 4084, "name": "POP", "source": 0 }, { "begin": 4121, "end": 4122, "name": "DUP1", "source": 0 }, { "begin": 4102, "end": 4122, "name": "SWAP3", "source": 0 }, { "begin": 4102, "end": 4122, "name": "POP", "source": 0 }, { "begin": 3978, "end": 4137, "name": "tag", "source": 0, "value": "56" }, { "begin": 3978, "end": 4137, "name": "JUMPDEST", "source": 0 }, { "begin": 3959, "end": 3962, "name": "DUP1", "source": 0 }, { "begin": 3959, "end": 3962, "name": "DUP1", "source": 0 }, { "begin": 3959, "end": 3962, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 3959, "end": 3962, "name": "ADD", "source": 0 }, { "begin": 3959, "end": 3962, "name": "SWAP2", "source": 0 }, { "begin": 3959, "end": 3962, "name": "POP", "source": 0 }, { "begin": 3959, "end": 3962, "name": "POP", "source": 0 }, { "begin": 3920, "end": 4147, "name": "PUSH [tag]", "source": 0, "value": "51" }, { "begin": 3920, "end": 4147, "name": "JUMP", "source": 0 }, { "begin": 3920, "end": 4147, "name": "tag", "source": 0, "value": "52" }, { "begin": 3920, "end": 4147, "name": "JUMPDEST", "source": 0 }, { "begin": 3920, "end": 4147, "name": "POP", "source": 0 }, { "begin": 3788, "end": 4153, "name": "POP", "source": 0 }, { "begin": 3788, "end": 4153, "name": "SWAP1", "source": 0 }, { "begin": 3788, "end": 4153, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 1570, "end": 1925, "name": "tag", "source": 0, "value": "27" }, { "begin": 1570, "end": 1925, "name": "JUMPDEST", "source": 0 }, { "begin": 1662, "end": 1673, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1662, "end": 1673, "name": "DUP1", "source": 0 }, { "begin": 1662, "end": 1673, "name": "SWAP1", "source": 0 }, { "begin": 1662, "end": 1673, "name": "SLOAD", "source": 0 }, { "begin": 1662, "end": 1673, "name": "SWAP1", "source": 0 }, { "begin": 1662, "end": 1673, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 1662, "end": 1673, "name": "EXP", "source": 0 }, { "begin": 1662, "end": 1673, "name": "SWAP1", "source": 0 }, { "begin": 1662, "end": 1673, "name": "DIV", "source": 0 }, { "begin": 1662, "end": 1673, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1662, "end": 1673, "name": "AND", "source": 0 }, { "begin": 1648, "end": 1673, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1648, "end": 1673, "name": "AND", "source": 0 }, { "begin": 1648, "end": 1658, "name": "CALLER", "source": 0 }, { "begin": 1648, "end": 1673, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1648, "end": 1673, "name": "AND", "source": 0 }, { "begin": 1648, "end": 1673, "name": "EQ", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH [tag]", "source": 0, "value": "60" }, { "begin": 1627, "end": 1739, "name": "JUMPI", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1627, "end": 1739, "name": "MLOAD", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 1627, "end": 1739, "name": "DUP2", "source": 0 }, { "begin": 1627, "end": 1739, "name": "MSTORE", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 1627, "end": 1739, "name": "ADD", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP1", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP1", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1627, "end": 1739, "name": "ADD", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP3", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP2", "source": 0 }, { "begin": 1627, "end": 1739, "name": "SUB", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP3", "source": 0 }, { "begin": 1627, "end": 1739, "name": "MSTORE", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "28" }, { "begin": 1627, "end": 1739, "name": "DUP2", "source": 0 }, { "begin": 1627, "end": 1739, "name": "MSTORE", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1627, "end": 1739, "name": "ADD", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP1", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH data", "source": 0, "value": "80126CE3251AB2B6E4ADE14FE5B2BC11F593510CBE9E3550C09BFF1989E33B95" }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "28" }, { "begin": 1627, "end": 1739, "name": "SWAP2", "source": 0 }, { "begin": 1627, "end": 1739, "name": "CODECOPY", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1627, "end": 1739, "name": "ADD", "source": 0 }, { "begin": 1627, "end": 1739, "name": "SWAP2", "source": 0 }, { "begin": 1627, "end": 1739, "name": "POP", "source": 0 }, { "begin": 1627, "end": 1739, "name": "POP", "source": 0 }, { "begin": 1627, "end": 1739, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1627, "end": 1739, "name": "MLOAD", "source": 0 }, { "begin": 1627, "end": 1739, "name": "DUP1", "source": 0 }, { "begin": 1627, "end": 1739, "name": "SWAP2", "source": 0 }, { "begin": 1627, "end": 1739, "name": "SUB", "source": 0 }, { "begin": 1627, "end": 1739, "name": "SWAP1", "source": 0 }, { "begin": 1627, "end": 1739, "name": "REVERT", "source": 0 }, { "begin": 1627, "end": 1739, "name": "tag", "source": 0, "value": "60" }, { "begin": 1627, "end": 1739, "name": "JUMPDEST", "source": 0 }, { "begin": 1771, "end": 1777, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1771, "end": 1784, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1778, "end": 1783, "name": "DUP3", "source": 0 }, { "begin": 1771, "end": 1784, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1771, "end": 1784, "name": "AND", "source": 0 }, { "begin": 1771, "end": 1784, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1771, "end": 1784, "name": "AND", "source": 0 }, { "begin": 1771, "end": 1784, "name": "DUP2", "source": 0 }, { "begin": 1771, "end": 1784, "name": "MSTORE", "source": 0 }, { "begin": 1771, "end": 1784, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1771, "end": 1784, "name": "ADD", "source": 0 }, { "begin": 1771, "end": 1784, "name": "SWAP1", "source": 0 }, { "begin": 1771, "end": 1784, "name": "DUP2", "source": 0 }, { "begin": 1771, "end": 1784, "name": "MSTORE", "source": 0 }, { "begin": 1771, "end": 1784, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1771, "end": 1784, "name": "ADD", "source": 0 }, { "begin": 1771, "end": 1784, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1771, "end": 1784, "name": "KECCAK256", "source": 0 }, { "begin": 1771, "end": 1790, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1771, "end": 1790, "name": "ADD", "source": 0 }, { "begin": 1771, "end": 1790, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1771, "end": 1790, "name": "SWAP1", "source": 0 }, { "begin": 1771, "end": 1790, "name": "SLOAD", "source": 0 }, { "begin": 1771, "end": 1790, "name": "SWAP1", "source": 0 }, { "begin": 1771, "end": 1790, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 1771, "end": 1790, "name": "EXP", "source": 0 }, { "begin": 1771, "end": 1790, "name": "SWAP1", "source": 0 }, { "begin": 1771, "end": 1790, "name": "DIV", "source": 0 }, { "begin": 1771, "end": 1790, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 1771, "end": 1790, "name": "AND", "source": 0 }, { "begin": 1770, "end": 1790, "name": "ISZERO", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH [tag]", "source": 0, "value": "61" }, { "begin": 1749, "end": 1840, "name": "JUMPI", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1749, "end": 1840, "name": "MLOAD", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "8C379A000000000000000000000000000000000000000000000000000000000" }, { "begin": 1749, "end": 1840, "name": "DUP2", "source": 0 }, { "begin": 1749, "end": 1840, "name": "MSTORE", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 1749, "end": 1840, "name": "ADD", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP1", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP1", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1749, "end": 1840, "name": "ADD", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP3", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP2", "source": 0 }, { "begin": 1749, "end": 1840, "name": "SUB", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP3", "source": 0 }, { "begin": 1749, "end": 1840, "name": "MSTORE", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "18" }, { "begin": 1749, "end": 1840, "name": "DUP2", "source": 0 }, { "begin": 1749, "end": 1840, "name": "MSTORE", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1749, "end": 1840, "name": "ADD", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP1", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "54686520766F74657220616C726561647920766F7465642E0000000000000000" }, { "begin": 1749, "end": 1840, "name": "DUP2", "source": 0 }, { "begin": 1749, "end": 1840, "name": "MSTORE", "source": 0 }, { "begin": 1749, "end": 1840, "name": "POP", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1749, "end": 1840, "name": "ADD", "source": 0 }, { "begin": 1749, "end": 1840, "name": "SWAP2", "source": 0 }, { "begin": 1749, "end": 1840, "name": "POP", "source": 0 }, { "begin": 1749, "end": 1840, "name": "POP", "source": 0 }, { "begin": 1749, "end": 1840, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 1749, "end": 1840, "name": "MLOAD", "source": 0 }, { "begin": 1749, "end": 1840, "name": "DUP1", "source": 0 }, { "begin": 1749, "end": 1840, "name": "SWAP2", "source": 0 }, { "begin": 1749, "end": 1840, "name": "SUB", "source": 0 }, { "begin": 1749, "end": 1840, "name": "SWAP1", "source": 0 }, { "begin": 1749, "end": 1840, "name": "REVERT", "source": 0 }, { "begin": 1749, "end": 1840, "name": "tag", "source": 0, "value": "61" }, { "begin": 1749, "end": 1840, "name": "JUMPDEST", "source": 0 }, { "begin": 1882, "end": 1883, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1858, "end": 1864, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1858, "end": 1871, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1865, "end": 1870, "name": "DUP4", "source": 0 }, { "begin": 1858, "end": 1871, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1858, "end": 1871, "name": "AND", "source": 0 }, { "begin": 1858, "end": 1871, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1858, "end": 1871, "name": "AND", "source": 0 }, { "begin": 1858, "end": 1871, "name": "DUP2", "source": 0 }, { "begin": 1858, "end": 1871, "name": "MSTORE", "source": 0 }, { "begin": 1858, "end": 1871, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1858, "end": 1871, "name": "ADD", "source": 0 }, { "begin": 1858, "end": 1871, "name": "SWAP1", "source": 0 }, { "begin": 1858, "end": 1871, "name": "DUP2", "source": 0 }, { "begin": 1858, "end": 1871, "name": "MSTORE", "source": 0 }, { "begin": 1858, "end": 1871, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1858, "end": 1871, "name": "ADD", "source": 0 }, { "begin": 1858, "end": 1871, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1858, "end": 1871, "name": "KECCAK256", "source": 0 }, { "begin": 1858, "end": 1878, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1858, "end": 1878, "name": "ADD", "source": 0 }, { "begin": 1858, "end": 1878, "name": "SLOAD", "source": 0 }, { "begin": 1858, "end": 1883, "name": "EQ", "source": 0 }, { "begin": 1850, "end": 1884, "name": "PUSH [tag]", "source": 0, "value": "62" }, { "begin": 1850, "end": 1884, "name": "JUMPI", "source": 0 }, { "begin": 12, "end": 13, "name": "PUSH", "source": -1, "value": "0" }, { "begin": 9, "end": 10, "name": "DUP1", "source": -1 }, { "begin": 2, "end": 14, "name": "REVERT", "source": -1 }, { "begin": 1850, "end": 1884, "name": "tag", "source": 0, "value": "62" }, { "begin": 1850, "end": 1884, "name": "JUMPDEST", "source": 0 }, { "begin": 1917, "end": 1918, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 1894, "end": 1900, "name": "DUP1", "source": 0 }, { "begin": 1894, "end": 1907, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1901, "end": 1906, "name": "DUP4", "source": 0 }, { "begin": 1894, "end": 1907, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1894, "end": 1907, "name": "AND", "source": 0 }, { "begin": 1894, "end": 1907, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 1894, "end": 1907, "name": "AND", "source": 0 }, { "begin": 1894, "end": 1907, "name": "DUP2", "source": 0 }, { "begin": 1894, "end": 1907, "name": "MSTORE", "source": 0 }, { "begin": 1894, "end": 1907, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1894, "end": 1907, "name": "ADD", "source": 0 }, { "begin": 1894, "end": 1907, "name": "SWAP1", "source": 0 }, { "begin": 1894, "end": 1907, "name": "DUP2", "source": 0 }, { "begin": 1894, "end": 1907, "name": "MSTORE", "source": 0 }, { "begin": 1894, "end": 1907, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 1894, "end": 1907, "name": "ADD", "source": 0 }, { "begin": 1894, "end": 1907, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1894, "end": 1907, "name": "KECCAK256", "source": 0 }, { "begin": 1894, "end": 1914, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 1894, "end": 1914, "name": "ADD", "source": 0 }, { "begin": 1894, "end": 1918, "name": "DUP2", "source": 0 }, { "begin": 1894, "end": 1918, "name": "SWAP1", "source": 0 }, { "begin": 1894, "end": 1918, "name": "SSTORE", "source": 0 }, { "begin": 1894, "end": 1918, "name": "POP", "source": 0 }, { "begin": 1570, "end": 1925, "name": "POP", "source": 0 }, { "begin": 1570, "end": 1925, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 712, "end": 751, "name": "tag", "source": 0, "value": "30" }, { "begin": 712, "end": 751, "name": "JUMPDEST", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 712, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 712, "end": 751, "name": "MSTORE", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 712, "end": 751, "name": "KECCAK256", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 712, "end": 751, "name": "SWAP2", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "SLOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "SLOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 712, "end": 751, "name": "EXP", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DIV", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "FF" }, { "begin": 712, "end": 751, "name": "AND", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "1" }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "SLOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "100" }, { "begin": 712, "end": 751, "name": "EXP", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DIV", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { "begin": 712, "end": 751, "name": "AND", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP1", "source": 0 }, { "begin": 712, "end": 751, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 712, "end": 751, "name": "ADD", "source": 0 }, { "begin": 712, "end": 751, "name": "SLOAD", "source": 0 }, { "begin": 712, "end": 751, "name": "SWAP1", "source": 0 }, { "begin": 712, "end": 751, "name": "POP", "source": 0 }, { "begin": 712, "end": 751, "name": "DUP5", "source": 0 }, { "begin": 712, "end": 751, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 4344, "end": 4488, "name": "tag", "source": 0, "value": "32" }, { "begin": 4344, "end": 4488, "name": "JUMPDEST", "source": 0 }, { "begin": 4399, "end": 4418, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 4448, "end": 4457, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 4458, "end": 4475, "name": "PUSH [tag]", "source": 0, "value": "64" }, { "begin": 4458, "end": 4473, "name": "PUSH [tag]", "source": 0, "value": "24" }, { "begin": 4458, "end": 4475, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 4458, "end": 4475, "name": "tag", "source": 0, "value": "64" }, { "begin": 4458, "end": 4475, "name": "JUMPDEST", "source": 0 }, { "begin": 4448, "end": 4476, "name": "DUP2", "source": 0 }, { "begin": 4448, "end": 4476, "name": "SLOAD", "source": 0 }, { "begin": 4448, "end": 4476, "name": "DUP2", "source": 0 }, { "begin": 4448, "end": 4476, "name": "LT", "source": 0 }, { "begin": 4448, "end": 4476, "name": "PUSH [tag]", "source": 0, "value": "65" }, { "begin": 4448, "end": 4476, "name": "JUMPI", "source": 0 }, { "begin": 4448, "end": 4476, "name": "INVALID", "source": 0 }, { "begin": 4448, "end": 4476, "name": "tag", "source": 0, "value": "65" }, { "begin": 4448, "end": 4476, "name": "JUMPDEST", "source": 0 }, { "begin": 4448, "end": 4476, "name": "SWAP1", "source": 0 }, { "begin": 4448, "end": 4476, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 4448, "end": 4476, "name": "MSTORE", "source": 0 }, { "begin": 4448, "end": 4476, "name": "PUSH", "source": 0, "value": "20" }, { "begin": 4448, "end": 4476, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 4448, "end": 4476, "name": "KECCAK256", "source": 0 }, { "begin": 4448, "end": 4476, "name": "SWAP1", "source": 0 }, { "begin": 4448, "end": 4476, "name": "PUSH", "source": 0, "value": "2" }, { "begin": 4448, "end": 4476, "name": "MUL", "source": 0 }, { "begin": 4448, "end": 4476, "name": "ADD", "source": 0 }, { "begin": 4448, "end": 4481, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 4448, "end": 4481, "name": "ADD", "source": 0 }, { "begin": 4448, "end": 4481, "name": "SLOAD", "source": 0 }, { "begin": 4434, "end": 4481, "name": "SWAP1", "source": 0 }, { "begin": 4434, "end": 4481, "name": "POP", "source": 0 }, { "begin": 4344, "end": 4488, "name": "SWAP1", "source": 0 }, { "begin": 4344, "end": 4488, "name": "JUMP", "source": 0, "value": "[out]" }], ".data": { "80126CE3251AB2B6E4ADE14FE5B2BC11F593510CBE9E3550C09BFF1989E33B95": "4f6e6c79206368616972706572736f6e2063616e206769766520726967687420746f20766f74652e" } } } }, "methodIdentifiers": { "chairperson()": "2e4176cf", "delegate(address)": "5c19a95c", "giveRightToVote(address)": "9e7b8d61", "proposals(uint256)": "013cf08b", "vote(uint256)": "0121b93f", "voters(address)": "a3ec138d", "winnerName()": "e2ba53f0", "winningProposal()": "609ff1bd" } }, "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"proposalNames\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"chairperson\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"giveRightToVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"voteCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposal\",\"type\":\"uint256\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"voters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"voted\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"winnerName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"winnerName_\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"winningProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"winningProposal_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements voting process along with vote delegation\",\"methods\":{\"constructor\":{\"details\":\"Create a new ballot to choose one of 'proposalNames'.\",\"params\":{\"proposalNames\":\"names of proposals\"}},\"delegate(address)\":{\"details\":\"Delegate your vote to the voter 'to'.\",\"params\":{\"to\":\"address to which vote is delegated\"}},\"giveRightToVote(address)\":{\"details\":\"Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.\",\"params\":{\"voter\":\"address of voter\"}},\"vote(uint256)\":{\"details\":\"Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.\",\"params\":{\"proposal\":\"index of proposal in the proposals array\"}},\"winnerName()\":{\"details\":\"Calls winningProposal() function to get the index of the winner contained in the proposals array and then\",\"returns\":{\"winnerName_\":\"the name of the winner\"}},\"winningProposal()\":{\"details\":\"Computes the winning proposal taking all previous votes into account.\",\"returns\":{\"winningProposal_\":\"index of winning proposal in the proposals array\"}}},\"title\":\"Ballot\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"browser/3_Ballot.sol\":\"Ballot\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/3_Ballot.sol\":{\"keccak256\":\"0xb5cf7721806a100913a616711fe86acd30e5ed34e185bce00d552cabec7aa89c\",\"urls\":[\"bzz-raw://f6713ca66de945047eb4295a26498689bfd63ed7cf8f59708483827358c4a0a5\",\"dweb:/ipfs/QmNZtigHzHGEabexfwzaKoKJy5LhPftMirfF6N6qQbFQGk\"]}},\"version\":1}", "userdoc": { "methods": {} } - } - - const result = getContractDocumentation(contract as any); - - expect(result).toBeDefined() - - }) - }); - - describe("getContractDoc", () => { - test("getContractDoc", () => { - const template = getContractDoc( - "Fallout", - buildFakeArtifactWithComments() - ); - - expect(template).toBeDefined(); - }); - - test("getContractDoc", () => { - const template = getContractDoc("Owner", { - ...buildFakeArtifactWithComments(), - abi: [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "oldOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnerSet", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "changeOwner", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "getOwner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - ] as any, - devdoc: { - details: "Set & change owner", - methods: { - "changeOwner(address)": { - details: "Change owner", - params: { - newOwner: "address of new owner", - }, - }, - constructor: { - details: "Set contract deployer as owner", - }, - "getOwner()": { - details: "Return owner address ", - returns: { - _0: "address of owner", - }, - }, - }, - title: "Owner", - } as any, - userdoc: { - methods: {}, - } as any, - }); - - expect(template).toBeDefined(); - }); - }); - - describe("getFunctionDocumentation", () => { - test("getFunctionDocumentation", () => { - const abiItem: FunctionDescription = { - constant: false, - inputs: [], - name: "Fal1out", - outputs: [], - payable: true, - stateMutability: "payable", - type: "function", - }; - - const result = getFunctionDocumentation(abiItem, {}); - - expect(result).toBeDefined(); - }); - }); - - describe("mergeParametersWithDevdoc", () => { - test("mergeParametersWithDevdoc", () => { - const abiParameters = [buildFakeABIParameter()]; - const devParams = {}; - const result = mergeParametersWithDevdoc(abiParameters, devParams); - - expect(result.length).toEqual(1); - }); - - test("mergeParametersWithDevdoc with documentation", () => { - const abiParameters = [buildFakeABIParameter()]; - const devParams = {}; - const result = mergeParametersWithDevdoc(abiParameters, devParams); - - expect(result.length).toEqual(1); - }); - }); - - test.skip("html generation", async () => { - await open( - "https://ipfs.io/ipfs/QmPYQyWyTrUZt3tjiPsEnkRQxedChYUjgEk9zLQ36SfpyW", - { app: ["google chrome", "--incognito"] } - ); - // start server - // generate html - // server it - }); -}); diff --git a/apps/remixdocgen/src/utils/utils.ts b/apps/remixdocgen/src/utils/utils.ts deleted file mode 100644 index c56077fba2..0000000000 --- a/apps/remixdocgen/src/utils/utils.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { - CompilationResult, - CompiledContract, - FunctionDescription, - ABIParameter, - ABIDescription, -} from "@remixproject/plugin-api/lib/compiler"; - -import { FileName, Documentation, ContractName } from "../types"; -import { template } from "./template"; -import { - ContractDocumentation, - MethodDoc, - FunctionDocumentation, - ParameterDocumentation, -} from "./types"; - -export const createDocumentation = ( - fileName: FileName, - compilationResult: CompilationResult -) => { - console.log("Filename", fileName); - const result = new Map(); - - const contracts = compilationResult.contracts[fileName]; - console.log("Contracts", contracts); - - Object.keys(contracts).forEach((name) => { - console.log("CompiledContract", JSON.stringify(contracts[name])); - result.set(name, getContractDoc(name, contracts[name])); - }); - - return result; -}; - -export const getContractDoc = (name: string, contract: CompiledContract) => { - const contractDoc: ContractDocumentation = getContractDocumentation(contract); - - const onlyFunctions = contract.abi.filter((item) => { - return item.type !== "event"; - }); - - const functionsDocumentation = onlyFunctions.map((def: ABIDescription) => { - if (def.type === "constructor") { - def.name = "constructor"; - // because "constructor" is a string and not a { notice } object for userdoc we need to do that - const methodDoc = { - ...(contract.devdoc.methods.constructor || {}), - notice: - Object.keys(contract.userdoc.methods.constructor).length > 0 - ? (contract.userdoc.methods.constructor as string) - : "", - }; - return getFunctionDocumentation(def, methodDoc); - } else { - if (def.type === "fallback") { - def.name = "fallback"; - } - const method = Object.keys(contractDoc.methods).find((key) => - key.includes(def.name as string) - ) as string; - const methodDoc = contractDoc.methods[method]; - return getFunctionDocumentation(def as FunctionDescription, methodDoc); - } - }); - - // console.log("contractDoc", contractDoc) - // console.log("functionsDocumentation", functionsDocumentation) - - try { - const finalResult = template(name, contractDoc, functionsDocumentation); - return finalResult - - } catch (error) { - console.log("ERROR", error) - return '' - } - -}; - -export const getContractDocumentation = (contract: CompiledContract) => { - const methods = { ...contract.userdoc.methods, ...contract.devdoc.methods } - const contractDoc = { ...contract.userdoc, ...contract.devdoc, ...methods }; - - return contractDoc; -}; - -export const getFunctionDocumentation = ( - def: FunctionDescription, - devdoc?: Partial -) => { - const doc = devdoc || {}; - const devparams = doc.params || {}; - const inputsWithDescription = mergeParametersWithDevdoc( - def.inputs || [], - devparams - ); - const outputsWithDescription = mergeParametersWithDevdoc( - def.outputs || [], - devparams - ); - const type = def.constant ? "view" : "read"; - - return { - name: def.name, - type, - devdoc, - inputs: inputsWithDescription, - outputs: outputsWithDescription, - } as FunctionDocumentation; -}; - -export const mergeParametersWithDevdoc = ( - params: ABIParameter[], - devparams: any -) => { - return params.map((input) => { - const description = devparams[input.name] || ""; - return { - name: input.name, - type: input.type, - description, - } as ParameterDocumentation; - }); -}; diff --git a/apps/remixdocgen/tslint.json b/apps/remixdocgen/tslint.json deleted file mode 100644 index 0d36c4819f..0000000000 --- a/apps/remixdocgen/tslint.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": [ - "tslint:recommended", - "tslint-react", - "tslint-config-prettier" - ], - "rulesDirectory": [ - "tslint-plugin-prettier" - ], - "rules": { - "prettier": true, - "interface-name": false, - "no-console": false, - "jsx-no-lambda": false - } - } \ No newline at end of file From 8d7d9221b5c3a525bf9a31357b2fc650406e5293 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 3 Mar 2023 16:43:59 +0100 Subject: [PATCH 46/72] add webpack config and tsconfig --- apps/remixdocgen/project.json | 26 ++++++++++++-------------- apps/remixdocgen/tsconfig.app.json | 23 +++++++++++++++++++++++ apps/remixdocgen/tsconfig.json | 16 ++++++++++++++++ apps/remixdocgen/webpack.config.js | 0 4 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 apps/remixdocgen/tsconfig.app.json create mode 100644 apps/remixdocgen/tsconfig.json create mode 100644 apps/remixdocgen/webpack.config.js diff --git a/apps/remixdocgen/project.json b/apps/remixdocgen/project.json index b9c2b1e9c7..7dd6ae0401 100644 --- a/apps/remixdocgen/project.json +++ b/apps/remixdocgen/project.json @@ -4,7 +4,6 @@ "sourceRoot": "apps/remixdocgen/src", "projectType": "application", "implicitDependencies": [ - "docgen" ], "targets": { "build": { @@ -14,18 +13,17 @@ "options": { "compiler": "babel", "outputPath": "dist/apps/remixdocgen", - "index": "apps/etherscan/src/index.html", + "index": "apps/remixdocgen/src/index.html", "baseHref": "/", - "main": "apps/etherscan/src/main.tsx", - "polyfills": "apps/etherscan/src/polyfills.ts", - "tsConfig": "apps/etherscan/tsconfig.app.json", + "main": "apps/remixdocgen/src/main.tsx", + "tsConfig": "apps/remixdocgen/tsconfig.app.json", "assets": [ - "apps/etherscan/src/favicon.ico", - "apps/etherscan/src/assets" + "apps/remixdocgen/src/favicon.ico", + "apps/remixdocgen/src/assets" ], - "styles": ["apps/etherscan/src/styles.css"], + "styles": ["apps/remixdocgen/src/styles.css"], "scripts": [], - "webpackConfig": "apps/etherscan/webpack.config.js" + "webpackConfig": "apps/remixdocgen/webpack.config.js" }, "configurations": { "development": { @@ -33,8 +31,8 @@ "production": { "fileReplacements": [ { - "replace": "apps/etherscan/src/environments/environment.ts", - "with": "apps/etherscan/src/environments/environment.prod.ts" + "replace": "apps/remixdocgen/src/environments/environment.ts", + "with": "apps/remixdocgen/src/environments/environment.prod.ts" } ] } @@ -44,16 +42,16 @@ "executor": "@nrwl/webpack:dev-server", "defaultConfiguration": "development", "options": { - "buildTarget": "etherscan:build", + "buildTarget": "remixdocgen:build", "hmr": true }, "configurations": { "development": { - "buildTarget": "etherscan:build:development", + "buildTarget": "remixdocgen:build:development", "port": 6003 }, "production": { - "buildTarget": "etherscan:build:production" + "buildTarget": "remixdocgen:build:production" } } } diff --git a/apps/remixdocgen/tsconfig.app.json b/apps/remixdocgen/tsconfig.app.json new file mode 100644 index 0000000000..af84f21cfc --- /dev/null +++ b/apps/remixdocgen/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "files": [ + "../../node_modules/@nrwl/react/typings/cssmodule.d.ts", + "../../node_modules/@nrwl/react/typings/image.d.ts" + ], + "exclude": [ + "jest.config.ts", + "**/*.spec.ts", + "**/*.test.ts", + "**/*.spec.tsx", + "**/*.test.tsx", + "**/*.spec.js", + "**/*.test.js", + "**/*.spec.jsx", + "**/*.test.jsx" + ], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/apps/remixdocgen/tsconfig.json b/apps/remixdocgen/tsconfig.json new file mode 100644 index 0000000000..5aab5e7911 --- /dev/null +++ b/apps/remixdocgen/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/apps/remixdocgen/webpack.config.js b/apps/remixdocgen/webpack.config.js new file mode 100644 index 0000000000..e69de29bb2 From 5c133959c1cc4c075b085e57d6a9ab874eb044c1 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Fri, 3 Mar 2023 17:55:01 +0100 Subject: [PATCH 47/72] add required artifacts to have app work. remove redundancies --- apps/remixdocgen/project.json | 7 +- apps/remixdocgen/src/app/App.tsx | 38 ++-- apps/remixdocgen/src/app/routes.tsx | 11 +- apps/remixdocgen/src/app/views/HomeView.tsx | 203 -------------------- apps/remixdocgen/src/app/views/index.ts | 3 +- apps/remixdocgen/webpack.config.js | 82 ++++++++ 6 files changed, 106 insertions(+), 238 deletions(-) delete mode 100644 apps/remixdocgen/src/app/views/HomeView.tsx diff --git a/apps/remixdocgen/project.json b/apps/remixdocgen/project.json index 7dd6ae0401..b214647ecc 100644 --- a/apps/remixdocgen/project.json +++ b/apps/remixdocgen/project.json @@ -1,5 +1,5 @@ { - "name": "etherscan", + "name": "remixdocgen", "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "apps/remixdocgen/src", "projectType": "application", @@ -18,10 +18,9 @@ "main": "apps/remixdocgen/src/main.tsx", "tsConfig": "apps/remixdocgen/tsconfig.app.json", "assets": [ - "apps/remixdocgen/src/favicon.ico", - "apps/remixdocgen/src/assets" + "apps/remixdocgen/src/favicon.ico" ], - "styles": ["apps/remixdocgen/src/styles.css"], + "styles": [], "scripts": [], "webpackConfig": "apps/remixdocgen/webpack.config.js" }, diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index 3bb94bdb99..063fb4e4c3 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -11,7 +11,7 @@ import { Status } from "@remixproject/plugin-utils"; import { AppContext } from "./AppContext"; import { Routes } from "./routes"; import { useLocalStorage } from "./hooks/useLocalStorage"; -import { createDocumentation } from "../utils/utils"; + import "./App.css"; import { ContractName, Documentation } from "../types"; @@ -59,13 +59,8 @@ const App = () => { console.log("New compilation received"); const existingMap = contractsRef.current; - const newContractsMapWithDocumentation = createDocumentation( - fileName, - data - ); const newMap = new Map([ ...existingMap, - ...newContractsMapWithDocumentation, ]); const status: Status = { @@ -74,7 +69,7 @@ const App = () => { title: "New documentation ready", }; clientInstanceRef.current.emit("statusChanged", status); - setContracts(newMap); + setContracts(new Map()); } ); @@ -93,19 +88,22 @@ const App = () => { }, []); return ( - - - - ); + // + // + // +
+

Testing

+
+ ) }; export default App; diff --git a/apps/remixdocgen/src/app/routes.tsx b/apps/remixdocgen/src/app/routes.tsx index 8fad895972..b16eae3a9e 100644 --- a/apps/remixdocgen/src/app/routes.tsx +++ b/apps/remixdocgen/src/app/routes.tsx @@ -1,12 +1,11 @@ import React from "react"; import { BrowserRouter as Router, - Switch, Route, RouteProps, } from "react-router-dom"; -import { ErrorView, HomeView } from "./views"; + interface Props extends RouteProps { component: any; // TODO: new (props: any) => React.Component @@ -15,17 +14,11 @@ interface Props extends RouteProps { const CustomRoute = ({ component: Component, ...rest }: Props) => { return ( - } /> + <> ); }; export const Routes = () => ( - - - - - - ); diff --git a/apps/remixdocgen/src/app/views/HomeView.tsx b/apps/remixdocgen/src/app/views/HomeView.tsx deleted file mode 100644 index 11feae8bf6..0000000000 --- a/apps/remixdocgen/src/app/views/HomeView.tsx +++ /dev/null @@ -1,203 +0,0 @@ -import React, { useState, useEffect, useRef } from "react"; -import { AppContext } from "../AppContext"; -import { ContractName, Documentation } from "../../types"; -import { publish } from "../../utils"; -import { htmlTemplate } from "../../utils/template"; - -export const HomeView: React.FC = () => { - const [activeItem, setActiveItem] = useState(""); - const [isPublishing, setIsPublishing] = useState(false); - const [htmlDocumentation, setHtmlDocumentation] = useState(""); - const [hasErrorOnPublishing, setHasErrorOnPublishing] = useState(false); - const [publishedURL, setPublishedURL] = useState(""); - const clearMessageFuncRef = useRef(undefined as any); - - useEffect(() => { - const maxNumberOfRetries = 1; - let retries = 0; - - const publishDocumentation = async () => { - try { - if (clearMessageFuncRef.current) { - clearTimeout(clearMessageFuncRef.current); - } - const hash = await publish(htmlDocumentation); - console.log("Hash", hash); - setIsPublishing(false); - - const url = `https://ipfs.io/ipfs/${hash}`; - - window.open(url); - setPublishedURL(url); - } catch (error) { - if (retries < maxNumberOfRetries) { - console.log("Retrying..."); - retries++; - publishDocumentation(); - } else { - setIsPublishing(false); - setHasErrorOnPublishing(true); - - clearMessageFuncRef.current = setTimeout(() => { - setHasErrorOnPublishing(false); - }, 5000); - } - } - }; - - if (isPublishing) { - setHasErrorOnPublishing(false); - publishDocumentation(); - } - }, [isPublishing, htmlDocumentation]); - - const displayDocumentation = ( - client: any, - contractName: ContractName, - documentation: Documentation - ) => { - console.log("Display Documentation", contractName, documentation); - - client.emit("documentation-generated", documentation); - }; - - return ( - - {({ clientInstance, contracts, setContracts, themeType }) => ( -
- {[...contracts.keys()].length === 0 && ( -

Compile a contract with Solidity Compiler

- )} - - {[...contracts.keys()].length > 0 && ( -
-
- {[...contracts.keys()].map((item) => { - const documentation = contracts.get(item) as string; - return ( - - ); - })} -
-
- -
-
- {activeItem !== "" && ( - { - console.log("Is publishing"); - setIsPublishing(true); - }} - /> - )} -
- {!isPublishing && publishedURL !== "" && ( - <> - - - )} - - {hasErrorOnPublishing && ( -
- -
- )} -
- )} -
- )} -
- ); -}; - -interface PublishButtonProps { - isPublishing: boolean; - onClick: any; - item: string; -} - -export const PublishButton: React.FC = ({ - isPublishing, - onClick, - item, -}) => { - return ( - - ); -}; - -// -// -// diff --git a/apps/remixdocgen/src/app/views/index.ts b/apps/remixdocgen/src/app/views/index.ts index 70958d50ae..8b13789179 100644 --- a/apps/remixdocgen/src/app/views/index.ts +++ b/apps/remixdocgen/src/app/views/index.ts @@ -1,2 +1 @@ -export { HomeView } from "./HomeView"; -export { ErrorView } from "./ErrorView"; + diff --git a/apps/remixdocgen/webpack.config.js b/apps/remixdocgen/webpack.config.js index e69de29bb2..45c7c5dd14 100644 --- a/apps/remixdocgen/webpack.config.js +++ b/apps/remixdocgen/webpack.config.js @@ -0,0 +1,82 @@ +const { composePlugins, withNx } = require('@nrwl/webpack') +const webpack = require('webpack') +const TerserPlugin = require("terser-webpack-plugin") +const CssMinimizerPlugin = require("css-minimizer-webpack-plugin") + +// Nx plugins for webpack. +module.exports = composePlugins(withNx(), (config) => { + // Update the webpack config as needed here. + // e.g. `config.plugins.push(new MyPlugin())` + + // add fallback for node modules + config.resolve.fallback = { + ...config.resolve.fallback, + "crypto": require.resolve("crypto-browserify"), + "stream": require.resolve("stream-browserify"), + "path": require.resolve("path-browserify"), + "http": require.resolve("stream-http"), + "https": require.resolve("https-browserify"), + "constants": require.resolve("constants-browserify"), + "os": false, //require.resolve("os-browserify/browser"), + "timers": false, // require.resolve("timers-browserify"), + "zlib": require.resolve("browserify-zlib"), + "fs": false, + "module": false, + "tls": false, + "net": false, + "readline": false, + "child_process": false, + "buffer": require.resolve("buffer/"), + "vm": require.resolve('vm-browserify'), + } + + + // add externals + config.externals = { + ...config.externals, + solc: 'solc', + } + + // add public path + config.output.publicPath = '/' + + + + // add copy & provide plugin + config.plugins.push( + new webpack.ProvidePlugin({ + Buffer: ['buffer', 'Buffer'], + url: ['url', 'URL'], + process: 'process/browser', + }) + ) + + // souce-map loader + config.module.rules.push({ + test: /\.js$/, + use: ["source-map-loader"], + enforce: "pre" + }) + + config.ignoreWarnings = [/Failed to parse source map/] // ignore source-map-loader warnings + + + // set minimizer + config.optimization.minimizer = [ + new TerserPlugin({ + parallel: true, + terserOptions: { + ecma: 2015, + compress: false, + mangle: false, + format: { + comments: false, + }, + }, + extractComments: false, + }), + new CssMinimizerPlugin(), + ]; + + return config; +}); From b0b009976dacd5c48c61348b10ca72704df1cddb Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Sat, 4 Mar 2023 02:53:20 +0100 Subject: [PATCH 48/72] more plugin setup --- apps/remix-ide/src/app.js | 9 +- apps/remix-ide/src/app/plugins/docgen.ts | 9 +- apps/remixdocgen/src/app/App.tsx | 6 +- apps/remixdocgen/src/app/docgen-client.ts | 28 ++ apps/remixdocgen/webpack.config.js | 3 +- libs/remix-ui/docgenclient-ui/src/index.ts | 1 + .../src/lib/docgenclient-ui.tsx | 10 + .../src/lib/logic/pdfSaveLogic.ts | 294 ------------------ tsconfig.paths.json | 5 +- 9 files changed, 61 insertions(+), 304 deletions(-) create mode 100644 apps/remixdocgen/src/app/docgen-client.ts create mode 100644 libs/remix-ui/docgenclient-ui/src/index.ts create mode 100644 libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx delete mode 100644 libs/remix-ui/solidity-compiler/src/lib/logic/pdfSaveLogic.ts diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index 8155a709ab..5038cac23f 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -51,6 +51,7 @@ const remixLib = require('@remix-project/remix-lib') import { QueryParams } from '@remix-project/remix-lib' import { SearchPlugin } from './app/tabs/search' +import { DocGen } from './app/plugins/docgen' const Storage = remixLib.Storage const RemixDProvider = require('./app/files/remixDProvider') @@ -180,6 +181,9 @@ class AppComponent { //----- search const search = new SearchPlugin() + //---- docgen plugin + const docgen = new DocGen() + //---------------- Solidity UML Generator ------------------------- const solidityumlgen = new SolidityUmlGen(appManager) @@ -298,7 +302,8 @@ class AppComponent { this.walkthroughService, search, solidityumlgen, - contractFlattener + contractFlattener, + docgen ]) // LAYOUT & SYSTEM VIEWS @@ -413,7 +418,7 @@ class AppComponent { await this.appManager.activatePlugin(['settings', 'config']) await this.appManager.activatePlugin(['hiddenPanel', 'pluginManager', 'codeParser', 'codeFormatter', 'fileDecorator', 'terminal', 'blockchain', 'fetchAndCompile', 'contentImport', 'gistHandler']) await this.appManager.activatePlugin(['settings']) - await this.appManager.activatePlugin(['walkthrough', 'storage', 'search', 'compileAndRun', 'recorder']) + await this.appManager.activatePlugin(['walkthrough', 'storage', 'search', 'compileAndRun', 'recorder', 'docgen']) this.appManager.on( 'filePanel', diff --git a/apps/remix-ide/src/app/plugins/docgen.ts b/apps/remix-ide/src/app/plugins/docgen.ts index 1e8f6f504a..3c366cfcbc 100644 --- a/apps/remix-ide/src/app/plugins/docgen.ts +++ b/apps/remix-ide/src/app/plugins/docgen.ts @@ -30,10 +30,11 @@ export class DocGen extends Plugin { } async docgen(builds: Build[], userConfig?: Config): Promise { - const config = { ...defaults, ...userConfig }; - const templates = await loadTemplates(config.theme, config.root, config.templates); - const site = buildSite(builds, config, templates.properties ?? {}); - const renderedSite = render(site, templates, config.collapseNewlines); + const config = { ...defaults, ...userConfig } + const templates = await loadTemplates(config.theme, config.root, config.templates) + const site = buildSite(builds, config, templates.properties ?? {}) + const renderedSite = render(site, templates, config.collapseNewlines) + console.log({ renderedSite }) for (const { id, contents } of renderedSite) { await this.call('fileManager', 'setFile', id, contents) } diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index 063fb4e4c3..df0a9d3729 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -10,7 +10,9 @@ import { Status } from "@remixproject/plugin-utils"; import { AppContext } from "./AppContext"; import { Routes } from "./routes"; -import { useLocalStorage } from "./hooks/useLocalStorage"; +import { useLocalStorage } from "./hooks/useLocalStorage" + +import { RemixUiDocgenClient } from '@remix-ui/docgenclient-ui' // eslint-disable-line import "./App.css"; @@ -101,7 +103,7 @@ const App = () => { // //
-

Testing

+
) }; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts new file mode 100644 index 0000000000..569e271a71 --- /dev/null +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -0,0 +1,28 @@ +import { PluginClient } from '@remixproject/plugin' +import { IRemixApi } from '@remixproject/plugin-api' +import { Api, PluginApi } from '@remixproject/plugin-utils' +import { createClient } from '@remixproject/plugin-webview' + +export class DocGenClient extends PluginClient { + private client + + constructor() { + super() + this.client = createClient(this) + this.methods = ['generateDocs', 'publishDocs'] + + this.client.onload(async () => { + await this.client.activate() + }) + } + + async generateDocs() { + console.log('docgen client generateDocs') + // await this.client.call('docgen', 'docgen', []) + } + + async publishDocs() { + console.log('docgen client publishDocs') + // await this.client.call('docgen', 'docgen', []) + } +} \ No newline at end of file diff --git a/apps/remixdocgen/webpack.config.js b/apps/remixdocgen/webpack.config.js index 45c7c5dd14..ac6e2f27cc 100644 --- a/apps/remixdocgen/webpack.config.js +++ b/apps/remixdocgen/webpack.config.js @@ -1,10 +1,11 @@ const { composePlugins, withNx } = require('@nrwl/webpack') +const { withReact } = require('@nrwl/react') const webpack = require('webpack') const TerserPlugin = require("terser-webpack-plugin") const CssMinimizerPlugin = require("css-minimizer-webpack-plugin") // Nx plugins for webpack. -module.exports = composePlugins(withNx(), (config) => { +module.exports = composePlugins(withNx(), withReact(), (config) => { // Update the webpack config as needed here. // e.g. `config.plugins.push(new MyPlugin())` diff --git a/libs/remix-ui/docgenclient-ui/src/index.ts b/libs/remix-ui/docgenclient-ui/src/index.ts new file mode 100644 index 0000000000..96a7f59d7c --- /dev/null +++ b/libs/remix-ui/docgenclient-ui/src/index.ts @@ -0,0 +1 @@ +export * from './lib/docgenclient-ui' \ No newline at end of file diff --git a/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx b/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx new file mode 100644 index 0000000000..7ea634d0eb --- /dev/null +++ b/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx @@ -0,0 +1,10 @@ +import React from 'react' + + +export function RemixUiDocgenClient() { + return ( +
+

DocgenClientUI

+
+ ) +} \ No newline at end of file diff --git a/libs/remix-ui/solidity-compiler/src/lib/logic/pdfSaveLogic.ts b/libs/remix-ui/solidity-compiler/src/lib/logic/pdfSaveLogic.ts deleted file mode 100644 index c93c990990..0000000000 --- a/libs/remix-ui/solidity-compiler/src/lib/logic/pdfSaveLogic.ts +++ /dev/null @@ -1,294 +0,0 @@ -/* eslint-disable prefer-const */ -import domToImage from 'dom-to-image'; -import { jsPDF } from 'jspdf'; - -const _cloneNode = (node, javascriptEnabled) => { - let child = node.firstChild - const clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false) - while (child) { - if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') { - clone.appendChild(_cloneNode(child, javascriptEnabled)) - } - child = child.nextSibling - } - if (node.nodeType === 1) { - if (node.nodeName === 'CANVAS') { - clone.width = node.width - clone.height = node.height - clone.getContext('2d').drawImage(node, 0, 0) - } else if (node.nodeName === 'TEXTAREA' || node.nodeName === 'SELECT') { - clone.value = node.value - } - clone.addEventListener('load', (() => { - clone.scrollTop = node.scrollTop - clone.scrollLeft = node.scrollLeft - }), true) - } - return clone -} - -const _createElement = (tagName, {className, innerHTML, style}) => { - let i - let scripts - const el = document.createElement(tagName) - if (className) { - el.className = className - } - if (innerHTML) { - el.innerHTML = innerHTML - scripts = el.getElementsByTagName('script') - i = scripts.length - while (i-- > 0) { - scripts[i].parentNode.removeChild(scripts[i]) - } - } - for (const key in style) { - el.style[key] = style[key]; - } - return el; -}; - -const _isCanvasBlank = canvas => { - const blank = document.createElement('canvas'); - blank.width = canvas.width; - blank.height = canvas.height; - const ctx = blank.getContext('2d'); - ctx.fillStyle = '#FFFFFF'; - ctx.fillRect(0, 0, blank.width, blank.height); - return canvas.toDataURL() === blank.toDataURL(); -}; - -const downloadPdf = (dom, options, cb) => { - const a4Height = 841.89; - const a4Width = 595.28; - let overrideWidth; - let container; - let containerCSS; - let containerWidth; - let elements; - let excludeClassNames; - let excludeTagNames; - let filename; - let filterFn; - let innerRatio; - let overlay; - let overlayCSS; - let pageHeightPx; - let proxyUrl; - let compression = 'NONE'; - let scale; - let opts; - let offsetHeight; - let offsetWidth; - let scaleObj; - let style; - const transformOrigin = 'top left'; - const pdfOptions: any = { - orientation: 'l', - unit: 'pt', - format: 'a4' - }; - - ({filename, excludeClassNames = [], excludeTagNames = ['button', 'input', 'select'], overrideWidth, proxyUrl, compression, scale} = options); - - overlayCSS = { - position: 'fixed', - zIndex: 1000, - opacity: 0, - left: 0, - right: 0, - bottom: 0, - top: 0, - backgroundColor: 'rgba(0,0,0,0.8)' - }; - if (overrideWidth) { - overlayCSS.width = `${overrideWidth}px`; - } - containerCSS = { - position: 'absolute', - left: 0, - right: 0, - top: 0, - height: 'auto', - margin: 'auto', - overflow: 'auto', - backgroundColor: 'white' - }; - overlay = _createElement('div', { - style: overlayCSS, - className: '', - innerHTML: '' - }); - container = _createElement('div', { - style: containerCSS, - className: '', - innerHTML: '' - }); - //@ts-ignore - container.appendChild(_cloneNode(dom)); - overlay.appendChild(container); - document.body.appendChild(overlay); - innerRatio = a4Height / a4Width; - containerWidth = overrideWidth || container.getBoundingClientRect().width; - pageHeightPx = Math.floor(containerWidth * innerRatio); - elements = container.querySelectorAll('*'); - - for (let i = 0, len = excludeClassNames.length; i < len; i++) { - const clName = excludeClassNames[i]; - container.querySelectorAll(`.${clName}`).forEach(function(a) { - return a.remove(); - }); - } - - for (let j = 0, len1 = excludeTagNames.length; j < len1; j++) { - const tName = excludeTagNames[j]; - let els = container.getElementsByTagName(tName); - - for (let k = els.length - 1; k >= 0; k--) { - if (!els[k]) { - continue; - } - els[k].parentNode.removeChild(els[k]); - } - } - - Array.prototype.forEach.call(elements, el => { - let clientRect; - let endPage; - let nPages; - let pad; - let rules; - let startPage; - rules = { - before: false, - after: false, - avoid: true - }; - clientRect = el.getBoundingClientRect(); - if (rules.avoid && !rules.before) { - startPage = Math.floor(clientRect.top / pageHeightPx); - endPage = Math.floor(clientRect.bottom / pageHeightPx); - nPages = Math.abs(clientRect.bottom - clientRect.top) / pageHeightPx; - // Turn on rules.before if the el is broken and is at most one page long. - if (endPage !== startPage && nPages <= 1) { - rules.before = true; - } - // Before: Create a padding div to push the element to the next page. - if (rules.before) { - pad = _createElement('div', { - className: '', - innerHTML: '', - style: { - display: 'block', - height: `${pageHeightPx - clientRect.top % pageHeightPx}px` - } - }); - return el.parentNode.insertBefore(pad, el); - } - } - }); - - // Remove unnecessary elements from result pdf - filterFn = ({classList, tagName}) => { - let cName; - let j; - let len; - let ref; - if (classList) { - for (j = 0, len = excludeClassNames.length; j < len; j++) { - cName = excludeClassNames[j]; - if (Array.prototype.indexOf.call(classList, cName) >= 0) { - return false; - } - } - } - ref = tagName != null ? tagName.toLowerCase() : undefined; - return excludeTagNames.indexOf(ref) < 0; - }; - - opts = { - filter: filterFn, - proxy: proxyUrl - }; - - if (scale) { - offsetWidth = container.offsetWidth; - offsetHeight = container.offsetHeight; - style = { - transform: 'scale(' + scale + ')', - transformOrigin: transformOrigin, - width: offsetWidth + 'px', - height: offsetHeight + 'px' - }; - scaleObj = { - width: offsetWidth * scale, - height: offsetHeight * scale, - quality: 1, - style: style - }; - opts = Object.assign(opts, scaleObj); - } - - return domToImage.toCanvas(container, opts).then(canvas => { - let h; - let imgData; - let nPages; - let page; - let pageCanvas; - let pageCtx; - let pageHeight; - let pdf; - let pxFullHeight; - let w; - // Remove overlay - document.body.removeChild(overlay); - // Initialize the PDF. - pdf = new jsPDF(pdfOptions); - // Calculate the number of pages. - pxFullHeight = canvas.height; - nPages = Math.ceil(pxFullHeight / pageHeightPx); - // Define pageHeight separately so it can be trimmed on the final page. - pageHeight = a4Height; - pageCanvas = document.createElement('canvas'); - pageCtx = pageCanvas.getContext('2d'); - pageCanvas.width = canvas.width; - pageCanvas.height = pageHeightPx; - page = 0; - while (page < nPages) { - if (page === nPages - 1 && pxFullHeight % pageHeightPx !== 0) { - pageCanvas.height = pxFullHeight % pageHeightPx; - pageHeight = pageCanvas.height * a4Width / pageCanvas.width; - } - w = pageCanvas.width; - h = pageCanvas.height; - pageCtx.fillStyle = 'white'; - pageCtx.fillRect(0, 0, w, h); - pageCtx.drawImage(canvas, 0, page * pageHeightPx, w, h, 0, 0, w, h); - // Don't create blank pages - if (_isCanvasBlank(pageCanvas)) { - ++page; - continue; - } - // Add the page to the PDF. - if (page) { - pdf.addPage(); - } - imgData = pageCanvas.toDataURL('image/PNG'); - pdf.addImage(imgData, 'PNG', 0, 0, a4Width, pageHeight, undefined, compression); - ++page; - } - if (typeof cb === "function") { - cb(pdf); - } - return pdf.save(filename); - }).catch(error => { - // Remove overlay - document.body.removeChild(overlay); - if (typeof cb === "function") { - cb(null); - } - return console.error(error); - }); -}; - -module.exports = downloadPdf; \ No newline at end of file diff --git a/tsconfig.paths.json b/tsconfig.paths.json index e45b011400..20989bfbd2 100644 --- a/tsconfig.paths.json +++ b/tsconfig.paths.json @@ -148,9 +148,12 @@ "@remix-ui/solidity-uml-gen": [ "libs/remix-ui/solidity-uml-gen/src/index.ts" ], + "@remix-ui/docgenclient-ui": [ + "libs/remix-ui/docgenclient-ui/src/index.ts" + ], "@remix-project/ghaction-helper": [ "libs/ghaction-helper/src/index.ts" - ] + ], } } } \ No newline at end of file From 7caddf2456d79e8a1af5d9f3fde26a98b9040176 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Sat, 4 Mar 2023 23:22:25 +0100 Subject: [PATCH 49/72] test text --- libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx b/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx index 7ea634d0eb..4e0bb43cdb 100644 --- a/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx +++ b/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx @@ -5,6 +5,7 @@ export function RemixUiDocgenClient() { return (

DocgenClientUI

+

This is a plugin that allows you to generate documentation for your smart contracts.

) } \ No newline at end of file From 2254a6c18ede767543a0d3fcb0ef528cf27ca2eb Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 6 Mar 2023 13:57:51 +0100 Subject: [PATCH 50/72] fix tsconfig path --- apps/remixdocgen/src/app/App.tsx | 2 +- apps/remixdocgen/src/app/docgen-client.ts | 2 -- libs/remix-ui/docgenclient-ui/src/index.ts | 2 +- .../src/lib/{docgenclient-ui.tsx => remix-ui-docgenclient.tsx} | 0 4 files changed, 2 insertions(+), 4 deletions(-) rename libs/remix-ui/docgenclient-ui/src/lib/{docgenclient-ui.tsx => remix-ui-docgenclient.tsx} (100%) diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index df0a9d3729..e8a970080e 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -12,7 +12,7 @@ import { AppContext } from "./AppContext"; import { Routes } from "./routes"; import { useLocalStorage } from "./hooks/useLocalStorage" -import { RemixUiDocgenClient } from '@remix-ui/docgenclient-ui' // eslint-disable-line +import { RemixUiDocgenClient } from '@remix-ui/docgenclient-ui' import "./App.css"; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 569e271a71..39647e6889 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -1,6 +1,4 @@ import { PluginClient } from '@remixproject/plugin' -import { IRemixApi } from '@remixproject/plugin-api' -import { Api, PluginApi } from '@remixproject/plugin-utils' import { createClient } from '@remixproject/plugin-webview' export class DocGenClient extends PluginClient { diff --git a/libs/remix-ui/docgenclient-ui/src/index.ts b/libs/remix-ui/docgenclient-ui/src/index.ts index 96a7f59d7c..9a63ecad9f 100644 --- a/libs/remix-ui/docgenclient-ui/src/index.ts +++ b/libs/remix-ui/docgenclient-ui/src/index.ts @@ -1 +1 @@ -export * from './lib/docgenclient-ui' \ No newline at end of file +export * from './lib/remix-ui-docgenclient' \ No newline at end of file diff --git a/libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx b/libs/remix-ui/docgenclient-ui/src/lib/remix-ui-docgenclient.tsx similarity index 100% rename from libs/remix-ui/docgenclient-ui/src/lib/docgenclient-ui.tsx rename to libs/remix-ui/docgenclient-ui/src/lib/remix-ui-docgenclient.tsx From e2d127a756e40e728913430755e65fd759aea261 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 6 Mar 2023 15:51:07 +0100 Subject: [PATCH 51/72] move docgen plugin to new remixdocgen plugin --- apps/{remix-ide => remixdocgen}/src/app/plugins/docgen.ts | 0 .../src/app/plugins/docgen/common/helpers.ts | 0 .../src/app/plugins/docgen/common/properties.ts | 0 apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/config.ts | 0 .../{remix-ide => remixdocgen}/src/app/plugins/docgen/doc-item.ts | 0 apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/render.ts | 0 apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/site.ts | 0 .../src/app/plugins/docgen/templates.ts | 0 .../src/app/plugins/docgen/themes/markdown/common.hbs | 0 .../src/app/plugins/docgen/themes/markdown/contract.hbs | 0 .../src/app/plugins/docgen/themes/markdown/enum.hbs | 0 .../src/app/plugins/docgen/themes/markdown/error.hbs | 0 .../src/app/plugins/docgen/themes/markdown/event.hbs | 0 .../src/app/plugins/docgen/themes/markdown/function.hbs | 0 .../src/app/plugins/docgen/themes/markdown/helpers.ts | 0 .../src/app/plugins/docgen/themes/markdown/modifier.hbs | 0 .../src/app/plugins/docgen/themes/markdown/page.hbs | 0 .../src/app/plugins/docgen/themes/markdown/struct.hbs | 0 .../plugins/docgen/themes/markdown/user-defined-value-type.hbs | 0 .../src/app/plugins/docgen/themes/markdown/variable.hbs | 0 .../src/app/plugins/docgen/utils/ItemError.ts | 0 .../src/app/plugins/docgen/utils/arrays-equal.ts | 0 .../src/app/plugins/docgen/utils/assert-equal-types.ts | 0 .../src/app/plugins/docgen/utils/clone.ts | 0 .../src/app/plugins/docgen/utils/ensure-array.ts | 0 .../src/app/plugins/docgen/utils/execall.ts | 0 .../src/app/plugins/docgen/utils/is-child.ts | 0 .../src/app/plugins/docgen/utils/item-type.ts | 0 .../src/app/plugins/docgen/utils/map-keys.ts | 0 .../src/app/plugins/docgen/utils/map-values.ts | 0 .../src/app/plugins/docgen/utils/memoized-getter.ts | 0 .../src/app/plugins/docgen/utils/natspec.ts | 0 .../src/app/plugins/docgen/utils/read-item-docs.ts | 0 .../src/app/plugins/docgen/utils/scope.ts | 0 34 files changed, 0 insertions(+), 0 deletions(-) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/common/helpers.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/common/properties.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/config.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/doc-item.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/render.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/site.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/templates.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/common.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/contract.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/enum.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/error.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/event.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/function.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/helpers.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/modifier.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/page.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/struct.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/themes/markdown/variable.hbs (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/ItemError.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/arrays-equal.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/assert-equal-types.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/clone.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/ensure-array.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/execall.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/is-child.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/item-type.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/map-keys.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/map-values.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/memoized-getter.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/natspec.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/read-item-docs.ts (100%) rename apps/{remix-ide => remixdocgen}/src/app/plugins/docgen/utils/scope.ts (100%) diff --git a/apps/remix-ide/src/app/plugins/docgen.ts b/apps/remixdocgen/src/app/plugins/docgen.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen.ts rename to apps/remixdocgen/src/app/plugins/docgen.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/common/helpers.ts b/apps/remixdocgen/src/app/plugins/docgen/common/helpers.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/common/helpers.ts rename to apps/remixdocgen/src/app/plugins/docgen/common/helpers.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/common/properties.ts b/apps/remixdocgen/src/app/plugins/docgen/common/properties.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/common/properties.ts rename to apps/remixdocgen/src/app/plugins/docgen/common/properties.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/config.ts b/apps/remixdocgen/src/app/plugins/docgen/config.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/config.ts rename to apps/remixdocgen/src/app/plugins/docgen/config.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/doc-item.ts b/apps/remixdocgen/src/app/plugins/docgen/doc-item.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/doc-item.ts rename to apps/remixdocgen/src/app/plugins/docgen/doc-item.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/render.ts b/apps/remixdocgen/src/app/plugins/docgen/render.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/render.ts rename to apps/remixdocgen/src/app/plugins/docgen/render.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/site.ts b/apps/remixdocgen/src/app/plugins/docgen/site.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/site.ts rename to apps/remixdocgen/src/app/plugins/docgen/site.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/templates.ts b/apps/remixdocgen/src/app/plugins/docgen/templates.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/templates.ts rename to apps/remixdocgen/src/app/plugins/docgen/templates.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/common.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/common.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/common.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/common.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/contract.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/contract.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/contract.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/contract.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/enum.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/enum.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/enum.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/enum.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/error.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/error.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/error.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/error.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/event.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/event.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/event.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/event.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/function.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/function.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/function.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/function.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/helpers.ts b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/helpers.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/helpers.ts rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/helpers.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/modifier.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/modifier.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/modifier.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/modifier.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/page.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/page.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/page.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/page.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/struct.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/struct.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/struct.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/struct.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/themes/markdown/variable.hbs b/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/variable.hbs similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/themes/markdown/variable.hbs rename to apps/remixdocgen/src/app/plugins/docgen/themes/markdown/variable.hbs diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/ItemError.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/ItemError.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/ItemError.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/ItemError.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/arrays-equal.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/arrays-equal.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/arrays-equal.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/arrays-equal.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/assert-equal-types.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/assert-equal-types.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/assert-equal-types.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/assert-equal-types.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/clone.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/clone.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/clone.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/clone.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/ensure-array.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/ensure-array.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/ensure-array.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/ensure-array.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/execall.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/execall.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/execall.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/execall.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/is-child.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/is-child.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/is-child.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/is-child.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/item-type.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/item-type.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/item-type.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/item-type.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/map-keys.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/map-keys.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/map-keys.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/map-keys.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/map-values.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/map-values.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/map-values.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/map-values.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/memoized-getter.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/memoized-getter.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/memoized-getter.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/memoized-getter.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/natspec.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/natspec.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/natspec.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/natspec.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/read-item-docs.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/read-item-docs.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/read-item-docs.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/read-item-docs.ts diff --git a/apps/remix-ide/src/app/plugins/docgen/utils/scope.ts b/apps/remixdocgen/src/app/plugins/docgen/utils/scope.ts similarity index 100% rename from apps/remix-ide/src/app/plugins/docgen/utils/scope.ts rename to apps/remixdocgen/src/app/plugins/docgen/utils/scope.ts From d0df261cc47e9d272a642bbbd1028c311f72463a Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 6 Mar 2023 16:23:27 +0100 Subject: [PATCH 52/72] update imports --- apps/remix-ide/src/app.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index 5038cac23f..a2a89a6d9d 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -51,7 +51,6 @@ const remixLib = require('@remix-project/remix-lib') import { QueryParams } from '@remix-project/remix-lib' import { SearchPlugin } from './app/tabs/search' -import { DocGen } from './app/plugins/docgen' const Storage = remixLib.Storage const RemixDProvider = require('./app/files/remixDProvider') @@ -181,9 +180,6 @@ class AppComponent { //----- search const search = new SearchPlugin() - //---- docgen plugin - const docgen = new DocGen() - //---------------- Solidity UML Generator ------------------------- const solidityumlgen = new SolidityUmlGen(appManager) @@ -302,8 +298,7 @@ class AppComponent { this.walkthroughService, search, solidityumlgen, - contractFlattener, - docgen + contractFlattener ]) // LAYOUT & SYSTEM VIEWS From f6d0e05fcbd908fef898a5a1b439ad6b5bae7b03 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 7 Mar 2023 15:09:25 +0100 Subject: [PATCH 53/72] redo nod_modules --- apps/remixdocgen/webpack.config.js | 6 +- yarn.lock | 352 ++++++++++------------------- 2 files changed, 121 insertions(+), 237 deletions(-) diff --git a/apps/remixdocgen/webpack.config.js b/apps/remixdocgen/webpack.config.js index ac6e2f27cc..3cd446f615 100644 --- a/apps/remixdocgen/webpack.config.js +++ b/apps/remixdocgen/webpack.config.js @@ -30,7 +30,6 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { "buffer": require.resolve("buffer/"), "vm": require.resolve('vm-browserify'), } - // add externals config.externals = { @@ -49,7 +48,10 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { Buffer: ['buffer', 'Buffer'], url: ['url', 'URL'], process: 'process/browser', - }) + }), + new webpack.DefinePlugin({ + + }), ) // souce-map loader diff --git a/yarn.lock b/yarn.lock index 8200f6f424..28bd4460a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -174,7 +174,7 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.0.0-beta.44", "@babel/generator@^7.4.0": +"@babel/generator@^7.0.0-beta.44": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g== @@ -183,7 +183,7 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.15.8", "@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@^7.7.2": +"@babel/generator@^7.15.8", "@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2": version "7.21.1" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== @@ -819,7 +819,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.1.tgz#a8f81ee2fe872af23faea4b17a08fcc869de7bcc" integrity sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg== -"@babel/parser@^7.15.8", "@babel/parser@^7.21.2": +"@babel/parser@^7.15.8", "@babel/parser@^7.21.2", "@babel/parser@^7.4.3": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== @@ -844,11 +844,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.6.tgz#b923430cb94f58a7eae8facbffa9efd19130e7f8" integrity sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA== -"@babel/parser@^7.4.3": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" - integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -2039,7 +2034,7 @@ "@babel/types" "7.0.0-beta.53" lodash "^4.17.5" -"@babel/template@^7.15.4", "@babel/template@^7.20.7", "@babel/template@^7.3.3": +"@babel/template@^7.15.4", "@babel/template@^7.20.7", "@babel/template@^7.3.3", "@babel/template@^7.4.0": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== @@ -2048,7 +2043,7 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/template@^7.16.0", "@babel/template@^7.4.0": +"@babel/template@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== @@ -2082,7 +2077,7 @@ invariant "^2.2.0" lodash "^4.17.5" -"@babel/traverse@^7.15.4", "@babel/traverse@^7.21.2": +"@babel/traverse@^7.15.4", "@babel/traverse@^7.21.2", "@babel/traverse@^7.4.3": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== @@ -2098,7 +2093,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.16.0", "@babel/traverse@^7.4.3": +"@babel/traverse@^7.16.0": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== @@ -2195,7 +2190,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": +"@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.4.4": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== @@ -2239,7 +2234,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.21.2": +"@babel/types@^7.21.2", "@babel/types@^7.4.0": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== @@ -3701,48 +3696,6 @@ slash "^3.0.0" write-file-atomic "^4.0.1" -"@jest/transform@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.4.3.tgz#f7d17eac9cb5bb2e1222ea199c7c7e0835e0c037" - integrity sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.4.3" - "@jridgewell/trace-mapping" "^0.3.15" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.4.3" - jest-regex-util "^29.4.3" - jest-util "^29.4.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^25.1.0", "@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" - integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - "@jest/types@^28.1.1", "@jest/types@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" @@ -4559,8 +4512,8 @@ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: - "@nodelib/fs.stat" "2.0.4" - run-parallel "^1.1.9" + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" "@multiformats/base-x@^4.0.1": version "4.0.1" @@ -6104,13 +6057,6 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - "@types/istanbul-reports@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" @@ -7524,11 +7470,6 @@ atob-lite@^2.0.0: resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" integrity sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -9046,11 +8987,6 @@ builtin-modules@^3.3.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -9194,9 +9130,9 @@ call-limit@~1.1.0: integrity sha512-2waS4t+GBOSXb5hZyPRjo1m2ndtQUwMj1rIYa3XnLnFlfd5uNnxo3nyPQF+i7yDpgz95ed9Ga6hpgVXi+0oMeA== call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== caller-callsite@^2.0.0: version "2.0.0" @@ -10603,7 +10539,7 @@ cross-spawn@^5.0.1, cross-spawn@~5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -11631,12 +11567,7 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexer@^0.1.2: +duplexer@^0.1.1, duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== @@ -11932,12 +11863,7 @@ es-get-iterator@^1.1.1: is-map "^2.0.2" is-set "^2.0.2" is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" + isarray "^2.0.5" es-module-lexer@^0.9.0: version "0.9.3" @@ -12037,7 +11963,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -12962,12 +12888,12 @@ fast-glob@^2.2.6: resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9: version "3.2.12" @@ -13247,6 +13173,14 @@ find-up@5.0.0, find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -14049,7 +13983,7 @@ glob-stream@^6.1.0: glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== glob-to-regexp@^0.4.1: version "0.4.1" @@ -14551,10 +14485,12 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== -has-bigints@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" has-bigints@^1.0.1: version "1.0.1" @@ -15616,7 +15552,14 @@ is-circular@^1.0.2: resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== -is-core-module@^2.2.0, is-core-module@^2.5.0: +is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-core-module@^2.5.0: version "2.8.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== @@ -15630,13 +15573,6 @@ is-core-module@^2.8.1, is-core-module@^2.9.0: dependencies: has "^1.0.3" -is-core-module@^2.0.0, is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -16209,10 +16145,13 @@ istanbul-lib-instrument@^3.1.0: resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" @@ -16723,29 +16662,6 @@ jest-watcher@^28.1.3: jest-util "^28.1.3" string-length "^4.0.1" -jest-watcher@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.4.3.tgz#e503baa774f0c2f8f3c8db98a22ebf885f19c384" - integrity sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA== - dependencies: - "@jest/test-result" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.4.3" - string-length "^4.0.1" - -jest-worker@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - jest-worker@^27.0.2, jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -18274,7 +18190,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.1.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -18451,14 +18367,6 @@ minizlib@^1.3.3: dependencies: minipass "^2.9.0" -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -20234,6 +20142,11 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -20617,6 +20530,13 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -20688,6 +20608,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -20749,6 +20676,11 @@ pify@^2.0.0, pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -21227,34 +21159,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -postcss@^8.1.0: - version "8.2.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" - integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== - dependencies: - colorette "^1.2.1" - nanoid "^3.1.20" - source-map "^0.6.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -postcss@^8.1.0: - version "8.2.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" - integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== - dependencies: - colorette "^1.2.1" - nanoid "^3.1.20" - source-map "^0.6.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -22079,14 +21983,13 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" + find-up "^3.0.0" + read-pkg "^3.0.0" read-pkg-up@^7.0.1: version "7.0.1" @@ -22106,15 +22009,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" read-pkg@^5.2.0: version "5.2.0" @@ -22687,7 +22589,6 @@ resolve@1.17.0: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: - is-core-module "^2.2.0" path-parse "^1.0.6" resolve@^1.1.4, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.22.0, resolve@^1.5.0, resolve@^1.9.0: @@ -23781,16 +23682,6 @@ spawn-wrap@^1.4.2: signal-exit "^3.0.2" which "^1.3.0" -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -24946,20 +24837,13 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -25123,7 +25007,7 @@ tslint@~6.0.0: mkdirp "^0.5.1" resolve "^1.3.2" semver "^5.3.0" - tslib "^1.13.0" + tslib "^1.10.0" tsutils "^2.29.0" tsort@0.0.1: @@ -25214,16 +25098,6 @@ type-fest@^0.7.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -26573,6 +26447,14 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -26610,19 +26492,9 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: + graceful-fs "^4.1.11" imurmurhash "^0.1.4" signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" write-file-atomic@^4.0.1: version "4.0.2" @@ -26931,8 +26803,18 @@ yargs@^12.0.0, yargs@^12.0.5: resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: - camelcase "^5.0.0" + cliui "^4.0.0" decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" yargs@^14.2.2: version "14.2.3" From d52c6ba721dc3a5947ad367e232bc60c03d6b517 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 8 Mar 2023 11:44:30 +0100 Subject: [PATCH 54/72] fix issues. make plugin self contained. --- apps/remixdocgen/src/app/App.tsx | 4 +--- libs/remix-ui/docgenclient-ui/src/index.ts | 1 - .../docgenclient-ui/src/lib/remix-ui-docgenclient.tsx | 11 ----------- 3 files changed, 1 insertion(+), 15 deletions(-) delete mode 100644 libs/remix-ui/docgenclient-ui/src/index.ts delete mode 100644 libs/remix-ui/docgenclient-ui/src/lib/remix-ui-docgenclient.tsx diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index e8a970080e..ededc9d03f 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -12,8 +12,6 @@ import { AppContext } from "./AppContext"; import { Routes } from "./routes"; import { useLocalStorage } from "./hooks/useLocalStorage" -import { RemixUiDocgenClient } from '@remix-ui/docgenclient-ui' - import "./App.css"; import { ContractName, Documentation } from "../types"; @@ -103,7 +101,7 @@ const App = () => { // //
- +

Remix Docgen

) }; diff --git a/libs/remix-ui/docgenclient-ui/src/index.ts b/libs/remix-ui/docgenclient-ui/src/index.ts deleted file mode 100644 index 9a63ecad9f..0000000000 --- a/libs/remix-ui/docgenclient-ui/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/remix-ui-docgenclient' \ No newline at end of file diff --git a/libs/remix-ui/docgenclient-ui/src/lib/remix-ui-docgenclient.tsx b/libs/remix-ui/docgenclient-ui/src/lib/remix-ui-docgenclient.tsx deleted file mode 100644 index 4e0bb43cdb..0000000000 --- a/libs/remix-ui/docgenclient-ui/src/lib/remix-ui-docgenclient.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - - -export function RemixUiDocgenClient() { - return ( -
-

DocgenClientUI

-

This is a plugin that allows you to generate documentation for your smart contracts.

-
- ) -} \ No newline at end of file From 1303f3122c809877474bed1b01d7de205589e2e0 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 8 Mar 2023 11:59:26 +0100 Subject: [PATCH 55/72] fix issues --- apps/remix-ide/src/app.js | 2 +- apps/remixdocgen/src/app/App.tsx | 2 +- apps/remixdocgen/src/app/docgen-client.ts | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index a2a89a6d9d..8155a709ab 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -413,7 +413,7 @@ class AppComponent { await this.appManager.activatePlugin(['settings', 'config']) await this.appManager.activatePlugin(['hiddenPanel', 'pluginManager', 'codeParser', 'codeFormatter', 'fileDecorator', 'terminal', 'blockchain', 'fetchAndCompile', 'contentImport', 'gistHandler']) await this.appManager.activatePlugin(['settings']) - await this.appManager.activatePlugin(['walkthrough', 'storage', 'search', 'compileAndRun', 'recorder', 'docgen']) + await this.appManager.activatePlugin(['walkthrough', 'storage', 'search', 'compileAndRun', 'recorder']) this.appManager.on( 'filePanel', diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index ededc9d03f..2df11ab040 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -42,7 +42,7 @@ const App = () => { useEffect(() => { console.log("Remix EthDoc loading..."); - const client = createClient(new PluginClient()); + const client = createClient(new PluginClient()) const loadClient = async () => { await client.onload(); setClientInstance(client); diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 39647e6889..e56f326019 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -10,7 +10,6 @@ export class DocGenClient extends PluginClient { this.methods = ['generateDocs', 'publishDocs'] this.client.onload(async () => { - await this.client.activate() }) } From 61294b2a69c8583462e48bd66cdab0eca8a4f9cd Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 8 Mar 2023 14:54:33 +0100 Subject: [PATCH 56/72] add docgen instance. move onload to class method --- apps/remixdocgen/src/app/App.tsx | 94 ++++------------------- apps/remixdocgen/src/app/docgen-client.ts | 12 +-- 2 files changed, 22 insertions(+), 84 deletions(-) diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index 2df11ab040..94896b410e 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -1,105 +1,43 @@ -import React, { useState, useEffect, useRef } from "react"; - -import { PluginClient } from "@remixproject/plugin"; -import { createClient } from "@remixproject/plugin-webview"; +import React, { useState, useEffect, useMemo } from 'react' import { - CompilationFileSources, CompilationResult, -} from "@remixproject/plugin-api/"; -import { Status } from "@remixproject/plugin-utils"; - -import { AppContext } from "./AppContext"; -import { Routes } from "./routes"; -import { useLocalStorage } from "./hooks/useLocalStorage" +} from '@remixproject/plugin-api/' - -import "./App.css"; -import { ContractName, Documentation } from "../types"; +import './App.css' +import { DocGenClient } from './docgen-client' export const getNewContractNames = (compilationResult: CompilationResult) => { - const compiledContracts = compilationResult.contracts; - let result: string[] = []; + const compiledContracts = compilationResult.contracts + let result: string[] = [] for (const file of Object.keys(compiledContracts)) { - const newContractNames = Object.keys(compiledContracts[file]); - result = [...result, ...newContractNames]; + const newContractNames = Object.keys(compiledContracts[file]) + result = [...result, ...newContractNames] } - - return result; -}; - -const sampleMap = new Map(); + return result +} const App = () => { - const [clientInstance, setClientInstance] = useState(undefined as any); - const [contracts, setContracts] = useState(sampleMap); - const [sites, setSites] = useLocalStorage("sites", []); - const clientInstanceRef = useRef(clientInstance); - clientInstanceRef.current = clientInstance; - const contractsRef = useRef(contracts); - contractsRef.current = contracts; - const [themeType, setThemeType] = useState("dark"); + const client = useMemo(() => new DocGenClient(), []) + const [themeType, setThemeType] = useState('dark'); useEffect(() => { - console.log("Remix EthDoc loading..."); - const client = createClient(new PluginClient()) - const loadClient = async () => { - await client.onload(); - setClientInstance(client); - console.log("Remix EthDoc Plugin has been loaded"); + const watchThemeSwitch = async () => { //await client.call("manager" as any, "activatePlugin", "ethdoc-viewer"); - client.solidity.on( - "compilationFinished", - ( - fileName: string, - source: CompilationFileSources, - languageVersion: string, - data: CompilationResult - ) => { - console.log("New compilation received"); - - const existingMap = contractsRef.current; - const newMap = new Map([ - ...existingMap, - ]); - - const status: Status = { - key: "succeed", - type: "success", - title: "New documentation ready", - }; - clientInstanceRef.current.emit("statusChanged", status); - setContracts(new Map()); - } - ); - const currentTheme = await client.call("theme", "currentTheme"); - console.log("Current theme", currentTheme); + const currentTheme = await client.call('theme', 'currentTheme'); setThemeType(currentTheme.brightness || currentTheme.quality); client.on("theme", "themeChanged", (theme: any) => { - console.log("themeChanged"); setThemeType(theme.quality); }); }; - loadClient(); - }, []); + watchThemeSwitch(); + }, [client]); return ( - // - // - //

Remix Docgen

diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index e56f326019..10df133d24 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -1,25 +1,25 @@ import { PluginClient } from '@remixproject/plugin' import { createClient } from '@remixproject/plugin-webview' +import { DocGen } from './plugins/docgen' export class DocGenClient extends PluginClient { private client + private docgen constructor() { super() this.client = createClient(this) + // this.docgen = new DocGen() this.methods = ['generateDocs', 'publishDocs'] - - this.client.onload(async () => { - }) } - + loadClient() { + this.client.onload() + } async generateDocs() { console.log('docgen client generateDocs') - // await this.client.call('docgen', 'docgen', []) } async publishDocs() { console.log('docgen client publishDocs') - // await this.client.call('docgen', 'docgen', []) } } \ No newline at end of file From b4274624fc214b01c52c5f1a035feba1b979b020 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Mar 2023 16:18:32 +0100 Subject: [PATCH 57/72] refactor --- apps/remixdocgen/src/app/App.tsx | 30 ++++++--- apps/remixdocgen/src/app/docgen-client.ts | 62 +++++++++++++++++-- .../{plugins => }/docgen/common/helpers.ts | 0 .../{plugins => }/docgen/common/properties.ts | 0 .../src/app/{plugins => }/docgen/config.ts | 0 .../src/app/{plugins => }/docgen/doc-item.ts | 0 .../src/app/{plugins => }/docgen/render.ts | 0 .../src/app/{plugins => }/docgen/site.ts | 0 .../src/app/{plugins => }/docgen/templates.ts | 0 .../docgen/themes/markdown/common.hbs | 0 .../docgen/themes/markdown/contract.hbs | 0 .../docgen/themes/markdown/enum.hbs | 0 .../docgen/themes/markdown/error.hbs | 0 .../docgen/themes/markdown/event.hbs | 0 .../docgen/themes/markdown/function.hbs | 0 .../docgen/themes/markdown/helpers.ts | 0 .../docgen/themes/markdown/modifier.hbs | 0 .../docgen/themes/markdown/page.hbs | 0 .../docgen/themes/markdown/struct.hbs | 0 .../markdown/user-defined-value-type.hbs | 0 .../docgen/themes/markdown/variable.hbs | 0 .../{plugins => }/docgen/utils/ItemError.ts | 0 .../docgen/utils/arrays-equal.ts | 0 .../docgen/utils/assert-equal-types.ts | 0 .../app/{plugins => }/docgen/utils/clone.ts | 0 .../docgen/utils/ensure-array.ts | 0 .../app/{plugins => }/docgen/utils/execall.ts | 0 .../{plugins => }/docgen/utils/is-child.ts | 0 .../{plugins => }/docgen/utils/item-type.ts | 0 .../{plugins => }/docgen/utils/map-keys.ts | 0 .../{plugins => }/docgen/utils/map-values.ts | 0 .../docgen/utils/memoized-getter.ts | 0 .../app/{plugins => }/docgen/utils/natspec.ts | 0 .../docgen/utils/read-item-docs.ts | 0 .../app/{plugins => }/docgen/utils/scope.ts | 0 apps/remixdocgen/src/app/plugins/docgen.ts | 44 ------------- 36 files changed, 76 insertions(+), 60 deletions(-) rename apps/remixdocgen/src/app/{plugins => }/docgen/common/helpers.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/common/properties.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/config.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/doc-item.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/render.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/site.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/templates.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/common.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/contract.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/enum.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/error.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/event.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/function.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/helpers.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/modifier.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/page.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/struct.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/user-defined-value-type.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/themes/markdown/variable.hbs (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/ItemError.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/arrays-equal.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/assert-equal-types.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/clone.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/ensure-array.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/execall.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/is-child.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/item-type.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/map-keys.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/map-values.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/memoized-getter.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/natspec.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/read-item-docs.ts (100%) rename apps/remixdocgen/src/app/{plugins => }/docgen/utils/scope.ts (100%) delete mode 100644 apps/remixdocgen/src/app/plugins/docgen.ts diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index 94896b410e..dfbc3c43cd 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -5,6 +5,9 @@ import { import './App.css' import { DocGenClient } from './docgen-client' +import { Build } from './docgen/site' + +export const client = new DocGenClient() export const getNewContractNames = (compilationResult: CompilationResult) => { const compiledContracts = compilationResult.contracts @@ -18,28 +21,35 @@ export const getNewContractNames = (compilationResult: CompilationResult) => { } const App = () => { - const client = useMemo(() => new DocGenClient(), []) + const [themeType, setThemeType] = useState('dark'); + const [hasBuild, setHasBuild] = useState(false); + const [fileName, setFileName] = useState(''); useEffect(() => { const watchThemeSwitch = async () => { - //await client.call("manager" as any, "activatePlugin", "ethdoc-viewer"); - - const currentTheme = await client.call('theme', 'currentTheme'); - - setThemeType(currentTheme.brightness || currentTheme.quality); + client.eventEmitter.on('themeChanged', (theme: string) => { + console.log('themeChanged', theme) + setThemeType(theme) + }) + client.eventEmitter.on('compilationFinished', (build: Build, fileName: string) => { + setHasBuild(true) + setFileName(fileName) + }) + client.eventEmitter.on('docsGenerated', (docs: string[]) => { + console.log('docsGenerated', docs) + }) - client.on("theme", "themeChanged", (theme: any) => { - setThemeType(theme.quality); - }); }; watchThemeSwitch(); - }, [client]); + }, []); return (

Remix Docgen

+ {fileName &&

File: {fileName}

} + {hasBuild && }
) }; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 10df133d24..ad455f7ae8 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -1,22 +1,72 @@ import { PluginClient } from '@remixproject/plugin' +import { CompilationResult, SourceWithTarget } from '@remixproject/plugin-api' import { createClient } from '@remixproject/plugin-webview' -import { DocGen } from './plugins/docgen' +import EventEmitter from 'events' +import { Config, defaults } from './docgen/config' +import { Build, buildSite } from './docgen/site' +import { loadTemplates } from './docgen/templates' +import {SolcInput, SolcOutput} from 'solidity-ast/solc' +import { render } from './docgen/render' export class DocGenClient extends PluginClient { - private client - private docgen + private currentTheme + public eventEmitter: EventEmitter + private build: Build constructor() { super() - this.client = createClient(this) + this.eventEmitter = new EventEmitter() + createClient(this) // this.docgen = new DocGen() this.methods = ['generateDocs', 'publishDocs'] + this.onload().then(async () => { + console.log('docgen client loaded') + await this.setListeners() + }) } - loadClient() { - this.client.onload() + + async setListeners() { + this.currentTheme = await this.call('theme', 'currentTheme'); + this.on("theme", "themeChanged", (theme: any) => { + this.currentTheme = theme + this.eventEmitter.emit('themeChanged', this.currentTheme) + }); + this.eventEmitter.emit('themeChanged', this.currentTheme) + + this.on('solidity', 'compilationFinished', (fileName: string, source: SourceWithTarget, languageVersion: string, data: CompilationResult) => { + console.log('docgen client compilationFinished', data, source) + const input: SolcInput = { + sources: source.sources + } + const output: SolcOutput = { + sources: data.sources as any + } + this.build = { + input: input, + output: output + } + + this.eventEmitter.emit('compilationFinished', this.build, fileName) + + }) } + + async docgen(builds: Build[], userConfig?: Config): Promise { + const config = { ...defaults, ...userConfig } + const templates = await loadTemplates(config.theme, config.root, config.templates) + const site = buildSite(builds, config, templates.properties ?? {}) + const renderedSite = render(site, templates, config.collapseNewlines) + const docs: string[] = [] + for (const { id, contents } of renderedSite) { + await this.call('fileManager', 'setFile', id, contents) + docs.push(id) + } + this.eventEmitter.emit('docsGenerated', docs) + } + async generateDocs() { console.log('docgen client generateDocs') + this.docgen([this.build]) } async publishDocs() { diff --git a/apps/remixdocgen/src/app/plugins/docgen/common/helpers.ts b/apps/remixdocgen/src/app/docgen/common/helpers.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/common/helpers.ts rename to apps/remixdocgen/src/app/docgen/common/helpers.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/common/properties.ts b/apps/remixdocgen/src/app/docgen/common/properties.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/common/properties.ts rename to apps/remixdocgen/src/app/docgen/common/properties.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/config.ts b/apps/remixdocgen/src/app/docgen/config.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/config.ts rename to apps/remixdocgen/src/app/docgen/config.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/doc-item.ts b/apps/remixdocgen/src/app/docgen/doc-item.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/doc-item.ts rename to apps/remixdocgen/src/app/docgen/doc-item.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/render.ts b/apps/remixdocgen/src/app/docgen/render.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/render.ts rename to apps/remixdocgen/src/app/docgen/render.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/site.ts b/apps/remixdocgen/src/app/docgen/site.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/site.ts rename to apps/remixdocgen/src/app/docgen/site.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/templates.ts b/apps/remixdocgen/src/app/docgen/templates.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/templates.ts rename to apps/remixdocgen/src/app/docgen/templates.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/common.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/common.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/common.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/common.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/contract.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/contract.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/contract.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/contract.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/enum.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/enum.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/enum.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/enum.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/error.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/error.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/error.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/error.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/event.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/event.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/event.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/event.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/function.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/function.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/function.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/function.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/helpers.ts b/apps/remixdocgen/src/app/docgen/themes/markdown/helpers.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/helpers.ts rename to apps/remixdocgen/src/app/docgen/themes/markdown/helpers.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/modifier.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/modifier.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/modifier.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/modifier.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/page.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/page.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/page.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/page.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/struct.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/struct.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/struct.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/struct.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/user-defined-value-type.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/user-defined-value-type.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/user-defined-value-type.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/themes/markdown/variable.hbs b/apps/remixdocgen/src/app/docgen/themes/markdown/variable.hbs similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/themes/markdown/variable.hbs rename to apps/remixdocgen/src/app/docgen/themes/markdown/variable.hbs diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/ItemError.ts b/apps/remixdocgen/src/app/docgen/utils/ItemError.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/ItemError.ts rename to apps/remixdocgen/src/app/docgen/utils/ItemError.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/arrays-equal.ts b/apps/remixdocgen/src/app/docgen/utils/arrays-equal.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/arrays-equal.ts rename to apps/remixdocgen/src/app/docgen/utils/arrays-equal.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/assert-equal-types.ts b/apps/remixdocgen/src/app/docgen/utils/assert-equal-types.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/assert-equal-types.ts rename to apps/remixdocgen/src/app/docgen/utils/assert-equal-types.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/clone.ts b/apps/remixdocgen/src/app/docgen/utils/clone.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/clone.ts rename to apps/remixdocgen/src/app/docgen/utils/clone.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/ensure-array.ts b/apps/remixdocgen/src/app/docgen/utils/ensure-array.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/ensure-array.ts rename to apps/remixdocgen/src/app/docgen/utils/ensure-array.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/execall.ts b/apps/remixdocgen/src/app/docgen/utils/execall.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/execall.ts rename to apps/remixdocgen/src/app/docgen/utils/execall.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/is-child.ts b/apps/remixdocgen/src/app/docgen/utils/is-child.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/is-child.ts rename to apps/remixdocgen/src/app/docgen/utils/is-child.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/item-type.ts b/apps/remixdocgen/src/app/docgen/utils/item-type.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/item-type.ts rename to apps/remixdocgen/src/app/docgen/utils/item-type.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/map-keys.ts b/apps/remixdocgen/src/app/docgen/utils/map-keys.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/map-keys.ts rename to apps/remixdocgen/src/app/docgen/utils/map-keys.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/map-values.ts b/apps/remixdocgen/src/app/docgen/utils/map-values.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/map-values.ts rename to apps/remixdocgen/src/app/docgen/utils/map-values.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/memoized-getter.ts b/apps/remixdocgen/src/app/docgen/utils/memoized-getter.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/memoized-getter.ts rename to apps/remixdocgen/src/app/docgen/utils/memoized-getter.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/natspec.ts b/apps/remixdocgen/src/app/docgen/utils/natspec.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/natspec.ts rename to apps/remixdocgen/src/app/docgen/utils/natspec.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/read-item-docs.ts b/apps/remixdocgen/src/app/docgen/utils/read-item-docs.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/read-item-docs.ts rename to apps/remixdocgen/src/app/docgen/utils/read-item-docs.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen/utils/scope.ts b/apps/remixdocgen/src/app/docgen/utils/scope.ts similarity index 100% rename from apps/remixdocgen/src/app/plugins/docgen/utils/scope.ts rename to apps/remixdocgen/src/app/docgen/utils/scope.ts diff --git a/apps/remixdocgen/src/app/plugins/docgen.ts b/apps/remixdocgen/src/app/plugins/docgen.ts deleted file mode 100644 index 3c366cfcbc..0000000000 --- a/apps/remixdocgen/src/app/plugins/docgen.ts +++ /dev/null @@ -1,44 +0,0 @@ -'use strict' -import { Plugin } from '@remixproject/engine' -import { Build, buildSite } from './docgen/site'; -import { render } from './docgen/render'; -import { Config, defaults } from './docgen/config'; -import { loadTemplates } from './docgen/templates'; -import { SolcInput, SolcOutput } from 'solidity-ast/solc'; - -const profile = { - name: 'docgen', - desciption: 'solidity doc gen plugin for Remix', - methods: ['docgen'], - events: [''], - version: '0.0.1' -} - - - -export class DocGen extends Plugin { - - constructor() { - super(profile) - } - - onActivation(): void { - //this.docgen([{ output: example, input: inp }]) - this.on('solidity', 'compilationFinished', (file, source, languageVersion, data, input, version) => { - this.docgen([{ output: data, input: JSON.parse(input) }]) - }) - } - - async docgen(builds: Build[], userConfig?: Config): Promise { - const config = { ...defaults, ...userConfig } - const templates = await loadTemplates(config.theme, config.root, config.templates) - const site = buildSite(builds, config, templates.properties ?? {}) - const renderedSite = render(site, templates, config.collapseNewlines) - console.log({ renderedSite }) - for (const { id, contents } of renderedSite) { - await this.call('fileManager', 'setFile', id, contents) - } - } - - -} \ No newline at end of file From ed1db5d54700a76e6fdabdcabcb4b2a23b95db18 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Mar 2023 17:01:17 +0100 Subject: [PATCH 58/72] viewer --- apps/remixdocgen/src/app/App.tsx | 2 ++ apps/remixdocgen/src/app/docgen-client.ts | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index dfbc3c43cd..0e88d4ba32 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -39,6 +39,7 @@ const App = () => { client.eventEmitter.on('docsGenerated', (docs: string[]) => { console.log('docsGenerated', docs) }) + }; @@ -50,6 +51,7 @@ const App = () => {

Remix Docgen

{fileName &&

File: {fileName}

} {hasBuild && } + {hasBuild && } ) }; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index ad455f7ae8..721bb433b2 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -18,7 +18,7 @@ export class DocGenClient extends PluginClient { this.eventEmitter = new EventEmitter() createClient(this) // this.docgen = new DocGen() - this.methods = ['generateDocs', 'publishDocs'] + this.methods = ['generateDocs', 'publishDocs', 'viewDocs'] this.onload().then(async () => { console.log('docgen client loaded') await this.setListeners() @@ -26,7 +26,8 @@ export class DocGenClient extends PluginClient { } async setListeners() { - this.currentTheme = await this.call('theme', 'currentTheme'); + this.currentTheme = await this.call('theme', 'currentTheme') + this.on("theme", "themeChanged", (theme: any) => { this.currentTheme = theme this.eventEmitter.emit('themeChanged', this.currentTheme) @@ -64,6 +65,17 @@ export class DocGenClient extends PluginClient { this.eventEmitter.emit('docsGenerated', docs) } + async opendDocs() { + console.log('docgen client openDocs') + await this.call('manager', 'activatePlugin', 'docgenviewer') + await this.call('tabs' as any, 'focus', 'docgenviewer') + await this.call('docgenviewer' as any, 'viewDocs') + } + + async viewDocs(docs: string[]) { + console.log('docgen client viewDocs') + } + async generateDocs() { console.log('docgen client generateDocs') this.docgen([this.build]) From 203f907a16de22a6d529dd0dab769c16e77d92e9 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 9 Mar 2023 12:07:58 +0100 Subject: [PATCH 59/72] refactoring and cleanup --- apps/remixdocgen/src/app/App.tsx | 10 +++------- apps/remixdocgen/src/app/docgen-client.ts | 5 ++--- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index 0e88d4ba32..f321678573 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -21,7 +21,6 @@ export const getNewContractNames = (compilationResult: CompilationResult) => { } const App = () => { - const [themeType, setThemeType] = useState('dark'); const [hasBuild, setHasBuild] = useState(false); const [fileName, setFileName] = useState(''); @@ -39,12 +38,9 @@ const App = () => { client.eventEmitter.on('docsGenerated', (docs: string[]) => { console.log('docsGenerated', docs) }) - - - }; - - watchThemeSwitch(); - }, []); + } + watchThemeSwitch() + }, []) return (
diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 721bb433b2..8570c5d0b5 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -16,9 +16,8 @@ export class DocGenClient extends PluginClient { constructor() { super() this.eventEmitter = new EventEmitter() + this.methods = ['generateDocs', 'viewDocs'] createClient(this) - // this.docgen = new DocGen() - this.methods = ['generateDocs', 'publishDocs', 'viewDocs'] this.onload().then(async () => { console.log('docgen client loaded') await this.setListeners() @@ -28,7 +27,7 @@ export class DocGenClient extends PluginClient { async setListeners() { this.currentTheme = await this.call('theme', 'currentTheme') - this.on("theme", "themeChanged", (theme: any) => { + this.on('theme', 'themeChanged', (theme: any) => { this.currentTheme = theme this.eventEmitter.emit('themeChanged', this.currentTheme) }); From 8ac3bb69b2156a738e98a8eadae62efde0c25458 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 9 Mar 2023 14:30:27 +0100 Subject: [PATCH 60/72] remove redundant publis method --- apps/remixdocgen/src/app/docgen-client.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 8570c5d0b5..6c184b9af5 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -80,7 +80,4 @@ export class DocGenClient extends PluginClient { this.docgen([this.build]) } - async publishDocs() { - console.log('docgen client publishDocs') - } } \ No newline at end of file From 6cd9da02a4e1772663278b48b0a5488e4e8ecb89 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 13 Mar 2023 22:57:04 +0100 Subject: [PATCH 61/72] cleanup --- apps/remixdocgen/src/app/App.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index f321678573..aae7d5f274 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useMemo } from 'react' +import React, { useState, useEffect } from 'react' import { CompilationResult, } from '@remixproject/plugin-api/' @@ -47,7 +47,7 @@ const App = () => {

Remix Docgen

{fileName &&

File: {fileName}

} {hasBuild && } - {hasBuild && } + {hasBuild && }
) }; From bde0a2a2893ecb909d356f43de752ca041eed77b Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 13 Mar 2023 23:16:57 +0100 Subject: [PATCH 62/72] fix viewDoc method --- apps/remixdocgen/src/app/docgen-client.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 6c184b9af5..9af8d5fa0a 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -71,8 +71,9 @@ export class DocGenClient extends PluginClient { await this.call('docgenviewer' as any, 'viewDocs') } - async viewDocs(docs: string[]) { + async viewDocs() { console.log('docgen client viewDocs') + await this.opendDocs() } async generateDocs() { From 1f1056578a03cdecb60157932dcaaf035b6a014c Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 13 Mar 2023 23:30:02 +0100 Subject: [PATCH 63/72] add docviewer plugin to show generated documentation --- apps/docviewer/project.json | 59 ++++++++++++++++ apps/docviewer/src/app/App.tsx | 11 +++ apps/docviewer/src/favicon.ico | Bin 0 -> 3150 bytes apps/docviewer/src/index.html | 14 ++++ apps/docviewer/src/main.tsx | 10 +++ apps/docviewer/tsconfig.app.json | 23 +++++++ apps/docviewer/tsconfig.json | 16 +++++ apps/docviewer/webpack.config.js | 85 ++++++++++++++++++++++++ apps/remixdocgen/src/app/AppContext.tsx | 20 ------ apps/remixdocgen/src/app/routes.tsx | 24 ------- 10 files changed, 218 insertions(+), 44 deletions(-) create mode 100644 apps/docviewer/project.json create mode 100644 apps/docviewer/src/app/App.tsx create mode 100644 apps/docviewer/src/favicon.ico create mode 100644 apps/docviewer/src/index.html create mode 100644 apps/docviewer/src/main.tsx create mode 100644 apps/docviewer/tsconfig.app.json create mode 100644 apps/docviewer/tsconfig.json create mode 100644 apps/docviewer/webpack.config.js delete mode 100644 apps/remixdocgen/src/app/AppContext.tsx delete mode 100644 apps/remixdocgen/src/app/routes.tsx diff --git a/apps/docviewer/project.json b/apps/docviewer/project.json new file mode 100644 index 0000000000..58fc9f5675 --- /dev/null +++ b/apps/docviewer/project.json @@ -0,0 +1,59 @@ +{ + "name": "docviewer", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/docviewer/src", + "projectType": "application", + "implicitDependencies": [ + ], + "targets": { + "build": { + "executor": "@nrwl/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "development", + "options": { + "compiler": "babel", + "outputPath": "dist/apps/docviewer", + "index": "apps/docviewer/src/index.html", + "baseHref": "/", + "main": "apps/docviewer/src/main.tsx", + "tsConfig": "apps/docviewer/tsconfig.app.json", + "assets": [ + "apps/docviewer/src/favicon.ico" + ], + "styles": [], + "scripts": [], + "webpackConfig": "apps/docviewer/webpack.config.js" + }, + "configurations": { + "development": { + }, + "production": { + "fileReplacements": [ + { + "replace": "apps/docviewer/src/environments/environment.ts", + "with": "apps/docviewer/src/environments/environment.prod.ts" + } + ] + } + } + }, + "serve": { + "executor": "@nrwl/webpack:dev-server", + "defaultConfiguration": "development", + "options": { + "buildTarget": "docviewer:build", + "hmr": true + }, + "configurations": { + "development": { + "buildTarget": "docviewer:build:development", + "port": 7003 + }, + "production": { + "buildTarget": "docviewer:build:production" + } + } + } + }, + "tags": [] +} diff --git a/apps/docviewer/src/app/App.tsx b/apps/docviewer/src/app/App.tsx new file mode 100644 index 0000000000..c99255bc0f --- /dev/null +++ b/apps/docviewer/src/app/App.tsx @@ -0,0 +1,11 @@ + +export default function App() { + return ( + <> +

Documentation Viewer

+

+ Show documentation of compiled contracts. +

+ + ) +} \ No newline at end of file diff --git a/apps/docviewer/src/favicon.ico b/apps/docviewer/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 zcmaKtc{Ei0AIGn;MZ^<@lHD*OV;K7~W1q3jSjJcqNywTkMOhP*k~Oj?GO|6{m(*C2 zC7JA+hN%%Bp7T4;J@?%2_x=5zbI<2~->=X60stMr0B~{wzpi9D0MG|# zyuANt7z6;uz%?PEfAnimLl^)6h5ARwGXemG2>?hqQv-I^Gpyh$JH}Ag92}3{$a#z& zd`il2Sb#$U&e&4#^4R|GTgk!Qs+x*PCL{2+`uB5mqtnqLaaw`*H2oqJ?XF(zUACc2 zSibBrdQzcidqv*TK}rpEv1ie&;Famq2IK5%4c}1Jt2b1x_{y1C!?EU)@`_F)yN*NK z)(u03@%g%uDawwXGAMm%EnP9FgoucUedioDwL~{6RVO@A-Q$+pwVRR%WYR>{K3E&Q zzqzT!EEZ$_NHGYM6&PK#CGUV$pTWsiI5#~m>htoJ!vbc0=gm3H8sz8KzIiVN5xdCT z%;}`UH2Pc8))1VS-unh?v4*H*NIy5On{MRKw7BTmOO9oE2UApwkCl9Z?^dod9M^#w z51tEZhf+#dpTo#GDDy#kuzoIjMjZ?%v*h$ z*vwUMOjGc?R0(FjLWkMD)kca4z6~H45FIzQ!Zzu&-yWyMdCBsDr2`l}Q{8fH$H@O< z$&snNzbqLk?(GIe?!PVh?F~2qk4z^rMcp$P^hw^rUPjyCyoNTRw%;hNOwrCoN?G0E z!wT^=4Loa9@O{t;Wk(Nj=?ms1Z?UN_;21m%sUm?uib=pg&x|u)8pP#l--$;B9l47n zUUnMV0sXLe*@Gvy>XWjRoqc2tOzgYn%?g@Lb8C&WsxV1Kjssh^ZBs*Ysr+E6%tsC_ zCo-)hkYY=Bn?wMB4sqm?WS>{kh<6*DO)vXnQpQ9`-_qF6!#b;3Nf@;#B>e2j$yokl6F|9p1<($2 z=WSr%)Z?^|r6njhgbuMrIN>8JE05u0x5t@_dEfbGn9r0hK4c2vp>(*$GXsjeLL_uz zWpyfUgdv!~-2N;llVzik#s2*XB*%7u8(^sJv&T3pzaR&<9({17Zs~UY>#ugZZkHBs zD+>0_an$?}utGp$dcXtyFHnTQZJ}SF=oZ}X07dz~K>^o(vjTzw8ZQc!Fw1W=&Z?9% zv63|~l}70sJbY?H8ON8j)w5=6OpXuaZ}YT03`2%u8{;B0Vafo_iY7&BiQTbRkdJBYL}?%ATfmc zLG$uXt$@3j#OIjALdT&Ut$=9F8cgV{w_f5eS)PjoVi z&oemp-SKJ~UuGuCP1|iY?J^S&P z)-IG?O-*=z6kfZrX5H*G=aQ{ZaqnOqP@&+_;nq@mA>EcjgxrYX8EK|Iq4&E&rxR?R z8N$QOdRwY zr{P`O)=87>YLHtFfGXW z6P)ucrhj~It_9w<^v5>T6N1U}+BkS))=WX*2JY=}^b2czGhH<`?`(}}qMcpPx_%>M zM|fs(+I1m&_h(zqp-HgP>re$2O^o$q)xu#fl0ivOJE({duU)a*OD(eYgSi^cdTn}pqcPM(;S)2%1By^Wh%-CaC%>d9hi`7J zaxL7@;nhA>PE%s99&;z{8>VFgf{u!(-B-x7Of6ueme+ScryL`h(^qKE)DtieWY>-7 zgB)VJESQS4*1LU(2&@pgLvSt{(((C?K_V(rQk``i&5}ZPG;G^FiPlZ$7|-vEmMWlU z5lQ%iK2nu=h2wd_7>gK@vX=*AG+u~rQP$NwPC`ZA?4nh{3tui1x@bT6-;Rk3yDQ>d z?3qRD#+PeV7#FAa>s`Xwxsx_oRFcN$StW2=CW`=qObsT?SD^#^jM1Yk}PSPxJ zG@-_mnNU_)vM|iLRSI>UMp|hatyS}17R{10IuL0TLlupt>9dRs_SPQbv7BLYyC#qv16E-y@XZ= z-!p7I%#r-BVi$nQq3&ssRc_IC%R6$tA&^s_l46880~Wst3@>(|EO<}T4~ci~#!=e; zD)B>o%1+$ksURD1p7I-<3ehlFyVkqrySf&gg>Bp0Z9?JaG|gyTZ{Cb8SdvAWVmFX7v2ohs!OCc!Udk zUITUpmZ33rKLI#(&lDj}cKA#dpL4Fil=$5pu_wi1XJR!llw` zSItPBDEdMHk2>c7#%lBxZHHvtVUOZ$}v?=?AT~9!Jcqa@IJGuMg(s^7r>pcTrd)pS`{5Cu8WPey` z9)!!OUUY@L%9Q+bZa*S5`3f_|lFCPN6kdp_M2>{le8;cn^XUsPa+TUk47qd6)IBR% zk*&Ip?!Ge_gmmdj)BX}P_5o@VI2*wbZ^>UhFju}0gQZh!pP%4XT9{@w;G#b3XK8sN zF(7i$Jv(IM$8Akys9dhP^^~H2(7BfJp}yDW1#@!CL-!mGcSCnJ599WK9MV@yo_u$v MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/apps/docviewer/src/index.html b/apps/docviewer/src/index.html new file mode 100644 index 0000000000..7fd033d57e --- /dev/null +++ b/apps/docviewer/src/index.html @@ -0,0 +1,14 @@ + + + + + Doc Viewer + + + + + + +
+ + diff --git a/apps/docviewer/src/main.tsx b/apps/docviewer/src/main.tsx new file mode 100644 index 0000000000..7b8dd49ee6 --- /dev/null +++ b/apps/docviewer/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom' +import App from './app/App' + +ReactDOM.render( + + + , + document.getElementById("root") +); diff --git a/apps/docviewer/tsconfig.app.json b/apps/docviewer/tsconfig.app.json new file mode 100644 index 0000000000..af84f21cfc --- /dev/null +++ b/apps/docviewer/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "files": [ + "../../node_modules/@nrwl/react/typings/cssmodule.d.ts", + "../../node_modules/@nrwl/react/typings/image.d.ts" + ], + "exclude": [ + "jest.config.ts", + "**/*.spec.ts", + "**/*.test.ts", + "**/*.spec.tsx", + "**/*.test.tsx", + "**/*.spec.js", + "**/*.test.js", + "**/*.spec.jsx", + "**/*.test.jsx" + ], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/apps/docviewer/tsconfig.json b/apps/docviewer/tsconfig.json new file mode 100644 index 0000000000..5aab5e7911 --- /dev/null +++ b/apps/docviewer/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/apps/docviewer/webpack.config.js b/apps/docviewer/webpack.config.js new file mode 100644 index 0000000000..3cd446f615 --- /dev/null +++ b/apps/docviewer/webpack.config.js @@ -0,0 +1,85 @@ +const { composePlugins, withNx } = require('@nrwl/webpack') +const { withReact } = require('@nrwl/react') +const webpack = require('webpack') +const TerserPlugin = require("terser-webpack-plugin") +const CssMinimizerPlugin = require("css-minimizer-webpack-plugin") + +// Nx plugins for webpack. +module.exports = composePlugins(withNx(), withReact(), (config) => { + // Update the webpack config as needed here. + // e.g. `config.plugins.push(new MyPlugin())` + + // add fallback for node modules + config.resolve.fallback = { + ...config.resolve.fallback, + "crypto": require.resolve("crypto-browserify"), + "stream": require.resolve("stream-browserify"), + "path": require.resolve("path-browserify"), + "http": require.resolve("stream-http"), + "https": require.resolve("https-browserify"), + "constants": require.resolve("constants-browserify"), + "os": false, //require.resolve("os-browserify/browser"), + "timers": false, // require.resolve("timers-browserify"), + "zlib": require.resolve("browserify-zlib"), + "fs": false, + "module": false, + "tls": false, + "net": false, + "readline": false, + "child_process": false, + "buffer": require.resolve("buffer/"), + "vm": require.resolve('vm-browserify'), + } + + // add externals + config.externals = { + ...config.externals, + solc: 'solc', + } + + // add public path + config.output.publicPath = '/' + + + + // add copy & provide plugin + config.plugins.push( + new webpack.ProvidePlugin({ + Buffer: ['buffer', 'Buffer'], + url: ['url', 'URL'], + process: 'process/browser', + }), + new webpack.DefinePlugin({ + + }), + ) + + // souce-map loader + config.module.rules.push({ + test: /\.js$/, + use: ["source-map-loader"], + enforce: "pre" + }) + + config.ignoreWarnings = [/Failed to parse source map/] // ignore source-map-loader warnings + + + // set minimizer + config.optimization.minimizer = [ + new TerserPlugin({ + parallel: true, + terserOptions: { + ecma: 2015, + compress: false, + mangle: false, + format: { + comments: false, + }, + }, + extractComments: false, + }), + new CssMinimizerPlugin(), + ]; + + return config; +}); diff --git a/apps/remixdocgen/src/app/AppContext.tsx b/apps/remixdocgen/src/app/AppContext.tsx deleted file mode 100644 index 612ac7af9a..0000000000 --- a/apps/remixdocgen/src/app/AppContext.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; -import { PluginClient } from "@remixproject/plugin"; -import { PluginApi, Api } from "@remixproject/plugin-utils"; -import { IRemixApi } from "@remixproject/plugin-api"; - -import { ContractName, Documentation, PublishedSite } from "../types"; - -export const AppContext = React.createContext({ - clientInstance: {} as PluginApi> & - PluginClient>, - contracts: new Map(), - setContracts: (contracts: Map) => { - console.log("Calling Set Contract Names"); - }, - sites: [], - setSites: (sites: PublishedSite[]) => { - console.log("Calling Set Sites"); - }, - themeType: "dark", -}); diff --git a/apps/remixdocgen/src/app/routes.tsx b/apps/remixdocgen/src/app/routes.tsx deleted file mode 100644 index b16eae3a9e..0000000000 --- a/apps/remixdocgen/src/app/routes.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from "react"; -import { - BrowserRouter as Router, - Route, - RouteProps, -} from "react-router-dom"; - - - -interface Props extends RouteProps { - component: any; // TODO: new (props: any) => React.Component - from: string; -} - -const CustomRoute = ({ component: Component, ...rest }: Props) => { - return ( - <> - ); -}; - -export const Routes = () => ( - - -); From 5d8f926b27db83b44fe4edfca0493fb6fdeda919 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 14 Mar 2023 02:13:37 +0100 Subject: [PATCH 64/72] create new plugin for doc viewer. cleanup --- apps/docviewer/src/app/App.tsx | 15 +++++++++ apps/docviewer/src/app/docviewer.ts | 39 +++++++++++++++++++++++ apps/remixdocgen/src/app/App.tsx | 13 +------- apps/remixdocgen/src/app/docgen-client.ts | 22 +++++++------ 4 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 apps/docviewer/src/app/docviewer.ts diff --git a/apps/docviewer/src/app/App.tsx b/apps/docviewer/src/app/App.tsx index c99255bc0f..2c7785d4dc 100644 --- a/apps/docviewer/src/app/App.tsx +++ b/apps/docviewer/src/app/App.tsx @@ -1,11 +1,26 @@ +import React, { useEffect, useState } from "react" +import { DocViewer } from "./docviewer" + +const client = new DocViewer() export default function App() { + const [contents, setContents] = useState('') + useEffect(() => { + client.eventEmitter.on('contentsReady', (fileContents: string) => { + console.log('contentsReady', fileContents) + setContents(fileContents) + }) + + }, []) return ( <>

Documentation Viewer

Show documentation of compiled contracts.

+

+ {contents && contents.length} +

) } \ No newline at end of file diff --git a/apps/docviewer/src/app/docviewer.ts b/apps/docviewer/src/app/docviewer.ts new file mode 100644 index 0000000000..0a78fd3a54 --- /dev/null +++ b/apps/docviewer/src/app/docviewer.ts @@ -0,0 +1,39 @@ +import { PluginClient } from '@remixproject/plugin' +import { createClient } from '@remixproject/plugin-webview' +import EventEmitter from 'events' + +export class DocViewer extends PluginClient { + mdFile: string + fileContents: string + eventEmitter: EventEmitter + constructor() { + super() + this.eventEmitter = new EventEmitter() + this.methods = ['viewDocs'] + createClient(this) + this.mdFile = '' + this.onload() + } + + async setProperties() { + console.log('inside setProperties') + this.on('docgen' as any, 'docsGenerated', async (docs: string[]) => { + console.log('docsGenerated', docs) + this.mdFile = docs[0] + const contents = await this.call('fileManager', 'readFile', this.mdFile) + console.log({ contents }) + this.fileContents = contents + this.eventEmitter.emit('docviewer', 'contentsReady', this.fileContents) + }) + } + + async viewDocs(docs: string[]) { + console.log('viewDocs', docs) + console.log('docsGenerated', docs) + this.mdFile = docs[0] + const contents = await this.call('fileManager', 'readFile', this.mdFile) + console.log({ contents }) + this.fileContents = contents + this.eventEmitter.emit('contentsReady', contents) + } +} \ No newline at end of file diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index aae7d5f274..913b745e69 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -9,17 +9,6 @@ import { Build } from './docgen/site' export const client = new DocGenClient() -export const getNewContractNames = (compilationResult: CompilationResult) => { - const compiledContracts = compilationResult.contracts - let result: string[] = [] - - for (const file of Object.keys(compiledContracts)) { - const newContractNames = Object.keys(compiledContracts[file]) - result = [...result, ...newContractNames] - } - return result -} - const App = () => { const [themeType, setThemeType] = useState('dark'); const [hasBuild, setHasBuild] = useState(false); @@ -47,7 +36,7 @@ const App = () => {

Remix Docgen

{fileName &&

File: {fileName}

} {hasBuild && } - {hasBuild && } + {hasBuild && } ) }; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 9af8d5fa0a..2dabacf6a7 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -12,11 +12,12 @@ export class DocGenClient extends PluginClient { private currentTheme public eventEmitter: EventEmitter private build: Build + public docs: string[] = [] constructor() { super() this.eventEmitter = new EventEmitter() - this.methods = ['generateDocs', 'viewDocs'] + this.methods = ['generateDocs', 'opendDocs'] createClient(this) this.onload().then(async () => { console.log('docgen client loaded') @@ -62,19 +63,22 @@ export class DocGenClient extends PluginClient { docs.push(id) } this.eventEmitter.emit('docsGenerated', docs) + this.emit('docgen' as any, 'docsGenerated', docs) + this.docs = docs + await this.opendDocs(docs) } - async opendDocs() { + async opendDocs(docs: string[]) { console.log('docgen client openDocs') - await this.call('manager', 'activatePlugin', 'docgenviewer') - await this.call('tabs' as any, 'focus', 'docgenviewer') - await this.call('docgenviewer' as any, 'viewDocs') + await this.call('manager', 'activatePlugin', 'docviewer') + await this.call('tabs' as any, 'focus', 'docviewer') + await this.call('docviewer' as any, 'viewDocs', docs) } - async viewDocs() { - console.log('docgen client viewDocs') - await this.opendDocs() - } + // async viewDocs() { + // console.log('docgen client viewDocs') + // await this.opendDocs() + // } async generateDocs() { console.log('docgen client generateDocs') From 809869b6295a06ed4231c3cb81375d635a153ca0 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 14 Mar 2023 02:18:26 +0100 Subject: [PATCH 65/72] remove redundancies --- apps/docviewer/src/app/App.tsx | 1 - apps/docviewer/src/app/docviewer.ts | 17 ----------------- 2 files changed, 18 deletions(-) diff --git a/apps/docviewer/src/app/App.tsx b/apps/docviewer/src/app/App.tsx index 2c7785d4dc..37e3ca2256 100644 --- a/apps/docviewer/src/app/App.tsx +++ b/apps/docviewer/src/app/App.tsx @@ -7,7 +7,6 @@ export default function App() { const [contents, setContents] = useState('') useEffect(() => { client.eventEmitter.on('contentsReady', (fileContents: string) => { - console.log('contentsReady', fileContents) setContents(fileContents) }) diff --git a/apps/docviewer/src/app/docviewer.ts b/apps/docviewer/src/app/docviewer.ts index 0a78fd3a54..d6fed6e490 100644 --- a/apps/docviewer/src/app/docviewer.ts +++ b/apps/docviewer/src/app/docviewer.ts @@ -4,7 +4,6 @@ import EventEmitter from 'events' export class DocViewer extends PluginClient { mdFile: string - fileContents: string eventEmitter: EventEmitter constructor() { super() @@ -15,25 +14,9 @@ export class DocViewer extends PluginClient { this.onload() } - async setProperties() { - console.log('inside setProperties') - this.on('docgen' as any, 'docsGenerated', async (docs: string[]) => { - console.log('docsGenerated', docs) - this.mdFile = docs[0] - const contents = await this.call('fileManager', 'readFile', this.mdFile) - console.log({ contents }) - this.fileContents = contents - this.eventEmitter.emit('docviewer', 'contentsReady', this.fileContents) - }) - } - async viewDocs(docs: string[]) { - console.log('viewDocs', docs) - console.log('docsGenerated', docs) this.mdFile = docs[0] const contents = await this.call('fileManager', 'readFile', this.mdFile) - console.log({ contents }) - this.fileContents = contents this.eventEmitter.emit('contentsReady', contents) } } \ No newline at end of file From 2c6376a654707cff86269e2be643aff183fdf336 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 14 Mar 2023 19:11:03 +0100 Subject: [PATCH 66/72] add styles to docviewer view --- apps/docviewer/src/app/App.tsx | 12 +- apps/remixdocgen/src/app/App.tsx | 7 +- apps/remixdocgen/src/app/docgen-client.ts | 18 +- package.json | 2 + yarn.lock | 700 +++++++++++++++++++++- 5 files changed, 707 insertions(+), 32 deletions(-) diff --git a/apps/docviewer/src/app/App.tsx b/apps/docviewer/src/app/App.tsx index 37e3ca2256..cbb57460d0 100644 --- a/apps/docviewer/src/app/App.tsx +++ b/apps/docviewer/src/app/App.tsx @@ -1,5 +1,7 @@ import React, { useEffect, useState } from "react" import { DocViewer } from "./docviewer" +import ReactMarkdown from 'react-markdown' +import remarkGfm from 'remark-gfm' const client = new DocViewer() @@ -13,13 +15,9 @@ export default function App() { }, []) return ( <> -

Documentation Viewer

-

- Show documentation of compiled contracts. -

-

- {contents && contents.length} -

+
+ +
) } \ No newline at end of file diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/remixdocgen/src/app/App.tsx index 913b745e69..e118913210 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/remixdocgen/src/app/App.tsx @@ -17,7 +17,6 @@ const App = () => { useEffect(() => { const watchThemeSwitch = async () => { client.eventEmitter.on('themeChanged', (theme: string) => { - console.log('themeChanged', theme) setThemeType(theme) }) client.eventEmitter.on('compilationFinished', (build: Build, fileName: string) => { @@ -34,9 +33,9 @@ const App = () => { return (

Remix Docgen

- {fileName &&

File: {fileName}

} - {hasBuild && } - {hasBuild && } + {fileName &&

File: {fileName.split('/')[1].split('.')[0].concat('.sol')}

} + {hasBuild && } + {hasBuild && }
) }; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/remixdocgen/src/app/docgen-client.ts index 2dabacf6a7..d76a4c3e81 100644 --- a/apps/remixdocgen/src/app/docgen-client.ts +++ b/apps/remixdocgen/src/app/docgen-client.ts @@ -13,6 +13,7 @@ export class DocGenClient extends PluginClient { public eventEmitter: EventEmitter private build: Build public docs: string[] = [] + private fileName: string = '' constructor() { super() @@ -20,7 +21,6 @@ export class DocGenClient extends PluginClient { this.methods = ['generateDocs', 'opendDocs'] createClient(this) this.onload().then(async () => { - console.log('docgen client loaded') await this.setListeners() }) } @@ -35,7 +35,6 @@ export class DocGenClient extends PluginClient { this.eventEmitter.emit('themeChanged', this.currentTheme) this.on('solidity', 'compilationFinished', (fileName: string, source: SourceWithTarget, languageVersion: string, data: CompilationResult) => { - console.log('docgen client compilationFinished', data, source) const input: SolcInput = { sources: source.sources } @@ -46,7 +45,7 @@ export class DocGenClient extends PluginClient { input: input, output: output } - + this.fileName = fileName this.eventEmitter.emit('compilationFinished', this.build, fileName) }) @@ -59,8 +58,10 @@ export class DocGenClient extends PluginClient { const renderedSite = render(site, templates, config.collapseNewlines) const docs: string[] = [] for (const { id, contents } of renderedSite) { - await this.call('fileManager', 'setFile', id, contents) - docs.push(id) + const temp = `${this.fileName.split('/')[1].split('.')[0]}.${id.split('.')[1]}` + const newFileName = `contracts/documentation/${temp}` + await this.call('fileManager', 'setFile', newFileName , contents) + docs.push(newFileName) } this.eventEmitter.emit('docsGenerated', docs) this.emit('docgen' as any, 'docsGenerated', docs) @@ -69,19 +70,12 @@ export class DocGenClient extends PluginClient { } async opendDocs(docs: string[]) { - console.log('docgen client openDocs') await this.call('manager', 'activatePlugin', 'docviewer') await this.call('tabs' as any, 'focus', 'docviewer') await this.call('docviewer' as any, 'viewDocs', docs) } - // async viewDocs() { - // console.log('docgen client viewDocs') - // await this.opendDocs() - // } - async generateDocs() { - console.log('docgen client generateDocs') this.docgen([this.build]) } diff --git a/package.json b/package.json index 3a8bee75f0..027fb33faf 100644 --- a/package.json +++ b/package.json @@ -186,11 +186,13 @@ "react-draggable": "^4.4.4", "react-intl": "^6.0.4", "react-json-view": "^1.21.3", + "react-markdown": "^8.0.5", "react-multi-carousel": "^2.8.2", "react-router-dom": "^6.3.0", "react-tabs": "^3.2.2", "react-zoom-pan-pinch": "^3.0.2", "regenerator-runtime": "0.13.7", + "remark-gfm": "^3.0.1", "rss-parser": "^3.12.0", "signale": "^1.4.0", "sol2uml": "^2.4.3", diff --git a/yarn.lock b/yarn.lock index 28bd4460a9..3f50f178ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5998,6 +5998,13 @@ dependencies: "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + "@types/history@*": version "4.7.9" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.9.tgz#1cfb6d60ef3822c589f18e70f8b12f9a28ce8724" @@ -6096,6 +6103,13 @@ resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== + dependencies: + "@types/unist" "*" + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -6172,6 +6186,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== +"@types/prop-types@^15.0.0": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -6364,6 +6383,11 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== +"@types/unist@*", "@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@types/warning@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" @@ -8245,6 +8269,11 @@ bach@^1.0.0: async-settle "^1.0.0" now-and-later "^2.0.0" +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -9313,6 +9342,11 @@ cbor@^8.0.0: dependencies: nofilter "^3.1.0" +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -9392,6 +9426,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -9948,6 +9987,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + command-exists@^1.2.8: version "1.2.9" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" @@ -11008,6 +11052,13 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -11246,6 +11297,11 @@ deps-sort@^2.0.0, deps-sort@^2.0.1: subarg "^1.0.0" through2 "^2.0.0" +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + dequal@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" @@ -11346,6 +11402,11 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -11973,6 +12034,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + eslint-config-prettier@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" @@ -14620,6 +14686,11 @@ hasha@^3.0.0: dependencies: is-stream "^1.0.1" +hast-util-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" + integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -15834,6 +15905,11 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -17080,6 +17156,11 @@ klaw@^4.0.1: resolved "https://registry.yarnpkg.com/klaw/-/klaw-4.0.1.tgz#8dc6f5723f05894e8e931b516a8ff15c2976d368" integrity sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw== +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + klona@^2.0.4, klona@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" @@ -17677,6 +17758,11 @@ logform@^2.2.0: safe-stable-stringify "^1.1.0" triple-beam "^1.3.0" +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -17903,6 +17989,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-table@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" + integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== + marked-terminal@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" @@ -17949,6 +18040,144 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-util-definitions@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7" + integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +mdast-util-find-and-replace@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz#cc2b774f7f3630da4bd592f61966fecade8b99b1" + integrity sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw== + dependencies: + "@types/mdast" "^3.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz#0214124154f26154a2b3f9d401155509be45e894" + integrity sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-gfm-autolink-literal@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz#67a13abe813d7eba350453a5333ae1bc0ec05c06" + integrity sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA== + dependencies: + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-find-and-replace "^2.0.0" + micromark-util-character "^1.0.0" + +mdast-util-gfm-footnote@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz#ce5e49b639c44de68d5bf5399877a14d5020424e" + integrity sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + micromark-util-normalize-identifier "^1.0.0" + +mdast-util-gfm-strikethrough@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz#5470eb105b483f7746b8805b9b989342085795b7" + integrity sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-table@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz#3552153a146379f0f9c4c1101b071d70bbed1a46" + integrity sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg== + dependencies: + "@types/mdast" "^3.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-task-list-item@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz#b280fcf3b7be6fd0cc012bbe67a59831eb34097b" + integrity sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz#e92f4d8717d74bdba6de57ed21cc8b9552e2d0b6" + integrity sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg== + dependencies: + mdast-util-from-markdown "^1.0.0" + mdast-util-gfm-autolink-literal "^1.0.0" + mdast-util-gfm-footnote "^1.0.0" + mdast-util-gfm-strikethrough "^1.0.0" + mdast-util-gfm-table "^1.0.0" + mdast-util-gfm-task-list-item "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-phrasing@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz#c7c21d0d435d7fb90956038f02e8702781f95463" + integrity sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg== + dependencies: + "@types/mdast" "^3.0.0" + unist-util-is "^5.0.0" + +mdast-util-to-hast@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49" + integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-definitions "^5.0.0" + micromark-util-sanitize-uri "^1.1.0" + trim-lines "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz#c13343cb3fc98621911d33b5cd42e7d0731171c6" + integrity sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^3.0.0" + mdast-util-to-string "^3.0.0" + micromark-util-decode-string "^1.0.0" + unist-util-visit "^4.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.1.tgz#db859050d79d48cf9896d294de06f3ede7474d16" + integrity sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA== + dependencies: + "@types/mdast" "^3.0.0" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -18109,6 +18338,281 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-extension-gfm-autolink-literal@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" + integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-footnote@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" + integrity sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-strikethrough@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" + integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-table@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" + integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-tagfilter@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" + integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-gfm-task-list-item@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" + integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2" + integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA== + dependencies: + micromark-extension-gfm-autolink-literal "^1.0.0" + micromark-extension-gfm-footnote "^1.0.0" + micromark-extension-gfm-strikethrough "^1.0.0" + micromark-extension-gfm-table "^1.0.0" + micromark-extension-gfm-tagfilter "^1.0.0" + micromark-extension-gfm-task-list-item "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz#f12e07a85106b902645e0364feb07cf253a85aee" + integrity sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.1.0.tgz#eeba0fe0ac1c9aaef675157b52c166f125e89f62" + integrity sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -18606,6 +19110,11 @@ move-concurrently@^1.0.1, move-concurrently@~1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + mrmime@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" @@ -21294,6 +21803,15 @@ prop-types-extra@^1.1.0: react-is "^16.3.2" warning "^4.0.0" +prop-types@^15.0.0, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -21303,15 +21821,6 @@ prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - proper-lockfile@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" @@ -21321,6 +21830,11 @@ proper-lockfile@^4.1.1: retry "^0.12.0" signal-exit "^3.0.2" +property-information@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.2.0.tgz#b74f522c31c097b5149e3c3cb8d7f3defd986a1d" + integrity sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg== + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -21770,6 +22284,27 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-markdown@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.5.tgz#c9a70a33ca9aeeafb769c6582e7e38843b9d70ad" + integrity sha512-jGJolWWmOWAvzf+xMdB9zwStViODyyFQhNB/bwCerbBKmrTmgmA599CGiOlP58OId1IMoIRsA8UdI1Lod4zb5A== + dependencies: + "@types/hast" "^2.0.0" + "@types/prop-types" "^15.0.0" + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^2.0.0" + prop-types "^15.0.0" + property-information "^6.0.0" + react-is "^18.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.4.0" + unified "^10.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + react-multi-carousel@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/react-multi-carousel/-/react-multi-carousel-2.8.2.tgz#4bbd7a9656d8e49e081745331593e5500eefdbe4" @@ -22378,6 +22913,35 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" +remark-gfm@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" + integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-gfm "^2.0.0" + micromark-extension-gfm "^2.0.0" + unified "^10.0.0" + +remark-parse@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + remove-bom-buffer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" @@ -22853,6 +23417,13 @@ rxjs@^6.4.0, rxjs@^6.5.4: dependencies: tslib "^1.9.0" +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-buffer@*, safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -23665,6 +24236,11 @@ sourcemap-codec@^1.4.1, sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + sparkles@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" @@ -24222,6 +24798,13 @@ style-to-object@0.3.0: dependencies: inline-style-parser "0.1.1" +style-to-object@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.1.tgz#53cf856f7cf7f172d72939d9679556469ba5de37" + integrity sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw== + dependencies: + inline-style-parser "0.1.1" + stylehacks@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" @@ -24867,6 +25450,11 @@ tree-kill@1.2.2, tree-kill@^1.2.2, tree-kill@~1.2.0: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -24897,6 +25485,11 @@ triple-beam@^1.2.0, triple-beam@^1.3.0: resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + truncate-utf8-bytes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" @@ -25325,6 +25918,19 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== +unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -25378,6 +25984,49 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +unist-util-generated@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae" + integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A== + +unist-util-is@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" + integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-position@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037" + integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" + integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" + integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" + universal-user-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" @@ -25655,6 +26304,16 @@ uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -25723,6 +26382,24 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" +vfile-message@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" + integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +vfile@^5.0.0: + version "5.3.7" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" + integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + vinyl-fs@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" @@ -26892,3 +27569,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zwitch@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From cddf88a5d601b504bdd999d8e794267aee3721b8 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 15 Mar 2023 17:35:13 +0100 Subject: [PATCH 67/72] rename plugin folders --- apps/{remixdocgen => doc-gen}/.eslintrc.json | 0 apps/{remixdocgen => doc-gen}/.prettierrc | 0 apps/{remixdocgen => doc-gen}/project.json | 26 +++++++++--------- apps/{remixdocgen => doc-gen}/src/app/App.css | 0 apps/{remixdocgen => doc-gen}/src/app/App.tsx | 6 ++-- .../src/app/docgen-client.ts | 0 .../src/app/docgen/common/helpers.ts | 0 .../src/app/docgen/common/properties.ts | 0 .../src/app/docgen/config.ts | 0 .../src/app/docgen/doc-item.ts | 0 .../src/app/docgen/render.ts | 0 .../src/app/docgen/site.ts | 0 .../src/app/docgen/templates.ts | 0 .../src/app/docgen/themes/markdown/common.hbs | 0 .../app/docgen/themes/markdown/contract.hbs | 0 .../src/app/docgen/themes/markdown/enum.hbs | 0 .../src/app/docgen/themes/markdown/error.hbs | 0 .../src/app/docgen/themes/markdown/event.hbs | 0 .../app/docgen/themes/markdown/function.hbs | 0 .../src/app/docgen/themes/markdown/helpers.ts | 0 .../app/docgen/themes/markdown/modifier.hbs | 0 .../src/app/docgen/themes/markdown/page.hbs | 0 .../src/app/docgen/themes/markdown/struct.hbs | 0 .../markdown/user-defined-value-type.hbs | 0 .../app/docgen/themes/markdown/variable.hbs | 0 .../src/app/docgen/utils/ItemError.ts | 0 .../src/app/docgen/utils/arrays-equal.ts | 0 .../app/docgen/utils/assert-equal-types.ts | 0 .../src/app/docgen/utils/clone.ts | 0 .../src/app/docgen/utils/ensure-array.ts | 0 .../src/app/docgen/utils/execall.ts | 0 .../src/app/docgen/utils/is-child.ts | 0 .../src/app/docgen/utils/item-type.ts | 0 .../src/app/docgen/utils/map-keys.ts | 0 .../src/app/docgen/utils/map-values.ts | 0 .../src/app/docgen/utils/memoized-getter.ts | 0 .../src/app/docgen/utils/natspec.ts | 0 .../src/app/docgen/utils/read-item-docs.ts | 0 .../src/app/docgen/utils/scope.ts | 0 .../src/app/hooks/useLocalStorage.tsx | 0 .../src/app/views/ErrorView.tsx | 0 .../src/app/views/index.ts | 0 apps/{docviewer => doc-gen}/src/favicon.ico | Bin apps/{remixdocgen => doc-gen}/src/index.html | 0 apps/{remixdocgen => doc-gen}/src/main.tsx | 0 apps/{remixdocgen => doc-gen}/src/types.ts | 0 apps/{docviewer => doc-gen}/tsconfig.app.json | 0 apps/{docviewer => doc-gen}/tsconfig.json | 0 apps/{docviewer => doc-gen}/webpack.config.js | 0 apps/{docviewer => doc-viewer}/project.json | 0 .../{docviewer => doc-viewer}/src/app/App.tsx | 0 .../src/app/docviewer.ts | 0 .../src/favicon.ico | Bin apps/{docviewer => doc-viewer}/src/index.html | 0 apps/{docviewer => doc-viewer}/src/main.tsx | 0 .../tsconfig.app.json | 0 .../{remixdocgen => doc-viewer}/tsconfig.json | 0 .../webpack.config.js | 0 58 files changed, 16 insertions(+), 16 deletions(-) rename apps/{remixdocgen => doc-gen}/.eslintrc.json (100%) rename apps/{remixdocgen => doc-gen}/.prettierrc (100%) rename apps/{remixdocgen => doc-gen}/project.json (57%) rename apps/{remixdocgen => doc-gen}/src/app/App.css (100%) rename apps/{remixdocgen => doc-gen}/src/app/App.tsx (80%) rename apps/{remixdocgen => doc-gen}/src/app/docgen-client.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/common/helpers.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/common/properties.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/config.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/doc-item.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/render.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/site.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/templates.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/common.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/contract.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/enum.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/error.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/event.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/function.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/helpers.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/modifier.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/page.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/struct.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/user-defined-value-type.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/themes/markdown/variable.hbs (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/ItemError.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/arrays-equal.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/assert-equal-types.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/clone.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/ensure-array.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/execall.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/is-child.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/item-type.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/map-keys.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/map-values.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/memoized-getter.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/natspec.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/read-item-docs.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/docgen/utils/scope.ts (100%) rename apps/{remixdocgen => doc-gen}/src/app/hooks/useLocalStorage.tsx (100%) rename apps/{remixdocgen => doc-gen}/src/app/views/ErrorView.tsx (100%) rename apps/{remixdocgen => doc-gen}/src/app/views/index.ts (100%) rename apps/{docviewer => doc-gen}/src/favicon.ico (100%) rename apps/{remixdocgen => doc-gen}/src/index.html (100%) rename apps/{remixdocgen => doc-gen}/src/main.tsx (100%) rename apps/{remixdocgen => doc-gen}/src/types.ts (100%) rename apps/{docviewer => doc-gen}/tsconfig.app.json (100%) rename apps/{docviewer => doc-gen}/tsconfig.json (100%) rename apps/{docviewer => doc-gen}/webpack.config.js (100%) rename apps/{docviewer => doc-viewer}/project.json (100%) rename apps/{docviewer => doc-viewer}/src/app/App.tsx (100%) rename apps/{docviewer => doc-viewer}/src/app/docviewer.ts (100%) rename apps/{remixdocgen => doc-viewer}/src/favicon.ico (100%) rename apps/{docviewer => doc-viewer}/src/index.html (100%) rename apps/{docviewer => doc-viewer}/src/main.tsx (100%) rename apps/{remixdocgen => doc-viewer}/tsconfig.app.json (100%) rename apps/{remixdocgen => doc-viewer}/tsconfig.json (100%) rename apps/{remixdocgen => doc-viewer}/webpack.config.js (100%) diff --git a/apps/remixdocgen/.eslintrc.json b/apps/doc-gen/.eslintrc.json similarity index 100% rename from apps/remixdocgen/.eslintrc.json rename to apps/doc-gen/.eslintrc.json diff --git a/apps/remixdocgen/.prettierrc b/apps/doc-gen/.prettierrc similarity index 100% rename from apps/remixdocgen/.prettierrc rename to apps/doc-gen/.prettierrc diff --git a/apps/remixdocgen/project.json b/apps/doc-gen/project.json similarity index 57% rename from apps/remixdocgen/project.json rename to apps/doc-gen/project.json index b214647ecc..51d9d63212 100644 --- a/apps/remixdocgen/project.json +++ b/apps/doc-gen/project.json @@ -1,7 +1,7 @@ { - "name": "remixdocgen", + "name": "doc-gen", "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/remixdocgen/src", + "sourceRoot": "apps/doc-gen/src", "projectType": "application", "implicitDependencies": [ ], @@ -12,17 +12,17 @@ "defaultConfiguration": "development", "options": { "compiler": "babel", - "outputPath": "dist/apps/remixdocgen", - "index": "apps/remixdocgen/src/index.html", + "outputPath": "dist/apps/doc-gen", + "index": "apps/doc-gen/src/index.html", "baseHref": "/", - "main": "apps/remixdocgen/src/main.tsx", - "tsConfig": "apps/remixdocgen/tsconfig.app.json", + "main": "apps/doc-gen/src/main.tsx", + "tsConfig": "apps/doc-gen/tsconfig.app.json", "assets": [ - "apps/remixdocgen/src/favicon.ico" + "apps/doc-gen/src/favicon.ico" ], "styles": [], "scripts": [], - "webpackConfig": "apps/remixdocgen/webpack.config.js" + "webpackConfig": "apps/doc-gen/webpack.config.js" }, "configurations": { "development": { @@ -30,8 +30,8 @@ "production": { "fileReplacements": [ { - "replace": "apps/remixdocgen/src/environments/environment.ts", - "with": "apps/remixdocgen/src/environments/environment.prod.ts" + "replace": "apps/doc-gen/src/environments/environment.ts", + "with": "apps/doc-gen/src/environments/environment.prod.ts" } ] } @@ -41,16 +41,16 @@ "executor": "@nrwl/webpack:dev-server", "defaultConfiguration": "development", "options": { - "buildTarget": "remixdocgen:build", + "buildTarget": "doc-gen:build", "hmr": true }, "configurations": { "development": { - "buildTarget": "remixdocgen:build:development", + "buildTarget": "doc-gen:build:development", "port": 6003 }, "production": { - "buildTarget": "remixdocgen:build:production" + "buildTarget": "doc-gen:build:production" } } } diff --git a/apps/remixdocgen/src/app/App.css b/apps/doc-gen/src/app/App.css similarity index 100% rename from apps/remixdocgen/src/app/App.css rename to apps/doc-gen/src/app/App.css diff --git a/apps/remixdocgen/src/app/App.tsx b/apps/doc-gen/src/app/App.tsx similarity index 80% rename from apps/remixdocgen/src/app/App.tsx rename to apps/doc-gen/src/app/App.tsx index e118913210..010f2dec30 100644 --- a/apps/remixdocgen/src/app/App.tsx +++ b/apps/doc-gen/src/app/App.tsx @@ -31,11 +31,11 @@ const App = () => { }, []) return ( -
+

Remix Docgen

{fileName &&

File: {fileName.split('/')[1].split('.')[0].concat('.sol')}

} - {hasBuild && } - {hasBuild && } + {hasBuild && } +
) }; diff --git a/apps/remixdocgen/src/app/docgen-client.ts b/apps/doc-gen/src/app/docgen-client.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen-client.ts rename to apps/doc-gen/src/app/docgen-client.ts diff --git a/apps/remixdocgen/src/app/docgen/common/helpers.ts b/apps/doc-gen/src/app/docgen/common/helpers.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/common/helpers.ts rename to apps/doc-gen/src/app/docgen/common/helpers.ts diff --git a/apps/remixdocgen/src/app/docgen/common/properties.ts b/apps/doc-gen/src/app/docgen/common/properties.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/common/properties.ts rename to apps/doc-gen/src/app/docgen/common/properties.ts diff --git a/apps/remixdocgen/src/app/docgen/config.ts b/apps/doc-gen/src/app/docgen/config.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/config.ts rename to apps/doc-gen/src/app/docgen/config.ts diff --git a/apps/remixdocgen/src/app/docgen/doc-item.ts b/apps/doc-gen/src/app/docgen/doc-item.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/doc-item.ts rename to apps/doc-gen/src/app/docgen/doc-item.ts diff --git a/apps/remixdocgen/src/app/docgen/render.ts b/apps/doc-gen/src/app/docgen/render.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/render.ts rename to apps/doc-gen/src/app/docgen/render.ts diff --git a/apps/remixdocgen/src/app/docgen/site.ts b/apps/doc-gen/src/app/docgen/site.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/site.ts rename to apps/doc-gen/src/app/docgen/site.ts diff --git a/apps/remixdocgen/src/app/docgen/templates.ts b/apps/doc-gen/src/app/docgen/templates.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/templates.ts rename to apps/doc-gen/src/app/docgen/templates.ts diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/common.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/common.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/common.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/common.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/contract.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/contract.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/contract.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/contract.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/enum.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/enum.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/enum.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/enum.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/error.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/error.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/error.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/error.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/event.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/event.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/event.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/event.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/function.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/function.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/function.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/function.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/helpers.ts b/apps/doc-gen/src/app/docgen/themes/markdown/helpers.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/helpers.ts rename to apps/doc-gen/src/app/docgen/themes/markdown/helpers.ts diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/modifier.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/modifier.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/modifier.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/modifier.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/page.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/page.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/page.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/page.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/struct.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/struct.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/struct.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/struct.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/user-defined-value-type.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/user-defined-value-type.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/user-defined-value-type.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/user-defined-value-type.hbs diff --git a/apps/remixdocgen/src/app/docgen/themes/markdown/variable.hbs b/apps/doc-gen/src/app/docgen/themes/markdown/variable.hbs similarity index 100% rename from apps/remixdocgen/src/app/docgen/themes/markdown/variable.hbs rename to apps/doc-gen/src/app/docgen/themes/markdown/variable.hbs diff --git a/apps/remixdocgen/src/app/docgen/utils/ItemError.ts b/apps/doc-gen/src/app/docgen/utils/ItemError.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/ItemError.ts rename to apps/doc-gen/src/app/docgen/utils/ItemError.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/arrays-equal.ts b/apps/doc-gen/src/app/docgen/utils/arrays-equal.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/arrays-equal.ts rename to apps/doc-gen/src/app/docgen/utils/arrays-equal.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/assert-equal-types.ts b/apps/doc-gen/src/app/docgen/utils/assert-equal-types.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/assert-equal-types.ts rename to apps/doc-gen/src/app/docgen/utils/assert-equal-types.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/clone.ts b/apps/doc-gen/src/app/docgen/utils/clone.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/clone.ts rename to apps/doc-gen/src/app/docgen/utils/clone.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/ensure-array.ts b/apps/doc-gen/src/app/docgen/utils/ensure-array.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/ensure-array.ts rename to apps/doc-gen/src/app/docgen/utils/ensure-array.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/execall.ts b/apps/doc-gen/src/app/docgen/utils/execall.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/execall.ts rename to apps/doc-gen/src/app/docgen/utils/execall.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/is-child.ts b/apps/doc-gen/src/app/docgen/utils/is-child.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/is-child.ts rename to apps/doc-gen/src/app/docgen/utils/is-child.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/item-type.ts b/apps/doc-gen/src/app/docgen/utils/item-type.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/item-type.ts rename to apps/doc-gen/src/app/docgen/utils/item-type.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/map-keys.ts b/apps/doc-gen/src/app/docgen/utils/map-keys.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/map-keys.ts rename to apps/doc-gen/src/app/docgen/utils/map-keys.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/map-values.ts b/apps/doc-gen/src/app/docgen/utils/map-values.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/map-values.ts rename to apps/doc-gen/src/app/docgen/utils/map-values.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/memoized-getter.ts b/apps/doc-gen/src/app/docgen/utils/memoized-getter.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/memoized-getter.ts rename to apps/doc-gen/src/app/docgen/utils/memoized-getter.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/natspec.ts b/apps/doc-gen/src/app/docgen/utils/natspec.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/natspec.ts rename to apps/doc-gen/src/app/docgen/utils/natspec.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/read-item-docs.ts b/apps/doc-gen/src/app/docgen/utils/read-item-docs.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/read-item-docs.ts rename to apps/doc-gen/src/app/docgen/utils/read-item-docs.ts diff --git a/apps/remixdocgen/src/app/docgen/utils/scope.ts b/apps/doc-gen/src/app/docgen/utils/scope.ts similarity index 100% rename from apps/remixdocgen/src/app/docgen/utils/scope.ts rename to apps/doc-gen/src/app/docgen/utils/scope.ts diff --git a/apps/remixdocgen/src/app/hooks/useLocalStorage.tsx b/apps/doc-gen/src/app/hooks/useLocalStorage.tsx similarity index 100% rename from apps/remixdocgen/src/app/hooks/useLocalStorage.tsx rename to apps/doc-gen/src/app/hooks/useLocalStorage.tsx diff --git a/apps/remixdocgen/src/app/views/ErrorView.tsx b/apps/doc-gen/src/app/views/ErrorView.tsx similarity index 100% rename from apps/remixdocgen/src/app/views/ErrorView.tsx rename to apps/doc-gen/src/app/views/ErrorView.tsx diff --git a/apps/remixdocgen/src/app/views/index.ts b/apps/doc-gen/src/app/views/index.ts similarity index 100% rename from apps/remixdocgen/src/app/views/index.ts rename to apps/doc-gen/src/app/views/index.ts diff --git a/apps/docviewer/src/favicon.ico b/apps/doc-gen/src/favicon.ico similarity index 100% rename from apps/docviewer/src/favicon.ico rename to apps/doc-gen/src/favicon.ico diff --git a/apps/remixdocgen/src/index.html b/apps/doc-gen/src/index.html similarity index 100% rename from apps/remixdocgen/src/index.html rename to apps/doc-gen/src/index.html diff --git a/apps/remixdocgen/src/main.tsx b/apps/doc-gen/src/main.tsx similarity index 100% rename from apps/remixdocgen/src/main.tsx rename to apps/doc-gen/src/main.tsx diff --git a/apps/remixdocgen/src/types.ts b/apps/doc-gen/src/types.ts similarity index 100% rename from apps/remixdocgen/src/types.ts rename to apps/doc-gen/src/types.ts diff --git a/apps/docviewer/tsconfig.app.json b/apps/doc-gen/tsconfig.app.json similarity index 100% rename from apps/docviewer/tsconfig.app.json rename to apps/doc-gen/tsconfig.app.json diff --git a/apps/docviewer/tsconfig.json b/apps/doc-gen/tsconfig.json similarity index 100% rename from apps/docviewer/tsconfig.json rename to apps/doc-gen/tsconfig.json diff --git a/apps/docviewer/webpack.config.js b/apps/doc-gen/webpack.config.js similarity index 100% rename from apps/docviewer/webpack.config.js rename to apps/doc-gen/webpack.config.js diff --git a/apps/docviewer/project.json b/apps/doc-viewer/project.json similarity index 100% rename from apps/docviewer/project.json rename to apps/doc-viewer/project.json diff --git a/apps/docviewer/src/app/App.tsx b/apps/doc-viewer/src/app/App.tsx similarity index 100% rename from apps/docviewer/src/app/App.tsx rename to apps/doc-viewer/src/app/App.tsx diff --git a/apps/docviewer/src/app/docviewer.ts b/apps/doc-viewer/src/app/docviewer.ts similarity index 100% rename from apps/docviewer/src/app/docviewer.ts rename to apps/doc-viewer/src/app/docviewer.ts diff --git a/apps/remixdocgen/src/favicon.ico b/apps/doc-viewer/src/favicon.ico similarity index 100% rename from apps/remixdocgen/src/favicon.ico rename to apps/doc-viewer/src/favicon.ico diff --git a/apps/docviewer/src/index.html b/apps/doc-viewer/src/index.html similarity index 100% rename from apps/docviewer/src/index.html rename to apps/doc-viewer/src/index.html diff --git a/apps/docviewer/src/main.tsx b/apps/doc-viewer/src/main.tsx similarity index 100% rename from apps/docviewer/src/main.tsx rename to apps/doc-viewer/src/main.tsx diff --git a/apps/remixdocgen/tsconfig.app.json b/apps/doc-viewer/tsconfig.app.json similarity index 100% rename from apps/remixdocgen/tsconfig.app.json rename to apps/doc-viewer/tsconfig.app.json diff --git a/apps/remixdocgen/tsconfig.json b/apps/doc-viewer/tsconfig.json similarity index 100% rename from apps/remixdocgen/tsconfig.json rename to apps/doc-viewer/tsconfig.json diff --git a/apps/remixdocgen/webpack.config.js b/apps/doc-viewer/webpack.config.js similarity index 100% rename from apps/remixdocgen/webpack.config.js rename to apps/doc-viewer/webpack.config.js From a2ca45901da8cfca49bfc85169c58b68daeb5ae2 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 15 Mar 2023 17:37:05 +0100 Subject: [PATCH 68/72] change project.json --- apps/doc-viewer/project.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/apps/doc-viewer/project.json b/apps/doc-viewer/project.json index 58fc9f5675..5ea04be27e 100644 --- a/apps/doc-viewer/project.json +++ b/apps/doc-viewer/project.json @@ -1,7 +1,7 @@ { - "name": "docviewer", + "name": "doc-viewer", "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/docviewer/src", + "sourceRoot": "apps/doc-viewer/src", "projectType": "application", "implicitDependencies": [ ], @@ -12,17 +12,17 @@ "defaultConfiguration": "development", "options": { "compiler": "babel", - "outputPath": "dist/apps/docviewer", - "index": "apps/docviewer/src/index.html", + "outputPath": "dist/apps/doc-viewer", + "index": "apps/doc-viewer/src/index.html", "baseHref": "/", - "main": "apps/docviewer/src/main.tsx", - "tsConfig": "apps/docviewer/tsconfig.app.json", + "main": "apps/doc-viewer/src/main.tsx", + "tsConfig": "apps/doc-viewer/tsconfig.app.json", "assets": [ - "apps/docviewer/src/favicon.ico" + "apps/doc-viewer/src/favicon.ico" ], "styles": [], "scripts": [], - "webpackConfig": "apps/docviewer/webpack.config.js" + "webpackConfig": "apps/doc-viewer/webpack.config.js" }, "configurations": { "development": { @@ -30,8 +30,8 @@ "production": { "fileReplacements": [ { - "replace": "apps/docviewer/src/environments/environment.ts", - "with": "apps/docviewer/src/environments/environment.prod.ts" + "replace": "apps/doc-viewer/src/environments/environment.ts", + "with": "apps/doc-viewer/src/environments/environment.prod.ts" } ] } @@ -41,16 +41,16 @@ "executor": "@nrwl/webpack:dev-server", "defaultConfiguration": "development", "options": { - "buildTarget": "docviewer:build", + "buildTarget": "doc-viewer:build", "hmr": true }, "configurations": { "development": { - "buildTarget": "docviewer:build:development", + "buildTarget": "doc-viewer:build:development", "port": 7003 }, "production": { - "buildTarget": "docviewer:build:production" + "buildTarget": "doc-viewer:build:production" } } } From ca33b2b7321f547426d22f619a94db7a0e9d66f3 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 15 Mar 2023 18:28:23 +0100 Subject: [PATCH 69/72] fix plugin names and fix artefact folder --- apps/doc-gen/src/app/docgen-client.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/doc-gen/src/app/docgen-client.ts b/apps/doc-gen/src/app/docgen-client.ts index d76a4c3e81..de0385f41d 100644 --- a/apps/doc-gen/src/app/docgen-client.ts +++ b/apps/doc-gen/src/app/docgen-client.ts @@ -59,7 +59,7 @@ export class DocGenClient extends PluginClient { const docs: string[] = [] for (const { id, contents } of renderedSite) { const temp = `${this.fileName.split('/')[1].split('.')[0]}.${id.split('.')[1]}` - const newFileName = `contracts/documentation/${temp}` + const newFileName = `docs/${temp}` await this.call('fileManager', 'setFile', newFileName , contents) docs.push(newFileName) } @@ -70,9 +70,9 @@ export class DocGenClient extends PluginClient { } async opendDocs(docs: string[]) { - await this.call('manager', 'activatePlugin', 'docviewer') - await this.call('tabs' as any, 'focus', 'docviewer') - await this.call('docviewer' as any, 'viewDocs', docs) + await this.call('manager', 'activatePlugin', 'doc-viewer') + await this.call('tabs' as any, 'focus', 'doc-viewer') + await this.call('doc-viewer' as any, 'viewDocs', docs) } async generateDocs() { From 9919df1b068e81868d8ccea496165c5b71d9917c Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Thu, 16 Mar 2023 12:26:22 +0100 Subject: [PATCH 70/72] address comments from @lianahus and @bunsentraat --- .gitignore | 4 --- apps/doc-gen/src/app/App.tsx | 5 ++-- apps/doc-gen/src/app/docgen-client.ts | 6 ++-- .../src/app/docgen/common/properties.ts | 28 +++++++++---------- apps/doc-gen/src/app/docgen/site.ts | 10 +++---- apps/doc-gen/src/app/docgen/templates.ts | 11 ++------ apps/doc-gen/src/index.html | 1 - apps/doc-gen/webpack.config.js | 5 +--- apps/doc-viewer/src/index.html | 1 - apps/doc-viewer/webpack.config.js | 5 +--- tsconfig.paths.json | 3 -- 11 files changed, 28 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore index d25f01c767..ad98096af7 100644 --- a/.gitignore +++ b/.gitignore @@ -57,7 +57,3 @@ testem.log .DS_Store .vscode/settings.json .vscode/launch.json -libs/remix-node/ -libs/remix-niks/ - -apps/remix-react diff --git a/apps/doc-gen/src/app/App.tsx b/apps/doc-gen/src/app/App.tsx index 010f2dec30..358d6776b6 100644 --- a/apps/doc-gen/src/app/App.tsx +++ b/apps/doc-gen/src/app/App.tsx @@ -35,9 +35,8 @@ const App = () => {

Remix Docgen

{fileName &&

File: {fileName.split('/')[1].split('.')[0].concat('.sol')}

} {hasBuild && } -
) -}; +} -export default App; +export default App diff --git a/apps/doc-gen/src/app/docgen-client.ts b/apps/doc-gen/src/app/docgen-client.ts index de0385f41d..76d702c6b4 100644 --- a/apps/doc-gen/src/app/docgen-client.ts +++ b/apps/doc-gen/src/app/docgen-client.ts @@ -5,7 +5,7 @@ import EventEmitter from 'events' import { Config, defaults } from './docgen/config' import { Build, buildSite } from './docgen/site' import { loadTemplates } from './docgen/templates' -import {SolcInput, SolcOutput} from 'solidity-ast/solc' +import { SolcInput, SolcOutput } from 'solidity-ast/solc' import { render } from './docgen/render' export class DocGenClient extends PluginClient { @@ -47,7 +47,6 @@ export class DocGenClient extends PluginClient { } this.fileName = fileName this.eventEmitter.emit('compilationFinished', this.build, fileName) - }) } @@ -78,5 +77,4 @@ export class DocGenClient extends PluginClient { async generateDocs() { this.docgen([this.build]) } - -} \ No newline at end of file +} diff --git a/apps/doc-gen/src/app/docgen/common/properties.ts b/apps/doc-gen/src/app/docgen/common/properties.ts index 3eb9919cd3..460090a036 100644 --- a/apps/doc-gen/src/app/docgen/common/properties.ts +++ b/apps/doc-gen/src/app/docgen/common/properties.ts @@ -10,11 +10,11 @@ import { itemType } from '../utils/item-type'; type TypeDefinition = StructDefinition | EnumDefinition | UserDefinedValueTypeDefinition; -export function type({ item }: DocItemContext): string { +export function type ({ item }: DocItemContext): string { return itemType(item); } -export function natspec({ item }: DocItemContext): NatSpec { +export function natspec ({ item }: DocItemContext): NatSpec { return parseNatspec(item); } @@ -26,7 +26,7 @@ export function name({ item }: DocItemContext, original?: unknown): string { } } -export function fullName({ item, contract }: DocItemContext): string { +export function fullName ({ item, contract }: DocItemContext): string { if (contract) { return `${contract.name}.${item.name}`; } else { @@ -34,7 +34,7 @@ export function fullName({ item, contract }: DocItemContext): string { } } -export function signature({ item }: DocItemContext): string | undefined { +export function signature ({ item }: DocItemContext): string | undefined { switch (item.nodeType) { case 'ContractDefinition': return undefined; @@ -85,7 +85,7 @@ interface Param extends VariableDeclaration { natspec?: string; }; -function getParams(params: ParameterList, natspec: NatSpec['params'] | NatSpec['returns']): Param[] { +function getParams (params: ParameterList, natspec: NatSpec['params'] | NatSpec['returns']): Param[] { return params.parameters.map((p, i) => ({ ...p, type: p.typeDescriptions.typeString!, @@ -93,46 +93,46 @@ function getParams(params: ParameterList, natspec: NatSpec['params'] | NatSpec[' })); } -export function params({ item }: DocItemContext): Param[] | undefined { +export function params ({ item }: DocItemContext): Param[] | undefined { if ('parameters' in item) { return getParams(item.parameters, natspec(item[DOC_ITEM_CONTEXT]).params); } } -export function returns({ item }: DocItemContext): Param[] | undefined { +export function returns ({ item }: DocItemContext): Param[] | undefined { if ('returnParameters' in item) { return getParams(item.returnParameters, natspec(item[DOC_ITEM_CONTEXT]).returns); } } -export function items({ item }: DocItemContext): DocItem[] | undefined { +export function items ({ item }: DocItemContext): DocItem[] | undefined { return (item.nodeType === 'ContractDefinition') ? item.nodes.filter(isNodeType(docItemTypes)).filter(n => !('visibility' in n) || n.visibility !== 'private') : undefined; } -export function functions({ item }: DocItemContext): FunctionDefinition[] | undefined { +export function functions ({ item }: DocItemContext): FunctionDefinition[] | undefined { return [...findAll('FunctionDefinition', item)].filter(f => f.visibility !== 'private'); } -export function events({ item }: DocItemContext): EventDefinition[] | undefined { +export function events ({ item }: DocItemContext): EventDefinition[] | undefined { return [...findAll('EventDefinition', item)]; } -export function modifiers({ item }: DocItemContext): ModifierDefinition[] | undefined { +export function modifiers ({ item }: DocItemContext): ModifierDefinition[] | undefined { return [...findAll('ModifierDefinition', item)]; } -export function errors({ item }: DocItemContext): ErrorDefinition[] | undefined { +export function errors ({ item }: DocItemContext): ErrorDefinition[] | undefined { return [...findAll('ErrorDefinition', item)]; } -export function variables({ item }: DocItemContext): VariableDeclaration[] | undefined { +export function variables ({ item }: DocItemContext): VariableDeclaration[] | undefined { return (item.nodeType === 'ContractDefinition') ? item.nodes.filter(isNodeType('VariableDeclaration')).filter(v => v.stateVariable && v.visibility !== 'private') : undefined; } -export function types({ item }: DocItemContext): TypeDefinition[] | undefined { +export function types ({ item }: DocItemContext): TypeDefinition[] | undefined { return [...findAll(['StructDefinition', 'EnumDefinition', 'UserDefinedValueTypeDefinition'], item)]; } diff --git a/apps/doc-gen/src/app/docgen/site.ts b/apps/doc-gen/src/app/docgen/site.ts index 90d63647a4..53ffd5bc92 100644 --- a/apps/doc-gen/src/app/docgen/site.ts +++ b/apps/doc-gen/src/app/docgen/site.ts @@ -52,7 +52,7 @@ export interface DocItemContext { build: BuildContext; } -export function buildSite(builds: Build[], siteConfig: SiteConfig, properties: Properties = {}): Site { +export function buildSite (builds: Build[], siteConfig: SiteConfig, properties: Properties = {}): Site { const assign = typeof siteConfig.pages === 'string' ? pageAssigner[siteConfig.pages] : siteConfig.pages; const seen = new Set(); @@ -106,20 +106,20 @@ export function buildSite(builds: Build[], siteConfig: SiteConfig, properties: P }; } -function defineContext(item: DocItem, build: BuildContext, file: SourceUnit, page?: string, contract?: ContractDefinition): DocItemWithContext { +function defineContext (item: DocItem, build: BuildContext, file: SourceUnit, page?: string, contract?: ContractDefinition): DocItemWithContext { return Object.assign(item, { [DOC_ITEM_CONTEXT]: { build, file, contract, page, item: item as DocItemWithContext }, }); } -function defineProperties(item: DocItemWithContext, properties: Properties) { +function defineProperties (item: DocItemWithContext, properties: Properties) { for (const [prop, fn] of Object.entries(properties)) { const original: unknown = (item as any)[prop]; defineGetterMemoized(item as any, prop, () => fn(item.__item_context, original)); } } -function assignIfIncludedSource( +function assignIfIncludedSource ( assign: PageAssigner, item: DocItem, file: SourceUnit, @@ -130,7 +130,7 @@ function assignIfIncludedSource( : undefined; } -function isFileIncluded(file: string, config: SiteConfig) { +function isFileIncluded (file: string, config: SiteConfig) { return ( isChild(file, config.sourcesDir) && config.exclude.every(e => !isChild(file, path.join(config.sourcesDir, e))) diff --git a/apps/doc-gen/src/app/docgen/templates.ts b/apps/doc-gen/src/app/docgen/templates.ts index 7f6a43b308..cee8f12c75 100644 --- a/apps/doc-gen/src/app/docgen/templates.ts +++ b/apps/doc-gen/src/app/docgen/templates.ts @@ -84,12 +84,7 @@ async function readHelpers(name: string) { * can't be imported directly. */ async function readThemes(): Promise>> { - const themes: Record> = {}; - - - - themes['markdown'] = await readTemplates(); - - - return themes; + const themes: Record> = {} + themes['markdown'] = await readTemplates() + return themes } diff --git a/apps/doc-gen/src/index.html b/apps/doc-gen/src/index.html index 7d7781859d..6e26b4393e 100644 --- a/apps/doc-gen/src/index.html +++ b/apps/doc-gen/src/index.html @@ -4,7 +4,6 @@ Remix Docgen - diff --git a/apps/doc-gen/webpack.config.js b/apps/doc-gen/webpack.config.js index 3cd446f615..7b3d088f05 100644 --- a/apps/doc-gen/webpack.config.js +++ b/apps/doc-gen/webpack.config.js @@ -40,8 +40,6 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { // add public path config.output.publicPath = '/' - - // add copy & provide plugin config.plugins.push( new webpack.ProvidePlugin({ @@ -63,7 +61,6 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { config.ignoreWarnings = [/Failed to parse source map/] // ignore source-map-loader warnings - // set minimizer config.optimization.minimizer = [ new TerserPlugin({ @@ -82,4 +79,4 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { ]; return config; -}); +}) diff --git a/apps/doc-viewer/src/index.html b/apps/doc-viewer/src/index.html index 7fd033d57e..ab3b67eef1 100644 --- a/apps/doc-viewer/src/index.html +++ b/apps/doc-viewer/src/index.html @@ -4,7 +4,6 @@ Doc Viewer - diff --git a/apps/doc-viewer/webpack.config.js b/apps/doc-viewer/webpack.config.js index 3cd446f615..7b3d088f05 100644 --- a/apps/doc-viewer/webpack.config.js +++ b/apps/doc-viewer/webpack.config.js @@ -40,8 +40,6 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { // add public path config.output.publicPath = '/' - - // add copy & provide plugin config.plugins.push( new webpack.ProvidePlugin({ @@ -63,7 +61,6 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { config.ignoreWarnings = [/Failed to parse source map/] // ignore source-map-loader warnings - // set minimizer config.optimization.minimizer = [ new TerserPlugin({ @@ -82,4 +79,4 @@ module.exports = composePlugins(withNx(), withReact(), (config) => { ]; return config; -}); +}) diff --git a/tsconfig.paths.json b/tsconfig.paths.json index 20989bfbd2..dec19c068b 100644 --- a/tsconfig.paths.json +++ b/tsconfig.paths.json @@ -148,9 +148,6 @@ "@remix-ui/solidity-uml-gen": [ "libs/remix-ui/solidity-uml-gen/src/index.ts" ], - "@remix-ui/docgenclient-ui": [ - "libs/remix-ui/docgenclient-ui/src/index.ts" - ], "@remix-project/ghaction-helper": [ "libs/ghaction-helper/src/index.ts" ], From 0a4343f8f1992e37be26c755e7cb4ff9b4f481c5 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Mon, 20 Mar 2023 10:59:58 +0100 Subject: [PATCH 71/72] add doc-gen and doc-viewer back to app.js after rebase --- apps/remix-ide/src/remixAppManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remix-ide/src/remixAppManager.js b/apps/remix-ide/src/remixAppManager.js index 2a4d7f4671..2665ec8e3d 100644 --- a/apps/remix-ide/src/remixAppManager.js +++ b/apps/remix-ide/src/remixAppManager.js @@ -11,7 +11,7 @@ const requiredModules = [ // services + layout views + system views 'filePanel', 'terminal', 'settings', 'pluginManager', 'tabs', 'udapp', 'dGitProvider', 'solidity', 'solidity-logic', 'gistHandler', 'layout', 'notification', 'permissionhandler', 'walkthrough', 'storage', 'restorebackupzip', 'link-libraries', 'deploy-libraries', 'openzeppelin-proxy', 'hardhat-provider', 'ganache-provider', 'foundry-provider', 'basic-http-provider', 'injected', 'injected-trustwallet', 'injected-optimism-provider', 'injected-arbitrum-one-provider', 'vm-custom-fork', 'vm-goerli-fork', 'vm-mainnet-fork', 'vm-sepolia-fork', 'vm-merge', 'vm-london', 'vm-berlin', - 'compileAndRun', 'search', 'recorder', 'fileDecorator', 'codeParser', 'codeFormatter', 'solidityumlgen', 'contractflattener'] + 'compileAndRun', 'search', 'recorder', 'fileDecorator', 'codeParser', 'codeFormatter', 'solidityumlgen', 'contractflattener', 'doc-gen', 'doc-viewer'] // dependentModules shouldn't be manually activated (e.g hardhat is activated by remixd) const dependentModules = ['foundry', 'hardhat', 'truffle', 'slither'] From 6d2682a878bbbb69a11bebcb5a496cd72cb53808 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Wed, 22 Mar 2023 11:41:32 +0100 Subject: [PATCH 72/72] change baseUrl for ipfs compat --- apps/doc-gen/project.json | 2 +- apps/doc-viewer/project.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/doc-gen/project.json b/apps/doc-gen/project.json index 51d9d63212..d380761624 100644 --- a/apps/doc-gen/project.json +++ b/apps/doc-gen/project.json @@ -14,7 +14,7 @@ "compiler": "babel", "outputPath": "dist/apps/doc-gen", "index": "apps/doc-gen/src/index.html", - "baseHref": "/", + "baseHref": "./", "main": "apps/doc-gen/src/main.tsx", "tsConfig": "apps/doc-gen/tsconfig.app.json", "assets": [ diff --git a/apps/doc-viewer/project.json b/apps/doc-viewer/project.json index 5ea04be27e..08068881e4 100644 --- a/apps/doc-viewer/project.json +++ b/apps/doc-viewer/project.json @@ -14,7 +14,7 @@ "compiler": "babel", "outputPath": "dist/apps/doc-viewer", "index": "apps/doc-viewer/src/index.html", - "baseHref": "/", + "baseHref": "./", "main": "apps/doc-viewer/src/main.tsx", "tsConfig": "apps/doc-viewer/tsconfig.app.json", "assets": [